我有一个系统,我在其中投影一组图像,然后使用相机读取投影的内容。当有人站在投影前面时,我需要知道他们站在投影的哪个部分。我检测人没有问题,我只需要想办法将相机中检测到的点映射回发送到投影仪的图像。
我尝试使用 findHomograhy(使用显示图像和投影图像的角),但生成的矩阵没有给出准确的结果。任何其他想法(或让 findHomography 工作的技巧)?
我有一个系统,我在其中投影一组图像,然后使用相机读取投影的内容。当有人站在投影前面时,我需要知道他们站在投影的哪个部分。我检测人没有问题,我只需要想办法将相机中检测到的点映射回发送到投影仪的图像。
我尝试使用 findHomograhy(使用显示图像和投影图像的角),但生成的矩阵没有给出准确的结果。任何其他想法(或让 findHomography 工作的技巧)?
我猜从相机捕获的图像非常模糊、嘈杂和失真,我猜你会以某种方式检测/跟踪投影图像的角落。
要做的一件重要事情是校准您的相机以消除径向镜头失真,如果您还没有这样做: 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