2011-12-10 4 views
0

私は鶏の巣の上に直接ウェブカメラを持っています。このカメラは画像を取り込み、サーバ上のフォルダにアップロードします。私は、この画像から卵が敷かれているかどうかを検出したいと思います。2つの画像の比較 - 巣の中の卵を検出する

私は、卵がわらの巣よりもはるかに反射的であるため、コントラストを比較するのが最善の方法だと考えています。 (カメラには赤外線があり、画像は部分的にグレースケールです)

可能であれば、私はこのようにしたいと思います。

答えて

2

イメージを10 x 10ピクセルの小さなサイズにサイズ変更してみてください。これは、小さな不快な詳細を平均化します。

Const N As Integer = 10 
Dim newImage As New Bitmap(N, N) 
Dim fromCamera As Image = Nothing ' Get image from camera here 
Using gr As Graphics = Graphics.FromImage(newImage) 
    gr.SmoothingMode = SmoothingMode.HighSpeed 
    gr.InterpolationMode = InterpolationMode.Bilinear 
    gr.PixelOffsetMode = PixelOffsetMode.HighSpeed 
    gr.DrawImage(fromCamera, New Rectangle(0, 0, N, N)) 
End Using 

注:高品質は必要ありませんが、良い平均化が必要です。たぶん、さまざまな品質設定をテストする必要があります。

今では、ピクセルは元の画像の広い領域をカバーしているため、明るいピクセルは卵の一部になる可能性が非常に高いです。最も明るいピクセルの明るさを平均画像の明るさと比較することも良い考えです。これは、グローバルなイルミネーションの変化による問題を軽減するためです。


EDIT(応答でコメントするには):

あなたのコードがよく構成され、理にかなっています。ここではいくつかの考え:代わりに別途3つの色成分を比較すると...

Dim grayValue = c.R * 0.3 + c.G * 0.59 + c.B * 0.11 

はとカラー値からグレー値を計算します。異なる重みは、赤よりも強い緑と青より強い赤を知覚するという事実によるものです。繰り返しますが、私たちは良いコントラストを望む美しいサムネイルを望んでいません。したがって、ここでもいくつかの実験をしたいと思うかもしれません。赤いコンポーネントだけを使うだけで十分でしょうか。照明条件に依存して、1つの色成分が他の色成分よりも優れたコントラストをもたらすことがある。サムネイル作成のグレー変換部分を作成し、サムネイルをファイルまたは画面に書き込むことをお勧めします。これにより、さまざまな設定(サムネイルのサイズ、パラメータのサイズ変更、色のグレー変換など)と(中間の)結果を視覚的に比較することができます。 (end-)結果を持つビットマップ(bmp)を作成することは非常に良い考えです。

Using文はDispose()です。 End Usingの前に例外が発生したとしても、それは行います(隠されたTry Finallyが含まれています)。

+0

http://pastie.org/2998305あなたはこれについてどう思いますか?どんな改善?私はもっ​​とデータを集めることができるように、ニワトリはすぐに敷設を開始する必要があります。 – madlan

関連する問題