は、私は私のプロジェクトのための領域成長アルゴリズムを作るセグメンテーション これは私のアルゴリズムシードピクセル 2用領域成長イメージが
(その前に私の写真がされているグレースケール) 1. GET値画素(0,0)です。値シードピクセルを1つの隣接ピクセルと比較する 3. no.3の値がtreshold(T)より小さい場合、次のピクセルに移動してno2に行きます。 4. no.3の値がthreshold(T) (次の10ピクセルについても)ピクセルを白に変更し、新しいシード値ピクセルを得る。戻りフォーマットがある -
私の目標は、私の絵は白線で
をセグメント化され、これはプライベート無効button4_Click(オブジェクト送信者、EventArgsの電子) { // GDI +はまだ私たちにある
私のコードですBGR、RGBではない。 ビットマップデータbmData = RImage.LockBits(新しい矩形(0、0、RImage.Width、RImage.Height)、ImageLockMode.ReadWrite、PixelFormat.Format24bppRgb);
int stride = bmData.Stride;
System.IntPtr Scan0 = bmData.Scan0;
unsafe
{
byte* p = (byte*)(void*)Scan0;
int nOffset = stride - RImage.Width * 3;
for (int y = 0; y < RImage.Height; ++y)
{
for (int x = 0; x < RImage.Width; ++x)
{
//every new line of x must new seed
if (x == 0)
{
//getting new value seed pixel
seedR = p[x];
seedG = p[x+1];
seedB = p[x+2];
}
//compare value of seed pixel and pixel scan
if ((seedR - p[x] >= tred) || (p[x] - seedR >= tred))
{
//make white line with change value of pixel
for (int i=1; i <= 5; ++i)
{
p[x] = p[x + 1] = p[x + 2] = 0;
x++;
}
//getting new value of seed pixel
seedR = p[x];
seedG = p[x + 1];
seedB = p[x + 2];
}
p += 3;
}
p += nOffset;
}
}
RImage.UnlockBits(bmData);
}
私の問題は、私のイメージは、私は「成長地域」のために何をしていなければなりません画像 の1/3で白になっています? THX
私の知るところでは、あなたのアルゴリズムは根本的に壊れています。あなたの「シード」ピクセルはスキャンラインの最初のピクセルに過ぎません。残りのピクセルを最初のピクセルと比較し、各行でイメージのセグメンテーションを繰り返す方法を繰り返しますか?また、コードを再フォーマットしてください。行の最初の数行は正しくインデントされず、残りは必要以上にインデントされます。また、seedGとseedBはどこにも使われていないので、読みやすくするためにはseedGとseedBを削除するのが最善です。 – misha