Matlab直方图法去雾
2016-01-03 15:13
537 查看
1,全局直方图处理
Matlab通过函数imread读取RGB图像,并通过维数m*n*3的矩阵来表示。其中,维数mn表示图像的行数列数信息,维数3表示图像的RGB三层通道数据。因此,全局直方图处理通过对RGB图像的RGB三通道分别进行直方图均衡化,再整合到新的图像的方式进行。
效果如下
直方图效果:
>> Q=rgb2gray(Xs);
>> W=rgb2gray(In);
>> subplot(1,2,1);imhist(Q,64);
>> subplot(1,2,1);imshow(Xs);
>> subplot(1,2,1);imhist(Q,64);
>> subplot(1,2,2);imhist(W,64)
2,局部直方图处理
可以看到,全局直方图均衡化增强只是将原图像的直方图进行了均衡化,未能有效保持原始图像的局部特征,容易出现色彩失真问题。通过局部直方图处理可以在一定层度上保持原有图像的局部特征,提高去雾的效果。所谓的局部直方图处理就是选择固定尺寸的滑动窗口作用于原始图像来进行局部的处理,通过对RGB三通道进行局部直方图均衡化,然后再整合到新的图像中。
其中我们需要自行编写函数GetLocalHisteq()的代码,其代码如下
效果图:
Matlab通过函数imread读取RGB图像,并通过维数m*n*3的矩阵来表示。其中,维数mn表示图像的行数列数信息,维数3表示图像的RGB三层通道数据。因此,全局直方图处理通过对RGB图像的RGB三通道分别进行直方图均衡化,再整合到新的图像的方式进行。
>> [Xs,MAPs]=imread('D:\Pic\fog9','jpg'); >> imshow(Xs) >> R=Xs(:,:,1); >> G=Xs(:,:,2); >> B=Xs(:,:,3); >> M=histeq(R); >> N=histeq(G); >> L=histeq(B); >> In=cat(3,M,N,L); >> imshow(In)
效果如下
直方图效果:
>> Q=rgb2gray(Xs);
>> W=rgb2gray(In);
>> subplot(1,2,1);imhist(Q,64);
>> subplot(1,2,1);imshow(Xs);
>> subplot(1,2,1);imhist(Q,64);
>> subplot(1,2,2);imhist(W,64)
2,局部直方图处理
可以看到,全局直方图均衡化增强只是将原图像的直方图进行了均衡化,未能有效保持原始图像的局部特征,容易出现色彩失真问题。通过局部直方图处理可以在一定层度上保持原有图像的局部特征,提高去雾的效果。所谓的局部直方图处理就是选择固定尺寸的滑动窗口作用于原始图像来进行局部的处理,通过对RGB三通道进行局部直方图均衡化,然后再整合到新的图像中。
>> [Img,MAPs]=imread('D:\Pic\fog9','jpg'); >> imshow(Img) >> g1=GetLocalHisteq(Img(:,:,1)); >> g2=GetLocalHisteq(Img(:,:,2)); >> g3=GetLocalHisteq(Img(:,:,3)); >> ImgS=cat(3,g1,g2,g3); >> subplot(1,2,1);imshow(Img);subplot(1,2,2);imshow(ImgS);
其中我们需要自行编写函数GetLocalHisteq()的代码,其代码如下
function g = GetLocalHisteq(I) x=mat2gray(I); f=im2double(x); w=4; k=0.06; M=mean2(f); z=colfilt(f,[w w],'sliding',@std); m=colfilt(f,[w w],'sliding',@mean); A=k*M./z; g=A.*(f-m)+m; g=im2uint8(mat2gray(g)); end
效果图:
相关文章推荐
- MATLAB调用c/c++ MATLAB c/c++混编
- matlab练习程序(碎片)
- Matlab lugui
- matlab中find函数的使用说明
- matlab中figure是什么意思
- matlab中的rand函数
- matlab中sort函数的用法
- matlab中repmat函数的用法
- MATLAB中多行注释的三种方法
- matlab plot函数画线,线型和颜色
- 图像小波包分解后如何改变分解系数再重构呢?
- ]MATLAB中的wavedec、wrcoef函数简析
- Matlab求方差,均值,均方差,协方差的函数
- Matlab中的归一化处理
- LibSVM 在matlab中的使用
- Matlab 线性拟合 & 非线性拟合
- matlab中floor和ceil的异同点
- matlab中点乘与乘的区别
- matlab @
- MATLAB中wnoise函数信噪比的问题