本发明属于光场成像领域,尤其涉及一种标定光场成像中各微透镜成像的中心坐标的方法。
背景技术:
随着光场相机的发展以及微透镜制作工艺的提高,光场成像领域受到越来越广泛的关注。相比于传统二维成像技术只能记录光线的位置信息,光场成像能够同时捕捉光线的空间和角度信息,记录下完整的四维光场。角度信息的获取,使得在后期对光场成像图进行重建时,能够渲染出不同视角以及聚焦在不同深度的场景图像。
光场相机通过在传统相机内部加入微透镜阵列来实现,微透镜阵列放置于相机主透镜与传感器之间。每个微透镜采集空间点不同角度的光线,并在传感器上形成不同视角下的单透镜孔径的清晰子图像,表征该微透镜上光线的方向分布。将光场成像图的各微透镜成像渲染成为完整的场景,需要确定每个微透镜成像的中心。
现有技术中,多频相移标定法通过对多频相移图像在光场成像系统中的成像均值图进行峰值检测,得到各微透镜成像的中心坐标,但该方法需要提供多频相移图像显示装置并对多张不同频率下的相移图像成像,拍摄复杂度高;而且,峰值检测法可能会在一个微透镜成像中检测出多个峰值,不够稳定。
技术实现要素:
针对以上现有技术缺陷,本发明的目的在于提供一种标定光场成像中各微透镜成像的中心坐标的方法,能够准确计算出各微透镜成像的中心坐标矩阵,用于后续的光场图像重建。
实现本发明目的的技术解决方案为:
一种标定光场成像中各微透镜成像的中心坐标的方法,包括如下步骤:
s1,在无样本放置的情况下,打开光源,直接照射光场成像系统,采集此时的光场成像图,用于标定各微透镜成像的中心;
s2,计算步骤s1得到的无样本光场成像图的全局阈值,并根据阈值将其二值化;
s3,利用形态学操作优化二值化后的无样本光场成像图,消除成像图中的“毛刺”和无意义的颗粒噪声;
s4,标记优化后的二值化图像中的所有连通区域,测量每个连通区域的重心坐标及面积属性;
s5,设立约束条件,筛选出有效的连通区域,并记录其重心坐标;
s6,将记录的重心坐标按照横坐标值升序排列,而后拆分成多个列向量,再将每列按照纵坐标值升序排列,还原重心坐标在图像中的相对位置;
s7,找到包含重心坐标数目最多的列,即最长列,对该列进行插值填充;
s8,将步骤s5记录的重心坐标按照纵坐标值升序排列,而后拆分成多个行向量,再将每行按照横坐标值升序排列,同样还原重心坐标在图像中的相对位置;
s9,找到包含重心坐标数目最多的行,即最长行,对该行进行插值填充;
s10,创建微透镜成像中心坐标矩阵,矩阵行数为步骤s7填充后的最长列的大小,矩阵列数为步骤s9填充后的最长行的大小;将步骤s5记录的所有重心坐标按照相对位置关系填充到矩阵中;
s11,依据步骤s7及s9填充后的最长列及最长行的重心坐标,对无元素填充的矩阵位置进行插值,得到完整的微透镜成像中心坐标矩阵。
本发明的显著优点在于,只需要一张无样本的光场成像图,能够准确识别出每个微透镜成像二值化后的连通区域,利用有效连通区域的重心即可确定微透镜成像的中心,对没有识别到的微透镜位置的中心坐标进行合理插值填充,得到完整的微透镜成像中心坐标矩阵。相比现有技术,本方法对实验噪声具有更好的容忍度,在成像光路不够准直或成像质量较差的情况下,仍然能够准确完整的标定光场成像中各微透镜成像的中心坐标,且操作简单。
附图说明
图1是本发明方法的流程图。
图2是本发明中光场成像系统的示意图。
图3是本发明无样本光场成像图的(a)局部图及其(b)二值化结果。
图4是本发明二值化图像有效连通区域的(a)重心及(b)插值结果。
图5是本发明对微透镜成像中心坐标矩阵缺失位置插值填充的示意图。
具体实施方式
为使本发明的目的,技术方案和优点更加清楚,下面将结合附图对本发明实施方法作进一步地详细描述。
参见图1,本发明一种标定光场成像中各微透镜成像的中心坐标的方法,步骤如下:
s1:在无样本放置的情况下,打开光源,直接照射光场成像系统,采集此时的光场成像图ic,用于标定各微透镜成像的中心。
在保持成像装置参数一致的前提下,无样本光场成像图中各微透镜成像的中心即对应样本成像图中各微透镜成像的中心。无样本光场成像图见图3中的(a)图。光场成像系统示意图见图2。
s2:计算步骤s1得到的无样本光场成像图的全局阈值,并根据阈值将其二值化。
利用最大类间方差(otsu)方法求得无样本光场成像图ic的全局阈值t,将其乘以阈值系数a,作为二值化操作的最终阈值t′=t×a。调节a的大小,并根据阈值t′将无样本光场成像图ic二值化,得到图像ic-b:
阈值系数a越大,微透镜成像在二值化之后会被“腐蚀”为越小,因此不同微透镜成像之间的分隔性越好;相反,a越小,微透镜成像在二值化之后能够被更大程度的保留,但可能导致不同微透镜成像“粘连”在一起,造成光心标定错误。实际标定时,可以根据成像图对a的取值进行有针对性的调整,在保证各微透镜成像分隔开的前提下,对成像进行最大程度的保留。一般来说,a的取值在0.6~1.5之间。
s3:利用形态学操作优化二值化后的无样本光场成像图,消除成像图中的“毛刺”和无意义的颗粒噪声。
由于无样本光场成像图ic的光照分布不均匀,当对整张图像应用固定的二值化阈值时,可能导致二值化后部分区域因亮度过高而使不同微透镜成像连接到一起,而部分区域因亮度过低而使各微透镜成像被分解。形态学开运算对二值化后的光场成像图进行先腐蚀后膨胀的操作,能够消除成像图中的“毛刺”,以及各微透镜成像被分解而留下的微小颗粒。仍记为图像ic-b。优化后的二值化图像见图3中的(b)图。
s4:标记步骤s3得到的优化后的二值化图像中的所有连通区域,测量每个连通区域的重心坐标及面积属性。
每个连通区域被视为一个可能的微透镜成像,记录其重心坐标及面积属性,连通区域的重心坐标即对应微透镜成像的中心,连通区域的面积表示为每个连通区域包含的像素个数,该属性用于在步骤s5中排除面积过小的无意义的连通区域。其中标记连通区域可使用matlab中的bwlabel函数。
s5:设立约束条件,筛选出有效的连通区域,并记录其重心坐标。
通过设立约束条件,舍弃面积过小及重心坐标不在设定范围内的连通区域。约束条件为:(1)连通区域的面积不能小于设定阈值b,本实施例中阈值b取值100,即,当识别的连通区域的面积小于100像素平方时,将该连通区域视为噪声并去除;(2)连通区域的重心坐标必须在规定范围内,即,限制连通区域的重心坐标不能超出图像边界。满足约束条件的连通区域才被视为有效的连通区域并记录其重心坐标。
将有效连通区域的重心坐标记录到二维矩阵c中,矩阵大小为num×2,num为有效连通区域的数目。矩阵的每行记录一个重心坐标,形式为[x,y],其中x表示重心的横坐标,y表示重心的纵坐标。矩阵中,重心坐标是无序排列的。
s6:将步骤s5记录的重心坐标按照横坐标值升序排列,而后拆分成多个列向量,再将每列按照纵坐标值升序排列,还原重心坐标在图像中的相对位置。
对横坐标值有序排列后的重心坐标拆分成列向量的依据是:对应同一列微透镜成像的重心坐标的横坐标值的差应小于阈值c,对应不同列微透镜成像的重心坐标的横坐标值的差远大于阈值c。阈值c的取值通常可以取微透镜成像中心之间平均间隔的一半。在排序之前可以对图像进行角度矫正,使成像轴线与图像边界平行。
s7:找到包含重心坐标数目最多的列,即最长列,对该列进行插值填充。
将拆分得到的列中包含重心坐标数目最多的列记为col_max,当拍到的无样本光场成像图ic光照均匀且成像效果较好时,col_max通常就是完整的列,不需要插值填充。然而若二值化后的无样本光场成像图ic-b有较多微透镜图像缺失的话,则需要对col_max进行检测,包括col_max的首尾元素位置及中间元素位置,对缺失的位置插值填充。插值后完整的col_max记为col_max_filled。
s8:将步骤s5记录的重心坐标按照纵坐标值升序排列,而后拆分成多个行向量,再将每行按照横坐标值升序排列,同样还原重心坐标在图像中的相对位置。
s9:找到包含重心坐标数目最多的行,即最长行,对该行进行插值填充。插值后完整的最长行记为row_max_filled。
s10:创建微透镜成像中心坐标矩阵,矩阵行数为步骤s7填充后的最长列的大小,矩阵列数为步骤s9填充后的最长行的大小,将步骤s5记录的所有重心坐标按照相对位置关系填充到矩阵中。
创建两个微透镜成像中心坐标矩阵,矩阵的行数为步骤7填充后的最长列(col_max_filled)的大小,矩阵的列数为步骤9填充后的最长行(row_max_filled)的大小;两个矩阵分别存储重心的横坐标x和纵坐标y。填充时,对步骤6拆分得到的每一列重心坐标分别处理,计算该列元素横坐标的平均值
s10:依据步骤s7及s9所述填充后的最长列及最长行的重心坐标,对无元素填充的矩阵位置进行插值,得到完整的微透镜成像中心坐标矩阵。
对无元素填充的矩阵位置的横坐标,可以取填充后的最长行(row_max_filled)中与之在同一列的元素的横坐标作为插值估计值;对无元素填充的矩阵位置的纵坐标,可以取填充后的最长列(col_max_filled)中与之在同一行的元素的纵坐标作为插值估计值。见图5,m(i,j)为待插值位置,其横坐标m(i,j)x可以由最长行中与之在同一列的元素的横坐标m(1,j)x确定,其纵坐标m(i,j)y可以由最长列中与之在同一行的元素的纵坐标m(i,5)y确定。完整的微透镜成像中心坐标矩阵见图4中的(b)图,其中白色“+”代表插值得到的微透镜成像中心坐标。