【问题标题】:Create shapes from Canny Edge Detection in Canvas在 Canvas 中从 Canny 边缘检测创建形状
【发布时间】:2013-10-13 18:02:36
【问题描述】:

有人知道如何在 Canvas 中通过 Canny Edge Detection 创建形状吗?

【问题讨论】:

    标签: javascript html image-processing canvas canny-operator


    【解决方案1】:

    我不知道有什么库可以做到这一点,但是你可以:

    • 使用getImageData() 访问像素数据的字节[]
    • 在该数据之上实现您自己的卷积过滤器(网上可能有这方面的示例)

    通过这种方式,您可以找到高对比度的区域(边缘)。

    编辑我同意 Ken 的观点——我可能误读了这个问题。

    除了 Ken 的回答之外,如果您知道要查找哪种形状,那么您可能想查看 Hough Transform,它非常适合检测可以使用几何定义的线条、椭圆和其他形状只有几个参数。

    【讨论】:

      【解决方案2】:

      根据问题的表述方式,我假设您已经拥有Canny edge detection implemented -

      您可以使用such as this 方法(用Java 编写,但应该很容易翻译成JavaScript)和/或可能有限地使用line-fitting approaches(统计)。

      本质是你必须找出连接了哪些像素,并根据边缘检测的结果自己创建多边形对象/数组。

      一旦您拥有连接的像素,您就可以使用点缩减算法,例如 Ramer–Douglas–Peucker 算法 (JavaScript implementation here) 来避免多边形包含类似倾斜线的每个单点等。

      您将遇到各种挑战,例如由于原始图像中的噪声过多或“弱线”导致的短分段线,“线”簇,难以找出如何将它们连接为多边形.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-30
        • 2017-04-22
        • 1970-01-01
        • 1970-01-01
        • 2019-01-29
        • 2012-04-16
        • 2012-08-12
        • 1970-01-01
        相关资源
        最近更新 更多