画像から SURF 特徴を抽出します.
パラメタ: |
|
---|
関数 cvExtractSURF は, Bay06 で述べられたロバストな特徴を画像から検出します.各特徴は,それ自身の位置,サイズ,姿勢に加え,オプションとして(基本または拡張)ディスクリプタ,を返します. この関数は,物体追跡や位置同定,画像スティッチングに利用できます.
画像から,強い SURF 特徴を抽出する方法を示します.
>>> import cv
>>> im = cv.LoadImageM("building.jpg", cv.CV_LOAD_IMAGE_GRAYSCALE)
>>> (keypoints, descriptors) = cv.ExtractSURF(im, None, cv.CreateMemStorage(), (0, 30000, 3, 1))
>>> print len(keypoints), len(descriptors)
6 6
>>> for ((x, y), laplacian, size, dir, hessian) in keypoints:
... print "x=%d y=%d laplacian=%d size=%d dir=%f hessian=%f" % (x, y, laplacian, size, dir, hessian)
x=30 y=27 laplacian=-1 size=31 dir=69.778503 hessian=36979.789062
x=296 y=197 laplacian=1 size=33 dir=111.081039 hessian=31514.349609
x=296 y=266 laplacian=1 size=32 dir=107.092300 hessian=31477.908203
x=254 y=284 laplacian=1 size=31 dir=279.137360 hessian=34169.800781
x=498 y=525 laplacian=-1 size=33 dir=278.006592 hessian=31002.759766
x=777 y=281 laplacian=1 size=70 dir=167.940964 hessian=35538.363281
StarDetector アルゴリズムを用いて,キーポイントを抽出します.
パラメタ: |
|
---|
関数 GetStarKeypoints は,スケール-空間における極大値であるキーポイントを抽出します. スケール-空間は,各ピクセルに対して,異なるシグマのラプラシアンを近似値計算することで作成されます. 画像ピラミッドは計算時間を削減する有名な方法ですが,それを利用する代わりに,元の高解像度画像のピクセル毎に,すべてのラプラシアンを計算します. しかし,それぞれの近似ラプラシアン値は,積分画像を利用することで,シグマに関係なく O(1) 時間で計算できます. このアルゴリズムは,Agrawal08 の論文に基づいていますが,矩形や六角形,八角形の代わりに,直立した矩形と45度回転した矩形を重ね合わせた八頂点の星型形状を利用しており,これが名前の由来になっています.
各キーポイントは,タプル ((x, y), size, response) で表現されます:
- x, y キーポイントのスクリーン座標.
- size 特徴のサイズ. maxSize 以下.
- response キーポイントの,近似されたラプラシアン値.