检测图像中的圆圈?

时间:2013-01-27 20:04:29

标签: java geometry detect

程序应检测圆圈并将其涂成红色。建议使用对称方法,其中我假设每个像素是圆的中心并检查距离它的四个点r(半径)距离。如果它们相同,请画一个圆圈。然而,在下面的代码中,我得到了许多不必要的圈子

static boolean isCenterOfCircle(int row, int col, int r, BufferedImage image) {

            //getPixels gets the color of the current pixel. 
        if(getPixel(row,col,image) == getPixel(row+r,col,image)
             || getPixel(row,col,image) == getPixel(row-r,col,image)
                || getPixel(row,col,image) == getPixel(row,col+r,image)
                    || getPixel(row,col,image) == getPixel(row,col-r,image)){
            return true;
        }else{
        return false;
        }
    }

2 个答案:

答案 0 :(得分:2)

这可以使用Hough变换进行圆圈。

请参阅algorithm for detecting a circle in an image

答案 1 :(得分:0)

您应检查超过4个点以检测圆圈。 16或更多。也许取决于半径。对于更大的半径,您应该检查更多的点。

或在网上搜索圈子检测算法。除了检查几个像素之外还有其他方法。