Back to Top

プログラムの覚書

VB.NET AForge 画像の情報を取得する

AForgeを使用して、画像の情報を取得する方法を記載します。

平均、標準偏差、中央値、最小値、最大値などイメージ統計情報を簡単に取得できます。

これらは、画像の輝度・コントラストの調整など、行う時に使用出来ます。

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

ImageStatistics クラスにて画像の情報を取得する

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 histogram As AForge.Math.Histogram = statistics.Red   '赤の情報を取得する

Dim Mean As Double = histogram.Mean                       '赤の平均値
Dim stddev As Double = histogram.StdDev                   '赤の値の標準偏差
Dim Median As Integer = histogram.Median                  '赤の中央値
Dim min As Integer = histogram.Min                        '赤の最小値
Dim max As Integer = histogram.Max                        '赤の最大値
Dim Range As AForge.IntRange = histogram.GetRange(0.9)    '中央値の90%の範囲を取得

 

Posted in AForge | Leave a reply

VB.NET AForge 画像一連のフィルタを順番に行う

AForgeを使用して、画像に適用する必要のあるフィルタを一度に行う方法を記載します。

AForgeは、AForge.Imaging.Filtersネームスペース内に沢山の画像フィルタが準備されています。

そのフィルタを連続して適用する方法が準備されています。

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

FiltersSequenceクラスを使用してフィルタを画像に適用する

FiltersSequenceは、追加したフィルタを順番に適用します。

Dim FilePath As String = "C:\work\imgsample01.jpg"
Dim img As System.Drawing.Image = System.Drawing.Image.FromFile(FilePath)
 
'グレース化・2祖化・ピクセル化を順番に行う
Dim SeqFilter As FiltersSequence = New AForge.Imaging.Filters.FiltersSequence()
SeqFilter.Add(Grayscale.CommonAlgorithms.BT709)        'グレース化 Grayscale(0.2125, 0.7154, 0.0721)と同じ
SeqFilter.Add(New AForge.Imaging.Filters.Threshold())  '2祖化
SeqFilter.Add(New AForge.Imaging.Filters.Pixellate(4)) 'ピクセル化
Dim seqImage As Bitmap = SeqFilter.Apply(img)
 
'ピクチャーボックスに表示
PictureBox1.Image = seqImage

フィルタの追加順番によってはエラーが出ます。

例えば、二祖化フィルタを適用する場合は、その前にグレース化フィルタを適用する必要があります。

 

Posted in AForge | Leave a reply