OpenCV使用陷波滤波器减少摩尔波纹 C++

本文介绍了如何使用OpenCV库在C++中应用陷波滤波器来减少图像中的摩尔波纹。通过创建陷波带阻滤波器并进行DFT、IDFT操作,实现了对图像频谱的局部修改。文中提供了详细的代码实现,包括图像加边、中心化、对角线交换等步骤,并展示了处理前后的图像和频谱图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

陷波滤波器是更有用的选择性滤波器。陷波滤波器拒绝事先定义的关于矩形中心的一个邻域的频率。

零相移滤波器必须是关于原点对称的,因此一个中心位于(u0,v0)的陷波在位置(-u0,-v0)必须有一个对应的陷波。

陷波带阻滤波器可以用中心已被平移到陷波滤波器中心的高通滤波器的乘积来构造。一般形式为:

                                                      H_{NR}(u,v) = \prod_{k=1}^{Q}H_{k}(u,v)H_{-k}(u,v)

其中,H_{k}(u,v)H_{-k}(u,v)是高通滤波器,他们的中心分别位于(u_k, v_k)和(-u_k, -v_k);这些中心是根据频率矩形的中心(M/2,N/2)确定的。对于每个滤波器,距离计算由下式执行:

                                                   D_{k}(u,v) = \left [ (u-M/2-u_{k})^{2} + (v-N/2-v_{k})^{2} \right ]^{1/2}

                                                   D_{-k}(u,v) = \left [ (u-M/2+u_{k})^{2} + (v-N/2+v_{k})^{2} \right ]^{1/2}

例如下面是一个n阶布特沃斯陷波带阻滤波器,它包含三个陷波对;

                                   H_{NR}(u,v) = \prod_{k=1}^{3}\left [ \frac{1}{1+\left [ D_{0k}/D_{k}(u,v) \right ]^{2n}} \right ]\left [ \frac{1}{1+\left [ D_{0k}/D_{-k}(u,v) \right ]^{2n}} \right ]

D_{k} 和 D_{-k} 由 上式计算得出; 常数D_{0k} 对每一个陷波对都是相同的。对于不同陷波对可以不同。其他陷波带阻滤波器可用相同方法构建。

前面说过,1-带阻滤波就是带通,因此陷波带通滤波器:

                              H_{NP}(u,v)=1-H_{NR}(u,v)

陷波滤波是选择性的修改DFT的局部区域。典型处理是交互式完成,它直接对DFT处理,

下面使用陷波滤波减少图像的摩尔波纹。

使用布特沃斯 n=4,D0=30处理

原图像             ----------------------    处理后图像

原图像频谱图    ---------------------------------------         处理后图像频谱图 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dwyane05

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值