【OpenCV学习笔记】- 形态学操作(Morphological)

一、图像的形态学操作(Morphological Image Processing)

形态学一般指生物学中研究动物和植物结构的一个分支。用数学形态学(也称图像代数)表示以形态为基础对图像进行分析的数学工具。基本思想是用具有一定形态的结构元素去度量和提取图像中的对应形状以达到对图像分析和识别的目的。形态学图像处理的数学基础和所用语言是集合论。形态学图像处理的应用可以简化图像数据,保持它们基本的形状特性,并除去不相干的结构。

形态学图像处理的基本运算有:膨胀、腐蚀、开操作和闭操作,击中与击不中变换,TOP-HAT变换,黑帽变换等

形态学的应用:消除噪声、边界提取、区域填充、连通分量提取、凸壳、细化、粗化等;分割出独立的图像元素,或者图像中相邻的元素;求取图像中明显的极大值区域和极小值区域;求取图像梯度

在讲各种形态学操作之前,先来看看结构元素:

膨胀和腐蚀操作的核心内容是结构元素。(后面的开闭运算等重要的也是结构元素的设计,一个合适的结构元素的设计可以带来很好的处理效果)一般来说结构元素是由元素为1或者0的矩阵组成。结构元素为1的区域定义了图像的领域,领域内的像素在进行膨胀和腐蚀等形态学操作时要进行考虑。

一般来说,二维或者平面结构的结构元素要比处理的图像小得多。结构元素的中心像素,即结构元素的原点,与输入图像中感兴趣的像素值(即要处理的像素值)相对应。三维的结构元素使用0和1来定义x-y平面中结构元素的范围,使用高度值定义第三维。

Mat kernel = getStructuringElement(int shape,Size ksize,Point anchor);
//结构元素的定义:形状 (MORPH_RECT \MORPH_CROSS(交叉形) \MORPH_ELLIPSE);结构元素大小;锚点 默认是Point(-1, -1)意思就是中心像素,也可以自己指定


 结构元素的选取,依据具体项目问题对象而定,远不止这几种大可自己设计。

1.1 膨胀(Dilate)

         膨胀是腐蚀运算的对偶运算,其作用是在结构元素的约束下将与目标区域相接触的背景合并到该目标物中,使目标边界向外部扩张,物体的面积增大了相应数量的点。

集合论思想:

原理步骤:

void dilate( const Mat& src, Mat& dst, const Mat& element,Point anchor=Point(-1,-1), int iterations=1,int borderType=BORDER_CONSTANT,const Scalar& borderValue=morphologyDefaultBorderValue() );

参数解释:

src:原图像。
dst:目标图像。
element:腐蚀操作的内核。 如果不指定,默认为一个简单的  矩阵。否则,我们就要明确指定它的形状,可以使用函数getStructuringElement().
anchor:默认为Point(-1,-1),内核中心点。省略时为默认值。
iterations:腐蚀次数。省略时为默认值1。
borderType:推断边缘类型,具体参见borderInterpolate函数。默认为BORDER_DEFAULT,省略时为默认值。
borderValue:边缘值,具体可参见createMorphoogyFilter函数。可省略。
 

1.2 腐蚀(Erode)

         腐蚀是一种在结构元素约束下消除目标图形的部分边界点,使其边界向内部收缩的的算法,具有收缩目标区域的作用。

集合论思想:

                 

原理步骤:

void erode( const Mat& src, Mat& dst, const Mat& element,Point anchor=Point(-1,-1), int iterations=1,int borderType=BORDER_CONSTANT,
const Scalar& borderValue=morphologyDefaultBorderValue() );

1.3 开运算(Open)

开运算:先腐蚀后膨胀;

作用:用来消除图像中细小对象,在纤细点处分离物体和平滑较大物体的边界而有不明显改变其面积和形状。

集合论思想:

         

开运算的几何解释:

                      

1.4 闭运算(Close)

       闭运算:先膨胀后腐蚀;

         作用:用来填充目标内部的细小孔洞(fill hole),将断开的邻近目标连接,在不明显改变物体面积和形状的情况下平滑其边界。

集合论思想:

          

闭运算的几何解释:

1.5 形态学梯度、顶帽、黑帽

(1)形态学梯度(Morphological gradient)

         形态学梯度操作能描述图像亮度变化的剧烈程度;当我们想要突出高亮区域的外围时,则可以选用形态学梯度来突出边缘,可以保留物体的边缘轮廓。。

常见的几种梯度:

基本梯度,膨胀减去腐蚀:

(2)礼/顶帽(Top hat)

         顶帽是原图与原图的开运算的差值图像。开运算放大了裂缝或者局部低亮度的区域,所以,从原图中减去开运算后的图,得到的结果突出了比原图轮廓周围的区域更明亮的区域,这个操作与选择的核的大小有关。TopHat运算一般用来分离比邻近点亮一些的斑块,可以使用这个运算提取背景。

(3) 黑帽(Black hat)

        黑帽是闭运算结果与原图的差值图像。黑帽运算的结果突出了比原图轮廓周围区域更暗的区域,所以黑帽运算用来分离比邻近点暗一些的斑块。

最后,形态学操作的灵活运用,可以起到消除噪声,分割出独立的图像元素以及在图像中连接起相邻的区域。

                   

猜你喜欢

转载自blog.csdn.net/qq_37835727/article/details/123280083