视觉笔记 - 视觉坐标系

by luoshi006
参考:张正友
参考:相机成像原理 - 陈建平

视觉坐标系

图像坐标系

像素(pixel)
像素是数字图像中最小的点(单位色块),其值表示图像点的亮度(灰度)。像素的大小是没有固定长度值的,不同设备上1个单位像素色块的大小是不一样的。

数字图像
相机获取的图像在计算机内以 M×NM \times NM×N 数组的形式存储,数组中的元素为像素。

像素坐标系

如图所示,在图像上定义坐标系 u-vu\text{-}vu-v,每个像素坐标 (u,v)(u,v)(u,v) 分别是该像素在图像中的列数和行数,即,得到以像素为单位的坐标 (u,v)(u,v)(u,v)

像素坐标系

图像坐标系

也就是 成像平面坐标系,在焦距 fff 处的平面。

建立以 SI 单位(米)表示的图像坐标系 x-yx\text{-}yx-y,该坐标系以 o(u0,v0)o(u_0,v_0)o(u0,v0) 为原点,xxx 轴、yyy 轴分别与 uuu 轴、vvv 轴平行,(x,y)(x,y)(x,y) 表示以物理单位度量的图像坐标。在 x-yx\text{-}yx-y 坐标系中,原点 ooo 定义为相机光轴和成像平面的交点,一般位于图像中心处,称为图像的主点

原点 o(u0,v0)o(u_0,v_0)o(u0,v0)u-vu\text{-}vu-v 坐标系中的坐标为 (u0,v0)(u_0,v_0)(u0,v0),每个像素在 xxx 轴和 yyy 轴方向上的物理尺寸为 dx,dydx, dydx,dy

图像坐标系

相机坐标系

成像模型是指 3D 点到像平面的投影关系。在小孔成像模型中,3D 点 PPP 投影到像平面上的像点 ppp,其中,OcO_cOc 为相机光心Xc、YcX_c、Y_cXcYc 轴分别与图像坐标系的 x、yx、yxy 轴平行;ZcZ_cZc 为相机的光轴,与像平面垂直,相交于点 ooofff 为相机焦距;相机坐标系记为:Oc-XcYcZcO_c \text{-} X_cY_cZ_cOc-XcYcZc

相机坐标系

世界坐标系

相机可安放在场景中的任意位置,所以,在场景中选择一个基准坐标系来描述相机的位姿,以及场景中任何物体的位置(3D 点),该坐标系称为世界坐标系,记为 Ow-XwYwZwO_w \text{-} X_wY_wZ_wOw-XwYwZw

世界坐标系

视觉坐标系变换

世界坐标系 与 相机坐标系

相机坐标系和世界坐标系的关系用旋转矩阵 RRR 与平移向量 ttt 来描述。

坐标转换

[XcYcZc]=R[XwYwZw]+t\begin{bmatrix}X_c\\Y_c\\Z_c \end{bmatrix}= R\begin{bmatrix}X_w\\Y_w\\Z_w \end{bmatrix}+t XcYcZc=RXwYwZw+t

[XcYcZc1]=[Rt0⃗1][XwYwZw1] \begin{bmatrix}X_c\\Y_c\\Z_c\\1 \end{bmatrix}= \begin{bmatrix}R & t\\ \vec 0&1 \end{bmatrix} \begin{bmatrix}X_w\\Y_w\\Z_w\\1 \end{bmatrix} XcYcZc1=[R0 t1]XwYwZw

### 关于视觉SLAM中点云拼接的技术实现 #### 点云拼接的核心概念 点云拼接是将来自不同视角的深度图像转换为三维空间中的点云,并通过估计相机位姿将其合并到统一的世界坐标系下[^1]。这一过程通常依赖于RGB-D传感器获取的数据,其中包括彩色图像和深度图像。 #### RGB-D SLAM框架下的点云拼接流程 在RGB-D SLAM系统中,点云拼接主要分为以下几个部分: 1. **相机运动估计** 使用PnP算法或其他几何方法来计算相邻帧之间的相对变换矩阵(旋转和平移)。这一步的关键在于提取特征点并匹配它们的位置关系。例如,在两帧之间调用`estimateMotion`函数完成姿态估计[^2]: ```cpp RESULT_OF_PNP estimateMotion(FRAME& frame1, FRAME& frame2, CAMERA_INTRINSIC_PARAMETERS& camera); ``` 2. **二维点转三维点** 根据相机内参模型,将像素坐标(u,v,d)映射回世界坐标系中的三维点(x,y,z)[^3]。具体公式如下所示: \[ x = d \cdot (u - c_x) / f_x,\quad y = d \cdot (v - c_y) / f_y,\quad z=d \] 3. **点云配准与融合** 配准是指利用已知的姿态信息对齐两个独立采集的点云集;而融合则是指去除重复区域并将所有有效数据组合起来形成最终的大规模场景表示形式。这里需要用到诸如ICP(iterative closest point)之类的优化策略以及降噪处理手段以提高重建质量[^4]。 #### 开发环境配置建议 为了顺利开展基于C++语言的实际开发工作,推荐按照以下方式设置项目构建工具链(CMake): ```cmake # 声明要求的 cmake 最低版本 cmake_minimum_required(VERSION 2.8) # 声明一个 cmake 工程 project(joinMap) # 定义编译的模式 set(CMAKE_BUILD_TYPE Release) # 添加c++ 11标准支持 set(CMAKE_CXX_FLAGS "-std=c++11 -O3") # 寻找OpenCV库 find_package(OpenCV REQUIRED) # 添加头文件 include_directories(${OpenCV_INCLUDE_DIRS}) # 添加Eigen头文件 include_directories("/usr/include/eigen3/") # 寻找PCL库 find_package(PCL REQUIRED COMPONENTS common io) # 添加头文件 include_directories(${PCL_INCLUDE_DIRS}) # 添加编译选项 add_definitions(${PCL_DEFINITIONS}) # 添加一个可执行程序 add_executable(joinMap joinMap.cpp) # 将库文件链接到可执行程序上 target_link_libraries(joinMap ${OpenCV_LIBS} ${PCL_LIBRARIES}) ``` 上述脚本确保了必要的第三方库被正确引入,从而简化后续编码过程中涉及的各种操作逻辑。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值