虹彩の比較について助けが必要です。
私はすでに虹彩画像をセグメント化して正規化しています。ここで、特徴を抽出し、データベースに追加するか、単に特徴ベクトルのリストに追加して、それを他の特徴ベクトルと比較したいと考えています。そのような虹彩が既にデータベースにあるかどうかをアプリケーションで判断したいと考えています。もちろん、画像は異なります。それらは異なる光、角度などで行われました.
ガボール フィルターが役立つと考えたので、12 の異なるパラメーター値に変更しました。
Mat kernel = Imgproc.getGaborKernel(new Size(25, 25), sigma, theta, lambda, gamma, psi, CvType.CV_64F);
Scalar sum = Core.sumElems(kernel); //kerner normalization
Core.divide(kernel, sum, kernel);
Imgproc.filter2D(floatSource, dest, CvType.CV_64F, kernel);
次に、この関数を使用して 12 個のハミング距離を計算します。
dist_ham = Core.norm(it1.next(), it2.next(), Core.NORM_HAMMING);
そして平均を取ります。
そして... うまくいきません。同じ虹彩または 2 つの異なる虹彩の 2 つの異なる画像を比較する場合、ハミング距離は似ています。アルゴリズムを改善するにはどうすればよいですか? 良い結果を得るには、openCV マザーに実装されているものを使用する必要がありますか? 私にとっては、どのアルゴリズムを使用するかは問題ではなく、良い結果を得たいだけです。そして私は少しビギナーです。
いくつかのサンプル画像: 人物 1 img1: 人物 1 img1
の正規化された虹彩:
Person one img2: person one img2
の正規化された虹彩:
この例のハミング距離は約 29000 です (これは私が得た最小の距離です。ほとんどの場合、同じ人の虹彩で約 30000 - 31000 です) 異なる人のハミング距離は約 31000 です (テストされた画像によって異なります)