资源简介
Retinex Matlab算法,可以运行
代码片段和文件信息
clc
% clear all
I=imread(‘123.bmp‘);
I=im2double(I);
%将灰度值的数据类型由BYTE转换为Double型
[m n bit]=size(I);
R=fftshift(fft2(I(::1)));
G=fftshift(fft2(I(::2)));
B=fftshift(fft2(I(::3)));
s=3;
sigma=[15 75 115];
for i=1:s
H(::i)=fftshift(fft2(hfunction(mnsigma(i))));
end
D=zeros(mn);
for i=1:m
for j=1:n
D(ij)=(-1)^(i+j);
end
end
for i=1:s
r(::i)=abs(ifft2(ifftshift(R.*H(::i).*D)));
g(::i)=abs(ifft2(ifftshift(G.*H(::i).*D)));
b(::i)=abs(ifft2(ifftshift(B.*H(::i).*D)));
end
w=[1.0 1.0 1.0]/s;
rr=zeros(mn);
gg=zeros(mn);
bb=zeros(mn);
for i=1:s
rr=rr+w(i).*(log2(I(::1)+0.0001)-log2(r(::i)));
gg=gg+w(i).*(log2(I(::2)+0.0001)-log2(g(::i)));
bb=bb+w(i).*(log2(I(::3)+0.0001)-log2(b(::i)));
end
I1=zeros(size(I));
I1(::1)=rr/max(rr(:));
I1(::2)=gg/max(gg(:));
I1(::3)=bb/max(bb(:));
avg=mean(mean(mean(I1)));
div=0;
for i=1:m
for j=1:n
for q=1:bit
div=div+(I1(ijq)-avg)^2;
end
end
end
div=sqrt(div/(m*n*bit));
k=3;
fmax=avg+k*div;
%表示增强后图像中所有像素点灰度值中的最大值
fmin=avg-k*div;
%表示增强后图像中所有像素点灰度值中的最小值
for i=1:m
for j=1:n
for q=1:bit
if I1(ijq) I1(ijq)=fmin;
end
if I1(ijq)>fmax
I1(ijq)=fmax;
end
end
end
end
idensity=mean(mean(mean(I)));
I1=(I1+(idensity/2)-fmin)/(fmax+(idensity/2)-fmin);
%对像素点灰度值校正后的图象进行线形拉伸
figure
imshow(I);
title(‘原始图像‘)
figure
imshow(I1);
B=mean(I3);
nz=find(B);
B(nz) =1./B(nz);
%linear
I2=zeros(size(I));
I2(::1)=rr.*(I(::1).*B);
I2(::2)=gg.*(I(::2).*B);
I2(::3)=bb.*(I(::3).*B);
I2(::1)=I2(::1)/max(max(max(I2(::1))));
I2(::2)=I2(::2)/max(max(max(I2(::2))));
I2(::3)=I2(::3)/max(max(max(I2(::3))));
avg2=mean(mean(mean(I2)));
div2=0;
for i=1:m
for j=1:n
for q=1:bit
div2=div2+(I2(ijq)-avg2)^2;
end
end
end
div2=sqrt(div2/(m*n*bit));
k2=3;
fmax2=avg2+k2*div2;
fmin2=avg2-k2*div2;
for i=1:m
for j=1:n
for q=1:bit
if I2(ijq) I2(ijq)=fmin2;
end
if I2(ijq)>fmax2
I2(ijq)=fmax2;
end
end
end
end
I2=(I2+(idensity/2)-fmin2)/(fmax2+(idensity/2)-fmin2);
figureimshow(I2);
%log
I3=zeros(size(I));
I3(::1)=rr.*log2(1+I(::1).*B);
I3(::2)=gg.*log2(1+I(::2).*B);
I3(::3)=bb.*log2(1+I(::3).*B);
I3(::1)=I3(::1)/max(max(max(I3(::1))));
I3(::2)=I3(::2)/max(max(max(I3(::2))));
I3(::3)=I3(::3)/max(max(max(I3(::3))));
avg3=mean(mean(mean(I3)));
div3=0;
for i=1:m
for j=1:n
for q=1:bit
div3=div3+(I3(ijq)-avg3)^2;
end
end
end
div3=sqrt(div3/(m*n*bit));
k3=3;
fmax3=avg3+k3*div3;
fmin3=avg3-k3*div3;
for i=1:m
for j=1:n
for q=1:bit
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 360165 2008-04-01 09:54 Retinex Matlab算法\fog2.jpg
文件 32087 2005-03-23 13:36 Retinex Matlab算法\Lena.jpg
文件 5310 2007-12-20 16:32 Retinex Matlab算法\MSR_fft.m
文件 315392 2007-07-13 10:23 Retinex Matlab算法\quxian.dmp
文件 2775 2007-12-20 16:31 Retinex Matlab算法\retinex_frankle_mccann.m
文件 5392 2007-12-20 16:31 Retinex Matlab算法\retinex_mccann99.m
文件 359 2009-12-11 21:29 Retinex Matlab算法\SSR_huidu.m
目录 0 2009-12-11 21:29 Retinex Matlab算法
----------- --------- ---------- ----- ----
721480 8
- 上一篇:matlab-gui-test.m
- 下一篇:微弱信号检测电路图
相关资源
- matlab-gui-test.m
- 遗传算法&物流配送
- 认知无线电频谱感知之功率检测matl
- 四阶累积量的MUSIC算法的MATLAB程序
- MATLAB在线性二次型最优控制器设计中
- 基于Matlab的摄像头输入的眨眼检测
- matlab文件关联方法
- matlab2018a下载265821
- matlab的M函数PID
- DW检验算法的matlab代码
- 运用Matlab录音识别过程程序
- QPSK调制与解调在MATLAB上的实现
- matlab神经网络工具箱系统预测
- 基于符号熵的matlab源程序
- matlab 潮流计算软件
- 霍夫变换圆检测MATLAB程序
- PCM编码的MATLAB演示
- 三电平svpwm逆变器仿真(matlabr2009b)
- LDPC码MATLAB程序
- elcentro.mat
- Matlab与单片机通信
- 数据预处理 剔除奇异值点 matlab代码
- PMSM的matlab仿真
- CMC matlab代码
- siltp 纹理特征提取代码 matlab
- MK突变检验MATLAB代码
- Zernike多项式matlab代码
- KNN分类器完整的matlab代码
- 遗传算法优化pid控制器参数的matlab程
- 隐式广义预测控制matlab程序
评论
共有 条评论