所以我有像这样的图像
CG generated bathroom http://www.de-viz.ru/catalog/new2/Holm/hvannaya.jpg
我想得到这样的东西(我想要画出我想要的所有线条,但我希望你能得到我的想法)
我需要一些超快速算法来查找它上面的所有直线。我想给出最小长度和最大线路失真等算法参数。我想得到相对于图片像素坐标线的起点和终点。
所以在这张照片上找到瓷砖之间的所有线条,并在顶部找到2条黑线。
所以我需要算法来快速查找图片上不同颜色的直线。
有没有这样的算法? (super duper fast =)
答案 0 :(得分:16)
您需要使用复杂的图像处理方法,如Canny边缘检测,Marr-Hildreth边缘检测,高斯滤波和Hough变换等。
但“超快”方法的存在极不可能。
大多数图像处理算法的最低复杂度至少为O(N^2)
。
“超级快”我的意思是最多O(1)
;)
一些可能有用的链接:
答案 1 :(得分:5)
我认为您需要Hough transform或Radon transform。阅读我链接的文章,随时提出任何问题:)
答案 2 :(得分:1)
考虑http://outliner.codeplex.com/中描述的轮廓点算法 它将以笔划中组织的贝塞尔曲线的形式产生矢量描述的边。 您需要付出一些努力才能选择最直的笔划(终点可以随时使用)。 这个算法非常快,但不是超级的。
答案 3 :(得分:0)
我不知道它在您的应用程序中的效果如何,但您可能会尝试某种edge detection方法。不确定如何将这些边缘转换为向量,如果这是你正在寻找的,但这可能是一个开始的地方。无论如何,一些边缘检测算法(例如Discrete Laplace Operator)在现代计算架构上非常快。
哦,如果你这样做,你可能想要将图像转换为YCbCr并只使用亮度(Y)组件。这也是一个快速的操作