基于Matlab的同态滤波彩色图像增强算法研究

        增强图像中的有用信息,它可以是一个失真的过程,其目的是要改善图像的视觉效果,针对给定图像的应用场合。有目的地强调图像的整体或局部特性,将原来不清晰的图像变得清晰或强调某些感兴趣的特征,扩大图像中不同物体特征之间的差别,抑制不感兴趣的特征,使之改善图像质量、丰富信息量,加强图像判读和识别效果,满足某些特殊分析的需要。

同态滤波
同态滤波采用的是照射-反射模型, 即通过同时减小图像的灰度范围和增强图像的对比度来对图像增强. 图像可表示为照射i(x,y)和反射r(x,y) 两部分的乘积。

 本文在 HSI 颜色空间下,对 I 分量进行处理,裁剪成 相同大小的 n×n 图像块,进行同态滤波,以此实现局部增强,但拼接图像时,在边缘必然会存在颜色突变,造成块效应,因此需要解决这个副作用。然后将相邻的图像块分为水平和竖直两类,利用边界处左右两边的像素进行均值滤波,以此来消除块效应。增强后的 I 分量再重新与 S 和 H 分量组合并还原到 RGB 空间。

  • 同态滤波实现
function im_e = HomoMor(im,Hh,Hl,D0,c)
% 高斯同态滤波器参数的设置
% Hh = 1.2;  % 高频增益,需要大于1
% Hl = 0.5;  % 低频增益,取值在0和1之间
% D0 = 4;    % 截止频率,越大图像越亮
% c = 1;     % 锐化系数

%% 滤波器初始化
im = double(im);
[row, col] = size(im);

% 确定傅里叶变换的原点
x0 = floor(row/2);
y0 = floor(col/2);

% 初始化
H = zeros(row,col);

for i = 1:row
    for j = 1:col
        D = (i-x0)^2 + (j-y0)^2;
        if D == 0
            H(i,j) = Hl;
        else
            H(i,j) = (Hh-Hl) * (1 - exp(-c*D^2/(D0^2))) + Hl;
            % 高斯同态滤波函数
        end
    end
end

%% 同态滤波
im_l = log(im + 0.000001);              % 取对数变换
im_f = fftshift(fft2(im_l));            % 傅里叶变换,并移到中心位置
im_nf = H .* im_f;                      % 高斯滤波
im_n = real(ifft2(ifftshift(im_nf)));   % 傅里叶反变换,恢复位置
im_e = exp(im_n - 0.000001);            % 取指数变化

end

测试结果

 详细代码等资料,请扣扣:134-170-3358;

猜你喜欢

转载自blog.csdn.net/Jiangtagong/article/details/123743510