圖像處理(三)

形態學圖像處理筆記

(P402)
複習2.6.2(線性操做和非線性操做)和2.6.4(集合和邏輯操做,P46)
在圖像處理中,通常將全集定義爲包含圖像中全部元素的正方形。算法

  1. 形態學圖像處理輸入是圖像,輸出是從這些圖像中提取屬性的處理。
  2. 二值圖像:每一個像素只有兩種可能的灰度等級,不是0就是255。
  3. 灰度值的並集操做定義爲相應像素對的最大,交際操做定義爲相應像素對的最小,補集操做定義爲常數與圖像中每一個像素間的兩兩之差。

腐蝕和膨脹

腐蝕

\(A\ominus B\)
如圖所示,用B去腐蝕A,圖c中黃色區域時A的區域,藍色是B,B在A上運行,B的原點(圖b中心的黑點)訪問A的每個元素,來建立一個新的集合。若是B被A徹底包含,則B的原點在A上的這個元素構成新的集合的元素,不然不構成。最終造成了圖e。從圖e的結果看,A的邊界被腐蝕掉了。
「結構元包含在集合中」明確指出了A的元素與B的元素徹底重疊。

腐蝕縮小或細化了二值圖像中的物體,能夠把腐蝕當作是形態學濾波操做,這種操做將小於結構元的圖像細節從圖像中濾除了。腐蝕執行了一個「線濾波」的功能。網絡

膨脹

\(A\oplus B\)
膨脹會「增加」或「粗化」二值圖像中的物體,粗化的寬度和方式由所用的結構元來控制。

膨脹的應用:
橋接裂縫。工具

對偶性

咱們可使用相同的結構元B膨脹圖像A的背景(A的補),並對結果求補就能獲得B對A的腐蝕。學習

\((A\ominus B)^c = A^c \oplus \hat{B}\)
\((A\oplus B)^c = A^c \ominus \hat{B}\)spa

開操做和閉操做

開操做

\(A\circ B\)
B對A的開操做就是B對A先腐蝕,而後用B對結果進行膨脹。
通常會平滑物體輪廓,斷開較窄的狹頸並消除細的突出物。
幾何解釋:

B對A的開操做的邊界由B中的點創建,當B在A的邊界內測滾動時,B所能達到的A的邊界的最遠點。B對A的開操做是經過擬合到A的B的全部平移的並集獲得的。3d

性質:code

  1. \(A\circ B\)是A的子集
  2. 若是C是D的子集,則\(C\circ B\)\(D\circ B\) 的子集
  3. \((A\circ B) \circ B = A \circ B\)

閉操做

\(A\bullet B\)
B對A的閉操做就是B對A先膨脹,而後用B對結果進行腐蝕。
集合運算符實心圓點。
一般會彌合較窄的間斷和細長的溝壑,消除小的空洞,填補輪廓線中的斷裂。
幾何解釋:
blog

性質:ci

  1. A 是 \(A\bullet B\) 的子集
  2. 若是C是D的子集,則 \(C\bullet B\)\(D \bullet B\) 的子集
  3. \((A\bullet B)\bullet B = A \bullet B\)

根據性質3能夠看出,算子應用一次以後,一個集合的屢次開操做或者閉操做是沒有影響的。io

練習

原圖(來源於網絡):
原圖

過濾出灰度在180-255之間的後
過濾出灰度在180-255之間的後

以半徑爲1.5的圓形結構元素進行腐蝕後
以半徑爲1.5的圓形結構元素進行腐蝕後

再以半徑爲1.5的圓形結構元素進行膨脹後
再以半徑爲1.5的圓形結構元素進行膨脹後

dev_open_window(0, 0, 512, 512, 'black', WindowHandle)
read_image(Image, 'bei1')
dev_display(Image)
* 按照灰度過濾
threshold(Image, Region, 180, 255)
* 腐蝕
erosion_circle(Region, RegionErosion, 1.5)
* 膨脹
dilation_circle(RegionErosion, RegionDilation, 1.5)

擊中或不擊中變換

形態學的擊中或不擊中變換是形狀檢測的一個基本工具。
沒看懂


爲何 (W-D)對 \(A^c\) 的腐蝕會出現D的原點和E中的一橫一豎?A的補集不是不包含D和E嗎?

若是B表示由D及其背景組成的集合,則B在A中的匹配表示爲 \(A\circledast B\),
\[ A\circledast B = (A\ominus D)\cap [A^c\ominus (W-D)] \]

\(B=(B_{1}, B_{2})\)\(B_{1} = D\)\(B_{2} = (W-D)\),則:
\[ A\circledast B = (A\ominus B_{1}) \cap (A^c\ominus B_{2}) \]

一些基本的形態學算法

邊界提取

求集合A的邊界,先用B對A進行腐蝕,而後執行A和腐蝕結果的差。

練習

dev_open_window(0, 0, 512, 512, 'black', WindowHandle)
read_image(Image, 'map')
threshold(Image, Region, 0, 254)
erosion_circle(Region, RegionErosion, 1.5)
* 求兩個區域的不一樣
difference(Region, RegionErosion, RegionDifference)

原圖(來源網絡):

提取邊界後:

孔洞填充

基於集合膨脹、求補和交集的算法。
有條件的膨脹,使填補感興趣的區域。
應用:
消除照片中的反射。
思考:在太陽能板部分斷裂缺失的缺陷檢測中,是否能夠經過空洞填充,獲取到指望中的無缺的太陽能板,而後與實際狀況作比較,找出有問題的部分

未完

這幾天的學習小結

  1. 整體進度偏慢,兩天左右的時間粗略學習了一個例程和精讀了形態學處理的約三分之一章
  2. 章節有必定的關聯性,由於沒什麼基礎,不少東西都得先後結合着跳來跳去看
  3. 邊學邊練的方法感受還不錯,可是由於整體進度較慢,練習量也不太夠
  4. 有的問題可能不用太糾結,幾何解釋比一大段的話更容易理解,一大段話看不明白就先跳過
  5. 須要根據這幾天的學習狀況規劃一下整體計劃及可行性
相關文章
相關標籤/搜索