openCV的膨脹 腐蝕 開運算 閉運算

2021-09-25 02:21:09 字數 1474 閱讀 1955

目標
• 學習不同的形態學操作,例如腐蝕,膨脹,開運算,閉運算等

• 我們要學習的函式有:cv2.erode(),cv2.dilate(),cv2.morphologyex()等

原理
形態學操作是根據影象形狀進行的簡單操作。一般情況下對二值化影象進行的操作。需要輸入兩個引數,乙個是原始影象,第二個被稱為結構化元素或核,它是用來決定操作的性質的。兩個基本的形態學操作是腐蝕和膨脹。他們的變體構成了開運算,閉運算,梯度等。我們會以下圖為例逐一介紹它們。

腐蝕
就像土壤侵蝕一樣,這個操作會把前景物體的邊界腐蝕掉(但是前景仍然是白色)。這是怎麼做到的呢?卷積核沿著影象滑動,如果與卷積核對應的原影象的所有畫素值都是1,那麼中心元素就保持原來的畫素值,否則就變為零。這回產生什麼影響呢?根據卷積核的大小靠近前景的所有畫素都會被腐蝕掉(變為0),所以前景物體會變小,整幅影象的白色區域會減少。這對於去除白雜訊很有用,也可以用來斷開兩個連在一塊的物體等。這裡我們有乙個例子,使用乙個5x5 的卷積核,其中所有的值都是以。讓我們看看他是如何工作的:

膨脹
與腐蝕相反,與卷積核對應的原影象的畫素值中只要有乙個是1,中心元 素的畫素值就是1。所以這個操作會增加影象中的白色區域(前景)。一般在去雜訊時先用腐蝕再用膨脹。因為腐蝕在去掉白雜訊的同時,也會使前景物件變小。所以我們再對他進行膨脹。這時雜訊已經被去除了,不會再回來了,但是前景還在並會增加。膨脹也可以用來連線兩個分開的物體。

#腐蝕的核,可以前景物體變小

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

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

dilation = cv2.dilate(img,kernel,iterations = 1)

cv2.imshow('erosion',erosion)

cv2.imshow('dilation',dilation)

cv2.waitkey(0)

cv2.destroyallwindows()開運算

先進性腐蝕再進行膨脹就叫做開運算。就像我們上面介紹的那樣,它被用來去除雜訊。這裡我們用到的函式是cv2.morphologyex()。

opening = cv2.morphologyex(img, cv2.morph_open, kernel)

閉運算先膨脹再腐蝕。它經常被用來填充前景物體中的小洞,或者前景物體上的

小黑點。

closing = cv2.morphologyex(img, cv2.morph_close, kernel)

**:

膨脹,腐蝕,開運算和閉運算

膨脹,腐蝕,開運算和閉運算是影象處理中形態學的一部分,其數學基礎是集合論。1.腐蝕是一種消除邊界點,使邊界向內部收縮的過程。可以用來消除小且無意義的物體。腐蝕的演算法 用3x3的結構元素,掃瞄影象的每乙個畫素 用結構元素與其覆蓋的二值影象做 與 操作 如果都為1,結果影象的該畫素為1。否則為0。結果...

11 形態學膨脹 腐蝕 開運算 閉運算

1.膨脹 對邊界點進行擴充,填充空洞,使邊界向外部擴張的過程。2.腐蝕 消除物體邊界點,使邊界向內部收縮的過程,把小於結構元素的物體去除掉。3.開運算 先腐蝕後膨脹的過程稱為開運算,作用 去除孤立的小點,毛刺,消除小物體,平滑較大物體邊界,同時不改變其面積。4.閉運算 先膨脹後腐蝕的過程是閉運算。作...

opencv 腐蝕膨脹開閉運算

腐蝕和膨脹是最基本的形態 算。腐蝕和膨脹是針對白色部分 高亮部分 而言的。膨脹就是對影象高亮部分進行 領域擴張 效果圖擁有比原圖更大的高亮區域 腐蝕是原圖中的高亮區域被蠶食,效果圖擁有比原圖更小的高亮區域。膨脹膨脹就是求區域性最大值的操作,從影象直 來,就是將影象光亮部分放大,黑暗部分縮小。incl...