1. 项目概述与问题背景
在光学测量和计算机视觉领域,经常需要将图像中的像素坐标转换为实际物理空间中的角度信息。这个问题在天文观测、无人机导航、机器人视觉等场景中尤为常见。本文要解决的具体问题是:给定数码相机拍摄图像中某个目标的像素坐标(u,v),如何计算该目标相对于望远镜中心方向的水平夹角(Yaw)和垂直夹角(Pitch)。
这个问题的实际应用场景可能是这样的:我们有一个望远镜系统,旁边安装了一个辅助的数码相机用于目标识别。由于相机和望远镜在物理位置上存在偏移,我们需要将相机图像中识别到的目标位置,转换为望远镜需要调整的角度,以便望远镜能够准确对准目标。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心原理与坐标系转换
2.1 坐标系定义与转换流程
要解决这个问题,我们需要理解几个关键坐标系及其转换关系:
-
图像像素坐标系:以图像左上角为原点(0,0),u轴向右为正,v轴向下为正。这是我们已知的目标坐标(u,v)所在的坐标系。
-
相机坐标系:以相机光心为原点,x轴向右,y轴向下,z轴向前(垂直于图像平面)。这个坐标系用于描述目标相对于相机的位置。
-
望远镜坐标系:以望远镜中心为原点,方向定义与相机坐标系类似。我们需要计算目标相对于这个坐标系的角度。
转换流程如下:
像素坐标 → 相机坐标系 → 物理世界坐标 → 望远镜坐标系 → 角度计算
2.2 关键参数解析
根据问题描述,我们有以下已知参数:
-
物理偏移量:
- tx = -55.5 mm(相机在望远镜右侧)
- ty = -118 mm(相机在望远镜下方)
-
像素偏移量:
- dx = -79 px(望远镜中心在图像中比相机中心更靠左)
- dy = -235 px(望远镜中心在图像中比相机中心更靠上)
-
相机内参:
- 焦距 f_mm = 14.46 mm
- 图像尺寸 3840×3104 px
- 传感器尺寸 5.92×4.46 mm
3. 详细计算步骤与Python实现
3.1 像素坐标到相机坐标系的转换
首先,我们需要将像素坐标(u,v)转换到相机坐标系。这需要以下步骤:
- 计算像素到物理尺寸的转换系数:
- kx = sensor_wid
