Shape Basedmatching的基本流程

2022-03-30 04:42:17 字數 2292 閱讀 6564

1、 確定出roi的矩形區域

2、 從roi區域提取出影象 (可以先進行影象處理)

3、 建立模板 create_shape_model()

金字塔級數 由numlevels 指定 值越大則 找到物體的時間 越少;

anglestart 和angleextent 決定可能的旋轉範圍,anglestep指定角度範圍搜尋的步長;

minconstrast將模板從影象的雜訊中分離出來,如果灰度值的波動範圍是10,則minconstrast應當設為10;

metric引數決定模板識別的條件,如果設為』use_polarity』,則影象中的物體和模板必須有相同的對比度;

4、 建立好模板後,這時還需要監視模板,用inspect_shape_model()來完成,它檢查引數的適用性,還能幫助找到合適的引數;

5、 還需要獲得這個模板的輪廓,用於後面的匹配,get_shape_model_contours()則會很容易的幫我們找到模板的輪廓;

6、 模板匹配find_shape_model()

這個的功能就是在一幅圖中找出最佳匹配的模板,返回乙個模板例項的長、寬和旋轉角度。

引數subpixel決定是否精確到亞畫素級,設為』interpolation』,則會精確到,這個模式不會占用太多時間,若需要更精確,則可設為』least_square』,』lease_square_high』,

minsocre 分析模板的旋轉對稱和它們之間的相似度,值越大,則越相似

greediness 搜尋貪婪度,這個值在很大程度上影響著搜尋速度,若為0,則為啟發式搜尋,很耗時,若為1,則為不安全搜尋,但最快

7、 找到之後,還需要對其進行轉化,使之能夠顯示,這兩個函式vector_angle_to_rigid()和affine_trans_contour_xld()在這裡就起這個作用。前乙個是從乙個點和角度計算乙個剛體仿射變換,這個函式從匹配函式的結果中對構造乙個剛體仿射變換很有用,把參考影象變為當前影象。

shape-basedmatching的基本流程

首先確定出roi的矩形區域,這裡只需要確定矩形的左上點和右下點的座標即可,gen_rectangle1()這個函式就會幫助你生成乙個矩形,利用area_center()找到這個矩形的中心;

然後需要從影象中獲取這個矩形區域的影象,reduce_domain()會得到這個roi;這之後就可以對這個矩形建立模板,而在建立模板之前,可以先對這個區域進行一些處理,方便以後的建模,比如閾值分割,數學形態學的一些處理等等;

接下來就可以利用create_shape_model()來建立模板了,這個函式有許多引數,其中金字塔的級數由numlevels指定,值越大則找到物體的時間越少,anglestart和angleextent決定可能的旋轉範圍,anglestep指定角度範圍搜尋的步長;這裡需要提醒的是,在任何情況下,模板應適合主記憶體,搜尋時間會縮短。對特別大的模板,用optimization來減少模板點的數量是很有用的;minconstrast將模板從影象的雜訊中分離出來,如果灰度值的波動範圍是10,則minconstrast應當設為10;metric引數決定模板識別的條件,如果設為』use_polarity』,則影象中的物體和模板必須有相同的對比度;建立好模板後,這時還需要監視模板,用inspect_shape_model()來完成,它檢查引數的適用性,還能幫助找到合適的引數;另外,還需要獲得這個模板的輪廓,用於後面的匹配,get_shape_model_contours()則會很容易的幫我們找到模板的輪廓;

建立好模板後,就可以開啟另一幅影象,來進行模板匹配了。這個過程也就是在新影象中尋找與模板匹配的影象部分,這部分的工作就由函式find_shape_model()來承擔了,它也擁有許多的引數,這些引數都影響著尋找模板的速度和精度。這個的功能就是在一幅圖中找出最佳匹配的模板,返回乙個模板例項的長、寬和旋轉角度。其中引數subpixel決定是否精確到亞畫素級,設為』interpolation』,則會精確到,這個模式不會占用太多時間,若需要更精確,則可設為』least_square』,』lease_square_high』,但這樣會增加額外的時間,因此,這需要在時間和精度上作個折中,需要和實際聯絡起來。比較重要的兩個引數是minsocre和greediness,前乙個用來分析模板的旋轉對稱和它們之間的相似度,值越大,則越相似,後乙個是搜尋貪婪度,這個值在很大程度上影響著搜尋速度,若為0,則為啟發式搜尋,很耗時,若為1,則為不安全搜尋,但最快。在大多數情況下,在能夠匹配的情況下,盡可能的增大其值。

找到之後,還需要對其進行轉化,使之能夠顯示,這兩個函式vector_angle_to_rigid()和affine_trans_contour_xld()在這裡就起這個作用。前乙個是從乙個點和角度計算乙個剛體仿射變換,這個函式從匹配函式的結果中對構造乙個剛體仿射變換很有用,把參考影象變為當前影象。

常見的基本流

標準輸入流 bufferedreader br newbufferedreader new inputstreamreader system.in 常呼叫輸入方法 readline string 網路程式設計接收字元的輸出 printwriter pw newprintwriter socket.g...

流的基本概念

流的基本概念 流按照方向分,分為輸入流和輸出流。是以記憶體為參照物,將資料從資料來源中讀取到記憶體,為輸入流,也稱為讀取流。將資料從記憶體中寫入資料來源,為輸出流,也稱為寫入流。流按照型別分,分為位元組流 字元流和物件流。由於計算機採用二進位制。所以資料的傳輸都是以位元組為單位傳輸。所以,無論是哪種...

流的基本使用FileInputStream

從硬碟存在的乙個檔案中,讀取其內容到程式中,使用fileinputstream test public void testfileinputstream1 throws ioexception 精簡版本 int b while b fileinputstream.read 1 4.關閉相應的流 fi...