相机坐标系、像素坐标系转换

news/2024/10/17 15:25:48/

相机内参矩阵是相机的重要参数之一,它描述了相机光学系统的内部性质,例如焦距、光学中心和图像畸变等信息。在计算机视觉和图形学中,相机内参矩阵通常用于将图像坐标系中的像素坐标转换为相机坐标系中的三维坐标,或者将相机坐标系中的三维坐标投影到图像坐标系中的像素坐标。

相机内参矩阵通常表示为一个 3x3 的矩阵,具有以下形式:

fx  0   cx
0   fy  cy
0   0   1

其中 (cx, cy) 是图像的光学中心,表示图像平面中心对应于相机坐标系的投影坐标。fxfy 是相机在 xy 方向上的焦距,表示相机坐标系中的一个单位长度在图像坐标系中对应的像素数。如果图像的 xy 方向的焦距相等,则可以使用一个标量 f 来表示它们的平均值。

在计算机视觉和图形学中,像素坐标系和相机坐标系之间的转换是非常重要的,因为它允许我们将从相机中捕获的图像中的像素位置转换为三维场景中的物体位置。下面是一个简单的 C++ 代码示例,演示如何将像素坐标系中的坐标转换为相机坐标系中的坐标。

假设我们有一个相机,它在世界坐标系中的位置为 (cx, cy, cz),相机朝向的方向为 (fx, fy, fz)。假设我们有一个图像,它的分辨率为 (width, height),我们想要将像素坐标 (u, v) 转换为相机坐标系中的坐标 (x, y, z)

首先,我们需要计算像素坐标系中的坐标 (u, v) 对应的图像平面上的点 (px, py)。对于具有焦距 f 的相机,可以使用以下公式将像素坐标 (u, v) 转换为图像平面上的点 (px, py)

px = (u - width/2) / f
py = (v - height/2) / f

其中 widthheight 是图像的分辨率,f 是相机的焦距。

接下来,我们可以使用相机的内参矩阵将 (px, py) 转换为相机坐标系中的坐标 (x, y, z)

[x]   [fx  0   cx  0] [px]
[y] = [0   fy  cy  0] [py]
[z]   [0   0   1   0] [1 ]

其中 [fx fy cx cy] 是相机的内参矩阵,它包含相机的焦距和光学中心的位置。

下面是一个 C++ 函数,将像素坐标 (u, v) 转换为相机坐标系中的坐标 (x, y, z)

cv::Mat pixel2cam(const cv::Point2d& p, const cv::Mat& K) {cv::Mat pt_cam = cv::Mat::zeros(3, 1, CV_64F);pt_cam.at<double>(0, 0) = (p.x - K.at<double>(0, 2)) / K.at<double>(0, 0);pt_cam.at<double>(1, 0) = (p.y - K.at<double>(1, 2)) / K.at<double>(1, 1);pt_cam.at<double>(2, 0) = 1.0;return pt_cam;
}

其中 p 是像素坐标,K 是相机内参矩阵。这个函数返回一个 cv::Mat,它包含相机坐标系中的坐标 (x, y, z)。


http://www.ppmy.cn/news/431968.html

相关文章

像素坐标系、图像坐标系、相机坐标系、世界坐标系

像素坐标系、图像坐标系、相机坐标系、世界坐标系 文章目录 像素坐标系、图像坐标系、相机坐标系、世界坐标系1、图像坐标系 → \rightarrow →​像素坐标系2、图像坐标系 → \rightarrow →​相机坐标系3、相机坐标系 → \rightarrow →​世界坐标系总结References 上周发现对…

相机成像---世界坐标系、相机坐标系、图像坐标系和像素坐标系之间的转换关系

新学期第一天开始写的这篇文章&#xff0c;看看我啥时候能把他发出去。假期当然是啥也没干了&#xff0c;之前还信誓旦旦说回家一定能学习&#xff0c;学个毛线。开始学习啦&#xff0c;去年年末把环境配置好了之后&#xff0c;实验发现他不准&#xff0c;用的D435i摄像头是红外…

世界坐标系、相机坐标系、图像坐标系、像素坐标系

四个坐标系都是什么&#xff1f; 1.世界坐标系->相机坐标系->图像坐标系->像素坐标系 2.像素坐标系->图像坐标系->相机坐标系->世界坐标系 图像处理、立体视觉等等方向常常涉及到四个坐标系&#xff1a;世界坐标系、相机坐标系、图像坐标系、像素坐标系 构…

像素(Pixel)、DPI与PPI一看就明白

像素&#xff08;Pixel&#xff09;、DPI与PPI 像素&#xff08;Pixel&#xff09;DPI 英文全写是(Dots Per Inch&#xff0c;每英寸点数)PPI 英文全写是(Pixels Per Inch&#xff0c;每英寸像素数)比喻来区分应用&#xff08;这张图熟悉吗&#xff09;1.分辨率啥意思&#xff…

蛇优化算法

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 蛇优化算法算法流程图初始化进化操作搜索阶段&#xff08;无食物&#xff09;——全局搜索搜索阶段&#xff08;有食物&#xff09;——局部搜索战斗模式交配模式 备…

Linux之线程安全(下)

文章目录 前言一、Linux线程互斥1.mutex的理解锁原子性互斥锁实现原子性的原理 2.mutex的封装——Mutex.hpp3.可重入和线程安全可重入线程安全线程安全不一定是可重入的&#xff0c;而可重入函数一定是线程安全的。 4.死锁概念造成死锁的四个必要条件如何避免死锁 二、Linux线程…

这些带斑点的蛇实在太漂亮了,盘点18种带斑点的蛇

大自然充满了迷人的动植物&#xff0c;色彩绚丽&#xff0c;令人惊叹&#xff0c;尤其是蛇。许多沙漠蛇有中性的沙色&#xff0c;而另一些则有明亮、大胆的图案&#xff0c;很容易激发新的时尚潮流。一些蛇有大片斑块&#xff0c;而另一些则有各种形状和大小的条纹和斑点。今天…

razer金环蛇双击问题实战解决

近日&#xff0c;用了许久的razer金环蛇出现了双击问题。windows下想选中复制&#xff0c;结果是打开。有时候dota站在泉水用鼠标点回程想飞塔下去。。。结果。。。还是回到了原地。囧rz。。。&#xff01;插上原来的老罗技MX318&#xff0c;实在很不习惯&#xff0c;新鼠标又昂…