摄像机标定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中提取文件名扩展名的多种方法实现

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

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

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

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

C/C++的OpenCV 进行图像梯度提取的几种实现

《C/C++的OpenCV进行图像梯度提取的几种实现》本文主要介绍了C/C++的OpenCV进行图像梯度提取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录预www.chinasem.cn备知识1. 图像加载与预处理2. Sobel 算子计算 X 和 Y

c/c++的opencv图像金字塔缩放实现

《c/c++的opencv图像金字塔缩放实现》本文主要介绍了c/c++的opencv图像金字塔缩放实现,通过对原始图像进行连续的下采样或上采样操作,生成一系列不同分辨率的图像,具有一定的参考价值,感兴... 目录图像金字塔简介图像下采样 (cv::pyrDown)图像上采样 (cv::pyrUp)C++ O

Python对PDF书签进行添加,修改提取和删除操作

《Python对PDF书签进行添加,修改提取和删除操作》PDF书签是PDF文件中的导航工具,通常包含一个标题和一个跳转位置,本教程将详细介绍如何使用Python对PDF文件中的书签进行操作... 目录简介使用工具python 向 PDF 添加书签添加书签添加嵌套书签Python 修改 PDF 书签Pytho

Python+wxPython构建图像编辑器

《Python+wxPython构建图像编辑器》图像编辑应用是学习GUI编程和图像处理的绝佳项目,本教程中,我们将使用wxPython,一个跨平台的PythonGUI工具包,构建一个简单的... 目录引言环境设置创建主窗口加载和显示图像实现绘制工具矩形绘制箭头绘制文字绘制临时绘制处理缩放和旋转缩放旋转保存编

python+OpenCV反投影图像的实现示例详解

《python+OpenCV反投影图像的实现示例详解》:本文主要介绍python+OpenCV反投影图像的实现示例详解,本文通过实例代码图文并茂的形式给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前言二、什么是反投影图像三、反投影图像的概念四、反向投影的工作原理一、利用反向投影backproj

使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)

《使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)》PPT是一种高效的信息展示工具,广泛应用于教育、商务和设计等多个领域,PPT文档中常常包含丰富的图片内容,这些图片不仅提升了... 目录一、引言二、环境与工具三、python 提取PPT背景图片3.1 提取幻灯片背景图片3.2 提取

使用Python实现图像LBP特征提取的操作方法

《使用Python实现图像LBP特征提取的操作方法》LBP特征叫做局部二值模式,常用于纹理特征提取,并在纹理分类中具有较强的区分能力,本文给大家介绍了如何使用Python实现图像LBP特征提取的操作方... 目录一、LBP特征介绍二、LBP特征描述三、一些改进版本的LBP1.圆形LBP算子2.旋转不变的LB