22

所以我有这样的图像

CG生成的浴室
(来源:de-viz.ru

我想得到这样的东西(我没有画出我想要的所有线条,但我希望你能明白我的想法)

黑白 CG 生成的浴室,瓷砖之间有一些红线
(来源:narod.ru

我需要一些超快速的算法来找到它上面的所有直线。我想给出最小长度和最大线失真等算法参数。我想获得相对于图片像素坐标线的起点和终点。

所以在这张图片上找到瓷砖之间的所有线条和顶部的 2 条黑色线条。

所以我需要算法来超快速地在图片上找到不同颜色的直线。

有没有这样的算法?(超级骗子快=)

4

4 回答 4

17

您需要使用复杂的图像处理方法,例如 Canny 边缘检测、Marr-Hildreth 边缘检测、高斯滤波和 Hough 变换等。

但是“超快”方法的存在是极不可能的。

大多数图像处理算法的最小复杂度至少为O(N^2).

我所说的“超快”最多是指O(1);)

一些可能有帮助的链接:

  1. http://www.sci.utah.edu/~cscheid/spr05/imageprocessing/project4/
  2. http://www.contrib.andrew.cmu.edu/~suppe/mobot/
  3. http://www.dunwich.org/baptiste/sic/ecms/ecpublis.html#2
  4. http://wayback.archive.org/web/20090304153603/http://hdebruijn.soo.dto.tudelft.nl/jaar2006/alders.htm
于 2010-04-08T08:29:13.133 回答
5

我认为您需要Hough 变换Radon 变换。阅读我链接的文章并随时提出任何问题:)

于 2010-04-08T00:26:25.127 回答
1

考虑在http://outliner.codeplex.com/中描述的轮廓点算法, 它将以按笔划组织的贝塞尔曲线的形式生成矢量描述的边缘。您需要一些努力来选择最直的笔划(端点已准备好使用)。这种算法非常快,但不是超级骗子。

于 2011-04-11T05:34:25.283 回答
0

我不知道它在您的应用程序中的效果如何,但您可以尝试某种边缘检测方法。不确定如何将这些边缘转换为向量,如果那是您正在寻找的,但这可能是一个开始的地方。无论如何,一些边缘检测算法(例如离散拉普拉斯算子)在现代计算架构上非常快。

哦,如果你这样做,你可能想将图像转换为YCbCr并只使用亮度 (Y) 组件。这也是一个快速的操作

于 2010-04-08T00:48:05.453 回答