从 3D 平面到平行于图像平面的平面的单应性

2024-03-12

我有一张图像,其中场景中有一个校准目标(已知几何形状)(假设桌子上有一个简单的 2" x 2" 正方形)。我想执行透视变换(使用warpPerspective()),以便生成的图像是桌子的正交视图(就好像相机轴与桌子法线平行)。计算单应性的标准过程是从一个通用平面到另一个不同的通用平面,其中同一场景的两个图像中至少已知 4 个对应关系(使用getPerspectiveTransform())。在这种情况下,我只有一张图像,简单地“组成”一个平面并将对应关系强制到该平面上的某个任意位置是正确的做法吗?例如,在这种情况下,我只需在图像中检测到的 4 个角(A、B、C、D)与我选择的四个点(本质上只是定义像素->现实世界比例)之间建立对应关系。例如,我可以选择 A' = (0,0)、B' = (20,20)、C' = (0,20)、D' = (20,0) 来指示结果图像中每个像素有 10 个像素英寸。当然,我可以在这里选择任何比例,也可以选择方形目标落在输出中的任何位置(即 A' = (100,100)、B' = (120,120)、C' = (100,120), D' = (120,100) )。

这是执行此操作的“正确”方法吗?是否有更好的方法来计算直接查看由图像中已知位于平面中的一组点定义的平面的投影变换?


在这种情况下,我只有一张图像,简单地“组成”一个平面并将对应关系强制到该平面上的某个任意位置是正确的做法吗?

Yes.

注意getPerspectiveTransform在目前的实现中,正好需要 4 个对应关系。它找到一个3x3的透视变换,它有8个自由度([3,3]元素固定为1),所以它只需要4个非共线对应,任何这样的对应就足够了。相比之下,findHomography使用 RANSAC 来处理不确定性,并可以找出哪些对应关系应该是trusted以及哪些是outliers。如果您更喜欢坚持线性最小二乘,您可以采用getPerspectiveTransform接受 >=4 对。

但是,如果您应用透视变换来转换一些扭曲的方形目标T到一个完美的正方形上,这只会使平面与T也是线平行的。其他平面(例如,垂直于T) 变换后将不再是线平行的。

如果你想删除透视,即将投影更改为正字法,你不能单独使用透视变换来做到这一点。您还需要知道场景中对象的深度,然后将其投影到没有透视的平面上。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 3D 平面到平行于图像平面的平面的单应性 的相关文章

随机推荐

  • UITableViewCell 布局在重复使用单元格之前不会更新

    我有一个 UITableView 其中填充了自动调整大小的单元格 UITableView设置相当简单 tableView estimatedRowHeight 70 tableView rowHeight UITableViewAutoma
  • 将 angularjs 值传递给 PHP 变量

    我从 AngularJS 和 ngStorage 开始 我可以成功保存并显示数据 我像以前一样显示值 myobj session 我想将任何存储的值传递到 php 变量中 下面显示的是我的想象逻辑 我知道那是行不通的 我的问题是如何以正确的
  • 如何让 jest 使用 ES6 依赖项

    所以我有一个依赖包 我将其拉入我的 node modules 文件夹中 这个包中有一个像这样的导出 Object
  • PHP sleep() 导致 CPU 使用率高

    我正在运行一个大部分时间处于睡眠状态的 CLI 脚本 每隔 10 秒左右 脚本就会执行一些操作 问题是 脚本在睡眠时 CPU 使用率为 94 我设置的方法是 while 1 sleep 10 doStuff 虽然这按预期工作 但存在一个明显
  • 字符+字符=整数?为什么?

    为什么要加两个char在 C 中结果为int type 例如 当我这样做时 var pr R G B Y P the pr变量变成int类型 我希望它是一个string类型值为 RGBYP 为什么C 要这样设计呢 默认实现不是添加两个cha
  • 从Excel VBA的下拉列表中选择特定项目

    我正在为我的办公室设计一个仪表板 这一切都有效 但我想添加一个选项 而不是在下拉列表中搜索 250 多个项目 您还可以单击一个单元格 下拉列表将更改为该值 并且分配的宏将为该下拉列表运行 到目前为止 我不知道如何让 vba 从下拉列表中选择
  • 具有列表视图的 Android 小部件正在刷新具有丑陋的短“闪烁”效果的项目

    我想制作一个带有 ListView 的小部件 您可以在其中添加 listItems 来显示计数器计时器 以查看您有多少时间来处理某个事件 这是我第一次使用小部件 我不知道我的方法是好还是坏 到目前为止我得到了这个 AppWidgetProv
  • Javascript - 所有嵌套的 forEach 循环完成后的回调

    我确信这是一个相当简单的任务 但我现在无法全神贯注 我有一组嵌套的 forEach 循环 当所有循环运行完毕时 我需要一个回调 我愿意使用 async js 这就是我正在处理的 const scanFiles function accoun
  • 如何使用 BiWeekly 库和 Java Mail API 创建现有事件并发送更新?

    我在用着BiWeekly http sourceforge net projects biweekly 库来创建 VEVENT 然后使用以下命令发送它Java 邮件 API https java net projects javamail
  • 具有动态数量的并行消费者的 Kafka 工作队列

    我想用Kafka来 分工 我想将工作实例发布到某个主题 并运行由相同使用者组成的云来处理它们 当每个消费者完成其工作时 它将从该主题中提取下一个工作 每项工作只能由一个消费者处理一次 处理工作非常昂贵 因此我需要在许多机器上运行许多消费者才
  • New (std::nothrow) 与 try/catch 块中的 New

    学习后我做了一些研究new 不像malloc 我习惯了 分配失败时不会返回 NULL 并且发现有两种不同的方法来检查 new 是否成功 这两种方式是 try ptr new int 1024 catch std bad alloc exc
  • PayPal 自适应付款错误 您无权隐式执行此付款

    我有一个发送付款的简单应用程序 该应用程序在沙箱中运行良好 实时经典应用程序的应用程序 ID 已获得批准 显示为 自动批准 但当我输入实时凭据时 它返回错误 您无权隐式执行此付款 发送 XML 到端点https svcs paypal co
  • 在钩子 woocommerce_checkout_order_processed 中获取订单详细信息

    add action woocommerce checkout order processed send order fax function send order fax order id print r REQUEST die 我想在这
  • JavaScript 异步返回值/使用 jQuery 赋值[重复]

    这个问题在这里已经有答案了 我有以下 jQuery 函数 我正在尝试返回此处显示的 GUID 值alert 警报工作正常并且值已填充 但是我似乎无法将其分配给变量并返回其值 最终我需要访问其他函数中的GUID值等 我尝试过的所有内容都仅显示
  • 不可变对象是线程安全的,但为什么呢?

    举例来说 一个线程正在通过创建不可变类的对象来创建和填充不可变类的引用变量 而另一个线程在第一个线程完成并创建不可变类的另一个对象之前启动 那么不可变类的用法不是线程吗不安全 创建不可变对象还意味着所有字段都必须标记为final 如果引用了
  • Linq to SQL - 关闭代码中的 UpdateCheck

    我想关闭UpdateCheck所有成员的功能 除了他们的主键 现在我按照下面的示例作为指导 但是我的表的 MetaDataMembers 仍然设置为Always http www the lazy coder com 2013 04 set
  • System.ArgumentException'jobobject' 不得为 IntPtr.Zero。参数名称:jobobject

    我收到一个错误 我无法理解 我在 void 方法中有这个简单的警报对话框生成器 private void startAction AlertDialog Builder builder builder new AlertDialog Bui
  • 如何使用 PowerShell 检查是否启用了 Hyper-V?

    我正在尝试编写一个 PowerShell 脚本来检查 Windows 可选功能以查看是否安装了 Hyper V 但是 我的代码不起作用 即使 Hyper V 已禁用 脚本也会输出它已启用的信息 Requires RunAsAdministr
  • 将 MySQL 服务器连接到 NetBeans

    我正在尝试在 Netbeans 中连接 MySQL 数据库 但停留在第一步 连接数据库 我的数据库在控制台上工作正常 尝试命令 mysqladmin u root p ping 它说 mysql id 还活着 我什至从控制台创建了数据库 现
  • 从 3D 平面到平行于图像平面的平面的单应性

    我有一张图像 其中场景中有一个校准目标 已知几何形状 假设桌子上有一个简单的 2 x 2 正方形 我想执行透视变换 使用warpPerspective 以便生成的图像是桌子的正交视图 就好像相机轴与桌子法线平行 计算单应性的标准过程是从一个