我正在寻找一种算法,该算法可以检测图片中的所有线条,包括曲线等,因此我可以使用我的软件在绘图程序(如画图)中重画它。现在,我只希望将其重新涂成黑色和白色。我的方法是对图片进行模版制作,然后尝试将所有黑色像素读取为线条,最后进行绘制。行的计算是这样的:
* for every pixel
* Point p = (x, y)
* List<Point> line
* while p is not marked
* mark p
* p = adjacent darkest pixel //brightness of a pixel is calculated by pixel luminance divided by 2 + luminance of the 8 adjacent pixels divided by 16
* add p to line
* end while
* draw line
* end for
我的方法可行,但效果不是很好。一些轮廓被检测为两行。
您对我的算法有什么改进,还是有更好的算法?
结果(反相和非反相版本)
这是Python OpenCV中的实现
cv2.Canny()