細線化のプログラム
細線化のプログラム
C#で細線化のプログラムを作成してみましたがうまくいきません。
http://imagingsolution.blog107.fc2.com/blog-entry-138.html を参考に作成しました。
うまくいかないところは、一部に縦線がいくつも残ってしますところです。
ソース
static Bitmap Shape(Bitmap bmp) {
int Flag = 0;
//初期化
for (int j = 0; j < bmp.Height ; j++)
{
for (int i = 0; i < bmp.Width ; i++)
{
if (bmp.GetPixel(i, j).R != 255) {
bmp.SetPixel(i, j, Color.FromArgb(0, 0, 0));
}
}
}
while(true){
//パターン1
for (int i = 1; i < bmp.Width - 1; i++)
{
for (int j = 1; j < bmp.Height - 1; j++)
{
if (bmp.GetPixel(i, j).R == 255)
{
//除去しないパターン
if (( 略 ))
{
//セーフ
}
else if ((略)){
//セーフ
}
//除去するパターン
else if ((bmp.GetPixel(i + 1, j).R != 255) || (bmp.GetPixel(i, j - 1).R != 255))
{
//黒にする
bmp.SetPixel(i, j, Color.FromArgb(0, 0, 0));
Flag++;
}
}
}
}
// MessageBox.Show(Flag.ToString());
//終了
if (Flag == 0)
return bmp;
Flag = 0;
/*パターン2も同じようにする*/
という感じでプログラムを組んでいます。
画像は失敗例です。アドバイスをお願いします
お礼
遅くなりましたが、単純な記述ミスでした。 ありがとうございました。