OpenCV 4.12.0
開源計算機視覺
載入中...
搜尋中...
無匹配項
擊中或擊不中

上一教程: 更多形態學變換
下一教程: 使用形態學操作提取水平和垂直線

原始作者Lorena García
相容性OpenCV >= 3.0

目標

在本教程中,您將學習如何透過使用擊中或擊不中變換(也稱為命中和未命中變換)在二值影像中找到給定的配置或模式。此變換也是更高階的形態學操作(如細化或修剪)的基礎。

我們將使用 OpenCV 函式 morphologyEx()

擊中或擊不中理論

形態學運算元根據影像的形狀處理影像。這些運算元將一個或多個結構元素應用於輸入影像以獲得輸出影像。兩個基本的形態學操作是腐蝕膨脹。這兩個操作的組合會生成高階形態學變換,例如開運算閉運算頂帽變換。要了解有關這些和其他基本形態學操作的更多資訊,請參閱之前的教程 (腐蝕和膨脹) 和 (更多形態學變換)。

擊中或擊不中變換對於在二值影像中查詢模式很有用。特別是,它會找到那些鄰域與第一個結構元素 \(B_1\) 的形狀匹配,同時不與第二個結構元素 \(B_2\) 的形狀匹配的畫素。從數學上講,應用於影像 \(A\) 的運算可以表示如下

\[ A\circledast B = (A\ominus B_1) \cap (A^c\ominus B_2) \]

因此,擊中或擊不中運算包括三個步驟

  1. 用結構元素 \(B_1\) 腐蝕影像 \(A\)。
  2. 用結構元素 \(B_2\) 腐蝕影像 \(A\) 的補集(\(A^c\))。
  3. 步驟 1 和步驟 2 的 AND 結果。

結構元素 \(B_1\) 和 \(B_2\) 可以組合成單個元素 \(B\)。讓我們看一個例子:

在這種情況下,我們正在尋找一種模式,其中中心畫素屬於背景,而北部、南部、東部和西部畫素屬於前景。鄰域中的其餘畫素可以是任何型別,我們不關心它們。現在,讓我們將此核心應用於輸入影像

您可以看到該模式僅在影像中的一個位置找到。

程式碼

下面顯示了與先前示例相對應的程式碼。

如您所見,使用函式 morphologyEx() 以及操作型別 MORPH_HITMISS 和選擇的核心非常簡單。

其他示例

在這裡,您可以找到將不同的核心應用於之前使用的相同輸入影像的輸出結果

現在嘗試您自己的模式!