【问题标题】:Interpreting the Reprojection Error from camera calibration解释相机校准的重投影误差
【发布时间】:2017-10-08 06:54:56
【问题描述】:

我对相机校准期间的重投影错误感到有些困惑。我知道重投影误差描述了检测点和世界点之间的差异。我什至发现值

但它说明了什么?我的意思是例如Reprojection Error 是 2:这意味着距离是 2px,到目前为止还不错。但这对于校准意味着什么?是否需要校准?或者这个值会被校准过程调整为 0?

更笼统地说:价值导致/告诉我们什么?

【问题讨论】:

    标签: matlab opencv camera-calibration


    【解决方案1】:

    来自Mathworks

    重投影误差提供了准确度的定性衡量标准。重投影误差是在校准图像中检测到的模式关键点与投影到同一图像中的相应世界点之间的距离。 showReprojectionErrors 函数提供了每个校准图像中平均重投影误差的有用可视化。如果总体平均重投影误差过高,请考虑排除误差最大的图像并重新校准。

    这样想。假设您正在校准一张脸。您的模型假设您脸部的每个关键点都相隔一定比例。当然,每张照片的比例差异都会与您的模型略有不同。你的模型取了大约 100 个,然后对它们进行平均以确定脸部的“平均”比例。但是,如果其中 10 张照片的角度很奇怪,或者以某种方式扭曲了怎么办。它们是异常值,它们可能会抛弃您的模型。也许最好将它们从模型计算中排除,这样您就可以获得一个更规范化的正常人脸外观模型。您可以通过查看重投影错误来判断出什么。

    【讨论】:

    • 那么你的测试图片和你的模型非常匹配,如果你对错误的数量感到满意,那么你不需要做任何事情。它只是一个诊断工具,供您查看需要改进的地方。
    • 是的。假设您有 999 张自己的照片,以及 1 张戴着高度扭曲的万圣节面具的人的照片。您的模型取所有这 1000 个面孔的平均值。对于你的 999 张照片,你的模型的重投影误差(平均值)应该非常接近(也就是非常小),但对于万圣节面具来说则差得很远(也就是重投影误差会很高)。因此,您可能希望将万圣节面具从您的训练集中取出。
    • 我们用数字来类比。如果您的数据集是 [100, 101, 101, 99, 99],那么您的平均值是 100。您的错误分别是 [0, 1, 1, 1, 1] - 非常接近。但是假设您的数据是 [0, 0, 0, 1000, 1000]。您的平均值为 400。但您的错误分别为 [400, 400, 400, 600, 600]。那么最好聚类成 [0, 0, 0], [1000, 1000] 并在两组上运行不同的模型。但是如果你有 [0, 0, 0, 0, 1000] 呢?也许 1000 是一个异常值。对于 1000,您的投影误差条形图看起来非常高。因此,如果您将 1000 去掉,您的平均值会更合适。
    • 这就是数学从一门科学变成一门艺术的地方。你只需要培养一种感觉,并以数据科学家/机器学习研究员的身份决定何时应该改变你的模型,以及如何改变。您可能会使用它来识别异常值,或识别模型在交叉验证集上的性能。无论哪种方式,重投影误差只是一个工具。没有一种方法可以使用它。有点像你车里的车速表。它会告诉你你的速度有多快,但你必须作为一个人类来决定是否超过速度限制,以及超过多少。
    • 是的。它是每个关键点的校准图像和测试图像之间的误差。如果我提供帮助,您介意点赞并标记为答案吗?
    猜你喜欢
    • 2011-03-12
    • 2021-03-09
    • 2014-04-12
    • 1970-01-01
    • 1970-01-01
    • 2020-04-29
    • 2013-10-07
    • 1970-01-01
    • 2018-09-09
    相关资源
    最近更新 更多