基于 MATLAB 的光照不均匀图像增强程序,结合了同态滤波和高斯高通滤波的方法。该程序通过对图像进行对数变换、傅里叶变换、滤波处理,最后通过逆变换恢复图像,从而增强光照不均匀的图像。
MATLAB 代码实现
matlab
function enhanced_image = homomorphic_filtering(image_path)
% 读取图像
img = imread(image_path);
if size(img, 3) == 3
img = rgb2gray(img); % 转换为灰度图像
end
img = im2double(img); % 转换为双精度
% 参数设置
rL = 0.5; % 低频增益
rH = 2.0; % 高频增益
c = 1.5; % 控制滤波器函数斜率
d0 = 1800; % 截止频率
% 对数变换
img_log = log(img + 1);
% 傅里叶变换
F = fft2(img_log);
F_shifted = fftshift(F);
% 高斯高通滤波器设计
[rows, cols] = size(img);
[U, V] = meshgrid(1:cols, 1:rows);
U = U - floor(cols / 2);
V = V - floor(rows / 2);
D = sqrt(U.^2 + V.^2);
H = (rH - rL) * (1 - exp(-c * (D.^2 / (d0^2)))) + rL;
% 滤波
G = H .* F_shifted;
% 逆傅里叶变换
G_shifted = ifftshift(G);
img_filtered = ifft2(G_shifted);
img_filtered = real(exp(img_filtered) - 1); % 指数变换
% 显示结果
figure;
subplot(1, 2, 1);
imshow(img);
title('原始图像');
subplot(1, 2, 2);
imshow(img_filtered, []);
title('增强后的图像');
% 返回增强后的图像
enhanced_image = img_filtered;
end
使用方法
-
将上述代码保存为一个
.m文件,例如homomorphic_filtering.m。 -
在 MATLAB 中调用该函数,传入图像路径作为参数。例如:
matlabenhanced_image = homomorphic_filtering('path_to_your_image.jpg');
参考代码 光照不均匀图像增强,同态滤波,MATLAB代码,高斯高通滤波 www.youwenfan.com/contentcsn/98050.html
参数调整
rL和rH:分别控制低频和高频的增益,可以根据图像的光照情况调整。c:控制滤波器的斜率,影响滤波效果。d0:截止频率,影响高频和低频的分界点。
通过调整这些参数,可以优化图像增强的效果,使其更适合不同的光照不均匀情况。