《精通Matlab数字图像处理与识别》一6.7 Matlab综合案例——利用频域滤波消除周期噪声

简介:

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

6.7 Matlab综合案例——利用频域滤波消除周期噪声

精通Matlab数字图像处理与识别
6.5~6.6节介绍了几种典型的频域滤波器,实现了频域下的低通和高通滤波,它们均可在空域下采用平滑和锐化算子实现。而本节准备给出一个特别适合在频域中完成的滤波案例,即利用频域带阻滤波器消除图像中的周期噪声。下面就来看一下这个在空域中几乎不可能完成的任务是如何在频域中实现的。

6.7.1 频域带阻滤波器

顾名思义,所谓“带阻”就是阻止频谱中某一频带范围的分量通过,其他频率成份则不受影响。常见的带阻滤波器有理想带阻滤波器和高斯带阻滤波器。

1.理想带阻滤波器
理想带阻滤波器的表达式为

image

式中:D 0是阻塞频带中心频率到频率原点的距离;W是阻塞频带宽度;D是(u,v)点到频率原点的距离。于是,理想带阻滤波器的频域特性曲面如图6.28所示。

image

2.高斯带阻滤波器
本案例中使用了高斯带阻滤波器,下面直接给出高斯带阻滤波器的表达式。

image

式中:D 0是阻塞频带中心频率到频率原点的距离;W是阻塞频带宽度;D是(u,v)点到频率原点的距离。于是,二维高斯带阻滤波器的频域特性曲面如图6.29所示。
image

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

function out = imgaussfbrf(I, freq, width)
% imgaussfbrf函数   构造频域高斯带阻滤波器
% I参数    输入的灰度图像
% freq参数    阻带中心频率
% width参数   阻带宽度

[M,N] = size(I);
out = ones(M,N);
for i=1∶M
    for j=1∶N
        out(i,j) = 1-exp(-0.5*((((i-M/2)^2+(j-N/2)^2)-freq^2)/(sqrt(i.^2+j.^2)*width))^2);
    end
end

6.7.2 带阻滤波消除周期噪声

带阻滤波器常用于处理含有周期性噪声的图像。周期性噪声可能由多种因素引入,例如图像获取系统中的电子元件等。本案例中我们人为地生成了一幅带有周期噪声的图像,而后通过观察分析其频谱特征,选择了合适的高斯带阻滤波器进行频域滤波。

1.得到周期噪声图像
通常可以使用正弦平面波来描绘周期性噪声。如下程序为Matlab示例图片pout.tif增加周期性噪声。

O = imread('pout.tif'); %读入原图像
[M,N] = size(O);
I = O;
for i=1:M
for j=1:N
  I(i,j)=I(i,j)+20*sin(20*i)+20*sin(20*j); %添加周期噪声
end
end

subplot(1,2,1);
imshow(O);
title('Source');

subplot(1,2,2);
imshow(I);
title('Added Noise');

添加周期性噪声前后的区别如图6.30所示。

2.频谱分析
使用高斯带阻滤波器时,首先需要对欲处理的图像的频谱有一个了解。下面的命令得到了两幅图像的频谱。

i_f=fft2(I);
i_f=fftshift(i_f);
i_f=abs(i_f);
i_f=log(1+i_f);

o_f=fft2(O);
o_f=fftshift(o_f);
o_f=abs(o_f);
o_f=log(1+o_f);

figure(1);
imshow(o_f, [ ]); %得到图6.31(a)
title('Source');

figure(2);
imshow(i_f, [ ]); %得到图6.31(b)
title('Added Noise');

image

程序的运行结果如图6.31所示。

image

image

3.带阻滤波
观察图6.31(b),发现周期性图像的傅立叶频谱中出现了两对相对于坐标轴对称的亮点,它们分别对应于图像中水平和竖直方向的正弦噪声。我们构造高斯带阻滤波器的时候就需要考虑尽可能滤除具有这些亮点对应的频率的正弦噪声。注意到这4个点位于以频谱原点为中心,以50为半径的圆周上。因此,设置带阻滤波器中心频率为50,频带宽度为5,如图6.31(c)所示,滤波后的频域效果如图6.31(d)所示。

相应的程序如下。

ff = imgaussfbrf(I, 50, 5); %构造高斯带阻滤波器
figure, imshow(ff, []); %得到图6.31(c)

out = imfreqfilt(I, ff); %带阻滤波
figure, imshow(out, []); %得到图6.31(d)

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

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

上述程序运行后得到的高斯带阻滤波器最终滤波效果如图6.32所示,我们看到周期噪声被很好地消除,这样的效果在空域中是很难实现的。

image

相关文章
|
3月前
|
Windows
基于MATLAB实现的OFDM仿真调制解调,BPSK、QPSK、4QAM、16QAM、32QAM,加性高斯白噪声信道、TDL瑞利衰落信道
本文通过MATLAB仿真实现了OFDM系统中BPSK、QPSK、4QAM、16QAM和32QAM调制解调过程,并在加性高斯白噪声信道及TDL瑞利衰落信道下计算了不同信噪比条件下的误比特率。
146 4
基于MATLAB实现的OFDM仿真调制解调,BPSK、QPSK、4QAM、16QAM、32QAM,加性高斯白噪声信道、TDL瑞利衰落信道
|
4月前
|
机器学习/深度学习 数据采集 监控
基于CNN卷积神经网络的步态识别matlab仿真,数据库采用CASIA库
**核心程序**: 完整版代码附中文注释,确保清晰理解。 **理论概述**: 利用CNN从视频中学习步态时空特征。 **系统框架**: 1. 数据预处理 2. CNN特征提取 3. 构建CNN模型 4. 训练与优化 5. 识别测试 **CNN原理**: 卷积、池化、激活功能强大特征学习。 **CASIA数据库**: 高质量数据集促进模型鲁棒性。 **结论**: CNN驱动的步态识别展现高精度,潜力巨大,适用于监控和安全领域。
|
4月前
|
算法
基于kalman滤波的UAV三维轨迹跟踪算法matlab仿真
本文介绍了一种使用卡尔曼滤波(Kalman Filter)对无人飞行器(UAV)在三维空间中的运动轨迹进行预测和估计的方法。该方法通过状态预测和观测更新两个关键步骤,实时估计UAV的位置和速度,进而生成三维轨迹。在MATLAB 2022a环境下验证了算法的有效性(参见附图)。核心程序实现了状态估计和误差协方差矩阵的更新,并通过调整参数优化滤波效果。该算法有助于提高轨迹跟踪精度和稳定性,适用于多种应用场景,例如航拍和物流运输等领域。
201 12
|
4月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于CNN卷积神经网络的MQAM调制识别matlab仿真
**理论**: 利用CNN自动识别MQAM调制信号,通过学习星座图特征区分16QAM, 64QAM等。CNN从原始数据提取高级特征,优于传统方法。 - **CNN结构**: 自动特征学习机制,适配多种MQAM类型。 - **优化**: 损失函数指导网络参数调整,提升识别准确度。 - **流程**: 大量样本训练+独立测试评估,确保模型泛化能力。 - **展望**: CNN强化无线通信信号处理,未来应用前景广阔。
|
4月前
|
机器学习/深度学习 算法 BI
基于深度学习网络的USB摄像头实时视频采集与手势检测识别matlab仿真
**摘要:** 本文介绍了使用MATLAB2022a实现的基于GoogLeNet的USB摄像头手势识别系统。系统通过摄像头捕获视频,利用深度学习的卷积神经网络进行手势检测与识别。GoogLeNet网络的Inception模块优化了计算效率,避免过拟合。手势检测涉及RPN生成候选框,送入网络进行分类。系统架构包括视频采集、手势检测与识别、以及决策反馈。通过GPU加速和模型优化保证实时性能,应用于智能家居等场景。
|
5月前
|
算法
m基于GA遗传优化的高斯白噪声信道SNR估计算法matlab仿真
**MATLAB2022a模拟展示了遗传算法在AWGN信道中估计SNR的效能。该算法利用生物进化原理全局寻优,解决通信系统中复杂环境下的SNR估计问题。核心代码执行多代选择、重组和突变操作,逐步优化SNR估计。结果以图形形式对比了真实SNR与估计值,并显示了均方根误差(RMSE),体现了算法的准确性。**
59 0
基于高通滤波器的ECG信号滤波及心率统计matlab仿真
**摘要:** 使用MATLAB2022a,实施高通滤波对ECG信号预处理,消除基线漂移,随后分析心率。系统仿真展示效果,核心代码涉及IIR HPF设计,如二阶滤波器的差分方程。通过滤波后的信号,检测R波计算RR间期,从而得到心率。滤波与R波检测是心电生理研究的关键步骤,平衡滤波性能与计算资源是设计挑战。
|
5月前
|
机器学习/深度学习 算法 数据可视化
基于googlenet深度学习网络的睁眼闭眼识别算法matlab仿真
**算法预览图展示睁眼闭眼识别效果;使用Matlab2022a,基于GoogLeNet的CNN模型,对图像进行分类预测并可视化。核心代码包括图像分类及随机样本显示。理论概述中,GoogLeNet以高效Inception模块实现眼部状态的深度学习识别,确保准确性与计算效率。附带三张相关图像。**
非线性优化 | 非线性问题matlab+yalmip求解案例
非线性优化 | 非线性问题matlab+yalmip求解案例
|
6月前
|
机器学习/深度学习 算法 数据可视化
基于深度学习网络的鞋子种类识别matlab仿真
使用GoogLeNet深度学习模型在matlab2022a中进行鞋子种类识别,利用Inception模块捕捉多尺度特征,提升分类精度。程序加载预训练模型`gnet.mat`,计算验证集的准确性并随机显示32个样本的预测结果及置信度。

热门文章

最新文章