Back to Top

プログラムの覚書

VB.NET AForge 画像のフーリエ変換

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()メソッドです。

  

 

Posted in AForge | Leave a reply

VB.NET AForge RGBチャンネルの線形補正

AForgeを使用して、画像のRGBチャンネルの線形補正の方法を記載します。

AForge.Imaging.Filters をインポートします。

LevelsLinearクラスを使用して画像の線形補正

Dim FilePath As String = "C:\work\imgsample01.jpg"
Dim img As System.Drawing.Image = System.Drawing.Image.FromFile(FilePath)

'画像情報の取得
Dim statistics As AForge.Imaging.ImageStatistics = New AForge.Imaging.ImageStatistics(img)

Dim LevelFilter As LevelsLinear = New LevelsLinear()

'各チャンネルのコントラストを正規化して、各チャンネルから80%の範囲のみを取得する
LevelFilter.InRed = statistics.Red.GetRange(0.8)
LevelFilter.InGreen = statistics.Green.GetRange(0.8)
LevelFilter.InBlue = statistics.Blue.GetRange(0.8)

Dim levelImage As Bitmap = LevelFilter.Apply(img)

'ピクチャーボックスに表示 
PictureBox1.Image = levelImage

  
 

Posted in AForge | Leave a reply