Opencv Gaussblur和sepfilter2D细节问题

还是复现opencv的Gaussblur写成c,首先会获取kernal核,获取kernal核比较简单和matlab一模一样。源码也不贴了。而最关键的是里的卷积问题。假设有MxN的图片,用nxn的卷积核运算,复杂度是要n^2MN次操作;但opencv采用的可分离卷积滤波器sepfilter2D也就是先行卷积,复杂度nMN;再列卷积,复杂度nMN。优化计算速度。这个问题大部分博客都有,关键就是先行卷积时的补齐问题,左边自动补齐的是以下方式。
在这里插入图片描述
当行卷积做完后,sepfilter2D再对图片换列卷积,列卷积也是这种镜像方式。
验证,假设3X3的单位矩阵,

在这里插入图片描述
然后采用 卷积核[1,2,3]
行卷积后的结果为
在这里插入图片描述
再对下图做[1,2,3]列卷积
在这里插入图片描述
结果为

在这里插入图片描述
和opencv的sepfilter2D一样的结果

在这里插入图片描述

大家可以试一下,但是matlab里用所有的imfilter是实现不了的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值