从投影映射回显示OpenCV

时间:2013-03-13 11:07:35

标签: opencv

我有一个系统,我在其中投影一组图像,然后使用相机回读投影的内容。当有人站在投影前面时,我需要知道他们站在前面的投影的哪一部分。我没有问题检测到这个人,我只需找出一种方法将相机中检测到的点映射回发送到投影仪的图像。

我尝试使用findHomograhy(使用显示图像的角和投影图像),但得到的矩阵不能给出准确的结果。任何其他想法(或使findHomography工作的技巧)?

1 个答案:

答案 0 :(得分:1)

我想从相机拍摄的图像非常模糊,嘈杂和失真,我想你会猜测/跟踪投影图像的角落。

要做的一件重要事情是校准相机以消除径向镜头失真,如果您还没有这样做: http://docs.opencv.org/doc/tutorials/calib3d/camera_calibration/camera_calibration.html

投影机可能还有径向失真,也可以使用新校准的相机进行校准。我不知道你是否有幸找到现成的解决方案。您可能需要参与一些类似于相机校准的严重优化问题域。

在完成上述所有操作后,您仍然遇到问题...,因为拍摄的图像模糊且噪音很大,您会在角点跟踪中出现错误。这意味着只有4个点,这些错误会在结果透视扭曲中大量出现。点对应的提取误差具有一定的概率分布。如果你认为它是正常的,在大多数情况下它是,除了异常值,那么它只是意味着你的误差的标准偏差太大。现在,大数定律可以保证,如果增加样本数,你将接近均值,在这种情况下是正确的投影。

我想说的是,你需要更多的点对应来对抗噪音或更精确地检测少数几种。如果你总是/通常在投影图像中有一些好的功能,并且你愿意花费计算能力,你可以使用功能匹配: http://docs.opencv.org/doc/tutorials/features2d/feature_description/feature_description.html