検出

ここでは位置検出として「テンプレートマッチング」を用いました.

右の画像は右膝関節側面画像になります.

下の左図は関節辺りのテンプレートになり,テンプレートマッチングにより相関の高かった位置を赤枠で示しています(下の右図).Pythonプログラムを下に示します.

他にも,ハフ変換や一般化ハフ変換,相互情報量によるマッチングなどの技術もあります.


テンプレート

テンプレートマッチング処理画像                


import cv2 #  OpenCV

   
def main():
    #  入力画像とテンプレート画像を取得
    img = cv2.imread("knee.jpg")       #  撮影画像
    temp = cv2.imread("temp.jpg")   #  テンプレート画像
   
    #  グレースケール変換
    gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)  
    temp = cv2.cvtColor(temp, cv2.COLOR_RGB2GRAY)  
   
    #  テンプレート画像の高さ・幅
    h, w = temp.shape
   
    match = cv2.matchTemplate(gray, temp, cv2.TM_CCOEFF_NORMED)
 
    min_value, max_value, min_pt, max_pt = cv2.minMaxLoc(match)
    pt = max_pt
    
    print(str(max_value*100) +"点")  # 相関値:100点満点
    #  「テンプレート・マッチング」の結果を出力
    cv2.rectangle(img, (pt[0], pt[1] ), (pt[0] + w, pt[1] + h), (0,0,200), 3)
   
    cv2.imwrite("output.png", img)   # 出力画像

if __name__ == "__main__":
    main()

これらのプログラムは,numpyを使って書くこともできます.PythonはC言語の要領で作成でき計算が速いです.計算精度面でもnumpyを使うとより良いようです.

一般化ハフ変換は,例えば,領域内に存在する図形を検出したい場合,領域内で検出図形が重なる頻度を求め,その最頻値を採用すればマッチング可能となります.ただ,ノイズの影響を考慮する必要もあります.

無料でホームページを作成しよう! このサイトはWebnodeで作成されました。 あなたも無料で自分で作成してみませんか? さあ、はじめよう