栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【opencv-python】卷积边缘处理选项分析

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【opencv-python】卷积边缘处理选项分析

在使用opencv-python进行图像处理过程中,经常会使用卷积对图像进行滤波,在卷积运算过程中,卷积边缘如何处理经常让开发者感到略微困惑,现对此问题进行深入分析。我们使用最简单的滤波函数cv2.filter2D()进行分析,cv2.filter2D()函数的说明见链接,其中borderType指明用何种边缘处理方法,根据官方函数文档提示,有如下几个选项:

可见关于BORDER的选项有很多,但是在opencv的官方教程中并没有找到每一种BORDER的精确含义和说明,因此我们选择其中某几个进行测试。首先测试BORDER_CONSTANT,测试代码如下:

#源图像
src = np.uint8([[1,1,1,1,1],
			    [1,2,3,2,1],
			    [1,1,1,1,1],
			    [1,2,3,2,1], 
			    [1,1,1,1,1]])
kernel = np.ones((3,3),np.float32)
dst = cv2.filter2D(src, -1, kernel,borderType=cv2.BORDER_CONSTANT)
print('src:', src)
print('dst:', dst)
print('kernel:', kernel)

程序运行的结果为:
我们对这一结果进行分析,我们首先看dst图像的第二行第二列元素,记为:dst(1,1)=12,其计算方式遵循卷积的定义,如下图所示:
因此处边缘外,目标图像dst中部像素值为:
当卷积核与src图像边缘进行卷积运算时,卷积核部分元素势必处于src外部,如下图所示:

现在的问题是:“?”的值都应该多少?根据运行结果,dst(0,0)的值为5,可知“?”中的值应该为0,即卷积核不在源图像范围内的元素值设置为0,入下图所示:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/275276.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号