区域增长图像分割

时间:2010-12-02 05:58:15

标签: c# .net image-processing

我为我的项目制作区域增长算法 这是我的算法

(我的照片之前已经是灰度) 1.获得种子像素的值像素(0,0) 2.将值种子像素与一个相邻像素进行比较 3.如果no.3的值小于treshold(T),则转到下一个像素并转到no.2 4.如果no.3的值大于阈值(T),则将像素更改为白色(也用于下一个10像素),并获取新的种子值像素。

我的目标是用白线分割我的照片

这是我的代码

private void button4_Click(object sender,EventArgs e)         {             // GDI +仍然在于我们 - 返回格式是BGR,而不是RGB。             BitmapData bmData = RImage.LockBits(new 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

1 个答案:

答案 0 :(得分:0)

我在评论中留下了一些关于你的算法的问题,但是当我写这些问题时,我意识到你要做的事情可能根本就不是图像分割

  

我的目标是用白线分割我的照片

你的意思是你想要这样的东西:

alt text

如果是,那么您感兴趣的不是图像分割,它是edge detection。如果你想实现类似的东西,那么也要阅读convolution

相关问题