i Region Growing Algorithmus für mein Projekt machen dies ist mein AlgorithmusRegion Growing Bildsegmentierung
(mein Bild Graustufen- gewesen, bevor es) 1. get Wert Pixel (0,0) für Keimpixel 2. Vergleiche das Startwertpixel mit einem Nachbarpixel 3. Wenn der Wert von Nr.3 kleiner als der Grenzwert (T) ist, gehe zum nächsten Pixel und gehe zu Nr.2 4. wenn der Wert von Nr.3 mehr als die Schwelle (T) ist, ändere Pixel in Weiß (auch für die nächsten 10 Pixel) und erhalte einen neuen Startwertpixel.
mein Ziel mein Bild mit weißen Linie segmentiert
dies mein Code
private void button4_Click (object sender, EventArgs e) { // GDI + liegt nach wie vor uns - die Rückkehr Format BGR, nicht RGB. BitmapData bmData = RImage.LockBits (neues Rechteck (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);
}
mein Problem ist mein Bild in 1/3 des Bildes weiß geworden was muss ich für "Region Growing" zu tun ?? thx
Von was ich sehen kann, ist Ihr Algorithmus grundlegend gebrochen. Ihre "Seed" -Pixel sind nur die ersten Pixel in den Scanlinien. Wie vergleicht man die restlichen Pixel mit der ersten und wiederholt das für jede Zeile, um eine Bildsegmentierung zu erreichen? Bitte formatieren Sie Ihren Code neu. Die ersten paar Zeilen sind nicht korrekt eingerückt und der Rest ist um mehr als nötig eingerückt. Außerdem werden seedG und seedB nicht verwendet, daher ist ihre Entfernung für die Lesbarkeit am besten. – misha