资源简介
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
- 下一篇:微弱信号检测电路图
相关资源
- 串行级联cpm系统MATLAB仿真
- matlab_OFDM调制解调(来自剑桥大学)
- Matlab路面裂缝识别69319
- 高灵敏度GPS接收机MATLAB仿真,附捕获
- 基于MATLAB的质点弹道计算与外弹道优
- 阵列天线的matlab仿真
- MATLAB 经典程序源代码大全
- MATLAB小波软阈值去噪代码33473
- 天线阵的波束形成在MATLAB仿真程序及
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- 读取txt文件内容matlab代码实现
- Matlab实现基于相关的模板匹配程序
- matlab优化工具箱讲解
- 基于MATLAB的快速傅里叶变换
- 光纤传输中的分布傅立叶算法matlab实
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- 算术编码解码matlab源代码
- optical_flow 光流法 matlab 实现程序
- 引导图像滤波器 Matlab实现
- 分形几何中一些经典图形的Matlab画法
- OFDM系统MATLAB仿真代码
- SVM工具箱(matlab中运行)
- 图像小波变换MatLab源代码
- LU分解的MATLAB实现
- 冈萨雷斯数字图像处理matlab版(第三
- 替代数据法的matlab程序
- 用matlab实现的多站定位系统性能仿真
评论
共有 条评论