我做區域生長算法爲我的項目 這是我的算法區域生長的圖像分割
種子像素(之前我的照片已經灰度) 1.使用值像素(0,0)。比較值種子像素與一個相鄰像素 3.如果3號小於treshold(T)的值,進入下一個像素,然後轉到二號 4.如果3號超過treshold(T)的值,將像素更改爲白色(也適用於下一個10像素),並獲取新的種子值像素。
我的目標是我的照片分割與白線
這是我的代碼
私人無效button4_Click(對象發件人,EventArgs的) { // GDI +還是在於我們 - 返回格式BGR,而不是RGB。 的BitmapData bmData = RImage.LockBits(新的Rectangle(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不會在任何地方使用,因此刪除它們對於可讀性來說是最好的選擇。 – misha 2010-12-02 11:20:42