<button id="ssm6u"><optgroup id="ssm6u"></optgroup></button>
  • 跳轉至

    腐蝕

    概要

    本文講解了數學形態學中的腐蝕, 展示了不同迭代次數下的腐蝕效果.

    keywords 數學形態學 腐蝕

    腐蝕Erode

    腐蝕是一個軟弱無能的亡國君.

    何為腐蝕, 腐蝕在于消除一些孤立點, 消除一些邊界點. 使邊界向內收縮. 我們可以借用腐蝕來消除無意義的小點.

    那么腐蝕是如何實現的呢?

    首先我們需要確定一個核 kernel , 明確核的尺寸與核取值.

    還記得我們之前提到過的卷積核么, 其實是一個東西, 只不過數學形態學的操作不是線形的.

    例如我們確定好這個核的尺寸為3*3 . 在opencv中核又被稱之為結構元素。

    用結構元素與其覆蓋的二值圖像做與 and操作
    如果都為1,結果圖像的該像素為1。否則為0。

    簡單來講, 如果一個點周邊所有點與其本身, 只要這里面有一個0, 它就會被視作為0.

    mor-pri-erosion.gif

    如何選取合適的核?

    這個根據圖像的圖像質量, 分辨率, 應用場景不同, 因圖而異。 你需要去嘗試取不同的值

    那么我們執行腐蝕操作, 最直觀的感覺就是二值化圖像向內縮減了一圈.

    如果你取的核越大, 腐蝕效果越強.

    在opencv中我們腐蝕要使用erode函數. 我們需要新建一個核.

    kernel = np.ones((5,5), np.uint8)
    

    然后將核傳入erode函數:

    erorsion_img = cv2.erode(img, kernel, iterations=1)
    

    其中iterations 指的是迭代的次數.

    源代碼 CH4.5_erosion.py

    '''
        數學形態學 腐蝕 erorsion
    '''
    import cv2
    import numpy as np
    
    # 讀入灰度圖
    img = cv2.imread("dao-bin.png", flags=cv2.IMREAD_GRAYSCALE)
    
    # 創建 核
    kernel = np.ones((5,5), np.uint8)
    # 腐蝕
    erorsion_img = cv2.erode(img, kernel, iterations=1)
    
    cv2.imwrite('dao_erorsion_k5.png', np.hstack((img, erorsion_img)))
    

    迭代次數1

    dao_erorsion_k5_iter1

    這個是實際的運行效果. 的筆觸變得細膩了. 粗糙的邊緣減少了. 向內縮減了一圈. 同時我們可以看到, 白色區域原來一個小黑點, 經過腐蝕就會變成一個大黑點.

    迭代次數2

    dao_erorsion_k5_iter2

    迭代次數3

    dao_erorsion_k5_iter3

    迭代次數5

    dao_erorsion_k5_iter5

    隨著迭代次數的增加, 我們可以看到, 原來連通的圖像, 被逐漸腐蝕, 變成一個個獨立的連通域孤島 最后逐漸消亡.

    這就像一個沒落的帝國, 逐漸消亡的過程, 自己的地盤被一點點吞噬.


    韩国精品无码一区二区三区,精品无码一区二区三区AV,欧洲丰满美熟女乱又伦AV,亚洲午夜久久久影院伊人