【问题标题】:Detect circles in an image?检测图像中的圆圈?
【发布时间】:2015-03-22 12:20:47
【问题描述】:

程序应检测圆圈并将其涂成红色。建议使用对称方法,我假设每个像素都是圆心并检查四个点 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;
        }
    }

【问题讨论】:

    标签: java geometry detect


    【解决方案1】:

    这可以使用圆的霍夫变换来完成。

    algorithm for detecting a circle in an image

    【讨论】:

    • 是的,我已经阅读了它,但是我们需要为我们的任务做一些相对简单的事情,这很复杂。还是谢谢
    • 一开始它可能看起来很复杂,但它非常优雅,可以节省很多时间,否则你会花很多时间。请参阅markschulze.net/java/hough 以获得不错的演示
    【解决方案2】:

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

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

    【讨论】:

    • 感谢您的反馈。我确实使用角度添加了更多点,图像越来越清晰
    猜你喜欢
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 2023-01-01
    • 2011-12-04
    • 2017-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多