从Canvas中的Canny边缘检测创建形状

时间:2013-10-07 08:32:09

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

是否有人知道如何使用Canvas中的Canny Edge Detection创建形状?

2 个答案:

答案 0 :(得分:5)

我假设你已根据问题的制定方式获得了Canny edge detection implemented -

您可以使用方法such as this(用Java编写,但应该很容易转换为JavaScript)和/或可能使用line-fitting approaches(统计数据)。

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

一旦连接了像素,就可以使用缩减算法,例如Ramer–Douglas–Peucker算法(JavaScript implementation here),以避免多边形包含类似斜线的每一个点,依此类推。

你会遇到各种各样的挑战,例如由于原始图像中的噪音太大而导致的短分段线条或“弱线”,“线条”的集群,这使得很难找到如何将它们作为多边形连接

答案 1 :(得分:0)

我不知道有任何库,但你可以:

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

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

编辑我同意肯 - 我可能误解了这个问题。

除了肯的答案,如果你知道你正在寻找什么样的形状,那么你可能想看看Hough Transform,它非常适合检测线条,椭圆和其他可以几何形状的形状仅使用几个参数定义。