フーリエ記述子を使用して単純な形状を認識する単純なシステムを構築しようとしています: プログラムで高速フーリエ変換のこの実装を使用しています: (以下のリンク)
http://www.wikijava.org/wiki/The_Fast_Fourier_Transform_in_Java_%28part_1%29
fft(double[] inputReal, double[] inputImag, boolean direction)
入力は次のとおりです。実数とimagの部分(基本的に、私が持っている境界パラメーターのx、y座標です)と出力は、変換された実数とimagの数値です。
質問: 出力 (変換された real,imag ) を単純な形状の不変記述子として使用するにはどうすればよいですか?
これは私が考えたことでした:
R = sqrt( real^2 + imag^2 )
N ステップごとに 計算します。R
それぞれをR[1]
= 正規化係数で割り、不変にします。
問題は、わずかに異なる画像 (わずかな回転が適用されているなど) に対して非常に異なる R 値が得られることです。
言い換えれば、
私の記述子は不変ではありません... R値の取得に何か問題があると思います。