Opencv python 锚点anchor位置及borderValue的改变对膨胀腐蚀的影响

锚点anchor位置及borderValue的改变对膨胀腐蚀的影响

腐蚀:卷积核沿着图像滑动,如果与卷积核对应的原图像的所有像素值都是 1,那么中心元素就保持原来的像素值,否则就变为零。
膨胀:与卷积核对应的原图像的像素值中只要有一个是 1,中心元素的像素值就是 1。

这个描述看起来有点生硬,为了进一步理解opencv对腐蚀与膨胀都是针对灰度图的形态学操作,还是自己操作一遍。
先看下 Python wrapper for OpenCV里的定义
在这里插入图片描述

1. 腐蚀膨胀自定义kernel 默认anchor=(-1,-1)

anchor – 卷积核锚点。其默认值为(-1,-1)说明位于kernel的中心位置
==>查看源码opencv-4.1.1\modules\imgproc\src\filterengine.hpp
static inline Point normalizeAnchor( Point anchor, Size ksize )
{
	if( anchor.x == -1 )
	    anchor.x = ksize.width/2;
	if( anchor.y == -1 )
	    anchor.y = ksize.height/2;
	CV_Assert( anchor.inside(Rect(0, 0, ksize.width, ksize.height)) );
	return anchor;
}

首先定义一个5*5的图片矩阵表示,修改其中几个像素为1

img_5X5= np.zeros((5,5), dtype=np.uint8)
img_5X5[2,2]=1
img_5X5[3,3]=1
img_5X5[3,4]=1

它每个像素对应的值打印下如下:
在这里插入图片描述

再义一个3 * 3的结构元素kernel,该结构元素用3*3的矩阵表示

  1. 其中为1的单元,表示该单元在结构元素中有效(不参与结果运算)
kernel = np.zeros((3,3),np.uint8)
kernel[1,1]=1;
kernel[0,0]=1;
  1. 定义一个锚点,默认锚点为(-1,-1)表示在正中心,在单元格中用红色字体表示。黄色填充色为有效单元.
    在这里插入图片描述
    腐蚀或膨胀的操作:用结构元素(kernel)的锚点位置对齐图像的像素点,然后逐个从左到右至上而下的滑动到每个像素。结构元素中为1的各个坐标格子会与相应的像素对齐。
  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值