範例:凸包
使用
cnvxhull 函數找出矩陣 M 中前景強度值為前景的像素凸包。使用值 1 (凸包內側) 與 0 (凸包外側) 對輸出進行二進位化處理。A. Rosenfeld 與 A. C. Kak (1982) 在
Digital Picture Processing (數位圖片處理) 的第 269 頁,有所使用的演算法之說明。
利用選擇 P1 作為 M 的一組像素中最左上方的點,而 L1 作為通過 P1 的水平線,可找得凸包。然後再以 P1 為中心旋轉 L1,直到達到該組像素中的值 fg。呼叫所得出的旋轉線 L2,並讓 P2 成為延著 L2 距離 P1 最遠的點,接著重複演算法,直到 Pn = P1。{P1, P2, ... , Pn-1} 的聯集是凸包的頂點。
如需使用此範例的資訊,請參閱
<關於圖像處理範例>。
1. 定義輸入矩陣。
2. 計算前景像素值為 1 的一組凸包。
凸包包含原始圖像中所有 1 的像素,且是最小的凸包組。
3. 選取 2 作為前景像素值,並重新計算凸包。
4. 將玉米粒核的二進位圖像與其凸包重疊,證明凸包可用於描述圖像的輪廓與凹陷處。
5. 求解二進位圖像中白色 (1) 像素的凸包,然後再從凸包減切掉圖像以求解凸包缺陷。二進位化圖像與凸包會縮放 (而不是直接減切),使凸包外側區域為灰色、圖像像素為黑色,而凸包缺陷為白色。
6. 並排顯示 M、Mbin255 及 Mdef 圖像。
(corn1.bmp) | (mbin_255.bmp) | (mdef.bmp) |
凸包的外側在 M 中為灰色,圖像為黑色的 Mbin55,而凸包缺陷會在最終圖像 Mdef 中以白色顯示。