计算摄像学 第五讲 焦点堆栈与光场摄像
Focal Stack and Light Field
上节课的虚拟大光圈是基于“算法”的。直接得到的深度信息很有限。
本节课将介绍“物理”地方法,从场景中更直接地得到更多深度信息。
镜头成像:只有一个平面可以聚焦。
- 如何得到各个深度都清晰的成像?
- 快速拍多个不同聚焦平面的照片->焦点堆栈(Focal Stack Imaging)。
- 再得到一张全部对焦的图片(算法加工)(all-in-focus)
- 如何捕获焦点堆栈照片?需要固定哪些参数,更改什么参数?
- 更改镜头到传感器的距离S’!(Focal distence)
- 也可以更改镜头到物体的距离S
- 如何得到最清晰的部分?(合成)
- 图像对齐(Alignment®istration)
- 调整Focal distence时,视场FoV会有些微变化(参见第四讲),要进行一定地缩放调整。
- 权重分配
- 如何测量每个像素的清晰程度?这也是相机自动对焦的工作原理
- 每个图像,清晰的地方给高权重
- 加权平均
- 对每个图像每个像素点进行加权平均。
- 图像对齐(Alignment®istration)
- 注:相机自动对焦(主要通过提取边缘)
- 做拉普拉斯算子(是一种差分)(可以起到提取边缘的作用)(也有其它提取边缘的方式)
- 再做高斯模糊(拉普拉斯算子对噪声比较敏感,模糊起到平滑作用,降噪)
- 还有主动对焦方式:比如ToF传感器
- 在焦点堆栈过程中,我们事实上得到了一些深度信息。但是这个信息比较模糊。
- 学术前沿:利用对焦距离和光圈调整估计表面深度(高精度)
- 不仅改变焦点距离、同时改变光圈
- 利用光圈和对焦距离两个信息得到尽可能真实的深度。
光场 不同子集 不同角度拍,得到真实光线的,可以还原场景光线的所有光线。
光场:所有光线的集合
光场表示方法: L(u,v,s,t),uv表示光在透镜平面穿过的位置、st表示光在传感器平面穿过的位置。用uvst可以得到透镜到传感器之间的所有光线。
如何得到光场数据?
用相机阵列进行光场摄像 or 用一个相机移动进行拍摄
如何单次相机单次拍摄?
光场摄像。不让传感器精确聚焦,而是让聚焦的光重新散开(利用一个微透镜阵列),传感器可以得到更丰富的信息。
学术前沿:深度学习生成光场
学术前沿:神经辐射场NeRF