检测变形线

时间:2013-11-19 07:26:04

标签: algorithm opencv image-processing

我已经在https://dsp.stackexchange.com/上问了这个问题,但没有得到任何答案!希望在这里得到任何建议:

我有一个项目,我必须在不同的“位置”识别2条线,这些线是正交的,但可以投影在不同的表面上。我正在使用opencv。

交叉点可以在框架上的任何位置。线条为红色(图像仅显示灰度)。

更新

- 我将使用灰度相机!!!!!!!!!

- 投影线的背景和物体可以改变 ilnes on straight surface

deformed lines

我不是要求代码,但仅针对如何解决此问题的提示?我尝试了houghlines功能,但它仅适用于直表面。 提前致谢 !

4 个答案:

答案 0 :(得分:4)

这不是一项艰巨的任务,因为它包括直线。我做过类似的项目。

  1. 首先,如果您的图像是彩色的,则将其转换为灰度。
  2. 然后使用校准的中值滤波器模糊图像。
  3. 现在从灰度图像中减去模糊图像。
  4. 在步骤3之后,如果你看图像,你会看到线条的位置强度 高于图像的其他部分,因为这些线是对比的,当我们应用中位数时 过滤减去的值大于图像的其余部分。
  5. 要获得更清晰的区别,您需要使用创建二进制图像即。只有黑色和白色搭配 一个特殊的thresh举行。 6.最后你有yu线,如果它们是噪音你可以在第4步之后使用礼帽过滤 步骤5之后的高斯滤波。
  6. 您可以从this paper on crack detection

    获取帮助

答案 1 :(得分:1)

我认为AMI的想法很好。

您也可以考虑使用控制激光光源。在这种情况下,您可以在激光打开的情况下获得图像对1,然后关闭一个图像,然后找到差异。

对你来说很有意思:http://www.instructables.com/id/3-D-Laser-Scanner/

答案 2 :(得分:0)

这是减去中值滤波器输出的结果(r = 6):

result of subtracting a median-filtered image

你可以通过调整中值滤波器半径来改善一些事情,但是这些波浪状,不连续的线很难被可靠地检测到。

你真的需要更好的源图像。以下是一些建议:

  1. 彩色相机会有很大帮助。对红色和绿色通道应用高通滤波器,并计算两者之间的差异。红线比那更好。

  2. 你能让光源更亮吗?

  3. 您是否尝试在相机镜头上放置红色滤镜?理想情况下,你想要一个具有尽可能接近光源波长的通带 - 如果光来自激光,那么合适的dichroic filter应该会产生良好的效果。但即使是一块红色塑料也不会好。 (你有一副旧的红/蓝3D眼镜坐在某处吗?)

答案 3 :(得分:0)

从红色通道中减去灰度图像可能有助于突出显示红色。我发布此评论作为评论,但还不能这样做。