擊中擊不中變換

2021-09-09 05:32:11 字數 2060 閱讀 9818

擊中擊不中變換定義

擊中擊不中變換(hmt)需要兩個結構元素b1和b2,合成乙個結構元素對b=(b1,b2)

乙個用於探測影象內部,作為擊中部分;另乙個用於探測影象外部,作為擊不中部分。顯然,b1和b2是不應該相連線的,即b1∩b2=φ。擊中擊不中變換的數學表示式為:

g(x, y)=hitmiss[f(x, y), b]=erode[f(x, y), b1]and erode[fc(x, y), b2]

其中,fc(x,y)表示的是f(x,y)的補集。

hit-miss演算法步驟:

擊中擊不中變換是形態學中用來檢測特定形狀所處位置的乙個基本工具。它的原理就是使用腐蝕;如果要在一幅影象a上找到b形狀的目標,我們要做的是:

首先,建立乙個比b大的模板w;使用此模板對影象a進行腐蝕,得到影象假設為process1;

其次,用b減去w,從而得到v模板(w-b);使用v模板對影象a的補集進行腐蝕,得到影象假設為process2;

然後,process1與process2取交集;得到的結果就是b的位置。這裡的位置可能不是b的中心位置,要視w-b時對齊的位置而異;

其實很簡單,兩次腐蝕,然後交集,結果就出來了。

hit-miss原理:

基於腐蝕運算的乙個特性:腐蝕的過程相當於對可以填入結構元素的位置作標記的過程。

腐蝕中,雖然標記點取決於原點在結構元素中的相對位置,但輸出影象的形狀與此無關,改變原點的位置,只會導致輸出結果發生平移。

既然腐蝕的過程相當於對可以填入結構元素的位置作標記的過程,可以利用腐蝕來確定目標的位置。

進行目標檢測,既要檢測到目標的內部,也要檢測到外部,即在一次運算中可以同時捕獲內外標記。

由於以上兩點,採用兩個結構基元h、m,作為乙個結構元素對b=(h,m),乙個探測目標內部,乙個探測目標外部。當且僅當h平移到某一點可填入x的內部,m平移到該點可填入x的外部時,該點才在擊中擊不中變換的輸出中。

hit-miss示意圖:

在a圖中尋找b圖所示的影象目標的位置。

解:1、確定結構元素

既然是尋找圖b所示形狀,選取h為圖b所示的形狀。再選乙個小視窗w,w包含h,m=w-h。如下圖所示:

2、求

3、求

4、求

/// /// 擊中擊不中:只能處理位深度為8的512*512影象

///

///

///

private void hitmiss_click(object sender, eventargs e)

//應用擊中結構元素進行腐蝕運算

for (int i = 1; i < curbitmap.height - 1; i++)}}

//應用擊不中結構元素進行腐蝕運算

for (int i = 1; i < curbitmap.height - 1; i++)}}

//兩個腐蝕運算結果再進行「與」操作

for (int i = 0; i < bytes; i++)

else

}grayvalues = (byte

)temparray.clone();

marshal.copy(grayvalues,

0, ptr, bytes);

curbitmap.unlockbits(bmpdata);

}invalidate();}}

擊中擊不中變換

標籤 null delete command 擴充套件工具測試 2010 02 11 18 35 4881人閱讀收藏 舉報 影象處理 6 擊中擊不中變換 形態學中用來檢測形狀的乙個基本工具 檢測不應該只限於形狀,還有大小 我這裡只寫了二值影象的,對於灰度圖還沒試過 它的原理就是使用腐蝕 如果要在一幅...

擊中 擊不中變換 lhMorpHMT

函式 lhmorphmt 說明 形態學擊中 擊不中變換 引數 src 輸入影象,灰度或二值影象 dst 輸出影象 sefg 前景結構元素 sebg 背景結構元素,如為空,則預設為前景結構元素sefg的取反 type 擊中 擊不中變換的型別,二值 0 非約束 1 約束 2 定義如下 define lh...

擊中擊不中的變換

擊中擊不中變換是形態學形狀檢測的基本工具。步驟為 使用模板s1腐蝕原影象x 使用模板s2 s2為是s1的補 對y y為x的補 進行腐蝕 對兩個結果進行取交集 用擊中結構去腐蝕原始影象得到擊中結果x 這個過程可以理解為在原始影象中尋找和擊中結構完全匹配的模組,匹配上了之後,保留匹配部分的中心元素,作為...