视觉slam14讲——第5讲 相机与图像
来源:互联网 发布:mac 切换 输入法 编辑:程序博客网 时间:2024/06/07 06:24
本系列文章是记录学习高翔所著《视觉slam14讲》的内容总结,文中的主要文字和代码、图片都是引用自课本和高翔博士的博客。代码运行效果是在自己电脑上实际运行得出。手动记录主要是为了深入理解
- 第5讲 相机与图像
- 相机模型
- 1 针孔相机模型
- 2 畸变
- 3 双目相机模型
- 4 RGBD相机模型
- 图像的存储和访问
- 1 图像的存储
- 2 图像的通道
- 3 opencv图像像素的遍历
- 相机模型
第5讲 相机与图像
1 相机模型
相机模型是用来描述将三维世界坐标系中的坐标点映射到二维图像平面的过程
使用针孔和畸变两个模型来描述整个投影过程。
1.1 针孔相机模型
(1) 相机坐标系内中物理坐标点
(2) 成像平面内成像坐标点
通过对称成像平面和归一化成像平面得到二者关系为
(3) 像素坐标系内像素坐标为
代入上式得到像素坐标和相机坐标系内点的关系,
其中,
齐次化写成矩阵形式,
把中间量
相机坐标
最后一个式子里面隐含着一次齐次坐标到非齐次坐标的转换(
两边除以
其中
变换过程总结:
世界坐标系下点
1.2 畸变
- 径向畸变
透镜的形状引起,有桶形失真和枕形失真。 - 切向畸变
相机组装过程不能使透镜和成像平面严格平行引起。
一般使用的去畸变处理方法:先对整张图像去畸变,得到去畸变后的图像,然后讨论图像上点的空间位置。
1.3 双目相机模型
根据三角形相似得到
整理得到
1.4 RGBD相机模型
原理
- 红外结构光
- 飞行时间法
2 图像的存储和访问
2.1 图像的存储
例如一张宽度为640像素,高度为480像素的灰度图(0~255)表示为
//unsigned char image[h][w];unsigned char image[480][640];
像素坐标原点位于图像的左上角,X轴向右。Y轴向下,Z轴向前(里)。
- 数组的行
−→− 图像的高度−→− Y 轴 - 数组的列
−→− 图像的宽度−→−X 轴
unsigned char pixel = image[y][x]
2.2 图像的通道
- 灰度图使用一个unsigned char来表示8位数据(0~255)。
- 彩色图像需要用到通道的概念。常见的彩色图像使用三个通道来表示,每个通道由8位整数来表示,这样的话一个像素占用24位空间。
- 通道的顺序在opencv中是BGR的顺序,如果还想表达图像的透明度,可以使用RGBA四个通道。
2.3 opencv图像像素的遍历
先定位到某一行,在到某一列,再到某一个通道,最后是某一个像素。
cv::Mat image = cv::read("lena.png");for (size_t y=0; y<image.rows; y++){ for (size_t x=0; x<image.cols; x++) { unsigned char* row_ptr = image.ptr<unsigned char>(y); unsigned char data_ptr = &row_ptr[x*image.channels()]; for(int c=0; c!=image.channels();c++) { unsigned char data = data_ptr[c]; } }}
阅读全文
0 0
- 视觉slam14讲——第5讲 相机与图像
- 视觉slam14讲——第2讲 初识SLAM
- 视觉slam14讲——第9讲 设计前端
- 视觉slam14讲——第10讲后端1
- 视觉slam14讲——第11讲后端2
- 视觉slam14讲——习题部分
- 视觉slam14讲——第7讲 视觉里程计1
- 视觉slam14讲——第8讲 视觉里程计2
- 视觉slam14讲——第3讲 三维空间刚体运动
- 视觉slam14讲——第4讲 李群李代数
- 视觉SLAM14讲学习笔记
- 半闲居士视觉SLAM十四讲笔记(5)相机与图像
- 半闲居士视觉SLAM十四讲笔记(5)相机与图像
- slam14讲ch6,运行时找不到共享库
- 第26讲—项目5—个人所得税计算器
- 第32讲 实践项目——输出小星星5
- 第11讲项目5——坐标转换
- 第23讲项目5——我的加班费
- Linux-脚本安装、快照、重置虚拟机
- java EE开发之Struts2第二章:参数传递(1)
- 布局技巧,直接拿来用(上)
- MT7688板上安装OpenWrt成为无线AP
- L1-012. 计算指数
- 视觉slam14讲——第5讲 相机与图像
- 通过修改hosts访问外网
- 10个方法让你的私人时间妥妥的
- 时间戳毫秒数转换日期 日期转换时间戳毫秒数
- WPF DateTimePicker
- 【腾讯TMQ】像google一样测试系列之五:流程与覆盖率篇
- 重复add或update导致ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
- 大小堆之堆排序
- HTML 注册表单form