0

Aforge を使用してフーリエ変換を実行しようとしています。ドキュメントによると、このコードは機能するはずです。

Bitmap a1 = new Bitmap("c://z3.bmp");
ComplexImage complexImage1 = ComplexImage.FromBitmap(a1);
complexImage1.ForwardFourierTransform();
Bitmap fourierImage = complexImage1.ToBitmap();
fourierImage.Save("c:/z2.bmp");

何らかの理由で、「画像の幅と高さは 2 の累乗でなければなりません」という奇妙なエラーが表示されます。それが何を意味するのかわかりませんが、コードは完全に機能するはずです。何か助けてください。

4

1 に答える 1

2

エラーによると、幅と高さが 2 のべき乗である画像を使用する必要があります。

フーリエ変換を呼び出す前に、高さと幅が正確に (2,4,8,16,256,512,1024,...) ピクセルになるように、ゼロでパディングして画像を拡大します。

標準の高速フーリエ アルゴリズムは、これらの次元に対してのみ機能します。一部の実装では、画像が一致しない場合、内部で画像を拡大します。Aforge のように見えます。

Aforge は標準の .net グラフィックス クラスを使用していると思うので、次のようなことができます。

    using (Bitmap large = new Bitmap(widthPOWER_OF_2, heightPOWER_OF_2, PixelFormat.YOUR_FORMAT))
    using (Graphics largeGraphics = Graphics.FromImage(large))
    {
        largeGraphics.DrawImage(smallbitmap, 0 , 0); 
     }
   }
于 2013-03-25T16:27:09.703 に答える