从画布中的Canny Edge Detection创建形状



有人知道如何在画布中从Canny边缘检测创建形状吗?

我假设您已经根据问题的表述方式实现了Canny边缘检测 -

你可以使用这样的方法(用Java编写,但应该很容易翻译成JavaScript)和/或一些有限的行拟合方法(统计)。

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

一旦你有了连接的像素,你就可以使用点减少算法,如Ramer-Douglas-Peucker算法(这里的JavaScript实现)来避免多边形包含相似倾斜线的每个点等等。

您将遇到各种挑战,例如由于原始图像中的噪点过多而导致的短段线或"弱线","线"簇使得很难找到如何将它们连接为多边形。

我不知道

有任何库可以做到这一点,但是您可以:

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

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

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

除了Ken的答案之外,如果您知道要查找哪种形状,那么您可能还想查看Hough变换,它非常适合检测线条,椭圆和其他形状,这些形状仅使用几个参数即可进行几何定义。

相关内容

  • 没有找到相关文章

最新更新