使用Python達成影像形態學處理(不使用Opencv函式庫)
1. 研究動機
在進入專題實驗室時,觀看DeltaMOOCx的線上課程,看到形態學的操作,覺得使用函式可以快速的達成功能,但是我不禁思考如果不使用函式,自己是否可以完成,本研究使用opencv的cv2.getStructuringElement()、cv2.erode()、cv2.dilate()、cv2.morphologyEx()函式當作對照組與不使用函式之結果進行比較。
2. 研究步驟
2.1結構元素(Structures Element)
結構元素為型態學的必備元素,結構元素的大小可以使用者自訂,opencv函式中可以自訂為交叉、長方形、橢圓形,本研究對照組的opencv函式中使用的結構元素為3x3的交叉區塊,因此不使用opencv函式的實驗組的結構元素也為3x3的交叉區塊。
2.2膨脹(Dilation)
膨脹操作是將結構元素逐個像素的由上而下、由左至右的掃描,假如結構元素的原點與被掃描圖像該點像素值相同,則將整個結構元素覆蓋至該圖像。
圖一 形態學膨脹操作
2.3侵蝕(Erosion)
侵蝕操作是將結構元素逐個像素的由上而下、由左至右的掃描,假如整個結構元素與被掃描圖像像素值相同,則將結構元素的原點覆蓋至該圖像。
圖二 形態學侵蝕操作
2.4斷開(Open)
先侵蝕,接著再膨脹。
圖三 形態學斷開操作
2.5閉合(Close)
先膨脹,接著再侵蝕。
圖四 形態學閉合操作
3. 實驗結果
以下是實驗組與對照組的結果表格:
4. 結論
經過了形態學的練習,不管事程式亦或是觀念都有一定的提升,我覺得可以把結構元素跟 圖像做捲積,再做加減運算,或許可以達成更快的速度。線上課程中,還有教到濾波,邊緣偵測等影像處理的方法,也是日後挑戰的題目。
留言
張貼留言