私のプロジェクトは、アンドロイドに基づくハーブ認識です。ORB を使用して、キーポイント、機能、および機能の照合を取得します。
このアルゴリズムを使用したい:
- 4 つの参照画像を使用し、それらの特徴 image1 を image1、1-2、1-3、1-4、2-3、3,4 に一致させます。
- 次に、データベースまでの最小距離と最大距離をしきい値として保存します。(最小しきい値 = 合計最小値/6)
- 新しい画像を認識したら、その新しい最小距離と最大距離をデータベースと比較します。しかし、私はそれを行う方法がわかりません。
{
for (j=MinID; j<=MaxID; j++){
MatOfDMatch matches = DetectUtility.match(features, matFromJson(DB.GetORBFitur(j)));
List<DMatch> matchesList = matches.toList();
Double max_dist = 0.0;
Double min_dist = 100.0;
for (int i = 0; i < matchesList.size(); i++){
Double dist = (double) matchesList.get(i).distance;
if (dist < min_dist && dist != 0){
min_dist = dist;
}
if (dist > max_dist){
max_dist = dist;
}
}
このサイトから、次のコードを取得します。
//-- Draw only "good" matches (i.e. whose distance is less than 3*min_dist )
std::vector< DMatch > good_matches;
for( int i = 0; i < descriptors_object.rows; i++ )
{ if( matches[i].distance < 3*min_dist )
{ good_matches.push_back( matches[i]); }
}
その魔法の数 3 を取得する方法? そして、最大距離まで何をしなければなりませんか?
私が使用したいアルゴリズムは、以前に使用した Invariant Moment と City Block Distance を使用して、画像を最小距離に一致させました。