gpt4 book ai didi

opencv - 如何检查获得的单应矩阵是否良好?

转载 作者:太空宇宙 更新时间:2023-11-03 20:37:30 24 4
gpt4 key购买 nike

这个问题已经asked ,但我还是不明白。我通过从一组点调用 cv::findHomography 获得单应矩阵。我需要检查它是否相关。
建议的方法是计算内点的最大重投影误差并将其与阈值进行比较。但是在这样的过滤之后,我不断地进行疯狂的变换,对象边界框几乎变成了一条直线或一些奇怪的非凸四边形,具有自相交等。
可以使用什么约束来检查单应矩阵本身是否是够了吗?

最佳答案

你的问题是数学问题。给定一个 3x3 的矩阵,判断它是否代表一个好的刚性变换。很难定义什么是“好”,但这里有一些线索可以帮助您

  1. 单应性应保留多边形点的方向。设计一个简单的测试。 points (0,0), (imwidth,0), (width,height), (0,height) 表示点顺时针排列的四边形。在这些点上应用单应性,看看它们是否仍然顺时针排列,如果它们变成逆时针方向,你的单应性正在翻转(镜像)有时仍然可以的图像。但是,如果您的观点乱七八糟,那么您的单应性不好
  2. 单应性不会过多改变对象的比例。例如,如果您希望它将图像缩小或放大 X 倍,只需检查此规则。将(0,0), (imwidth,0), (width-1,height), (0,height)这4个点进行单应变换,计算四边形的面积(opencv计算多边形面积的方法)如果比区域太大(或太小),您可能有错误。
  3. 良好的单应性通常使用较低的透视值。通常,如果图像的大小为 ~1000x1000 像素,则这些值应为 ~0.005-0.001。高视角会导致巨大的扭曲,这可能是一个错误。如果您不知道这些值在哪里,请阅读我的帖子: trying to understand the Affine Transform.它解释了仿射变换数学,其他 2 个值是透视参数。

我认为,如果您检查以上 3 个条件(条件 2 是最重要的),您将能够检测到大部分问题。祝你好运

关于opencv - 如何检查获得的单应矩阵是否良好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14954220/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com