AForgeを使用して、画像のフーリエ変換をする方法を記載します。
ComplexImageクラスを使用してフーリエ変換
フーリエ変換をする場合、データのサイズが2のべき乗になっている必要があります。
また、画像をグレース化する必要があります。
Dim FilePath As String = "C:\work\imgsample01.jpg" Dim img As System.Drawing.Image = System.Drawing.Image.FromFile(FilePath) '画像の解像度が2のべき乗になるようにする Dim bitWidth = Convert.ToString(img.Width - 1, 2).Length Dim bitHeight = Convert.ToString(img.Height - 1, 2).Length Dim imgWidth = 2 ^ bitWidth Dim imgHeight = 2 ^ bitHeight '新規にイメージを作成 Dim grimg = New Bitmap(imgWidth, imgHeight, img.PixelFormat) 'dpiを設定する grimg.SetResolution(img.HorizontalResolution, img.VerticalResolution) 'grimgオブジェクトにimgを描画(コピー)する Using gr = System.Drawing.Graphics.FromImage(grimg) gr.DrawImage(img, 0, 0) End Using 'グレース化 Dim graysFilter As Grayscale = New Grayscale(0.2125, 0.7154, 0.0721) Dim graysImage As Bitmap = graysFilter.Apply(grimg) 'フーリエ変換フィルタ生成 Dim fftFilter As AForge.Imaging.ComplexImage = AForge.Imaging.ComplexImage.FromBitmap(graysImage) '順方向フーリエ変換 fftFilter.ForwardFourierTransform() Dim fftImage As Bitmap = fftFilter.ToBitmap() 'ピクチャーボックスに表示 PictureBox1.Image = fftImage
逆フーリエ変換は、BackwardFourierTransform()メソッドです。