python opencv手动实现cv2.GaussianBlur

本文探讨了如何手动实现cv2.GaussianBlur()函数的计算逻辑,包括生成高斯核和进行卷积操作。通过设定高斯核大小和标准差,详细解释了卷积过程,并对比了手动计算结果与cv2.GaussianBlur()的输出,验证了两者的一致性。同时,提到了当使用cv2.BORDER_CONSTANT作为边界填充时,值为0。

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

为了研究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.youkuaiyun.com/weixin_37804469/article/details/113843829?spm=1001.2101.300

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值