光场相机

(1)理论介绍:
著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:ccccw
链接:http://www.zhihu.com/question/20511442/answer/24066624
来源:知乎

光场相机原理:通过在普通相机镜头(主镜头)焦距处加微透镜阵列实现记录光线,再通过后期算法(傅里叶切片定理,光场成像算法)数字变焦。

原理图如下:

<img src="https://pic3.zhimg.com/ece13093ab4a232ca108213d5d72d1d6_b.jpg" data-rawwidth="534" data-rawheight="195" class="origin_image zh-lightbox-thumb" width="534" data-original="https://pic3.zhimg.com/ece13093ab4a232ca108213d5d72d1d6_r.jpg">

( 图引自Lytro创始人Ren Ng发表的光场相机文章[Light Field Photography with a Hand-held Plenoptic Camera]. )


这样,光线通过主镜头后,打到微透镜阵列上,并再次成像。那么,放在微透镜阵列后的像素,尽管仍然只记录了光线的强度信息,但却因其相对于某个微透镜的位置而记录了光线的方向信息。即,如微透镜阵列是10*10,像素阵列是50*50,则每个微透镜分到5*5个像素,这25个像素分别记录了通过主透镜的25个不同位置并到达此微透镜的25根光线的强度信息。这样,单纯用微透镜阵列和光电传感器,就相当于记录了通过主透镜的所有光线。在后期处理时,只需要对光线重新追迹即可完成重聚焦,因为光线在自由空间中的传播是可以用两个平面、四个坐标(四维量,学术上称为光场)来唯一表示的,而成像过程只不过是对这个四维光场进行了一个二维积分,从而得到了二维图像。光场相机相当于直接记录了四维光场,不同焦深的图像只不过是在做不同情况下的二维积分罢了。

当然,光场相机劣势也明显,空间分辨率不足。这很显然,因为用同样的像素数量,传统相机记录二维图像,像素数被完全使用;光场相机记录四维图像再做积分生成二维图像,积分过程中就会有信息丢失(想象把平面点阵变成线点阵),自然二维图像像素数量减少了,后果就是空间分辨率不足。经典光场相机(Lytro)空间分辨率与微透镜阵列数量成正比。而且,要提高空间分辨率,角度分辨率就会下降,这之间有一个trade-off。







(2)仿真介绍

著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:李超
链接:http://www.zhihu.com/question/20511442/answer/26251790
来源:知乎

已经把要点都说了,鉴于当初自己的无奈,我就再做进一步的补充。
  • Matlab仿真实验
按照惯例应该是先要上图的,ok,我先上我一年多以前用matlab仿真实现光场相机产生的图,不够精确,还请见谅。

下图(1)是使用matlab仿真产生的光场相机观测数据。
<img src="https://pic3.zhimg.com/08527d84ccab2acbb28e90f9051179ba_b.jpg" data-rawwidth="1001" data-rawheight="1001" class="origin_image zh-lightbox-thumb" width="1001" data-original="https://pic3.zhimg.com/08527d84ccab2acbb28e90f9051179ba_r.jpg"> 图(1) 图(1)

下图(2)、图(3)是图中9个字母的位置关系(9个字母与相机的距离各不相同):
<img src="https://pic1.zhimg.com/f8d74a3bbc6d3dd5aaac2cdad7a7f88c_b.jpg" data-rawwidth="1268" data-rawheight="284" class="origin_image zh-lightbox-thumb" width="1268" data-original="https://pic1.zhimg.com/f8d74a3bbc6d3dd5aaac2cdad7a7f88c_r.jpg"> 图(2) 图(2)

<img src="https://pic4.zhimg.com/d9c6b900b59235750f5bba10f51729d7_b.jpg" data-rawwidth="597" data-rawheight="262" class="origin_image zh-lightbox-thumb" width="597" data-original="https://pic4.zhimg.com/d9c6b900b59235750f5bba10f51729d7_r.jpg"> 图(3) 图(3)

好了,下面是见证奇迹的时刻了,如图(4)所示,是根据图(1)记录的原始光场数据重聚焦得到的9幅图像,分别聚焦在每个字母的位置。

<img src="https://pic2.zhimg.com/b33a09841f3fa96a1f4e5d99b7d2cfdd_b.jpg" data-rawwidth="608" data-rawheight="674" class="origin_image zh-lightbox-thumb" width="608" data-original="https://pic2.zhimg.com/b33a09841f3fa96a1f4e5d99b7d2cfdd_r.jpg"> 图(4) 图(4)

求轻喷,由于使用matlab仿真验证,数据的离散化等一系列原因导致重构质量还有待提高,不过已经可以说明问题啦。
  • 光线记录
结果已经展示,我也说说原理吧,都说有图有真相,为了让那些像当初的我一样的人能够更好的理解,我会在下面再上几幅图。

王丛立也介绍啦,光场相机是因为在普通相机镜头(主镜头)焦距处加微透镜阵列实现记录光线的,然后根据记录的光线实现重聚焦的。那么是如何记录光线的呢,我觉得这个可能是很多人想要了结的问题,下面再次上图,如图(5)所示,微透镜s位于主镜头u的焦距处,传感器位于微透镜s的焦距处(这个其实也很重要的,Ren Ng在他的论文中也说啦,下面会简单的介绍)。

注意:由于微透镜的焦距远远小于主透镜的焦距,因此主透镜可以看做位于微透镜镜的无穷远处。从而可以认为主透镜u上的深绿竖条区域经过某个微透镜后正好聚焦在微透镜后的某一个像素上,又由于微透镜是主透镜的几百分之一,那么近似于采样的理解,可以认为这一个像素就是蓝色的线内部所有光线的一个采样。通过这种方式就记录了相机内部的一条光线;同理,其他像素也都对应一条光线(这样就是为什么Lytro一代记录了1100万条光线,而二代记录了4000万条光线)。
<img src="https://pic1.zhimg.com/8bd64b1925ccc200fd7e8efb2a567a68_b.jpg" data-rawwidth="411" data-rawheight="505" class="content_image" width="411">
图(5)

夜已深了,既然说了,我就说完吧,上面图(5)说明了光场相机如何记录一条光线,但是可能还是不够清楚,索性再上两幅图,如图(6)所示,此刻的某个微透镜是不是很像传统相机的主透镜了,而主透镜是不是就相当于位于无穷远的场景了(这些都说废话),回归正题,大家是不是发现了,由于主透镜、微透镜阵列、传感器三者的位置关系,每个微透镜后面的像素可以看做是该像素镜像到主透镜区域的过来的光线的采样。
<img src="https://pic4.zhimg.com/6e7b8b720072e1c52d7200bcfa2d199b_b.jpg" data-rawwidth="334" data-rawheight="463" class="content_image" width="334">
图(6)

下面再看图(7),有完没完啦,手机党一定要泪奔啦,好吧,在此致以诚挚的歉意。OK,继续,
其实此刻拿出图(7)是为了说明一个前面没有讲到的问题,前面只说一个了一个像素记录了一条光线,而没有谈到光线的方向信息。其实很简单,由于每个像素的位置是固定的,每个像素对应的微透镜的位置也是固定的,由于光线的直线传播,很容易得出光线的方向信息。好吧,再通俗一点:以图(6)和图(7)为例,假设主透镜后面有4个微透镜,每个微透镜后面有8个传感器(为了各种方便,此处都已平面空间为例,立体空间可以以此类推),图(6)中的红色传感器对应图(6)中主透镜的红色区域,如果说这个微透镜的坐标为s1(定值),而红色区域的坐标为7,那么红色传感器记录的这条光线就可以表示为:L(7, s),图(6)中的光线就为L(u, s1),而图(7)中的这些光线就为L(4,s)。所有的光线就对应L(u, s)。
<img src="https://pic2.zhimg.com/8201706e6101da975399afb8ee811d3d_b.jpg" data-rawwidth="425" data-rawheight="916" class="origin_image zh-lightbox-thumb" width="425" data-original="https://pic2.zhimg.com/8201706e6101da975399afb8ee811d3d_r.jpg">
图(7)
  • 重聚焦
在说重聚焦之前有个问题需要说明下:看过光场相机原始数据的(或者看我仿真产生的数据)都知道,直接观测数据是不能看的,是一个一个的圆形区域,因为每个微透镜都对圆形的主透镜成像,所以实际上光场相机上最终产生的图像是对原始数据进行求和之后得到的,怎么求和呢,就是每个微透镜后面对应的像素加起来,所以一个微透镜也就成了最终的一个像素,而微透镜的尺寸是不能太小的,所以就导致了最终的成像分辨率不高。

好吧,下面可以说重聚焦啦,我又要上图了,如图(8)所示:由于光线的直线传播,既然知道了光线在垂直方向上的两个坐标,又知道了两个坐标之间的水平距离,而传感器记录了光线的强度,根据这些条件,剩下的就是简单的几何问题啦,我就不说啦,一切都在图上。实际上我们的聚焦不就是调整这个水平距离,让光线到达聚焦平面嘛,现在既然知道了光线的方向和强度信息,当然可以随意的重聚焦啦。
<img src="https://pic1.zhimg.com/11b877550b7d252ac450376f4c3f9944_b.jpg" data-rawwidth="1072" data-rawheight="542" class="origin_image zh-lightbox-thumb" width="1072" data-original="https://pic1.zhimg.com/11b877550b7d252ac450376f4c3f9944_r.jpg">
图(8)
好不容易碰到一个自己曾经钻研过的问题,所以就说了多了点,由于答的仓促,所以可能有些不足的地方,还请指出,另外欢迎探讨。
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
光场相机是一种基于光场技术的新型相机,其原理类似于人眼。传统相机在拍摄时只能获取到二维的光强信息,而光场相机可以获取到三维的光场信息。 光场相机的图像传感器不仅可以感知光强,还可以感知光场中的光线方向和位置信息。通过测量光场,可以计算出每个像素点上不同位置进入相机的光线方向和位置。通过对光线的方向进行逆向追踪,可以获取到不同距离的景物在三维空间中的位置信息。 利用光场相机拍摄的图像中,可以利用计算机算法进行后续的图像处理和分析。比如可以实现景深的调整、三维重构、虚实混合等效果。光场相机在计算机视觉、计算机图形学以及增强现实等领域具有广泛的应用前景。 Matlab是一种常用的科学计算软件,它提供了丰富的数学、绘图和图像处理函数。对于光场相机来说,Matlab可以用于光场图像的处理和分析。 在Matlab中,可以使用图像处理工具箱提供的函数来读取和显示光场图像,并进行后续的处理。比如可以使用imread函数读取图像,使用imshow函数显示图像。可以使用imfilter函数进行图像滤波,使用imadjust函数进行图像增强等处理。 此外,Matlab还可以使用计算机视觉工具箱中的函数进行光场图像的特征提取和分析。比如可以使用corner函数进行角点检测,使用hough函数进行直线检测,使用matchfeatures函数进行特征匹配等。 综上所述,光场相机是一种能够获取到光线方向和位置信息的新型相机,Matlab作为一种强大的科学计算软件,可以用于光场图像的处理和分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值