图像增强去雾之直方图均衡化/同态滤波/Retinex算法
最近撸了一发图像去雾的算法,主要举四个例子,分别用了全局直方图均衡化,局部直方图均衡化,同态滤波,Retinex增强算法。感兴趣的可以一起讨论一下啊
1.全局直方图均衡化
直方图均衡化处理的“中心思想”是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布。直方图均衡化就是对图像进行非线性拉伸,重新分配图像像素值,使一定灰度范围内的像素数量大致相同。直方图均衡化就是把给定图像的直方图分布改变成“均匀”分布直方图分布。举一个适合做直方图均衡化的去雾例子,原图的雾霾比较均匀,可以看到原灰度直方图的灰度区间比较集中,均衡化以后就几乎变为全部灰度范围的均匀分布了。处理后灰度范围变大,对比度变大,清晰度变大,所以能有效增强图像。
全局直方图均衡化主要是以下几步:
1)统计直方图每个灰度出现的次数;
2)累积归一化直方图;
3)计算新的像素值。
Xs=imread('3.png');
subplot(2,1,1);
imshow(Xs);
title('原图像', 'FontWeight', 'Bold');
R=Xs(:,:,1);
G=Xs(:,:,2);
B=Xs(:,:,3);
M=histeq(R);
N=histeq(G);
L=histeq(B);
In=cat(3,M,N,L);
subplot(2,1,2);
imshow(In);
title('全局直方图处理后的图像', 'FontWeight', 'Bold');
2.局部直方图均衡化
举例中的图不像第一张图雾霾分布那么平均,而是集中在某一区域,所以比较适合局部直方图均衡化,简单的上步骤上图吧:
1)确定模板大小 n*n;
2)将图像进行扩展,因为对边界处的处理会使得图像无法与模板达到一一对应;
3)从图像的第一个像素开始,与模版点乘,点