検出

ここでは位置検出として「テンプレートマッチング」を用いました.
右の画像は右膝関節側面画像になります.
下の左図は関節辺りのテンプレートになり,テンプレートマッチングにより相関の高かった位置を赤枠で示しています(下の右図).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()
一般化ハフ変換は,例えば,領域内に存在する図形を検出したい場合,領域内で検出図形が重なる頻度を求め,その最頻値を採用すればマッチング可能となります.ただ,ノイズの影響を考慮する必要もあります.