摄像机标定04_从单幅图像中提取世界坐标

2024-04-10 21:58

本文主要是介绍摄像机标定04_从单幅图像中提取世界坐标,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

从单幅图像中提取世界坐标

从原理上来说,使用标定后的摄像机可以在世界坐标系内进行未失真的测量。一般情况下只有使用多个摄像机在不同空间位置上同时拍摄同一物体的两幅或多幅图像,才可以进行这种测量,这种方式被称为立体重构。使用这种方法重构两幅图像中对应点的三维位置是可以实现的,因为两个摄像机光心与两幅图像中在成像平面上的对应点可以定义两条光线,这两条光线在三维空间中的交点就是图像中相应点的三维位置。
要是只有一个摄像机呢?
第一就是使用远心镜头拍摄被测物体;
第二就是如果使用针孔摄像机或线阵摄像机,此时必须将被测物体放在一个已知平面上(如传送带 )上。
这两种情况都可以通过光线(视线)与已知被测平面相交来解决问题。就算测量平面与光轴之间有一定的倾斜角度,也可以进行测量。

(1)使用远心镜头拍摄被测物体:这种情况下,平行投影完全不受深度信息的影响。因此,不能得到物体在摄像机坐标系中的 z 坐标。然而我们可以得到物体在摄像机坐标系中的x y 坐标,也就得到了物体在世界坐标系中的尺寸。将点Pc看做是世界坐标系中的一个点即可,为了求得 Pc 的坐标,我们可以首先将该点从图像坐标系转换到成像平面坐标系:

(uv¯)=(sx(ccx)sy(rcy))

然后消除径向畸变的影响,得到成像平面上未失真的坐标 (u,v)T ,最终计算得到点 Pc 的坐标为:
Pc=(xc,yc,zc)T=(u,v,0)T

注意上面的方法其实就相当于通过点 (u,v,0)T 并且于成像平面 (0,0,1)T 垂直的光线与平面 z=0 相交得到的交点。
(2)使用针孔摄像机确定目标物体的世界坐标稍微复杂一些,不过原理相同,也是将光线与已知平面相交。
在很多应用中,被测物体都放在摄像机前面的一个平面上,如传送带。如果我们想在这个平面上测量物体,那么就需要得到这个平面所定义的世界坐标系中的坐标。原理上讲,我们需要使用图像上某点所对应的的光线与该测量平面相交。所以我们需要知道定义该光线的两个点。从透视投影的模型中易知,第一个点就是摄像机的投影光心,在摄像机坐标系中的坐标为 (0,0,0)T 。第二个点的坐标我们需要将点 (r,c)T 从图像坐标系转换到成像平面坐标系中。为了得到该点在成像平面上对应的空间点坐标,我们要考虑成像平面在光心前,距离光心 f 处,因此,光线上第二个点的坐标为(u,v,f)T。因此,我们可以使用下式来表示摄像机坐标系中的这条光线:
Lc=(0,0,0)T+λ(u,v,f)T

为了将这条光线与测量平面相交,最好将光线 Lc 的方程建立在世界坐标系中,因为在世界坐标系中测量平面就是 z=0 。因此我们需要将两个点 (0,0,0)T (u,v,f)T 转化到世界坐标系中。
Pc=RPw+T 的逆变换
Pw=R1(PcT)=RT(PcT)

式中, R1=RT Pc=RPw+T 中旋转矩阵 R 的逆矩阵。我们称转换后的光心为Ow,也就是说
Ow=RT((0,0,0)TT)=RTT 。将转换到成像平面上的点称为 Iw ,也就是说 Iw=RT((u,v,f)TT) ,这时,这条光线在世界坐标系中表示为
Lw=Ow+λ(IwOw)=Ow+λDw

式中, Dw 表示光线的方向向量。由此得到光线与测量平面 z=0 的交点了,交点的坐标为:
Pw=oxozdx/dzoyozdy/dz0

式中,
Ow=(ox,oy,oz)T
Dw=(dx,dy,dz)T

以上所讨论都是基于被测物体的测量平面的位姿已知。幸运的是由于我们使用平面标定对象,可以通过摄像机标定得到这个位姿。如果在用来标定的其中一幅图像中标定板直接放在测量平面上(如传送带)上,那么这幅图像中标定板的外参基本就等同于上面所需要的测量平面的位姿。当然只有标定对象厚度可以忽略的情况下,才能直接使用标定对象的外参作为测量平面的位姿。如果考虑到标定对象的厚度,这个外参确定的世界坐标系必须沿其 z 轴正方向在移动标定板的厚度。

除了可以将图像中某些点转换到世界坐标系中,例如将一维边缘位置或亚像素精度轮廓线转换到世界坐标系中,还可以将图像本身转换到世界坐标系中。这个转换得到的图像就相当于摄像机在于世界平面绝对垂直并且镜头不存在任何畸变的情况下拍摄得到的图像。这种图像校正在一些需要使用图像本身进行处理的应用中非常有用,例如需要在校正后的图像中进行区域处理、模块匹配或光学字符识别(OCR)等。为了进行图像校正,原理上我们在世界坐标系中平面z=0中截取一个矩形区域,然后在矩形区域中每隔一个指定距离( 200um )抽取一个点。这些抽取样点使用相应的摄像机模型投影到图像中,然后通过插值算法(如双线性内插算法)得到该点的灰度值。
这里写图片描述

这篇关于摄像机标定04_从单幅图像中提取世界坐标的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/892254

相关文章

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

Java+AI驱动实现PDF文件数据提取与解析

《Java+AI驱动实现PDF文件数据提取与解析》本文将和大家分享一套基于AI的体检报告智能评估方案,详细介绍从PDF上传、内容提取到AI分析、数据存储的全流程自动化实现方法,感兴趣的可以了解下... 目录一、核心流程:从上传到评估的完整链路二、第一步:解析 PDF,提取体检报告内容1. 引入依赖2. 封装

Java使用正则提取字符串中的内容的详细步骤

《Java使用正则提取字符串中的内容的详细步骤》:本文主要介绍Java中使用正则表达式提取字符串内容的方法,通过Pattern和Matcher类实现,涵盖编译正则、查找匹配、分组捕获、数字与邮箱提... 目录1. 基础流程2. 关键方法说明3. 常见场景示例场景1:提取所有数字场景2:提取邮箱地址4. 高级

Python 字符串裁切与提取全面且实用的解决方案

《Python字符串裁切与提取全面且实用的解决方案》本文梳理了Python字符串处理方法,涵盖基础切片、split/partition分割、正则匹配及结构化数据解析(如BeautifulSoup、j... 目录python 字符串裁切与提取的完整指南 基础切片方法1. 使用切片操作符[start:end]2

使用Python提取PDF大纲(书签)的完整指南

《使用Python提取PDF大纲(书签)的完整指南》PDF大纲(Outline)​​是PDF文档中的导航结构,通常显示在阅读器的侧边栏中,方便用户快速跳转到文档的不同部分,大纲通常以层级结构组织,包含... 目录一、PDF大纲简介二、准备工作所需工具常见安装问题三、代码实现完整代码核心功能解析四、使用效果控

Linux从文件中提取特定内容的实用技巧分享

《Linux从文件中提取特定内容的实用技巧分享》在日常数据处理和配置文件管理中,我们经常需要从大型文件中提取特定内容,本文介绍的提取特定行技术正是这些高级操作的基础,以提取含有1的简单需求为例,我们可... 目录引言1、方法一:使用 grep 命令1.1 grep 命令基础1.2 命令详解1.3 高级用法2

Python实现批量提取BLF文件时间戳

《Python实现批量提取BLF文件时间戳》BLF(BinaryLoggingFormat)作为Vector公司推出的CAN总线数据记录格式,被广泛用于存储车辆通信数据,本文将使用Python轻松提取... 目录一、为什么需要批量处理 BLF 文件二、核心代码解析:从文件遍历到数据导出1. 环境准备与依赖库

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

Python中提取文件名扩展名的多种方法实现

《Python中提取文件名扩展名的多种方法实现》在Python编程中,经常会遇到需要从文件名中提取扩展名的场景,Python提供了多种方法来实现这一功能,不同方法适用于不同的场景和需求,包括os.pa... 目录技术背景实现步骤方法一:使用os.path.splitext方法二:使用pathlib模块方法三

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取