OpenCV学习笔记2 ----- 核,腐蚀,膨胀,开运算,闭运算

目录

1、核

2、图像腐蚀

3、图像膨胀

4、开闭运算


 

1、核

看过一些理解,核就是一个小的矩阵(5*5,7*7 等等),在形态学操作过程中(例如腐蚀,膨胀,开运算,闭运算),一般是对二值化后的图像进行操作,此过程中的对象一般有两个,一个是原图像,即要进行处理的图像,另一个就是 结构化元素或核。

核既然类似看做是一个数组,可以自己定义,也可以通过getStructuringElement函数获得指定大小(Size(m,n)就是m*n大小的矩阵 )和形状(矩形,圆等)核。

除了核矩阵的大小外,还有一个参数就是核的锚点,锚点是一个Point类型的点,表示为自定义核矩阵中心点在哪。

核 在形态学处理时的作用过程,就是这个矩阵从原图像左上角开始滑动,遍历完整个图像同时一直进行运算的过程,此过程中会给锚点赋予新的值,从而实现不同的形态学处理。

类似于这样:

 

OpenCV学习笔记2 ----- 核,腐蚀,膨胀,开运算,闭运算_第1张图片

gif来自:https://www.jianshu.com/p/6873ac33f9a8

 

2、图像腐蚀

         首先对于腐蚀,膨胀的作用大概有:

  1. 消除噪音
  2. 隔离单个元素并连接图像中的不同元素。
  3. 查找图像中的强度凸点或孔

        腐蚀操作,计算给定内核区域的局部最小值,当内核在图像上扫描时,我们计算由重叠的最小像素值,并用该最小值替换锚点下的图像像素。产生的效果类似于图像的高亮区域逐渐减少。

       OpenCV 提供:   erode函数

void cv::erode(    

          InputArray     src,
          OutputArray     dst,
          InputArray     kernel,
          Point     anchor = Point(-1,-1),
          int     iterations = 1,
          int     borderType = BORDER_CONSTANT,
          const Scalar &     borderValue = morphologyDefaultBorderValue() 
     )          
src    输入的图像;
dst    输出的图像;
kernel    用于侵蚀的结构元素(核)。可以使用getStructuringElement来创建结构元素。。
anchor    结构元素的锚点位置,默认值value(-1,-1)表示锚点位于结构元素中心
iterations    腐蚀操作被递归执行的次数
borderType    推断边缘类型,可参考BorderTypes
borderValue    在边框不变的情况下的边界值
 

3、图像膨胀

        膨胀与腐蚀类似,当内核在图像上扫描时,我们计算由重叠的最大像素值,并用该最大值替换锚点位置中的图像像素。这种最大化的操作会使图像中的亮区“增长”

                  OpenCV 提供:   dilate函数,此函数传参与erode相同。

4、开闭运算

        开操作是先腐蚀,后膨胀。可以平滑物体轮廓,断开狭窄的间断和消除细小的突出物。它具有消除细小物体,在纤细处分离物体和平滑较大物体边界的作用。

        闭操作是先膨胀,后腐蚀。可以消弭狭窄的间断,消除小的孔洞。它具有填充物体内细小空洞,连接邻近物体和平滑边界的作用。

       运用函数morphologyEx可实现开闭运算。

你可能感兴趣的:(Opencv从入门到放弃)