用于控制相机的曝光的系统及其方法_3

文档序号:9870704阅读:来源:国知局
。进一步地,可提供存储虚拟直方图的单独存储器。
[0069]此处,虚拟直方图可根据原始直方图生成,而第一临时直方图和第二临时直方图可根据虚拟直方图生成。
[0070]接下来,直方图均衡化单元800将由直方图中断滤波器700中断滤波生成后而生成的最终直方图均衡化。在此例中,与图像质量直接相关的局部对比度依赖于直方图的均衡化。当直方图处于最高量化状态时,图像质量良好,图8为用于描述根据本发明的示例性实施方式的直方图均衡化的曲线图。参照图8,局部对比度与直方图均衡化成反比相关性,且图8示出了增加相同场景的曝光的局部对比度和直方图均衡化。
[0071]根据本发明的示例性实施方式,随着数据偏差的增加,因使用直方图数据的离散值,离散值也增加,从而,当虚拟直方图中的离散值最大时,假设图像质量与离散值成比例地增加。在图8的曲线图中,均衡化被定义为I/离散值,从而在曲线图上成反比例关系。
[0072]但是,指数不一定被限制为离散值,且可是均值,以及除均值和差值的平方之和的离散值以外,还可是数据差值的绝对值,并且均衡化参数也可通过傅里叶变换等导出。
[0073]进一步,均衡化被定义为I/离散值,但可随时由研究者改变。同时,当黑色和白色清楚区分时,图像质量更好,并因此,随着直方图数据分布到较大的范围,图像质量可更好。因此,作为量化指数的示例,建议使用离散值,但也可使用能够表示数据分布的任何值。
[0074]下文中,将参考图2详细说明根据本发明的示例性实施方式的用于控制相机的曝光的方法。
[0075]首先,在图像数据输入时,直方图计算器200根据图像数据计算直方图,并将计算出的直方图存储在直方图存储器300中(S100)。这种情况中,计算出的直方图称为原始直方图。
[0076]虚拟直方图生成器400根据存储的原始直方图改变曝光,以生成并存储针对各个曝光值的虚拟直方图(S200)。
[0077]直方图中断滤波器700对生成的虚拟直方图进行中断滤波以生成最终直方图(S300)ο
[0078]接下来,直方图均衡化单元800对最终直方图进行均衡化(S400)。
[0079]接下来,最佳曝光设置单元900对曝光值进行设置以满足均衡化的直方图(S500)ο
[0080]接下来,相机100应用最佳曝光值拍摄物体。
[0081]如此,本发明的示例性实施方式生成了虚拟直方图,该直方图的曝光基于曾经从输入图像数据计算出的直方图而改变,并对虚拟直方图进行中断滤波以从虚拟直方图中选择将是所期望的最高图像质量的曝光,并根据选取的曝光拍摄下一张图像。
[0082]下文中,将参照图3来描述图2中的用于生成虚拟直方图的方法。图2中的用于生成虚拟直方图的方法主要由虚拟直方图生成器400执行,并且根据本发明的示例性实施方式的直方图具有从I到bins的值,其中bins指直方图范围的最大值。进一步,根据本发明的示例性实施方式的虚拟直方图存储在第一临时直方图存储器500中。
[0083]当k为曝光因子,并且i为直方图的bin的指数,虚拟直方图从i = O增加(S201)。
[0084]虚拟直方图生成器400将直方图的bin的指数增加I (S202),并判定round (k*l)是否大于或等于bins的值(S203)。即判定k倍的值是否超过bins值(即最后一个值)。例如,当直方图有256个像素值时,要判定k倍的值是否超过256。
[0085]当round(k*i)大于或等于bins的值时,虚拟直方图生成器400累积round (k*i),并将累积的round(k*i)存储在第一临时直方图存储器500中以生成虚拟直方图(S204)。
[0086]同时,当round(k*i)小于bins的值时,虚拟直方图生成器400将相应的值存储在第一临时直方图存储器500的相应指数(index,索引)中(S205)。
[0087]下一步,虚拟直方图生成器400判定bin的指数i是否小于作为最后一个指数的bins(S206),若判定bin的指数i小于作为最后一个指数的bins,则重复执行步骤S202至S205o
[0088]另一方面,当bin的指数i大于或等于作为最后一个指数的bins,虚拟直方图生成器400判定曝光因子k是否等于或大于I (S207)。
[0089]接下来,若判定曝光因子k等于或大于I,虚拟直方图生成器400将虚拟直方图传送到直方图中断滤波器700 (S215)。
[0090]同时,若判定曝光因子k小于1,虚拟直方图生成器400判定直方图是否饱和(S208)ο
[0091]当直方图饱和时,虚拟直方图生成器400将虚拟直方图传送到直方图中断滤波器700。并且当直方图不饱和时,虚拟直方图生成器400通过将直方图的bins的值除以bins的值之前的(bins-Ι)的值获得y坐标值,并将y坐标值向正无穷取整来计算X坐标(S209)。
[0092]接下来,虚拟直方图生成器400判定X值是否大于(bins-round(k*bins)+l)(S210) ο此处,(bins-round(k*bins) +1)为将在临时直方图中填充的bins的数量。
[0093]此处,若判定X值小于(bins-round(k*bins)+l),则虚拟直方图生成器400用刚好在被饱和前的值填充bins,以与round(k*bins)值相等(S211)。[!卩,原始直方图的bin为256,当k为0.5时,bin为128,因此第127个值被填充129与255之间。接下来,虚拟直方图生成器400将直方图存储的(bins-1) *(y-x)值处理为最后一个值(S212)。
[0094]同时,若判定X值大于(bins-round (k*bins)+l),则虚拟直方图生成器400用刚好被饱和之前的值填充bins,以与round (k*bins)的值相等,并将不足部分添加到bins的值中(S213 和 S214)。
[0095]下文中将结合图4详细说明用于对虚拟直方图进行中断滤波的方法。对虚拟直方图进行中断滤波的方法主要由直方图中断滤波器700执行。
[0096]首先,直方图中断滤波器700将存储在第一临时直方图存储器500中的虚拟直方图复制到第二临时直方图存储器600中(S301)。
[0097]直方图中断滤波器700从虚拟直方图的指数i = O开始(S302),将虚拟直方图的指数i增加I (S303)并判定存储在第一临时直方图存储器500中的虚拟直方图的指数i的值是否为0(S304)。
[0098]若判定虚拟直方图的指数i不是0,则重复进行以上步骤S303以判定是否存在值为O的指数,将该指数i增加I。
[0099]当虚拟直方图的指数i存在O的值,直方图中断滤波器700在指数i中存储虚拟直方图的指数i左侧的指数(1-Ι)的值(S305)。由此,生成了第一临时直方图。
[0100]下一步,直方图中断滤波器700判定对应的指数i是否小于bins之前的指数(bins-1) (S306),并且若判定对应的指数i小于bins之前的指数(bins-Ι),则重复上述步骤S303至S306,并且若判定对应的指数i大于bins之前的指数(bins-Ι),则将指数i指定为作为最后一个指数的bins(S307)。
[0101]下一步,直方图中断滤波器700从作为最后一个指数的bins将指数i减少1,并判定第二临时直方图存储器600中的虚拟直方图的指数i的值是否为0(S309)。即直方图中断滤波器700从作为最后一个指数的bins将指数i减少1,并判定该值是否为O。
[0102]下一步,若对应的指数不含有O的值,则直方图中断滤波器700重复上述步骤S308,将指数减少1,并且当对应的指数i含有O数值时,则该滤波器在对应的指数(i)的位置上存储对应指数i右侧的指数值(i+1) (S310)。由此生成了第二临时直方图。
[0103]接下来,根据第一临时直方图和第二临时直方图生成最终直方图。
[0104]首先,直方图中断滤波器700判定指数i是否大于I (S311),并且若判定指数i大于1,重复上述步骤S308至S310。
[0105]当指数i小于1,将i设置为等于0
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1