画像処理で画像上から顔の輪郭といったエッジを出したい時があります。エッジ検出の手法は、かなりたくさんありますが、その中でもシンプルなラプラシアンフィルターを紹介します。
ラプラシアンフィルターは、1ピクセルの周りを含めた9近傍に次のようなマスクをかけ足し合わせる処理を全てのピクセルで行います。
1 1 1
1 -8 1
1 1 1
前にやったローパスフィルター(平滑化)のときのマスクが
1/9 1/9 1/9
1/9 1/9 1/9
1/9 1/9 1/9
だったので画像をぼかしているということがわかります。一方で、ラプラシアンフィルタのマスクを良く見ると、画像上の変化が大きい箇所で大きな値が出ることがわかります。
[2009/2/8追記]
お絵かきツールに、ラプラシアンフィルタを入れてみました。
興味ある方はお絵かきの方もぜひ!
えのぐひろば [http://www.enoguhiroba.net/]
プログラムのほうは、前にやった「bitmapを読み込む」、「実空間でローパスフィルターをかける」のプログラムを改造して作っています。
// C#で画像にラプラシアンフィルタをかけエッジ検出 // 画像の保存のために、2次元配列からbitmapクラスの // SetPixelメソッドを使用しピクセル値をbitmapオブジェクトに // 入れています。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Drawing; namespace LoadBitmap { class Program { static void Main(string[] args) { Bitmap bitmap = new Bitmap("test.bmp"); byte[,] data = new byte[bitmap.Width, bitmap.Height]; // フィルタマスク const int MaskSize = 3; int[,] mask = new int[MaskSize, MaskSize] { {1,1,1}, {1,-8,1}, {1,1,1}}; // bitmapクラスの画像ピクセル値を配列に挿入 for (int i = 0; i < bitmap.Height; i++) { for (int j = 0; j < bitmap.Width; j++) { data[j, i] = bitmap.GetPixel(j, i).B; } } // 画像処理後の2次元配列 byte[,] moddata = new byte[bitmap.Width, bitmap.Height]; // ローパスフィルターで画像処理 for (int i = 0; i < bitmap.Height; i++) { for (int j = 0; j < bitmap.Width; j++) { int sum = 0; for (int k = -MaskSize / 2; k <= MaskSize / 2; k++) { for (int n = -MaskSize / 2; n <= MaskSize / 2; n++) { if (j + n >= 0 && j + n < bitmap.Width && i + k >= 0 && i + k < bitmap.Height) { sum += data[j + n, i + k] * mask[n + MaskSize / 2, k + MaskSize / 2]; } } } moddata[j, i] = (byte)sum; } } // bitmapクラスのSetPixelでbitmapオブジェクトに // ピクセル値をセット for (int i = 0; i < bitmap.Height; i++) { for (int j = 0; j < bitmap.Width; j++) { bitmap.SetPixel(j, i, Color.FromArgb( moddata[j, i], moddata[j, i], moddata[j, i])); } } // 画像の保存 bitmap.Save("outbmp.bmp"); } } }ソースを全部載せてしまいましたw
今回のソースでは、BitmapクラスのSaveメソッドで画像の保存もしています。なので、結果画像を見ることができます。
http://colnagow61s.me.land.to/LaplacianFilter.zip
ソースコードを置いておきます。
ハーバート・シルト
翔泳社
売り上げランキング: 14590
翔泳社
売り上げランキング: 14590
おすすめ度の平均: 

買って良かった
GUIアプリケーションの習得は別の本でこの記事のトラックバックURL
http://thorshammer.blog95.fc2.com/tb.php/43-de16ec3d
この記事にトラックバックする(FC2ブログユーザー)
この記事にトラックバックする(FC2ブログユーザー)
この記事へのトラックバック

