针孔相机(pinhole camera)和透镜相机的对比:
针孔相机(左) 透镜相机拍摄(右)
针孔相机优点:
1.无色差问题(由折射导致)
2.无限景深
缺点:
我们都知道小孔成像,如果孔过大,导致太多光线穿过小孔在光屏上会形成模糊的光斑,如果小孔偏小,那么成像的亮度就会偏暗,所以针孔相机如何选择才能避免以下两个问题:
1.分辨率低
2.太暗
目标:
提升分辨率+亮度,同时保留针孔相机的优点。
基于上述目标,采用编码孔径作为光圈的方法,拍摄照片如下图:
Peronal idea(PI):可以看到,这是一个huge mess的图片,不能作为最终结果,但是如果选择合适的编码孔径作为光圈然后,把上面生成的图像放在可控的光圈的设计上(即图片是在可以受光圈的影响的),然后再对上面图像进行重建恢复,就可以得到比普通真空相机高分辨率高亮度的图片。
1.编码孔径的设计:MURA(均匀冗余阵列)
(矩阵p*p)
这些像素点的值是怎么来的呢?
它是由公式来计算的。
首先黑色像素点的值是0,白色是1(黑色不透光,白色透光)
原文是这么描述的:
第一行全为0;
第一列除了(0,0)像素点全为1;
CiCj相乘为1,则填1;
其他情况全填0
解释一下C是什么:
C不是约定俗成的通用符号,是作者自己定义的。
Cq=1
如果q是模p的二次剩余(Quadratic residue),则Cq=1,否则为-1。
二次剩余是数论的内容,简单来说就是X^2除以p的余数,i.e.5^2➗3=8……1,就说:1是模3的二次剩余,那问题来了,跟5的平方有什么关系呢?实际上根据二次剩余的定义:
当存在某个X,式子
成立时,称“d是模p的二次剩余”
5是哪个存在的x,即把1当作模3的二次剩余的解。跟商也没有关系,如果找不到一个数的平方除以3余数为1,那么1就不是3的二次剩余。
那么怎么知道一个数是不是某个数的二次剩余呢?
查表:
横着看,模2的二次剩余由0和1,5的二次剩余由1和4和0.
注:有代码可以计算。
最后,循环位移,左上角的(第一行(全黑)和第一列(全白))像素,把它们移到中心位置,图中类似于十字架的图案。
编码完成后的中间结果:
2.解码孔径的设计:
基于编码孔径来设计
公式:
此模式下,MURA中的0被-1替换,但是除了第一行。并且保留循环左移。
参考资料: