本公开涉及图像处理领域,具体地,涉及一种离焦量检测方法。
背景技术:
离焦量检测可用于自动对焦、实施测距等,在学术研究和实际应用中具有重要作用。相关技术中频谱分析主要基于原图差值或梯度值差值检测方法。基于原图差值的检测算法计算相对简单,适合目标边缘非常明显的场景,但是作用于实际场景其匹配误差很大,而且鲁棒性差。基于梯度值差值的检测算法精度相对较高,但是其基于每个像素点进行处理的特点限制了其鲁棒性,对于有干扰的场景无法排除其他小边缘。此外,基于原图差值的检测算法和基于梯度值差值的检测算法所需要的缓存偏大,不利于嵌入式系统上的实现。
技术实现要素:
(一)要解决的技术问题
有鉴于此,本公开提供了一种离焦量检测方法,以解决上述非期望边缘方向上鲁棒性不足以及嵌入式系统的适配性问题。
(二)技术方案
本公开提供了一种离焦量检测方法,包括:对原始图像进行二维离散傅里叶变换,得到频谱图像;将所述频谱图像所在区域划分为一个以上的区间,并对每一区间的频谱图像进行灰度值平均处理;根据每一区间的频谱图像的灰度值对所述频谱图像进行去衍射化处理;从每一区间的频谱图像的灰度值中确定峰谷值,所述峰谷值所对应区间的频谱图像与所述频谱图像的中心之间的距离为所述频谱图像的暗环半径;根据所述暗环半径计算所述原始图像对应的离焦量。
可选地,所述对原始图像进行二维离散傅里叶变换,包括:利用二维离散傅里叶变换将所述原始图像变换为频域的图像,所述频域的图像的大小与所述原始图像的大小相同;对所述频域的图像进行平移操作,得到所述频谱图像,所述频谱图像的中心为原点。
可选地,所述将所述频谱图像所在区域划分为一个以上的区间,包括:根据所述频谱图像的大小确定所述频谱图像在频域的x方向和y方向上的坐标范围;根据预置的区间间隔以及所述坐标范围将所述频谱图像所在区域划分为一个以上的区间。
可选地,所述预置的区间间隔为1~2个像素点,所述根据预置的区间间隔以及所述坐标范围将所述频谱图像所在区域划分为一个以上的区间,包括:根据所述预置的区间间隔在所述坐标范围内绘制等间隔的分割线,以将所述频谱图像所在区域划分为一个以上的区间。
可选地,所述对每一区间中的频谱图像进行灰度值平均处理,包括:分别对每一区间中频谱图像的像素点灰度值进行不加权平均处理,得到每一区间频谱图像的灰度平均值;将每一区间频谱图像中像素点的灰度值设置为其灰度平均值。
可选地,所述根据每一区间中频谱图像的灰度值对所述频谱图像进行去衍射化处理,包括:根据每一区间中频谱图像的灰度值确定背景灰度值;对灰度值高于第一阈值与所述背景灰度值之和的区间的频谱图像进行去衍射化处理。
可选地,所述对高于第一阈值与所述背景灰度值之和的灰度值对应的区间中的频谱图像进行去衍射化处理,包括:将灰度值高于第一阈值与所述背景灰度值之和的区间的频谱图像的灰度值设置为所述第一阈值与背景灰度值之和。
可选地,所述从每一区间的频谱图像的灰度值中确定峰谷值,包括:获取去衍射化处理后每一区间的频谱图像的灰度值;从与所述频谱图像中心最近的区间的灰度值开始,逐一判定每一区间的频谱图像的灰度值是否为所述峰谷值。
可选地,当任一区间之后第n个区间的频谱图像的灰度值大于该区间频谱图像的灰度值与第二阈值之和,且这两个区间之间的频谱图像的灰度值均高于该区间频谱图像的灰度值,且第n个区间频谱图像的灰度值高于第n+1个区间频谱图像的灰度值时,该区间频谱图像的灰度值为所述峰谷值。
可选地,所述根据所述暗环半径计算所述原始图像对应的离焦量,包括:根据所述暗环半径,查询预置的暗环半径-离焦量对应关系,计算所述原始图像对应的离焦量。
(三)有益效果
本公开提供的离焦量检测方法,具有以下有益效果:
(1)将图像数据转化为一维数组灰度值数据进行处理,降低占用内存,采用取平均和比较进行计算,简化计算复杂度,有利于嵌入式系统上的实现;
(2)通过划分区间以及灰度值平均处理,将衍射造成的偏差拆散到各个区间中,降低了误差,去衍射化处理避免了高灰度值误差峰的出现,设定第二阈值滤除微小干扰,在频谱图像边缘存在干扰时,增加了检测的鲁棒性;
(3)根据各个区间的灰度值确定暗环半径,避免出现系统误差,使得得到的暗环半径更为准确。
附图说明
图1示意性示出了本公开实施例提供的离焦量检测方法的流程图;
图2a示意性示出了本公开实施例提供的原始图像的示意图;
图2b示意性示出了本公开实施例提供的二维离散傅里叶变换后的图像的示意图;
图2c示意性示出了本公开实施例提供的平移操作后的频谱图像的示意图;
图3a示意性示出了本公开实施例提供的灰度值平均处理之前的频谱图像的示意图;
图3b示意性示出了本公开实施例提供的灰度值平均处理之后的频谱图像的示意图;
图4a示意性示出了本公开实施例提供的去衍射化处理之前的频谱图像的示意图;
图4b示意性示出了本公开实施例提供的去衍射化处理之后的频谱图像的示意图;
图4c示意性示出了本公开实施例提供的确定峰谷值之后的频谱图像的示意图;以及
图5示意性示出了本公开实施例提供的一级暗环半径-离焦量经验曲线。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本公开进一步详细说明。
图1示意性示出了本公开实施例提供的离焦量检测方法的流程图。
参阅图1,同时结合图2a-图5,对图1所示方法进行详细说明。如图1所示,该离焦量检测方法包括操作s110-操作s150。
s110,对原始图像进行二维离散傅里叶变换,得到频谱图像。
根据本公开的实施例,操作s110包括:利用二维离散傅里叶变换将原始图像变换为频域的图像,频域的图像的大小与原始图像的大小相同;然后对该频域的图像进行平移操作,得到中心为原点的频谱图像。
本公开实施例中,原始图像例如为图2a所示的离焦的数字图像。可以利用二维离散傅里叶变换将离焦的数字图像变换为相同大小的频域的频谱图像,该相同大小的频谱图像如图2b所示,并对频谱图像进行平移操作,以将频谱图像的中心平移到频域的原点,平移操作后中心位于原点的频谱图像如图2c所示。
s120,将频谱图像所在区域划分为一个以上的区间,并对每一区间的频谱图像进行灰度值平均处理。
参阅图2c,可以看出,平移操作后原点附近具有明显的亮环和暗环,因此,需要通过圆环内灰度值平均的方式消除非径向的灰度差。
根据本公开的实施例,可以根据频谱图像的大小确定频谱图像在频域的x方向以及在频域的y方向上的坐标范围,并根据预置的区间间隔以及上述坐标范围将频谱图像所在区域划分为一个以上的区间。
根据本公开的实施例,预置的区间间隔例如为1~2个像素点,可以根据预置的区间间隔在上述坐标范围内绘制等间隔的分割线,以将频谱图像所在区域划分为一个以上的区间。例如将频谱图像所在区域划分为一个圆形和一个以上的圆环。本公开实施例中,将落在分割线上的像素点设定为落在该分割线内部。
以预置的区间间隔为2个像素点、x方向和y方向上的坐标范围为16个像素点为例,以原点为圆心,分别以2、4、6、8、10、12、14个像素点为半径绘制圆形分割线,将操作s110中得到的频谱图像分割为8个区间,每个区间中包含大量像素点,每个像素点对应有相应的灰度值。可以理解的是,一般而言,灰度值的范围为0-255,白色像素点的灰度值为255,黑色像素点的灰度值为0。
根据本公开的实施例,对每一区间中的频谱图像进行灰度值平均处理包括:分别对每一区间中频谱图像的像素点灰度值进行不加权平均处理,得到每一区间中频谱图像的灰度平均值,然后,将每一区间频谱图像中所有像素点的灰度值设置为其灰度平均值。
具体地,灰度值平均处理之前的频谱图像如图3a所示,以3a中一个区间的频谱图像为例,说明灰度值平均处理的过程。图3a中按照区间间隔为1个像素点进行分割,将该区间中所有像素点的灰度值相加,并将相加后的结果除以该区间中像素点的个数,得到该区间中频谱图像的灰度平均值,例如得到的灰度平均值为100,然后将该区间频谱图像中所有像素点的灰度值设置为上述灰度平均值100,即可实现该区间频谱图像的灰度值平均处理。以此类推,完成所有区间频谱图像的灰度值平均处理,灰度值平均处理之前的频谱图像如图3b所示。
本公开实施例中,考虑到实际的频谱图像是由模糊核带来的圆环状包络和衍射干扰共同作用的结果,因此,按照模糊核的包络形状进行平均,使得由衍射带来的偏差被拆散到各个区间当中,降低了误差。
s130,根据每一区间的频谱图像的灰度值对频谱图像进行去衍射化处理。
参阅图4a,可以看出,灰度值平均处理后,频谱图像中半径较小的区域中仍存在着衍射带来的灰度值干扰,因此,需要对半径较小区域的频谱图像进行去衍射化处理。
具体地,操作s130包括子操作s130a和s130b。
在子操作s130a中,根据每一区间中频谱图像的灰度值确定背景灰度值。例如,灰度值平均处理后,根据各个区间对应的灰度平均值,找到出现次数最多的灰度平均值,该出现次数最多的灰度平均值即可作为背景灰度值。可以理解的是,出现次数最多的灰度平均值即为理想状况下衍射/频谱极小的灰度值。
在子操作s130b中,对灰度值高于第一阈值与背景灰度值之和的区间的频谱图像进行去衍射化处理。根据本公开的实施例,可以将灰度值高于第一阈值与背景灰度值之和的区间的频谱图像的灰度值设置为第一阈值与背景灰度值之和。参阅图4b,去衍射化处理后,使得频谱图像中心高灰度值的区域呈现出同等强度的灰度值,从而避免了高灰度值的误差峰出现,并消除了中心的衍射图谱亮暗波纹不均匀造成的干扰。
s140,从每一区间的频谱图像的灰度值中确定峰谷值,峰谷值所对应区间的频谱图像与频谱图像的中心之间的距离为频谱图像的暗环半径。
根据本公开的实施例,操作s140包括子操作s140a和s140b。
在子操作s140a中,获取去衍射化处理后每一区间的频谱图像的灰度值。进一步地,可以从中心开始,依次读取灰度值并将读取到的灰度值组成一维灰度值数组,以频谱图像被划分为8个区间为例,组成的一维灰度值数组中包含8个灰度值。
在子操作s140b,从与频谱图像中心最近的区间的灰度值开始,逐一判定每一区间的频谱图像的灰度值是否为峰谷值。根据本公开的实施例,逐一判定过程中,当任一区间的频谱图像的灰度值比其之后第n个区间的频谱图像的灰度值低第二阈值,第n+1个区间的频谱图像的灰度值高于第n个区间的频谱图像的灰度值,且这两个区间的频谱图像的灰度值均比该区间的频谱图像的灰度值高,则该区间的频谱图像的灰度值为峰谷值。
具体地,以灰度值数组中的第二个灰度值a[2]为例,说明如何判定任一灰度值是否为峰谷值。首先,判断灰度值数组中的第三个灰度值a[3]是否比第二个灰度值a[2]低,当第三个灰度值a[3]比第二个灰度值a[2]低时,说明该第二个灰度值a[2]处在上升/下降沿上,该第二个灰度值a[2]不是峰谷值;当第三个灰度值a[3]比第二个灰度值a[2]高时,继续比较其后的灰度值与第二个灰度值a[2]之间的大小关系,若在向后比较的过程中,先发现第j个灰度值a[j](j>3)比第二个灰度值a[2]低,则该第二个灰度值a[2]不是峰谷值,若在向后比较的过程中,先发现第k个灰度值a[k](k>3)比第二个灰度值a[2]高第二阈值,即第k个灰度值a[k]大于第二个灰度值a[2]与第二阈值之和,且第k+1个灰度值a[k+1]比第k个灰度值a[k]小,该第二个灰度值a[2]是峰谷值。本公开实施例中,当判断出某一灰度值不是峰谷值时,停止判定该灰度值,开始判断其后的灰度值是否为峰谷值。
本公开实施例中,考虑到灰度值平均处理后各个半径的环所包含的衍射极小区域点数不同,因此仍可能存在一些微小的干扰,因此,设置第二阈值进行过滤,只有峰谷比周围的极大值低出第二阈值时才会被判定为峰谷,滤除了微小干扰。
本公开实施例中,还可以将峰谷值对应区间的频谱图像的颜色染黑,如图4c所示。该离焦量检测方法寻找的是灰度最小值,参阅图4c,可以看出,峰谷值对应区间的频谱图像位于暗环中心,而非暗环边缘,更加靠近真实的暗环半径,从而使得离焦量检测结果更为准确。本公开实施例中,根据图像的灰度值寻找峰谷值,相对于相关技术中寻找下降沿/上升沿一阶梯度最大边线(即,边缘)而言,该离焦量检测方法能够避免出现系统误差。
s150,根据暗环半径计算原始图像对应的离焦量。
根据本公开的实施例,可以根据暗环半径,查询预置的暗环半径-离焦量对应关系,计算原始图像对应的离焦量。
预置的暗环半径-离焦量对应关系例如为图5所示的一级暗环半径-离焦量经验曲线,可以理解的是,预置的暗环半径-离焦量对应关系也可以有其它形式,如暗环半径-离焦量表等。该经验曲线可以预先根据大量已知对应关系的暗环半径、离焦量计算生成。
参阅图5,以操作s140中得到的暗环半径为27个像素块边长为例,查询图5中的经验曲线,可以得到其对应的离焦量为0.75米,即物距为0.75米。
综上所述,本公开实施例中的离焦量检测方法,对原始图像进行二维离散傅里叶变换,得到频谱图像;将频谱图像所在区域划分为一个以上的区间,并对每一区间的频谱图像进行灰度值平均处理,从而将衍射造成的偏差拆散到各个区间中,降低了误差;根据每一区间的频谱图像的灰度值对频谱图像进行去衍射化处理,避免出现高灰度值的误差峰;从每一区间的频谱图像的灰度值中确定峰谷值,设定第二阈值滤除微小干扰,使得得到的暗环半径更接近真实暗环半径;根据暗环半径查询经验曲线得到离焦量。该离焦量检测方法将图像矩阵化为一维数组灰度值数据进行处理,占用内存小,更适于嵌入式系统,并且具有更强的鲁棒性。
以上所述的具体实施例,对本公开的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本公开的具体实施例而已,并不用于限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。