c++ opencv mat_22、OpenCV用卷积Filter2D进行滤波器

迄今为止,看到的函数中,卷积的操作发生在OpenCV函数的内部。理论上,图像卷积就是将内核与图像覆盖区域对应位置相乘之后求和。从调用函数上来看,它需要一个数组参数来描述内核。在实践层面,有一个重要的微妙因素会对结果产生重大影响。微妙之处在于一些内核是可分离的,而另一些则不是。

ee8568ef8e98c0619796960ccbd0a901.png
图1

图1(A)是可分离的; 它可以表示为两个一维卷积(B和C);D是一个不可分割内核的例子。可分离的内核是可以被认为是两个一维内核的内核,首先与x内核进行卷积然后与y内核进行卷积来应用。这种分解的好处是内核卷积的计算成本大约是图像面积乘以内核区域。这意味着用n×n内核卷积区域A的图像需要时间与An2成正比,同时n×1内核与图像卷积一次,然后与1×n内核卷积占用与An + An = 2An成比例。即使n小于3也有好处,随着n的增长,优势更为突出。

1、 利用filter2D()滤波

鉴于图像卷积所需的操作次数,是图像中像素的数量乘以内核中的像素数,这可能需要很多计算,因此,在这种情况下,最好让OpenCV来帮你完成并利用内部优化。OpenCV完成这些操作的函数是filter2D():

cv::filter2D(

cv::InputArray src,

cv::OutputArray dst,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值