如何求得相机拍摄的物体在图片上的坐标,具体实例(实操演示)

380 阅读3分钟

下面我会详细解释你的所有疑惑,并用一个清晰的实际案例(非单位矩阵)进行完整的计算演示


📷 一、明确问题(再梳理一遍问题场景)

已知

image.png

  • 该物体在图像上的坐标 (u,v)(u,v)。

🔖 二、详细解释内参矩阵中焦距 fx, fy 和倾斜系数 ss 的意义与作用

内参矩阵一般表示为:

image.png

📌 为什么焦距有 fx 和 fy 两个方向?

  • 实际相机传感器的像素在X和Y方向大小可能不同(非正方形像素)。
  • 因此水平(x)与垂直(y)方向的放大倍数不同。
  • 通常情况下fx≈fy,但严格来说,二者通常不会完全相等,故分别用两个参数表示。

举例

  • 如果传感器X方向像素大小为0.005mm,Y方向像素大小为0.006mm,实际物理焦距为5mm:

    那么像素单位的焦距为:

image.png

这就是焦距会出现两个不同方向数值的原因。


📌 为什么倾斜系数 s=0,有什么用?

  • 倾斜系数(Skew)s 表示传感器的横向像素与纵向像素是否完全垂直排列。
  • 在实际工程中,由于生产精度高,一般相机传感器的像素都是正交排列的,所以通常 s=0。

实际意义:

  • s=0 说明图像的横纵坐标轴是正交的。
  • 如果 s≠0 说明图像坐标轴是倾斜的(极少见),这时才需特殊处理。

🖥️ 三、用实际数据详细演示如何计算物体在图片上的坐标

我们给一个实际的、非单位矩阵的例子:

🚩 已知数据(实际案例):

  • 世界坐标点:

image.png

  • 相机内参矩阵 K(实际值):

image.png

注释:

  • 焦距:fx=1200,fy=1180像素,说明X和Y方向像素大小略不同。
  • 光学中心(主点):(cx,cy)=(960,540)像素。
  • 倾斜系数:s=0,表示传感器横竖像素正交排列。
  • 相机外参(旋转矩阵R和平移向量t,实际拍摄情况):

旋转矩阵(相机稍微旋转):

image.png

平移向量(相机位置):

image.png


🚩 第一步:计算相机坐标系下的坐标 (Xc,Yc,Zc)

利用外参公式:

image.png

带入数字计算:

image.png

计算步骤(中间步骤清晰展示):

image.png


🚩 第二步:计算图像坐标 (u,v)

利用内参公式:

image.png

代入数值:

  • 计算u坐标:

image.png

  • 计算v坐标:

image.png

因此,物体在图片中的位置为:

(u,v)=(1186.97,−662.55)

说明该物体实际已经超出了图像的下方边界之外(负的v值意味着实际拍摄图像中看不到该点)。


🔖 四、总结本次问题中的所有知识点(便于记忆):

问题回答
焦距为何有fx、fy两个方向因为传感器像素尺寸横竖方向可能不同
倾斜系数s=0原因实际传感器几乎都是正交的,若非正交s才不为0
计算过程世界坐标→相机坐标(用外参R,t)→图像坐标(用内参K)

链接引用

MathWorks官方相机校准链接(英文):


通过以上详细说明、实际数据演示和逐步计算,相信你现在已经完全理解了所有问题。如果还有任何疑问,可以随时告诉我!