形态学基本操作--OpenCV07

数学形态学是数学形态学图像处理的基本理论。其基本的运算包括:二值腐蚀和膨胀、二值开闭运算、骨架抽取、极限腐蚀
击中击不中变换、形态学梯度、Top-hat变换、颗粒分析、流域变换、灰值腐蚀和膨胀 灰值开闭运算、灰值形态学梯度

最基本的形态学操作为 膨胀(dilate)和腐蚀(erode)

 

膨胀就是求局部最大值的操作,会使图像中的高亮区域逐渐增长(变得更白)
腐蚀就是求局部最小值的操作,图像的高亮区域会逐渐减少

一般使用getStructingElement这个函数 配合相关API使用
getStructingElement函数会返回指定形状和尺寸的结构元素(内核矩阵)

第一个参数表示内核的形状
矩形:MORPH_RECT
交叉形:MORPH_CROSS
椭圆形:MORPH_ELLIPSE
第二个第三个参数分别是内核的尺寸和锚点的位置

一般在调用dilate或者erode函数之前先定义一个Mat类型的对象
来获取getStructingElement的返回值 
对于锚点的位置,默认值point(-1,-1)即为中心点
 

	Mat element;
	element = getStructuringElement(MORPH_RECT, Size(3, 3));

	dilate(Img1, Img2, element); //膨胀
	imshow("dilate img", Img2);

	erode(Img1, OutImg, element); //腐蚀
	imshow("erode img", OutImg);

 

接下来介绍的函数是morphologyEx函数
他利用基本的膨胀和腐蚀技术,来执行更加高级的形态学变换 

morphologyEx
第三个参数int类型的op表示形态学运算的类型
MORPH_OPEN  --开运算
MORPH_CLOSE --闭运算
MORPH_GRADIENT --形态学梯度
MORPH_TOPHAT  --顶帽
MORPH_BLACKHAT  --黑帽
MORPH_ERODE    --腐蚀
MORPH_DILATE   --膨胀

第四个参数 kernel 内核 
同样借助于getStructingElement

第五个参数是锚点的位置 point(-1,-1)表示正中

第六个参数表示函数迭代的次数 可能一次效果并不明显

 

开运算
其实就是先腐蚀后膨胀的过程(先变黑在变白)
开运算可以消除小的物体,在纤细处分离物体,
并且在平滑 较大物体的边界的同时不明显改变其面积
就是图像中有一些坑坑洼洼白色区块,可以有效去除掉。

	Mat OpenImg;
	morphologyEx(Img1, OpenImg, MORPH_OPEN, element);
	imshow("Open img", OpenImg);

闭运算
其实就是先膨胀后腐蚀的过程(先变白后变黑)
闭运算可以排除小型黑洞(黑色区域)

	Mat CloseImg;
	morphologyEx(Img1, CloseImg, MORPH_CLOSE, element);
	imshow("Close Img", CloseImg);

形态学梯度
形态学梯度是膨胀图与腐蚀图之差
对二值图像进行这一操作的时候可以将团块(blob)的边缘突出出来。
我们可以利用形态学梯度保留物体的边缘

	Mat GradientImg;
	morphologyEx(Img1, GradientImg, MORPH_GRADIENT, element);
	imshow("Gradient Img", GradientImg);

顶帽
是 原图像与开运算操作的图像 之差
因为开运算带来的结果是放大了裂缝或者局部低亮度的区域。
从原图减去开运算后的图,得到的效果图突出了比原图轮廓周围的区域更明亮的区域
且这一操作与选择的核的大小相关
顶帽运算往往用来分离比邻近点亮一些的斑点。
在一幅图像具有大幅的背景,而微小物品比较有规律的情况下,可以使用顶帽进行背景提取

	Mat Tophatimg;
	morphologyEx(Img1, Tophatimg, MORPH_TOPHAT, element);
	imshow("Tophat Img", Tophatimg);


黑帽
是 原图像与闭运算操作的图像 之差
黑帽运算后的效果图突出了比原图轮廓周围区域更暗的区域
且这一操作与选择的核的大小相关
黑帽运算用来分离比邻近点暗一些的斑块,效果图有着非常完美的轮廓。

	Mat BlackHatImg;
	morphologyEx(Img1, BlackHatImg, MORPH_BLACKHAT, element);
	imshow("Blackhat Img", BlackHatImg);


 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章