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

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

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

零相移滤波器必须是关于原点对称的,因此一个中心位于(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处理

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

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

陷波滤波器

通过鼠标选择矩形区域,找出最大值点,当做(u,v);

代码实现:

#include "opencv2/opencv.hpp"

typedef cv::Mat Mat;

Mat image_add_border( Mat &src )
{
    int w=2*src.cols;
    int h=2*src.

OpenCV是一个开源计算机视觉库,YoloV5是一种目标检测算法,而卡尔曼滤波器是一种用于状态估计的滤波器。 在使用OpenCV进行YoloV5目标跟踪时,可以结合卡尔曼滤波器来对目标的位置进行估计和预测,从而提高跟踪的准确性和稳定性。 卡尔曼滤波器是一种递归滤波器,它根据一系列观测值的权重来估计对象的状态。在YoloV5跟踪中,可以将目标检测得到的边界框作为观测值,然后使用卡尔曼滤波器来估计目标的位置和速度。 具体的步骤如下: 1. 初始化卡尔曼滤波器的状态变量,包括目标的位置、速度和加速度等。 2. 在每一帧中,使用YoloV5算法检测目标的边界框,并将其作为观测值输入到卡尔曼滤波器中。 3. 根据当前观测值和上一帧的估计状态,更新卡尔曼滤波器的状态估计。 4. 根据卡尔曼滤波器的估计结果,得到目标的位置和速度等信息。 5. 根据目标的位置和速度等信息,进行目标跟踪,例如在下一帧中搜索目标区域。 6. 重复步骤2至步骤5,实现实时的目标跟踪。 通过使用卡尔曼滤波器进行目标跟踪,可以提高YoloV5算法在实际应用中的性能。卡尔曼滤波器能够对目标位置进行平滑估计和预测,从而减少位置估计的误差,并能够应对目标的运动变化和遮挡等情况。 总之,通过结合使用OpenCV、YoloV5和卡尔曼滤波器,可以实现准确、稳定的目标跟踪应用。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Dwyane05

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

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

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

打赏作者

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

抵扣说明:

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

余额充值