针孔相机模型

目录

  • 针孔相机模型
    • 针孔相机成像模型
    • 镜头和光圈
    • 枕形畸变和桶形畸变
    • 图像标定和校准概念
    • 三维坐标系到像素坐标系的转换
    • 图像传感器和拜耳阵列(Bayer Pattern)
    • CCD vs. CMOS

针孔相机成像模型

针孔相机(pinhole camera )实物模型如下所示:

左边的感光表面称为像平面,而针孔(pinhole)称为相机中心。相机中心与像平面之间的距离称为焦距f
三维世界中的目标物体上的点 P P P利用经过相机中心的光线投射可以映射到像平面上的点 P ′ P^{'} P′,如下图所示。

其中,在三维空间中,利用几何角度关系,映射关系可以用下列公式表示:

利用这些方程,我们可以根据实际物体在空间中的三维位置以及相机的焦距,计算出实际物体在成像平面上的二维位置。但是,请注意得到的坐标 x ′ x' x′和 y ′ y ' y′还只是“测量坐标”,而不是真正的像素位置。

针孔相机存在的一个问题是,通过针孔的光线不足以在感光传感器上生成图像。如果要增加光线可以简单通过扩大针孔实现,如下图所示。但这样会使目标对象反射的光线与其他部分反射的光线互相重叠,从而导致成像效果模糊:即针孔开的越大,图像越明亮,但与此同时,成像平面上的对象模糊越严重
解决这个问题的一种方法是使用镜头,它能够捕捉到目标物体同一点发出的多条光线。接下来我们来看镜头和光圈。

镜头和光圈

一个适当大小和位置的镜头(透镜)可以将目标物体上点 P 1 P_1 P1​发出的所有光线折射到像平面上的一个点 P 1 ′ {P_1}' P1​′上。然而,穿过透镜中心的光线不发生折射,它们以直线继续前进,直到与成像平面相交。

物体上其他距离更近或更远的点,如 P 2 P_2 P2​,在像平面上出现焦点不集中的现象,因为从它们发出的一组光线无法通过透镜汇聚在一个点上,而是汇聚在一个特定半径的圆上。这个模糊的圆通常被称为circle of confusion (COF)。为了减少模糊,可以使用一个光圈,它是一个和透镜同中心的开口,通常大小可调,直接放在镜头后面。下图说明了原理:

枕形畸变和桶形畸变

通过减小光圈的直径,经过透镜外边缘的光线被阻挡,从而减小了成像平面上COF的大小。显然,较小的光圈可以减少模糊,但代价是降低了光线敏度度。光圈越大,则更多的光线会被汇聚到成像区域,产生信噪比更好的更明亮的图像,缺点就是可能增大图像模糊程度。

那么,我们如何计算空间中的物体在图像中的位置呢?给定空间中的一个三维点,其通过透镜后在成像平面上的二维位置可以类似针孔相机的方式进行计算。实际上,镜头会由于镜头类型的不同而导致图像失真。最接近实际情况的畸变我们称为“径向畸变”。这是由于透镜的焦距在其直径上不均匀造成的。因此,镜头的放大效果取决于相机中心(光轴)与通过镜头的光线之间的距离。如果放大倍数增大,所产生的畸变效应称为“枕形畸变(Pincushion Distortion)”;若放大倍数减少,则它被称为“桶形畸变(Barrel Distortion)”。当使用广角镜头时,通常就会发生桶形畸变。在下面的图中,说明了这两种畸变类型。

图像标定和校准概念

当从相机图像中提取信息时,许多应用程序需要从图像中获取目标对象(例如车辆)的空间位置。为了达到这个目的,必须去除或至少减轻镜头的畸变效应。该过程被称之为标定(Calibration)。对于每个相机镜头配置,必须执行一个标定程序,以便可以计算出畸变参数。这通常是通过拍摄一组已知的物体照片来实现的,比如平面棋盘图案。从这些已知的几何图形中可以推导出所有的镜头和图像传感器参数。从摄像头图像中消除畸变的过程称为校准(Rectification)。下图显示了本课程中进行图像校正的标定装置。可以很容易地看到,左右两边的直线都出现了严重的畸变。
然而,关于畸变校正的细节,我们不再这里进行深入讨论。然而,当使用自己的相机设置时,如果以精确测量或对象的空间重建为目标,那么必须执行校准过程。

三维坐标系到像素坐标系的转换

如前所述,在三维空间中,点在像平面上的投影与我们在实际数字图像中所看到的并不直接对应,而实际数字图像是由成千上万的像素(pixel)组成。为了理解图像是如何以离散像素来表达的,我们需要再次仔细观察上述相机模型。如下图所示,摄像头中心在空间中点 O O O的位置,并且有自己的坐标系,其坐标轴分别为 i i i、 j j j、 k k k,其中 k k k轴指向成像平面的方向。 k k k轴与成像平面相交的位置点 C ′ C' C′,点 C ′ C' C′称为主点(Principal Point),表示图像坐标系的中心。

将空间中的点 P P P映射到像平面后的第一步是减去主点坐标,这样离散图像就拥有了以成像平面左下角为中心的自己的坐标系统,如下图所示。

转换过程的第二步是从测量坐标系转换到像素坐标系。我们可以使用标定过程提供的参数 k k k和 l l l实现从测量值到像素的转换,并且这些参数也很容易被整合到如下图所示的映射公式中。注意:在图像坐标系中,其坐标原点位于左上角,且 y y y轴正方向指向正下方, x x x轴正方向指向正右方。
在后面的章节,我们将把激光雷达3D点云映射到摄像头图像中。我们将利用上述公式实现这一目标。另外,焦距 f f f和 k k k和 l l l的乘积(也分别称之为 α \alpha α和 β \beta β)将在一个校准矩阵中被使用,从而极大地简化了映射操作。

图像校准中还有最后一点需要注意的是:在许多应用中(如特征跟踪),处理原始图像是有意义的,因为这样可以避免在校准图像以及校准图像后像素转换没有完全落入离散像素的中心等过程造成的计算误差。在这种情况下,建议在未修改的原始图像中定位特征,然后使用上面的方程对得到的结果进行坐标转换。当使用基于一组训练权重的深度学习时,在将图像导入网络之前进行图像校准是很有意义的——如果我们使用原始图像,畸变(例如,由于使用鱼眼镜头造成)将会导致检测错误,因为这些网络通常是利用无畸变的图像进行训练生成的。

图像传感器和拜耳阵列(Bayer Pattern)

在本节中,你将了解具有特定波长的光线是如何转换成可以进行数字存储的彩色像素的。

当照相机捕捉到图像时,光线会穿过镜头并落在图像传感器上。这种传感器由光敏元件组成,它们记录照在它们身上的光的数量,并将其转换成相应数量的电子。光线越强,产生的电子越多。当曝光时间完成后,生成的电子被转换成电压,最后通过数模(A/D)转换器转换成离散的数字量。

目前,有两种主流的图像技术——CCD(电荷耦合器件)和CMOS(互补金属氧化物半导体)。这两种技术都是将电子转换成电压,并且天生是色盲的,因为它们无法区分产生电子的不同波长。为了能够显示出色彩,在每个像素前会放置微小的滤光装置(也称为微透镜),这些滤光装置只允许特定波长的光线通过。将波长映射到颜色的一种常见方法是将滤镜装置排列成RGB(红、绿、蓝)阵列,从而只允许三种原色(红、绿、蓝)单独通过,这样就可以得到三幅单独的图像——每幅图像对应一种原色。


通过各种不同的组合,RGB值可以产生人眼可见的绝大多数颜色。当每个离散的颜色值被编码为8位(即256个值)时,利用“RGB滤光器”原理总共可以创造出1670万种不同的颜色。其中,最常见的排列“RGB滤光器”的方法是拜耳阵列(Bayer Pattern),它具有红绿交替和蓝绿交替两种滤光器组合。由于人眼对绿色比对红色或蓝色更敏感,拜耳阵列的绿色滤光器数量是红色滤光器或蓝色滤光器的两倍。在计算机视觉应用程序中,当处理彩色图像时,RGB三个图层都是可以使用的。如果处理能力有限,则可将不同的通道组合成灰度图像。值得一提的是,我们可以利用OpenCV计算机视觉库中的cvtColor方法实现RGB图像到灰度图像的转换,具体的转换原理和使用说明,可以参考OpenCV官方文档:https://docs.opencv.org/3.1.0/de/d25/imgproc_color_conversions.html

CCD vs. CMOS

在CCD传感器中,每个图像元件中收集到的电子通过一个或几个输出节点从芯片中传输出来。然后,电荷被转换成电压电平,经过Buffer缓存后作为模拟信号发送出去。随后该信号会被传感器外的信号放大器放大,并利用传感器外的A/D转换器将将放大后的信号转换为离散数字量。最初,CCD技术与CMOS相比有很多优点,比如更高的光敏性和更低的噪声。然而,近年来,这些差异几乎消失了。CCD的主要缺点是生产成本高,功耗高(比CMOS大约高100倍),这通常会导致相机发热问题。

CMOS传感器最初用于机器视觉应用,但由于其较差的光灵敏度,导致图像质量较差。然而,随着现代CMOS传感器的发展,其成像质量和光敏性都有了显著提高。CMOS技术具有以下几个优点:不同于CCD,CMOS芯片集成了放大器和A/D转换器,这带来了巨大的成本优势。对于CCD,这些元器件均位于传感器芯片的外部。CMOS传感器还具有更快的数据读出速度、更低的功耗、更高的抗噪能力和更小的系统尺寸。**在汽车应用中,由于这些优点,几乎所有的相机都使用CMOS传感器。**本课程中使用的大部分图像序列的相机设置可以在这里找到: http://www.cvlibs.net/datasets/kitti/setup.php

【多传感融合】优达学城多传感融合学习笔记(一)——针孔相机模型相关推荐

  1. 【多传感融合】优达学城多传感融合学习笔记(二)——将激光雷达点云俯视图映射到二维图像

    将激光雷达点云俯视图映射到二维图像 目录 将激光雷达点云俯视图映射到二维图像 简介 实现方法 参考代码 简介 本节讲解如何将激光雷达点云俯视图(仅考虑水平坐标)映射到二维图像中,其中涉及到激光雷达点云 ...

  2. python人工智能入门优达视频_看优达学城python入门视频学习C++

    在如今这个时代,计算机领域中,各种技术瞬息万变,不断更新迭代.随着人工智能.机器学习等先进技术的兴起,近年来,python入门视频是很多人关注的,Python程序员的数量已经大大超过C++程序员.然而 ...

  3. 【多传感融合】优达学城多传感融合学习笔记(三)——将激光雷达3D点云映射到相机图像(上)

    将激光雷达3D点云映射到相机图像(上)--原理分析 目录 将激光雷达3D点云映射到相机图像(上)--原理分析 齐次坐标系 内参(Intrinsic Parameters) 外参(Extrinsic P ...

  4. 优达学城Numpy与Pandas笔记

    此篇为优达学城数据分析入门第二课笔记网址 基本操作 import numpy as np# First 20 countries with employment data countries = np ...

  5. 优达学城《DeepLearning》大纲和学习愿景

    目的: 查漏补缺深度学习体系,精益求精的深刻理解体系中各种核心的技术原理,感受技术思想背后的精髓魅力,做到能够脱口而出. 计划: 2021年5月.6月,完成课程中所有核心知识的深刻理解(通过撰写博客, ...

  6. 优达学城 深度学习 任务1

    这几天刚好有环境,打算学习一下深度学习 看了一圈介绍,发现优达学城的深度学习课程作为入门课程还是不错的 今天看了第一章节的视频,顺便做了任务1 任务1难度不大,按照网站上的说明可以完成下载.打包等工作 ...

  7. 优达学城计算机视觉pkl,优达学城机器学习工程师纳米学位项目介绍

    本文由 meelo 原创,请务必以链接形式注明 本文地址,简书同步更新地址 一对一的项目辅导是优达学城纳米学位的一大亮点.本文将简要介绍优达学城机器学习工程师纳米学位的6个项目.项目覆盖了机器学习的主 ...

  8. 无人驾驶8: 粒子滤波定位(优达学城项目)

    优达学城无人车定位的项目实现: 粒子滤波算法流程图 粒子滤波的伪代码: step1:初始化 理论上说,当粒子数量足够多时,能准确地呈现贝叶斯后验分布,如果粒子太少,可能漏掉准确位置,粒子数量太多,会拖 ...

  9. 优达学城《无人驾驶入门》学习笔记——卡尔曼滤波器实现详解

    优达学城<无人驾驶入门>的第二个项目是实现矩阵类,要求通过python编写一个用来计算矩阵的类Matrix.编写这个类并不难,涉及到的线性代数方面的知识也不多,比如矩阵的加法.减法.乘法, ...

最新文章

  1. 搭建实用深度学习环境(Ubuntu16.10+Theano0.8.2+Tensorflow0.11.0rc1+Keras1.1.0)
  2. 深度学习与计算机视觉系列(3)_线性SVM与SoftMax分类器--在深度学习的视觉分类中的,这两个分类器的原理和比较
  3. centos7 安装小记
  4. 编程语言通用知识 编程语言的应用
  5. 2020微信生态全景运营白皮书:10大热门场景、5大案例剖析.pdf(附下载链接)
  6. pdf是什么意思中文
  7. 在 COMSOL 中模拟地震波的传播
  8. 基于cnn的人脸识别_人脸识别技术:从传统方法到深度学习
  9. 总体分布概况符合无界约翰逊分布(johnsonsu)的情况
  10. 进阶的阿牛哥之pandas透视表pivot_table的使用
  11. 项目沟通管理和项目干系人管理
  12. Linux下安装SVN与使用
  13. 软件工程的标准定义:什么是软件工程?
  14. 不属于多媒体计算机应用实例,河北职称计算机应用能力考试试题(九)
  15. 不得不说,这19个程序员兼职平台让我1年收入60w
  16. 时间序列分析建模及相关算法的python实现
  17. 陌生人邀请我加入CS:GO游戏,我一接受就被盗号了
  18. VS2022为什么会出现找不到指定文件?
  19. 【油猴脚本 Greasemonkey】GM_xmlhttpRequest内部实现原理
  20. 第7篇:MS12-020蓝屏漏洞在实战中的巧用

热门文章

  1. iOS学习之Swift史上最全第三方大全
  2. 计算机联锁轨道停电继电器,计算机联锁与6502.doc
  3. 关于c# read( )使用注意缓冲区赘余输入(附代码)
  4. 注解@Value()的使用
  5. 【C语言】简单判断字符串是否为回文
  6. 【人工智能】人工智能和双曲几何
  7. Android Settings->Sound->Phone ringtone试听铃声循环播放的原因
  8. Camera 录制视频 掉帧、退帧
  9. 如何搭建一个完整的后台管理系统(附:教程,源码)
  10. Android 中多进程分析