当人用眼睛看事物的时候,会感觉到近处的东西是比远处的东西要大一些的,通俗的说,这就是透视。

总的来说。透视变换是将3D的世界转换到2D图像上的一种手段,人的视觉系统和摄像头视觉系统也是基于这一工作原理。

对透视变化的研究,就是要搞明确。为什么我们看到的东西会近处大而远处的小。

一 參考系

透视变换最主要是用于測量,因此在说明透视变换之前。有必要说明一下參考系的问题。

为了有效的分析3D世界。以下五种參考系是必要的:

1.        对象參考系(Object)

有时候也叫做本地參考系(Local Coordinate Systems),能够将其粗鲁的理解为视界中某个物体的以自己为中心的坐标系。其作用范围只在物体本身。比方,当我们在为某个物体建模的时候,我们必须找到一个点,用于将建模用的模块组装起来。

这是一个三维坐标系。

2.        世界參考系(World)

也被称为宇宙坐标系(universe Coordinate Systems),这个坐标系是其它全部坐标系的基础,用于将其它的坐标系联系在一起。

这是一个三维坐标系。

3.        摄像头參考系(Camera)

一般来说,为了简化模型,我们会如果所使用的摄像头为针孔摄像头,而图像平面被觉得是在焦点前(相机中心)。

摄像头參考系为右手坐标系。而且将Z轴指向图像平面,见下图:

这是一个三维坐标系。




4.        图像參考系(Image Plane)

图像參考系就是在摄像头中的投影面,一般来说,图像參考系的中点就是相应摄像头的焦点的位置,图像平面和摄像头中心的距离为焦距,这个平面会和摄像头的Z轴垂直。

这个參考系的

这是一个二维坐标系。

5.        像素參考系(Pixel)

和图像參考系一样,这也是一个二维的坐标系,在像素參考系中的每一个点都有和图像參考系中有相应关系。

五个坐标系之间的空间关系:

这5个參考系之间的转换关系如此下:


上图就是从3D场景转换到2D图像的整个流程。

二 数学介绍


由这个图能够非常easy知道
当Y不变时,Z向左移动后。Z会变大
那么y就会变小
这就是为什么我们看物体会产生近大远小
的透视效果。

三 世界坐标系到摄像头坐标系

四 摄像头坐标系到图像坐标系

Duanxx的图像处理学习: 透视变换(一)的更多相关文章

  1. OpenCV图像处理学习笔记-Day1

    OpenCV图像处理学习笔记-Day1 目录 OpenCV图像处理学习笔记-Day1 第1课:图像读入.显示和保存 1. 读入图像 2. 显示图像 3. 保存图像 第2课:图像处理入门基础 1. 基本 ...

  2. OpenCV图像处理学习笔记-Day03

    OpenCV图像处理学习笔记-Day03 目录 OpenCV图像处理学习笔记-Day03 第31课:Canny边缘检测原理 第32课:Canny函数及使用 第33课:图像金字塔-理论基础 第34课:p ...

  3. OpenCV图像处理学习笔记-Day4(完结)

    OpenCV图像处理学习笔记-Day4(完结) 第41课:使用OpenCV统计直方图 第42课:绘制OpenCV统计直方图 pass 第43课:使用掩膜的直方图 第44课:掩膜原理及演示 第45课:直 ...

  4. 深刻认识shift_ram IP core——图像处理学习笔记

    在进行图像处理算法中,往往需要生成图像像素矩阵,这对于C语言来说可以直接用数据表示,但是对于verilog来说便不是那么容易了,硬件描述语言不比软件,它的核心不再算法,而是在于设计思想,加速硬件.在进 ...

  5. MATLAB数字图像处理学习笔记

    我们都知道一幅图片就相当于一个二维数组,可以用一个矩阵来表示,而MATLAB可以说就是为矩阵运算而生的,所以学习图像处理,学习MATLAB势在必行! 一. MATLAB基础知识 1. 读取图像 %im ...

  6. 数字图像处理学习笔记之一 DIP绪论与MATLAB基础

    写在前面的话 数字图像处理系列的学习笔记是作者结合上海大学计算机学院<数字图像处理>课程的学习所做的笔记,使用参考书籍为<冈萨雷斯数字图像处理(第二版)(MATLAB版)>,同 ...

  7. CS131&Cousera图像处理学习笔记 - L4&W2滤波和卷积

    cs131: http://vision.stanford.edu/teaching/cs131_fall1617/ coursera: https://www.coursera.org/learn/ ...

  8. OpenCV 图像处理学习笔记(一)

    解读IplImage结构 typedef struct _IplImage { int nSize;                    /* IplImage大小 */ int ID;       ...

  9. Duanxx的STM32学习:STM32命名规则

随机推荐

  1. 比callback更简洁的链式执行promise

    promise自己理解的也不够深刻,具体知识点不在这里细说了 直接上个例子,清晰明了,自己去悟吧 <script type="text/javascript"> //模 ...

  2. chrome实现全浏览器跨域ajax请求

    如图,在chrome快捷方式上打开属性栏,在‘目标’栏加上后缀--disable-web-security --user-data-dir.即可实现在此浏览器上所有网页的跨域请求.

  3. C语言入门(3)——对Hello World程序的解释

    上篇我们写了一个最简单的程序.这个简单的程序包含了很多重要的内容.本篇我们通过这个最简单的Hello World程序逐一讲解C语言程序的一些特点. 打开Visual Studio 2013 通过菜单- ...

  4. [Leetcode][Python]29: Divide Two Integers

    # -*- coding: utf8 -*-'''__author__ = 'dabay.wang@gmail.com' 29: Divide Two Integershttps://oj.leetc ...

  5. HDOJ 4252 A Famous City 单调栈

    单调栈: 维护一个单调栈 A Famous City Time Limit: 10000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (J ...

  6. Android TextView drawableLeft 在代码中实现

    方法1 Drawable drawable= getResources().getDrawable(R.drawable.drawable); /// 这一步必须要做,否则不会显示. drawable ...

  7. Codeforces Round #262 (Div. 2) B

    题目: B. Little Dima and Equation time limit per test 1 second memory limit per test 256 megabytes inp ...

  8. appium locator

    If you want to find out more about the UIAutomator library, then it might be helpful to check out ht ...

  9. md笔记——正则学习

    正则表达式 在线调试正则1 在线调试正则2 规则记录 \d 匹配一个数字字符.等价于[0-9] \D 匹配一个非数字字符.等价于[^0-9]. . 通配符,可以匹配任意字符. ? 表示量词" ...

  10. HTML系列(六):划分文档结构

    常见的网页结构布局是酱紫的,真是美美哒^O^: 一.添加基本标题h1~h6(没什么好说的): 二.标题分组hgroup <hgroup>用来将标题和子标题进行分组.如果一篇文章articl ...