二值图像孔洞填充
(這里的二值為0和255)
二值圖像的孔洞填充是基于圖像形態學操作的基本運算,本文參考數字圖像處理(岡薩雷斯著)相關章節的有關內容并結合作者自己的思考,給出了基于C# 二值圖像孔洞填充的可行程序。
基礎知識:參考數字圖像處理 P402-P415
數學形態學的語言是集合論,這里所說的孔洞是二值圖像內部八連通點陣組成的閉合圈內的像素點集,孔洞填充的基本步驟如下:
1.確定二值圖像像素[0,0]為初始種子點,這里認為[0,0]像素點為背景點,而非某個孔洞內部的點。
2.以種子點為起點,采用形態學膨脹算法對背景進行填充。膨脹到不能膨脹為止。膨脹運算采用四連通結構元。
?
?
四連通結構元(即中心像素為種子,以四連通的方式向周圍膨脹):
?
?
3.背景填充結束后,對得到的二值圖像取反得到新的二值圖像,此時圖像為全部孔洞的點集。
4.將第三步驟得到的二值圖像與原二值圖像相加及得到孔洞填充的結果。
?
這樣的算法對于大多數圖像有效,然而對于[0,0]位置的像素,若為某孔洞內部的點則無法實現有效的孔洞填充。為了解決這一問題,這里采用拓展圖像的方法,即在原圖像的上下左右分別增加一行或一列數值為255的像素。使原圖像尺寸由a*b 變為(a+2)*(b+2),以增加的四周全部像素或[0,0]處的像素為種子,對原圖像進行膨脹運算。
結果如下:(圖中未被填充“孔洞”是由于邊緣未閉合)
? ? ? ? ?
總結
- 上一篇: 推荐5款免费无广告的精品软件
- 下一篇: 图像处理中的卷积