2016-11-29 8 views
1

ビデオフレームから一束のSURF点を集め、これらの座標点をフィルタリングした後、それを自分のものに戻したいと思います形。 あなたは、私が書いたコードを見ることができます下:まだペアとして選択したx、y座標を保持24x1マトリックスへDetectSURFfeaturesをフィルタリングし、MATLABで配列を独自の型に変換する

surfpoints_raw_single_column_matrix = detectSURFFeatures(img); 
raw_points_double_column_matrix = SURFPoints(Location); 
s=1; 
for a=1:size(raw_points_double_column_matrix,1) 
    i=raw_points_double_column_matrix(a,1); 
    j=raw_points_double_column_matrix(a,2); 
if ((i>156-9-70 && i<156+9+70) && (j>406-9-70 && j<406+9+70)) 
matrix_filtered(s,1)=i; 
matrix_filtered(s,2)=j; 
s=s+1; %filtered matrix index counter 
end 
end 
???? = matrix_filtered; 
% Conversion back to the type of surfpoints_raw_single_column_matrix 

を私は必要なものは、(例えば)に変換することである24x2マトリックス(24回[X 、y])。 ありがとうございます...

+0

こんにちは! [mcve]を追加しようとすると、コードをテストできます。しかし、私はあなたが望むものを理解しています。サーフ機能は、ピクセルのいくつかの特定の 'x、y'座標を与えるでしょう、それらはいくつかのSURF値を持っています。ここではどのような変換が起こっていますか? –

答えて

1

この方法の問題は、SURFディスクリプタに付随するすべての情報を1ポイントごとに失うということです。あなたは、スケール、ラプラシアンの記号、各点での方向、向きなどの情報を失います。あなたは空間的な位置だけを見ています。

代わりにlogicalインデックスを使用して、望ましくない構造配列SURFPointsのポイントを削除してください。生の座標も正しく取得されていません。 SURFPointsには、検出された機能の空間的な位置が、Locationというフィールドに含まれていますが、これは2行目のコード行で実行しようとしたものですが、正しくはありません。

したがって、何をする必要がある次のとおりです。

% Your code 
surfpoints_raw_single_column_matrix = detectSURFFeatures(img); 

% Corrected 
raw_points_double_column_matrix = surfpoints_raw_single_column_matrix.Location; 

% New - Get X and Y coordinates 
X = raw_points_double_column_matrix(:,1); 
Y = raw_points_double_column_matrix(:,2); 

% New - Determine a mask to grab the points we want 
ind = (X>156-9-70 & X<156+9+70) & (Y>406-9-70 & Y<406+9+70); 

% New - Create new SURFPoints structure that contains all information 
% from the points we need 
matrix_filtered = surfpoints_raw_single_column_matrix(ind); 
+1

本当にありがとうございました!私は(ind)additonでsurfコマンドを操作できることを知らなかった。 –

+0

@CanDemir ah :)論理インデックスはMATLABの主要な要素です。 'detectSURFFeatures'によって返されるのは構造体配列なので、MATLABの他の行列や配列と同様に、その配列にインデックスを付けることができます。ここでの論理的な索引付けは、各フィーチャー・ポイントのすべての特性を保持したいので重要です。空間位置だけをコピーすると、SURFを特別なものにする重要な情報がすべて失われます。ところで、あなたはとても歓迎して、幸運です! – rayryeng

+0

@CanDemir迂回路として、私はインデックスに関する議論についてこの投稿を強く勧めます:http://stackoverflow.com/questions/32379805/linear-indexing-logical-indexing-and-all-that - ディテールだけでなく、その祖父である線形索引付けも含まれます。もう一度 – rayryeng

関連する問題