я делаю алгоритм роста региона для своего проекта
это мой алгоритм
(моя картинка была в оттенках серого)
1. получить значение пикселя (0,0) для начального пикселя
2. сравнить начальный пиксель значения с одним соседним пикселем
3. если значение № 3 меньше порога (T), перейти к следующему пикселю и перейти к № 2
4. если значение на 3 больше порога (T), измените пиксель на белый (также для следующих 10 пикселей) и получите новый пиксель начального значения.
моя цель - моя картинка, сегментированная белой линией
это мой код
private void button4_Click (отправитель объекта, EventArgs e)
{
// GDI + все еще нам лжет - возвращаемый формат - BGR, а не RGB.
BitmapData 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 изображения
что я должен делать для "роста региона" ??
ТНХ