FFTを使用して周波数領域に変換したい画像があります。Java用のライブラリが不足しているようですが、2つ見つかりました。1つはJTransformsで、もう1つはあまり知られておらず、名前がありません。
あまり知られていないものでは、2Dは2の累乗の長さの値しか持つことができませんでしたがFastFourierTransform.fastFT(real, imaginary, true);
、実際にはすべてのピクセル値でいっぱいのdoubleの2D配列であり、虚数部は同じサイズの2D配列であるような方法を使用するのは簡単でしたゼロの。ブール値は、順方向または逆方向の変換に依存します。これは私にとって理にかなっており、私が行った変換を台無しにする2つの要件の力を除いて機能しました(最初に画像の周りに黒いスペースを追加して、最も近い2の力に合わせました)、私が苦労しているのはどのように解決するかですJTransformsと同等のメソッドを使用し、その際のガイダンスをいただければ幸いです。私が現在行っていることを述べます。
関連するクラスはだと思いますDoubleFFT_2D
。そのコンストラクターは、画像の幅と高さであると想定するいくつかの行と列を取ります。doubleFFT.realForwardFull(real);
私の画像には虚数部がないので、虚数部をゼロとして扱い、ピクセルでいっぱいの実際の2D配列を渡す使用できると思います。残念ながら、これはまったく機能しません。JavaDocは次のように述べthe input array must be of size rows*2*columns, with only the first rows*columns elements filled with real data
ていますが、これが私のイメージにどのように関連しているか、そしてこの要件を満たすために何をしなければならないかはわかりません。
長くて貧弱な説明について申し訳ありませんが、追加情報が必要な場合は、喜んで提供させていただきます。
JTransformsライブラリとドキュメントはここにあります:https ://sites.google.com/site/piotrwendykier/software/jtransforms