首页/新闻资讯/正文详情

对应点齐了,相机位姿还是不对?用 Kornia 把 PnP 算对的最小路径

发布时间:2026/11/4 1:48:00 来源:云帆数科 栏目:资讯中心
对应点齐了,相机位姿还是不对?用 Kornia 把 PnP 算对的最小路径
对应点齐了相机位姿还是不对用 Kornia 把 PnP 算对的最小路径【免费下载链接】kornia 空间人工智能的几何计算机视觉库项目地址: https://gitcode.com/kornia/kornia3D 重建对不上、相机放偏了——你有 2D-3D 对应差的是那把位姿。这篇文章给一条能跑通、能验证的 PnP 求解路径外加四个最容易翻车的点。Kornia 是 PyTorch 上的几何视觉库这里用它可微的相机模型和 PnP 求解器把从对应点推位姿这件事做扎实。先搞懂两件事针孔投影把 3D 压扁成 2D 的那一步。类比手机拍照时镜头把房间里的每一点按远近压到感光元件上近的大、远的小。压扁由两个参数控制焦距 f压多狠和主点 c画面中心偏哪。方向问题矩阵指向哪边。PnP 求出来的不是相机在哪而是世界点怎么进相机坐标——世界到相机的变换。方向拿反位姿一定反。记住这一句后文最后一个坑就是它。最小可跑流程四步内参、对应点、求解、验证。每步只留核心调用。把内参填进矩阵内参 K 是 3×3决定像素坐标和相机坐标怎么换算import torch # 800x600 画面主点放像素中心f 取图像长边量级 K torch.tensor([[600.0, 0.0, 399.5], [0.0, 600.0, 299.5], [0.0, 0.0, 1.0]], dtypetorch.float64).unsqueeze(0)unsqueeze加 batch 维不是装饰——库的接口全是批量的形状不对直接拒收。造出带 batch 维的 2D-3D 对应模拟先有真值、再被检测出带噪声的像素点这个真实过程world torch.tensor([[[0.0, 0.0, 2.0], [1.0, 0.0, 2.0], [0.0, 1.0, 2.0], [1.0, 1.0, 2.0], [0.5, 0.5, 3.0], [0.2, 0.8, 2.5], [0.0, 1.5, 2.2], [1.2, 0.3, 2.8]]], dtypetorch.float64) R_t torch.tensor([[[1, 0, 0, -0.3], [0, 1, 0, 0.1], [0, 0, 1, 1.2]]], dtypetorch.float64) pts_cam (R_t[..., :3, :3] world.transpose(1, 2) R_t[..., :3, 3:4]).transpose(1, 2) from kornia.geometry.camera import project_points # 2 像素噪声模拟真实检测水平 img project_points(pts_cam, K[0]) torch.randn(img_shape, dtypetorch.float64) * 2.0注意world的 8 个点故意不共面DLT 在点共面时会直接报错后面说为什么。让 DLT 把 [R|t] 交出来求解器入口kornia/geometry/calibration/pnp.pysolve_pnp_dltDLT 法 PnPfrom kornia.geometry.calibration import solve_pnp_dlt # 最少 6 点返回 (B,3,4) 的世界到相机矩阵 W2C solve_pnp_dlt(world, img, K)预期输出torch.Size([1, 3, 4])前 3 列是旋转第 4 列是平移。用重投影把答案验一遍别信解出来的数信重投影误差pts_cam2 (W2C[..., :3, :3] world.transpose(1, 2) W2C[..., :3, 3:4]).transpose(1, 2) reproj project_points(pts_cam2, K[0]) err (reproj - img).norm(dim-1).mean() print(f平均重投影误差: {err:.2f} px)噪声是 2px误差落在 1~2px 就是对的链路通。求解涉及的所有量长这样调参前先对表量本例取值说明点数 N8DLT 硬性要求 ≥6内参形状(1, 3, 3)4×4 会被拒dtypefloat64SVD 数值更稳svd_eps1e-4共面判定阈值默认值为什么这么算上面能跑通但你得知道它在干什么。DLT 把每对对应点写成两行线性方程12 个未知数一起列成一个大矩阵用 SVD 找最小奇异值方向拿到一个近似旋转平移的解。点数少时它不挑、不分支一次 SVD 出结果EPnP 那类 4 点最小解法要构造辅助四面体点少时更省点多时差距拉不开。求解内部还做了两件保命的事两路点各自中心化缩放防大数压小数QR 分解把旋转部分扭成正交。代价是——点共面时方程组秩亏SVD 最小奇异值贴零函数直接抛错。这些坑我替你踩了传了 4×4 内参形状报错。大概率你把PinholeCamera.camera_matrix整个塞进去了求解器只认 3×3。改K[:3, :3]切片再传。一跑就抛 singular value 的 AssertionError。3D 点共面或共线方程组解不唯一。改加点让深度散开——本例的world第 7、8 个点就是干这个用的。只凑出 5 个对应点。DLT 需要 ≥6少一个就报错。改补点或者换支持 4 点的最小解法。位姿方向是反的物体跑到相机后面。返回值是世界到相机拿它把相机摆到世界里自然反。改求相机到世界就取逆torch.linalg.inv(W2C)补成 4×4 后。再往远处看鲁棒化真实匹配有外点可结合kornia/geometry/ransac.pyRANSAC 估计框架做采样一致性筛选学习融合整条链路在 PyTorch 图里位姿可参与反向传播做端到端标定或位姿网络git clone https://gitcode.com/kornia/kornia想读源码从kornia/geometry/calibration/pnp.py开始294 行DLT 的每一步注释都在。【免费下载链接】kornia 空间人工智能的几何计算机视觉库项目地址: https://gitcode.com/kornia/kornia创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

Wan2.2-TI2V-5B 本地部署指南:单张 4090,9 分钟出 5 秒 720P 视频
Wan2.2-TI2V-5B 本地部署指南:单张 4090,9 分钟出 5 秒 720P 视频

Wan2.2-TI2V-5B 本地部署指南:单张 4090,9 分钟出 5 秒 720P 视频 【免费下载链接】Wan2.2-TI2V-5B Wan2.2-TI2V-5B是一款开源的先进视频生成模型,基于创新的混合专家架构(MoE)设计,显著提升了视频生成的质… · 2026/11/4 1:48:00

没 iPhone 也能玩:DiPlay 热点模式白嫖 CarPlay
没 iPhone 也能玩:DiPlay 热点模式白嫖 CarPlay

没 iPhone 也能玩:DiPlay 热点模式白嫖 CarPlay 【免费下载链接】DiPlay Independent CarPlay receiver for compatible Android head units. Wired and wireless public preview. 项目地址: https://gitcode.com/gh_mirrors/di/DiPlay 先说个扎心的帖子 车… · 2026/11/4 1:47:00

如何用Hermes Agent打造你的智能投资助手:从零到专业分析的完整指南
如何用Hermes Agent打造你的智能投资助手:从零到专业分析的完整指南

如何用Hermes Agent打造你的智能投资助手:从零到专业分析的完整指南 在AI技术快速发展的今天,拥有一个能理解市场动态、提供专业投资建议的智能助手已经成为现实。Hermes Agent作为一款自学习AI代理框架,为你提供了构建个性化金融分析系统的… · 2026/11/4 1:47:00

Linux(23):文件操作入门——从 C 文件接口到文件描述符
Linux(23):文件操作入门——从 C 文件接口到文件描述符

文件操作可以从两层接口理解:C 标准库提供 FILE * 流,Linux/POSIX 接口使用整数形式的文件描述符。两层接口最终都与进程访问文件有关,但它们提供的抽象和数据处理方式不同。 本文从 fopen、fprintf、fclose 出发,再衔接 open、re… · 2026/11/4 2:35:15

XSS 攻击与防御
XSS 攻击与防御

10.1 XSS 攻击与防御XSS 的本质可以类比为在网页里混入一段不受信任的剧本,浏览器无法区分脚本是业务本身的代码还是攻击者注入的内容,会直接解析执行,窃取数据、劫持页面、诱导跳转。10.1.1 XSS 分类:反射型、存储型、DOM 型XSS&… · 2026/11/4 2:35:15

深入理解 JUC:Callable、线程池、信号量、CountDownLatch 与 ConcurrentHashMap 全解析
深入理解 JUC:Callable、线程池、信号量、CountDownLatch 与 ConcurrentHashMap 全解析

深入理解 JUC:Callable、线程池、信号量、CountDownLatch 与 ConcurrentHashMap 全解析JUC(java.util.concurrent)是 JDK 提供的并发编程工具包,把多线程开发中的常见问题都给出了现成方案。本文先讲 Callable 接口与创建线程的四… · 2026/11/4 2:35:15

AgentEvals(agentevals-cli)Agent评测方法与步骤
AgentEvals(agentevals-cli)Agent评测方法与步骤

AgentEvals(agentevals-cli)Agent评测方法与步骤 框架定位与核心原理 业内常说的 AgentEvals 官方全称为 agentevals-cli,是 Strands Labs 开源的框架无关、OpenTelemetry(OTel) Trace 驱动的Agent评测工具,核心设计理念是「一次… · 2026/11/4 2:35:15

【Linux网络】传输层协议TCP(2)连接管理、三次握手、四次挥手
【Linux网络】传输层协议TCP(2)连接管理、三次握手、四次挥手

hello~ 很高兴见到大家! 这次带来的是Linux网络中关于网络基础这部分的一些知识点,如果对你有所帮助的话,可否留下你宝贵的三连呢? 个 人 主 页: 默|笙 文章目录一、连接管理机制1.1 连接与三次握手连接管理三次握手1.2 四次挥手连接管理与理解 TIME_WAIT 状态MSL地址重用/端口… · 2026/11/4 2:35:15

Codex 做桌面理线盒:参数改一次,CAD 和 Blender 产品图一起更新
Codex 做桌面理线盒:参数改一次,CAD 和 Blender 产品图一起更新

Codex 做桌面理线盒:参数改一次,CAD 和 Blender 产品图一起更新 桌上充电线会从盒边滑出来,通常不是“再买一个收纳盒”能解决的问题,而是出口直径、盒内余量和桌面位置没有变成可改的尺寸。这里做一个 965822 mm 的理线盒:两侧有 10 mm 线口,盒内保留 4 mm 底厚。本文记… · 2026/11/4 2:34:15

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

AI辅助技术栈评估:提升研发决策效率60%
AI辅助技术栈评估:提升研发决策效率60%

1. 项目背景与核心价值技术决策一直是研发团队面临的重大挑战。随着技术生态的快速演进,技术栈的选择、维护和迭代变得愈发复杂。我们团队在过去两年里,先后经历了三次重大技术栈迁移,每次都需要投入大量人力进行技术评估和风险分析。直到去年… · 2026/11/4 0:00:17

从生成Token到直接决策:Jev如何重塑AI Agent工程实践
从生成Token到直接决策:Jev如何重塑AI Agent工程实践

1. 从"生成文字"到"拍板决策":Jev 到底在解决什么问题大多数人第一次接触大模型,脑子里建立的模型是"输入问题、输出文字"。你问它今天天气怎么样,它给你一段描述;你让它写个周报,它给你… · 2026/11/4 0:00:17

32G统一内存跑大模型:内存账、TPS实测与端云分流
32G统一内存跑大模型:内存账、TPS实测与端云分流

想在一台 32G 统一内存的小主机上把大模型跑成"日常可用",这件事我前后折腾了小半年。标题里说的这台 Mac mini M6,是我们这次讨论的目标平台,具体到手规格以实物为准;但下面这套推算方法和实测思路,对任何统… · 2026/11/4 0:00:17

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码