Opencv C++ 形态学图像处理(腐蚀、膨胀、开运算、闭运算)

简介

形态学运算是用集合来定义的。在图像处理(主要在二值图像上)中,我们使用两类像素集合的形态学:目标元素和结构元(SE)。通常,目标定义为前景像素集合。结构元可以按照前景像素和背景像素来规定的。

腐蚀

结构元B对前景像素A的腐蚀可定义为:结构元B包含于前景像素A(前景像素B只与结构元像素A重叠)。

腐蚀是一种收缩或细化运算。

获取结构元API:getStructuringElement(shape,ksize,anchor)

shape:结构元的形状。

  • MORPH_RECT(矩形结构元):由一组矩形像素组成,可以用来检测水平、垂直和斜向的边缘、线条和角点。

  • MORPH_CROSS (十字形结构元):由一组十字形的像素组成,可以用来检测水平、垂直和斜向的边缘和角点。

  • MORPH_ELLIPSE(椭圆形结构元):由一组椭圆形的像素组成,可以用来检测椭圆形区域内的特征。

补充:矩形结构元适用于处理具有明显边缘的图像,而圆形结构元适用于处理具有连续性的图像。十字形结构元适用于处理具有明显方向性的图像,椭圆形结构元则更加灵活,可适用于各种形状和尺寸的目标。

ksize:结构元的尺寸大小。

anchor:锚点,结构元基于该点在前景上滑动,默认Point(-1,-1)。

腐蚀API:erode(src,dst,kernel,anchor,iterations,borderType,borderValue)

src:输入的图像。

dst:输出的图像。

kernel:结构元,通过getStructuringElement获取。

anchor:锚点,默认Point(-1,-1)。

iterations:迭代次数,默认值为1。

borderType:边界类型,默认值为BORDER_CONSTANT。

borderValue:边界值,默认值为morphologyDefaultBorderValue()。

膨胀

结构元B对前景像素A的膨胀可定义为:前景像素A与结构元B至少一个元素重合。

膨胀会“增长”或“粗化”图像中的目标。

膨胀API:dilate(src,dst,kernel,anchor,iterations,borderType,borderValue)

src:输入的图像。

dst:输出的图像。

kernel:结构元,通过getStructuringElement获取。

anchor:锚点,默认Point(-1,-1)。

iterations:迭代次数,默认值为1。

borderType:边界类型,默认值为BORDER_CONSTANT。

borderValue:边界值,默认值为morphologyDefaultBorderValue()。

开运算

开运算是:首先结构元B对前景像素A的腐蚀,接着结构元B对腐蚀结构膨胀(结构元B对前景像素A的开运算是B的所有平移的并集,以便B完全拟合A)。

开运算通常平滑物体的轮廓、断开狭窄的狭颈、消除细长的突出物。

开运算API:morphologyEx(src,dst,op,kernel,anchor,iterations,borderType,borderValue)

src:输入的图像。

dst:输出的图像。

op:当为CV_MOP_OPEN为开运算。

kernel:结构元,通过getStructuringElement获取。

anchor:锚点,默认Point(-1,-1)。

iterations:迭代次数,默认值为1。

borderType:边界类型,默认值为BORDER_CONSTANT。

borderValue:边界值,默认值为morphologyDefaultBorderValue()。

闭运算

开运算是:首先结构元B对前景像素A的膨胀,接着结构元B对腐蚀结构腐蚀(结构元B的所有不与前景像素A重叠的并集的补集)。

闭运算同样平滑轮廓,但与开运算相反,它通常弥合狭窄的断裂和细长的沟壑,消除小孔,并填补轮廓中的缝隙。

闭运算API:morphologyEx(src,dst,op,kernel,anchor,iterations,borderType,borderValue)

src:输入的图像。

dst:输出的图像。

op:当为CV_MOP_CLOSE为闭运算。

kernel:结构元,通过getStructuringElement获取。

anchor:锚点,默认Point(-1,-1)。

iterations:迭代次数,默认值为1。

borderType:边界类型,默认值为BORDER_CONSTANT。

borderValue:边界值,默认值为morphologyDefaultBorderValue()。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我就是不按套路出牌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值