【发布时间】:2014-06-17 14:44:36
【问题描述】:
问题
我有一张从摆动的车辆上拍摄的照片。为简单起见,我将其转换为黑白图像。示例如下:
图像显示了高强度回波,其中有一个图案,发现所有有效图像都以红色圈出。该图像可以根据车辆的旋转从多个角度拍摄。另一个例子在这里:
这里的目的是尝试识别存在这种模式的图片单元格。
目前的方法
到目前为止,我已经尝试了几种方法,我正在使用 Matlab 进行测试,但最终将在 C++ 中实现。希望该算法具有时间效率,但是,我对任何建议都感兴趣。
SURF(加速鲁棒特征)特征识别
我尝试了 SURF 的默认 matlab 实现来尝试查找特征。 Matlab SURF 能够识别 2 个示例中的特征(与上述不同),但是无法识别常见的:
我知道这些点是不同的,但模式仍然有些可识别。我尝试了多组图片,几乎没有共同点。从阅读有关 SURF 的内容来看,无论如何它似乎对倾斜图像并不稳健。 也许这里有一些关于预处理的建议?
模板匹配
因此尝试了模板匹配,但绝对不是应用程序的理想选择,因为它不适合缩放或倾斜更改。我愿意接受预处理想法以解决偏差。这可能很容易,关于图片的额外信息的一些讨论将在下面提供。
现在让我们研究模板匹配:假设我们有以下两个图像作为模板和当前图像:
模板选自最前向的图像之一。并在非常相似的图像上使用它,我们可以匹配位置:
但是(并且有些明显)如果我们将图片更改为不同的角度,它将无法正常工作。我们当然期望这是因为模板不再像图像中的图案:
所以我们显然也需要在这里进行一些预处理工作。
霍夫线和 RANSAC
霍夫线和 RANSAC 可能能够为我们识别线,但我们如何获得图案位置?
其他我还不知道的
我对图像处理领域还很陌生,所以我很想听听任何其他适合这个简单而困难的图像记录问题的技术。
传感器以及它将如何帮助预处理
传感器是一个 3d 激光,它已被转换为该实验的图像,但仍保留其距离信息。如果我们绘制从 0 到 255 的距离,我们会得到以下图像:
打火机在更远的地方。这绝对可以帮助我们对齐图像,对最佳方式的一些想法?。到目前为止,我已经想到了诸如计算非 0 单元格的法线之类的事情,我们还可以进行某种梯度下降或最小二乘拟合,使距离差为 0,这样可以对齐图像,使其总是笔直的。问题是纯白色条纹更远?也许我们可以把它分割出来?我们是在我们的算法上构建算法,所以我们需要小心,这样它就不会变成一个怪物。
任何帮助或想法都会很棒,我很乐意研究任何认真的答案!
【问题讨论】:
-
模式的一致性如何?如果每个图像的大小、像素数、独立像素数等...大致相同,您可以尝试使用具有这些标准的简单滑动窗口函数。
-
@Ghaul 是的,那是模板匹配。问题是模板匹配不能很好地处理倾斜的图像。
-
这取决于匹配标准,这就是为什么我建议您尝试一些对旋转更稳健的相似性度量,例如模式中未连接区域的数量。从您上面的图片来看,该模式似乎有 10-13 个彼此靠近的非连接区域。这样的集群有多常见?如果它们很少见,一个简单地计算非连接区域数量的滑动窗口就可以识别出这种模式。
-
如果你上传一些测试图片我可以自己尝试并写一个正确的答案。
标签: c++ matlab image-processing matlab-cvst