转自https://www.cnblogs.com/riddick/p/6725273.html

博主最近在搞光场相机方面的研究啦,好了废话不多说,开始!

 1. 一些前言废话

首先,来一下光场的基本概念,来自百度百科。光场(light field):就是指光在每一个方向通过每一个点的光量。从概念里,你至少可以得到两点信息:1.光场包含光的方向;2.光场包含一个点的光量。

光场相机是个什么东西,和我们平常的相机有什么区别呢?

其实光场相机也是一个相机。。好吧有点儿啰嗦。我们知道普通的相机拍照成像,得到的离散的像素点,每一个像素都会有其像素值,那么这个像素值反应的就是光场中某一点的光量,仅此而已,我们不能够从图像中得到打到这个像素点位置的光线是从哪个方向来的,所以,普通的相机只能够得到光场中的光量信息,丢失了方向信息。

而牛逼哄哄的光场相机则不同,不仅能够记录光场的光量信息,也能记录光场中光的方向信息,也就是说它能够记录摄像机内部的整个光场!

光场相机长什么模样,以著名的Lytro公司的光场相机为例, 它们就是下面的模样,左图为第一代产品,名为 Lytro F01,(丑爆了)。右图为第二代产品,名为Lytro Illum (还将就).

当然还有著名的工业级光场相机 RayTrix,德国的企业,就不多说了。

                      

Lytro公司是斯坦福大学的吴义仁(Ren Ng)博士毕业后创办的公司,是世界上首款消费级别的光场相机,还是挺厉害的。他的博士毕业论文名为《Digital Light Field Photography》获得了2006年美国计算机协会(ACM)博士论文大奖。(据说现在已经从公司辞职回到学校教学去了。。。)

那光场相机能够记录整个光场又能怎么样呢?好,这就是卖点了,该相机能够实现先拍照后对焦。你没看错,就是这样,在拍完照了,你想重新对焦到图像中哪一个位置,就能通过点击图像得到该位置清晰的图片,放两张Ren Ng论文里《Light field photography with a hand-held plenoptic camera》的图片,对焦平面由近及远,是不是蛮神奇的,消费者不用担心拍到的图片没有聚焦到理想的位置,可以通过后期相机内部对光场的处理实现重聚焦作用(refocus)。

 2. 少说废话

如果能够吊起你的胃口,那说明你还比较感兴趣。说重聚焦之前,我们需要先了解一下光场的参数化表征,就是说如何把抽象的光场参数化表示出来。当然,这些不是我研究的,都是一些大牛们做过的事情,想看原论文的可以根据下面提到的作者,年份等去谷歌学术一下。如果想快速掌握就看中文的文献就够了,因为研究的同胞们还是很多的,如下,当然Ren Ng的原著期刊论文也必须要看一看:

①周志良. 光场成像技术研究[J]. 博士学位论文. 合肥: 中国科学技术大学, 2012.

②聂云峰, 相里斌, 周志良. 光场成像技术进展[J]. 中国科学院大学学报, 2011, 28(5): 563-572.

③Ng R, Levoy M, Brédif M, et al. Light field photography with a hand-held plenoptic camera[J]. Computer Science Technical Report CSTR, 2005, 2(11): 1-11.

光场概念最早由A.Gershun在1936年提出,用于描述光在三维空间中的辐射传输特性。1991年,E.Adelson和J.Bergen根据人眼对外部光线的视觉感知,提出用7维函数来表征空间分布的几何光线,称为全光函数(Plenoptic Function) 。如果只考虑光线在自由空间的传输,其波长一般不会发生变化,则任一时刻的光线可由5维坐标表示。更进一步,忽略光线在传输过程中的衰减,M.levory和P.Hanraham将5维的全光函数降至4维,提出用两个相互平行的平面对四维光场进行参数化表示。

如下图所示,  表示光场的一个采样,L表示光线的强度,(u, v)和(s, t)分别为光线与两个平面的交点坐标。在四维坐标空间中,一条光线对应光场的一个采样点。现实中大部分成像系统中都可以简化为相互平行的两个平面,比如传统成像系统中的镜头光瞳面和探测器像面,如果用传感器像面中的坐标(x,y)表示光线的分布位置,那么镜头光瞳面坐标(u,v)就反应了光线的传输方向。

图2  四维光场的参数化表示

传统成像系统所采集到的光场分布可以用下图表示,探测器像面上每个点接收来自整个光瞳的光线进行积分,像面(x,y)处的光照度为

其中,(u,v)为镜头出瞳面上的坐标。

图3  传统成像的光场分布

可见传统成像系统所探测到的光场只能反应其强度和位置(x,y)之间的关系,而损失了其(u,v)方向的信息。

而光场相机与传统成像不同,光场成像需要利用二维的探测器像面同时记录光场的四维信息,即二维位置分布和二维传输方向。为了实现四维信息向二维平面的转换,必须对四维光场进行重采样和分布。光场相机在传感器前面放置微透镜阵列来实现光场的采集,如下图:

镜头、微透镜阵列、传感器三者之间位置关系为:微透镜阵列放置在主镜头的焦平面附近,而传感器放置在微透镜的焦平面附近。

也是就说光场相机和普通相机不一样的地方,主要就是在主镜头的焦平面附近放置了一个微透镜阵列,而将传感器Sensor放在了微透镜的焦平面附近,通过这样的关系来记录四维光场!

那么在光场相机中参数化的光场是怎么表示的呢,为什么加一个微透镜阵列就能够记录光场中光线的方向的?L(u,v,s, t)中的u,v,s,t分别表示什么,又是如何实现重聚焦的?

夜已深,请看下文更新吧!

--------------------------------- 业精于勤而荒于嬉 行成于思而毁于随 ---------------------------------

光场相机重聚焦原理之——光场的参数化表征相关推荐

  1. matlab光场成像,光场相机重聚焦原理③——Matlab光场工具包使用重聚焦及多视角效...

    光场相机重聚焦原理③--Matlab光场工具包使用重聚焦及多视角效 光场相机重聚焦原理③--Matlab光场工具包使用.重聚焦及多视角效果展示 目录 1.从相机里导出白图像(White Images) ...

  2. 光场相机重聚焦原理③——Matlab光场工具包使用、重聚焦及多视角效果展示

    目录 1.从相机里导出白图像(White Images): 2.处理白图像: 3.利用白图像对光场文件进行解码得到rawImage: 4.对rawImage进行去马赛克操作(demosaic): 5. ...

  3. 光场相机重聚焦原理介绍及代码解析

    光场相机重聚焦原理介绍及代码解析 光场相机重聚焦–焦点堆栈深度估计法 全部代码下载地址: https://download.csdn.net/download/weixin_38285131/1044 ...

  4. 光场相机重聚焦原理②——Lytro Illum记录光场

    目录 1.光场相机内部如何记录光线的方向? 2.Lytro illum中光场如何参数化表示? 3.Lytro illum如何实现重聚焦? 上一节中大概讲述了光场相机和光场的参数化表示,这一节就说一下光 ...

  5. 光场相机重聚焦原理①——光场的参数化表征

     1. 一些前言废话 首先,来一下光场的基本概念,来自百度百科.光场(light field):就是指光在每一个方向通过每一个点的光量.从概念里,你至少可以得到两点信息:1.光场包含光的方向:2.光场 ...

  6. 光场相机重聚焦--焦点堆栈深度估计法

    光场相机重聚焦原理介绍及代码解析 光场相机重聚焦–焦点堆栈深度估计法 全部代码下载地址: https://download.csdn.net/download/weixin_38285131/1044 ...

  7. 光场相机重聚焦之二——Lytro Illum记录光场

    转自https://www.cnblogs.com/riddick/p/6731130.html 上一节中大概讲述了光场相机和光场的参数化表示,这一节就说一下光场相机内部是如何记录光场以及实现重聚焦的 ...

  8. Lytro 光场相机重对焦C++实现以及CUDA实现

    前面有几篇博客主要介绍了光场和光场相机相关知识,以及重对焦效果和多视角效果的展示.算是自己学习光场过程的一种总结. 这次贴上自己用OpenCV/C++编写的重对焦算法实现(包含CPU版和CUDA GP ...

  9. 光场相机频域重聚焦原理

    之前有和大家聊过光场相机的空域重聚焦原理,而我们知道对于信号处理而言,频域处理也是很常见的.对于光场重聚焦如何在频域进行表征呢? Ng最早提出了频率域重对焦图像算法,算法核心是围绕傅里叶切片定理进行展 ...

最新文章

  1. 计算机专业面试国王的问题,阿卜杜拉国王科技大学电气与计算机科学面试经验汇总...
  2. python爬虫如何从一个页面进入另一个页面-Python爬虫怎么获取下一页的URL和网页内容?...
  3. 理解Javascript_12_执行模型浅析
  4. 学霸真的比学渣更讨女孩子欢心吗?
  5. Taro+react开发(8)--控制跳转
  6. 修饰符.lazy .number .trim
  7. 国家计算机科学进展,计算机科学技术学院部署科研工作推进及国家自然科学基金申报工作...
  8. python爬虫系列(3.8-正则的使用)
  9. Kotlin入门(11)江湖绝技之特殊函数
  10. 【HDU 3038】How Many Answers Are Wrong(带权并查集,区间型)
  11. Windows 7 激活时提示“系统保留分区未分配驱动器号!”解决方法
  12. Java与完成端口IOCP
  13. librdkafka安装步骤
  14. Ubuntu安装字体for wps
  15. pig的安装、pig的数据模型和pig的常用命令
  16. BackupManagerService分析 基于Android 8.0
  17. Java Email 发HTML邮件工具 采用 freemarker模板引擎渲染
  18. JAVA实现资源文件映射
  19. 听说要发年终奖了,来来来,我们互相伤害
  20. 1. 工业大数据的内涵

热门文章

  1. 【历史上的今天】3 月 12 日:万维网概念被提出;Google Code 停运;仙童半导体公司被收购
  2. 優しさの理由 (冰菓op)歌词
  3. (3)音频在计算机里是怎样存储的,什么是音频?
  4. 陀螺仪加速度计MPU6050程序与校准方法
  5. 【女人8大隐私部位越丑越健康】
  6. ZUCC_离散数学基础__简单期末复习整理
  7. ICH10R服务器主板是什么芯片,主板上面都有啥?常见板载芯片功能介绍(一)
  8. ZUCC_操作系统原理实验_实验九 消息队列
  9. C++ 开发【梦幻西游】500多行代码实现
  10. C语言算数运算符顺序