参考:
Retinex、log对数变换、直方图均衡化区别,边缘增强Retinex算法与拉普拉斯算法联系、均衡化与亮度调节算法、大津阈值计算
Guided Image Filtering --引导图像滤波 解析+图像去雾应用
retinex:
- 光照不均匀图像的抑制
- 图像亮度增强,细节的保护,色彩的保护,自然度的恢复等等
- 图像去噪(噪声属于高频信息,可将噪声留在反射分量中再去噪)
- 细节提取(类似于Canny边缘提取)
- 图像结构和纹理的单部分获取
%% SSR1
clear;close all;clc;
I = imread("F:\haze\haze001.bmp");
R = I(:, :, 1);
[N1, M1] = size(R);
R0 = double(R);
Rlog = log(R0+1);
Rfft2 = fft2(R0);
sigma = 80;%高斯核参数
F = fspecial('gaussian', [N1,M1], sigma);
Efft = fft2(double(F));
DR0 = Rfft2.* Efft;%卷积
DR = ifft2(DR0);%反变换到空域
DRlog = log(DR +1);
Rr = Rlog - DRlog;
EXPRr = Rr;
MIN = min(min(EXPRr));
MAX = max(max(EXPRr));
EXPRr = 255*(EXPRr - MIN)/(MAX - MIN);%线性拉伸
G = I(:, :, 2);
G0 = double(G);
Glog = log(G0+1);
Gfft2 = fft2(G0);
DG0 = Gfft2.* Efft;
DG = ifft2(DG0);
DGlog = log(DG +1);
Gg = Glog - DGlog;
EXPGg = Gg;
MIN = min(min(EXPGg));
MAX = max(max(EXPGg));
EXPGg = 255*(EXPGg - MIN)/(MAX - MIN);
B = I(:, :, 3);
B0 = double(B);
Blog = log(B0+1);
Bfft2 = fft2(B0);
DB0 = Bfft2.* Efft;
DB = ifft2(DB0);
DBlog = log(DB+1);
Bb = Blog - DBlog;
EXPBb = Bb;
MIN = min(min(EXPBb));
MAX = max(max(EXPBb));
EXPBb = 255*(EXPBb - MIN)/(MAX - MIN);
result = cat(3, EXPRr, EXPGg, EXPBb);
result = uint8(result);
subplot(121), imshow(I), title('origin');
subplot(122), imshow(result), title('sigma = 80');
引导滤波:
高斯滤波的核函数与待处理图像无关,即高斯滤波对任何图像的操作相同,高斯滤波的权重与中心像素点的距离有关,像素距离中心像素点越近,权重越大,反之,权重越小。
图像可以看作有梯度较小的平缓部分及梯度较大的边缘(细节、纹理)部分构成的,噪声通常是以其为中心的各个方向上梯度都较大但相差不多。边缘也会出现梯度的跃变,但是边缘只有在其法向方向上才会出现较大的梯度,而在切向方向上梯度较小。
高斯滤波等各向同性滤波器对待边缘和噪声采取一致的处理方法,(空间不变性及与待处理图像无关)使得噪声减小的同时,图像的细节和纹理都被磨平。因此,研究人员提出了保边滤波方式。
引导滤波是一种边缘保留滤波方式,当引导图像为图像本身时,能够实现保边滤波。假设引导图像与滤波输出图像之间为线性关系,因此能够由引导图明确图像的边缘和平坦区域,从而完成平滑区域,保持边缘的引导滤波效果。
是窗口内像素点的均值,
和
指相邻两个像素点的值,
代表窗口内像素点的方差,
是一个惩罚值。对图像边缘进行滤波操作时,
和
异号,在平坦或噪声区域,
和
同号,因此在引导滤波器中,在平坦或噪声区域权重较大,平滑效果明显,在边缘部分权重较小,平滑效果较弱,能够起到保持边缘的效果。
惩罚值对滤波效果影响也很大,当
值很小时,滤波如前面所述;当
值很大时,权重的计算公式将近似为一个均值滤波器,平滑效果会更明显。