Mathematical Morphology 数学形态学

阅读: 评论:0

Mathematical Morphology 数学形态学

Mathematical Morphology 数学形态学

首先是 structuring element. 

A structuring element can be simply defined as a configuration of
pixels on which an origin is defined (also called an anchor point).  


                                                ---------------opencv cookbook


定义一个structuring element. 

Mat getStructuringElement( int shape, Size ksize, Point anchor=Point(-1,-1) )

其中StructuringElement的形状

– MORPH_RECT - a rectangular structuring element               
– MORPH_ELLIPSE - an elliptic structuring element, that is, a filled ellipse inscribed
into the rectangle Rect(0, 0, esize.width, 0.esize.height)
– MORPH_CROSS - a cross-shaped structuring element
– CV_SHAPE_CUSTOM - custom structuring element (OpenCV 1.x API)


当然,  定义StructuringElement可以直接定义Mat, 但不如getStructuringElement方便

而且会造成形态学变换的不稳定, 要将Mat内的元素赋值才可以, 初始化一块Mat后不一定会是什么值

如:

    使用了cv::Mat(cv::Size(22,7),CV_8U)作为结构元素,每运行一次都产生不同的结果



而原本的cv::Matelement=cv::getStructuringElement(cv::MORPH_RECT,cv::Size(22,7));一直是这样

究其原因可能是未对Mat像素进行初始化.


形态学最基本的操作就是腐蚀和膨胀,  将他们二者结合

腐蚀用伪代码描述就是

      for(all pixels in the element){

          sum = A1 + A2 + .... +An;                 //A0,A1,...An 代表原 结构元素上的像素 , 0 代表中心

          if (sum < somevalue) 

              B0 = 0;                                          //B0代表新图像像素, 0 代表中心

          else B0 =1;

      }

膨胀

      for(all pixels in the element){

          sum = A1 + A2 + .... +An;

          if (sum > somevalue) 

              B0 = 1;

          else B0 =0;

      }

也就是说 ,  在一个 structuring element内,  除了中央点( anchor point)不计,  求其余像素之和,  

看是否大于或小于某个值,  若符合条件,  相应的将中央像素置为1 或 0


腐蚀可以去掉pepper噪声,  膨胀可以去掉salt噪声 


以这两个操作组合构成了形态学的基本操作

opencv内对应的函数是

void morphologyEx( InputArray src, OutputArray dst, int op, InputArray kernel, Point anchor=Point(-1,-1), 

int iterations=1, int borderType=BORDER_CONSTANT, 

const Scalar& borderValue=morphologyDefaultBorderValue() )


其中op 代表操作方式

– MORPH_OPEN - an opening operation                                    先腐蚀后膨胀
– MORPH_CLOSE - a closing operation                                      先膨胀后腐蚀
– MORPH_GRADIENT - a morphological gradient       分别做腐蚀和膨胀,  然后用 膨胀后的 - 腐蚀后的
– MORPH_TOPHAT - “top hat”                                      原图像 - 原图像的开运算
– MORPH_BLACKHAT - “black hat”                              原图像的闭运算 - 原图像
– MORPH_HITMISS - “hit and miss”                              .htm



本文发布于:2024-01-30 16:46:35,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170660439821432.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23