【发布时间】:2013-10-13 18:02:36
【问题描述】:
有人知道如何在 Canvas 中通过 Canny Edge Detection 创建形状吗?
【问题讨论】:
标签: javascript html image-processing canvas canny-operator
有人知道如何在 Canvas 中通过 Canny Edge Detection 创建形状吗?
【问题讨论】:
标签: javascript html image-processing canvas canny-operator
我不知道有什么库可以做到这一点,但是你可以:
getImageData() 访问像素数据的字节[]通过这种方式,您可以找到高对比度的区域(边缘)。
编辑我同意 Ken 的观点——我可能误读了这个问题。
除了 Ken 的回答之外,如果您知道要查找哪种形状,那么您可能想查看 Hough Transform,它非常适合检测可以使用几何定义的线条、椭圆和其他形状只有几个参数。
【讨论】:
根据问题的表述方式,我假设您已经拥有Canny edge detection implemented -
您可以使用such as this 方法(用Java 编写,但应该很容易翻译成JavaScript)和/或可能有限地使用line-fitting approaches(统计)。
本质是你必须找出连接了哪些像素,并根据边缘检测的结果自己创建多边形对象/数组。
一旦您拥有连接的像素,您就可以使用点缩减算法,例如 Ramer–Douglas–Peucker 算法 (JavaScript implementation here) 来避免多边形包含类似倾斜线的每个单点等。
您将遇到各种挑战,例如由于原始图像中的噪声过多或“弱线”导致的短分段线,“线”簇,难以找出如何将它们连接为多边形.
【讨论】: