《精通Matlab数字图像处理与识别》一6.6 频率域高通滤波器

简介:

本节书摘来自异步社区《精通Matlab数字图像处理与识别》一书中的第6章,第6.6节,作者 张铮 , 倪红霞 , 苑春苗 , 杨立红,更多章节内容可以访问云栖社区“异步社区”公众号查看

6.6 频率域高通滤波器

精通Matlab数字图像处理与识别
图像锐化可以通过衰减图像频谱中的低频成份来实现,这就建立了空间域图像锐化与频域高通滤波之间对应关系。

6.6.1 高斯高通滤波器及其实现

1.理论基础
从6.5.2小节高斯低通滤波器中的H(u)图像,可以发现滤波器中心频率处的值即为其最大值1,如果需要做相反的滤波操作,滤除低频成份而留下高频成份,则可以考虑简单地使用如下表达式来获得一个高斯高通滤波器。
image

因此,高斯高通滤波器的频域特性曲线如图6.23所示(仍旧以一维情况为例)。

image

2.Matlab实现
根据上面二维高斯高通滤波器的定义,可以编写高斯高通滤波器的生成函数如下,该函数被封装在金羽图书论坛(http://bbs.book95.com)的“金羽图书与答疑”板块与本书同名的主题帖子附件的“chapter6/code”目录下的imgaussfhpf.m文件中。

function out = imgaussfhpf(I, sigma)
% imgaussfhpf函数            构造频域高斯高通滤波器
% I参数                    输入的灰度图像
% sigma参数                高斯函数的Sigma参数

[M,N] = size(I);
out = ones(M,N);
for i=1∶M
    for j=1∶N
        out(i,j) = 1 - exp(-((i-M/2)^2+(j-N/2)^2)/2/sigma^2);
    end
end

下面的例6.5给出了针对Matlab示例图像coins.png,sigma取不同值时高斯高通滤波的Matlab程序。

[例6.5]高斯高通滤波实现。

I = imread('coins.png');

% 生成滤镜
ff = imgaussfhpf (I, 20);
% 应用滤镜
out = imfreqfilt(I, ff);

figure (1);
subplot(2,2,1);
imshow(I);
title('Source');

% 计算FFT并显示
temp = fft2(double(I));
temp = fftshift(temp);
temp = log(1 + abs(temp));
figure (2);
subplot(2,2,1);
imshow(temp, []);
title('Source');

figure (1);
subplot(2,2,2);
imshow(out);
title('Gauss HPF, sigma=20');

% 计算FFT并显示
temp = fft2(out);
temp = fftshift(temp);
temp = log(1 + abs(temp));
figure (2);
subplot(2,2,2);
imshow(temp, []);
title('Gauss HPF, sigma=20');

% 生成滤镜
ff = imgaussfhpf (I, 40);
% 应用滤镜
out = imfreqfilt(I, ff);

figure (1);
subplot(2,2,3);
imshow(out);
title('Gauss HPF, sigma =40');

% 计算FFT并显示
temp = fft2(out);
temp = fftshift(temp);
temp = log(1 + abs(temp));
figure (2);
subplot(2,2,3);
imshow(temp, []);
title('Gauss HPF, sigma =40');

% 生成滤镜
ff = imgaussfhpf(I, 60);
% 应用滤镜
out = imfreqfilt(I, ff);

figure (1);
subplot(2,2,4);
imshow(out);
title('Gauss HPF, sigma =60');

% 计算FFT并显示
temp = fft2(out);
temp = fftshift(temp);
temp = log(1 + abs(temp));
figure (2);
subplot(2,2,4);
imshow(temp, []);
title('Gauss HPF, sigma =60');

上述程序运行后得到的滤波效果如图6.24所示。
image

高斯高通滤波器可以较好地提取图像中的边缘信息,Sigma参数取值越小,边缘提取越不精确,会包含越多的非边缘信息;Sigma参数取值越大,边缘提取越精确,但可能包含不完整的边缘信息。

6.6.2 频域拉普拉斯滤波器及其实现

1.理论基础
频域拉普拉斯算子的推导可以从一维开始,由傅立叶变换的性质可知

image

2.Matlab实现
根据式(6-58),可以编写拉普拉斯频域滤波器的生成函数如下,该函数被封装在金羽图书论坛(http://bbs.book95.com)的“金羽图书与答疑”板块与本书同名的主题帖子附件的“chapter6/code”目录下的imlapf.m文件中。

function out = imlapf(I)
% imlapf函数   构造频域拉普拉斯滤波器
% I参数    输入的灰度图像
[M,N] = size(I);
out = ones(M,N);
for i=1∶M
    for j=1∶N
        out(i,j) = -((i-M/2)^2+(j-N/2)^2);
    end
end
下面的例6.6给出了对Matlab示例图像coins.png进行频域拉普拉斯滤波的Matlab程序。

[例6.6] 拉普拉斯滤波实现。

I = imread('coins.png');

ff = imlapf (I);
out = imfreqfilt(I, ff);

figure (1);
subplot(1,2,1);
imshow(I);
title('Source');

temp = fft2(double(I));
temp = fftshift(temp);
temp = log(1 + abs(temp));
figure (2);
subplot(1,2,1);
imshow(temp, []);
title('Source');

figure (1);
subplot(1,2,2);
imshow(out);
title('Laplace Filter');

temp = fft2(out);
temp = fftshift(temp);
temp = log(1 + abs(temp));
figure (2);
subplot(1,2,2);
imshow(temp, []);
title('Laplace Filter');

上述程序运行后得到的滤波效果如图6.26所示。

image

相关文章
|
机器学习/深度学习 编解码 并行计算
【改进引导滤波器】各向异性引导滤波器,利用加权平均来实现最大扩散,同时保持图像中的强边缘,实现强各向异性滤波,同时保持原始引导滤波器的低低计算成本(Matlab代码实现)
【改进引导滤波器】各向异性引导滤波器,利用加权平均来实现最大扩散,同时保持图像中的强边缘,实现强各向异性滤波,同时保持原始引导滤波器的低低计算成本(Matlab代码实现)
501 8
|
存储 编解码 算法
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
438 6
|
传感器 机器学习/深度学习 算法
【使用 DSP 滤波器加速速度和位移】使用信号处理算法过滤加速度数据并将其转换为速度和位移研究(Matlab代码实现)
【使用 DSP 滤波器加速速度和位移】使用信号处理算法过滤加速度数据并将其转换为速度和位移研究(Matlab代码实现)
682 1
|
机器学习/深度学习 编解码 数据可视化
【能量算子】评估 EEG 中的瞬时能量:非负、频率加权能量算子(Python&Matlab代码实现)
【能量算子】评估 EEG 中的瞬时能量:非负、频率加权能量算子(Python&Matlab代码实现)
235 6
|
机器学习/深度学习 算法 语音技术
【语音分离】通过分析信号的FFT,根据音频使用合适的滤波器进行语音信号分离(Matlab代码实现)
【语音分离】通过分析信号的FFT,根据音频使用合适的滤波器进行语音信号分离(Matlab代码实现)
352 4
|
传感器 算法 数据可视化
【卡尔曼滤波跟踪】跟踪目标的轨迹,并将滤波器输出与原始轨迹进行比较(Matlab实现)
【卡尔曼滤波跟踪】跟踪目标的轨迹,并将滤波器输出与原始轨迹进行比较(Matlab实现)
724 4
|
机器学习/深度学习 资源调度 算法
【图像去噪的滤波器】非局部均值滤波器的实现,用于鲁棒的图像去噪研究(Matlab代码实现)
【图像去噪的滤波器】非局部均值滤波器的实现,用于鲁棒的图像去噪研究(Matlab代码实现)
485 2
|
量子技术 Python
【用有限差分法模拟二能级原子的拉比振荡】针对不同的失谐频率,模拟了拉比翻转双能级量子系统(Matlab代码实现)
【用有限差分法模拟二能级原子的拉比振荡】针对不同的失谐频率,模拟了拉比翻转双能级量子系统(Matlab代码实现)
197 0
基于粒子滤波器的电池剩余使用寿命计算matlab仿真
本研究基于粒子滤波器预测电池剩余使用寿命(RUL),采用MATLAB2022a实现。通过非线性动力学模型模拟电池老化过程,利用粒子滤波器处理非线性和非高斯问题,准确估计电池SOH变化趋势,进而预测RUL。系统仿真结果显示了良好的预测性能。

热门文章

最新文章