python opencv手动实现cv2.GaussianBlur

为了研究cv2.GaussianBlur()内部的计算逻辑
可以分为两部分,第一步获取高斯核, 第二步滑动窗口进行卷积操作.
ta = cv2.GaussianBlur(da, (kernel, kernel), 0)

(1)设高斯kernel=3,sigma=0, 可得高斯核为:
ka = gaussian_kernel_2d(kernel, 0)
在这里插入图片描述
(2)使用高斯核进行卷积, 为了方便, 这里不考虑位于矩阵边界的值, 可得高斯模糊的结果:
radium = kernel//2
rows, cols = db.shape
result2 = copy.deepcopy(db)
for i in range(radium, rows-radium, 1):
for j in range(radium, rows-radium, 1):
result2[i, j] = (db[i-radium:i+radium+1, j-radium:j+radium+1] * ka).sum()

在这里插入图片描述
(3)与直接使用cv2.GaussianBlur的计算结果保持一致.

另外,经计算发现,borderType=cv2.BORDER_CONSTANT时, 边界填充值为0.

参考资料:
https://blog.csdn.net/weixin_37804469/article/details/113843829?spm=1001.2101.300

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值