利用Canny边缘检测跟踪弱点

时间:2015-10-07 05:46:38

标签: java image-processing computer-vision

我试图用Java实现我自己的Canny Edge Detection版本,但是我已经陷入了最后的障碍。我无法跟随强边缘并检测到弱点以巩固我的边缘。我在这里有一些例子:

我的Canny计划的结果:

enter image description here

OpenCV的Canny功能结果:

enter image description here

起始图片:

enter image description here

以下是我试图加强边缘的代码:

    //main program
    for(int x = 1; x < width-1; x++)
    {
        for(int y = 1; y < height-1; y++)
        {
            if(src.getRaster().getPixel(x, y, tmp)[0] >= 250)
            {
                trackWeakOnes(x, y, src);
            }
        }
    }

    private static void trackWeakOnes(int x, int y, BufferedImage src) 
    {
        for (int a = x - 1; a <= x + 1; a++)
        {
            for (int b = y - 1; b <= y + 1; b++) 
            {
                if (checkWeak(a, b, src)) 
                {
                    src.getRaster().setPixel(x, y, tmpMax);
                    trackWeakOnes(a, b, src);
                }
            }
        }
    }

    private static boolean checkWeak(int x, int y, BufferedImage src)
    {   
        return ((src.getRaster().getPixel(x, y, tmpPix)[0] > 0) && 
                (src.getRaster().getPixel(x, y, tmpPix)[0] < 255));
    }

tmpPix是要填充的空数组,tmpMax是一个数组{255,255,255},使边缘变白。如果有人愿意,我可以添加更多代码。我出错了什么想法?

修改:完整源代码 - &gt; http://hostcode.sourceforge.net/view/3506

编辑2:LIRE源的结果(卡周围仍有一些破碎的边缘):

enter image description here

0 个答案:

没有答案