图像传感器MT9M034输出图像数据的校正
2014-12-18郭少宸陈文艺
郭少宸,陈文艺
(1.西安邮电大学电子工程学院,陕西西安 710061;2.西安邮电大学物联网与两化融合研究院,陕西西安710061)
高动态范围图像(High Dynamic Range Image,HDRI)是一种能逼真地还原真实场景中高动态范围亮度细节信息的图像,近年来在智能交通、医学影像、卫星遥感等领域内均有着广泛应用。
传统对于HDR图像的捕获通常采用对同一场景分不同快门值多次曝光合成的办法[1]。然而,由于多次曝光需足够的时间对每幅图像进行存储并合成处理,无法满足实时性的要求。
MT9M034传感器[2]由于在芯片级别集成了多次曝光并合成HDR图像的功能,使得实时性大幅增强,可在分辨率1 280×960下输出60帧的视频信号,且具有>115 dB的动态范围[3]。该传感器通过分段线性覆盖整个亮度域的3次曝光合成一幅20 bit位宽的HDR图像,并将20 bit亮度分3段线性模拟对数函数压缩到12 bit输出。为了便于普通显示器的显示,需通过色调映射的算法将HDR图像压缩成8 bit位宽的低动态范围图像(Low Dynamic Range Image,HDRI)。
在图像进行色调映射处理的过程中,一种基于对比度限制的自适应直方图均衡算法(Contrast Limited Adaptive Histogram Equalization,CLAHE)被证明具有较好地处理效果[4-7],其既可保留图像整体明暗效果,又使得图像的细节得以体现,同时适于硬件实现。对HDR图像应用CLAHE算法进行色调映射处理中,普遍的流程是先对原始HDR图像进行对数压缩,将整个亮度范围压缩到较小区域内,再用CLAHE算法增强图像的对比度。
由于该传感器的20 bit图像信号是分3段折线模拟对数函数压缩到12 bit输出的,这种3段的线性压缩和标准的对数曲线存在较大误差。本文研究了3段线性压缩曲线误差对CLAHE算法实现色调映射的影响,并给出了误差校正方法和FPGA实现电路。
1 三段线性压缩曲线误差对色调映射影响
1.1 对比度限制的自适应直方图均衡算法
对比度限制的自适应直方图均衡算法属于局部色调映射算法。算法的步骤如下:
(1)对图像进行分块。将输入图像分成大小相等不重叠的子块。若分块数过多,图像的整体效果会丢失;分块数过少,则图像的细节信息又会丢失。故通常应分成8×8块。
(2)分块统计直方图。对每个亮度级统计分块图像中出现的像素数。
(3)直方图修正。对直方图进行适当的裁剪使得输出图像对比度被限制在一定的范围内,如图1所示。横坐标为图像的灰度级,纵坐标为每个灰度级对应的像素数。将超出限制B的阴影部分直方图平均分配给限制范围内的像素点,再舍弃丢掉仍超出限制B的直方图部分。
图1 直方图裁剪示意图
(4)计算累积分布函数(Cumulative Distribution Function,CDF)。用式(1)计算累计分布函数。h(rk)为每个灰度级对应的像素数,共k个灰度级,从0灰度级到第k灰度级的h(rk)进行累加,即为累积分布函数。为使分布函数更适合人眼的视觉模型,再对累积分布函数按照直方图规定化普遍采用的分布曲线(如瑞利分布,见式(2),式中α为瑞利分布曲线参数,本例中取0.4)进行再修正,则
(5)像素点重映射。对于整幅图分成8×8子块的情况,所有子块的1/4可分成3组;角区域(Corner Region,CR)、边界区域(Boundary Region,BR)和内部区域(Inner Region,IR),如图2所示,且每个块中又包含CR、BR和IR区域。
图2 图像分割8×8子块示意图
对于图2中CR区域,直接用本子块的CDF函数映射。对于图2中BR区域,用邻近的两个子块的CDF函数分别求邻域内的映射值ye1、ye2,再用线性插值公式,式(3),求本子块的映射值 ye,如图3所示。该区域的某点距离相邻两块中心点的垂直距离分别为s,r。
图3 BR区域映射方法
对于IR区域,用4个邻近的CDF函数分别求邻域内的映射值 ye1、ye2、ye3、ye4,再用双线性插值,式(4),求本子块的映射值ye,如图4所示。该区域的某点距离相邻4块中心点的垂直距离分别为s,r,x,y。
图4 IR区域映射方法
1.2 压缩曲线误差对色调映射影响
基于CLAHE色调映射算法对HDR图像进行色调映射处理中,根据人眼特性,先对原始的HDR图像进行对数压缩[8],并将整个亮度范围压缩到较小区域内,再利用CLAHE算法增强图像的对比度。
高动态范围图像传感器MT9M034输出图像通过3段折线模拟对数函数进行压缩,由图5可知,其与标准对数函数压缩间存在较大误差。图中的直线代表标准对数函数,由于横坐标取了对数运算,以便于看到清晰的3段折线,所以对数曲线呈现直线的形状,3段曲线分别为3段折线。上述误差在经CLAHE算法处理后会影响图像对比度。主观效果如图6所示,原HDR图像的诸多细节信息,3段折线压缩处理并未被较好地显示出来,而标准对数函数压缩处理让这些细节清晰可见。图6(a)为HDR原始图像;图6(b)为3段式线性压缩后CLAHE映射的结果图;图6(c)为对数函数压缩后CLAHE映射的结果图。
图6 处理效果对比图
2 三段线性压缩曲线误差校正
为了修正传感器三段折线和标准对数曲线之间的误差,如图7所示。需要先将12 bit的输出图像数据恢复成未经压缩的原始20 bit数据,然后再按照标准的对数曲线压缩成12 bit数据。而整个过程的需要庞大的计算量,在硬件实现时,需要消耗较大的资源且难以保证实时性。若采用查找表(Look-Up Table,LUT)实现,仅在一个时钟周期内既可从输入值得到期望值,且仅消耗些存储资源。在尽可能减小误差和硬件资源消耗的前提下设计LUT的存储是设计的核心。
图7 三段折线压缩误差曲线
LUT处理的整个过程理论上可以分为两个阶段。第一阶段,将摄像头输出的图像数据按照3段折线压缩算法解压成原始的20 bit数据。由于原始数据是按照3个线性方程压缩,并且3个直线函数曲线的间断点为传感器寄存器的配置选项。故可以通过设置好的折线间断点计算出第一阶段的查找表内容。第二阶段,将解压恢复后的原始数据按照对数函数曲线LUT进行压缩。由于第一阶段查找表的输出和第二阶段查找表的输入是220项,而整个查找表处理过程的输入和输出都为212项,故分开计算两个查找表时许多中间表项数据是不存在的。所以要将两个查找表进行合并成一个查找表,通过一次查表即得到期望值[9]。这个查找表处理的实质是修正图7中的误差,所以合并后LUT中的值应为3段折线到对数曲线误差修正的映射曲线,如图8所示。
图8 修正三段折线压缩误差的映射曲线
在用硬件实现过程中,采用现场可编程逻辑门阵列(Field-Programmable Gate Array,FPGA)实现,通常FPGA芯片内包含存储资源块有 M4K、M9K、M10K、M20K和M144K等。对于容量最小的M4K,其中包含4 096 bit的嵌入式存储资源。将一个M4K配置成只读存储器(Read-Only Memory,ROM)即可在其中存储查找表。对于上述查找表的存储,若将4 000个灰度值的映射结果全部存在查找表中,则共需4 000×12 bit,即需12个M4K。这便导致了FPGA中宝贵的存储资源的浪费。若将图8中的映射曲线进行适当的分段,在满足误差约束的前提下,会大幅减小资源的消耗。将分好的所有直线段的函数存入查找表,当图像中的某点需查表时,将该点的亮度值转换为查找表的地址,查出对应所属直线段的函数,并最终将该点的值代入直线函数方程计算出拟合后的估计值。直线函数在存储时仅需将该直线的斜率和截距存入查找表,若每条直线的斜率和截距分别用16 bit存储,由此使一个M4K最多可存128段,将M4K存储器配置成128×32 bit的格式,用一个M4K即可完成整个查找表的存储。在查表时,用每个像素点的亮度值经地址映射处理,索引到该段的斜率和截距后,算出该点期望的映射结果,如图9所示。ROM中的初始化文件即查找表中的数据可预先在Matlab平台计算得出。
图9 查找表处理过程硬件实现框图
为便于将图像的亮度值转换为查找表的输入地址,将映射曲线平均分成128段,这样仅需将亮度值的高7 bit取出即可快速寻址。
3 实验结果及误差分析
将原图像按映射曲线均分128段的方法恢复误差后,用CLAHE算法色调映射处理的结果,图10(a)为三段折线压缩处理图;图10(b)为128段查找表处理图。图10中本文处理的结果较原传感器3段折线压缩方式较大程度的提高了图像细节部分的可见性。
图10 处理效果对比图
实验结果采用均方误差百分比和图像信息熵来评价误差的大小。整体的均方误差百分比为每一段均方误差百分比之和。f(x)表示被近似的函数,F(x)表示f(x)的近似值,每个灰度级的误差ε(i)即为F(x)-f(x)。则每一段的均方误差百分比P(l)为共n个灰度级。整幅图的均方误差百分比为128段的P(l)之和
图像信息熵[10]H通过式(7)计算。图像有n级灰度,P(i)为第i级灰度中像素出现的概率,即第i级灰度中像素个数n与图像总像素数N之比,P(i)=。
i误差分析结果及对比如表1所示。
表1 误差及硬件资源消耗对比
均方误差百分比越小表示分段结果与标准对数映射的处理结果越接近。图像信息熵越大表示图像的信息量越大,其在各灰度级均具有良好的分布,且对比度更出色。如表1所示,128段均匀分段的处理结果中均方误差百分比从6.88%减小到0.22%,且图像信息熵更接近标准对数的映射结果。由处理效果对比图可看到,本文的处理结果比原算法的处理结果在较多细节上具有更好的可见性。而在提升效果的同时仅增加了一个M4K、一个乘法器和一个加法器资源消耗。
4 结束语
本文对高动态范围图像传感器MT9M034输出图像时进行实时数据压缩引入的误差,分析了误差产生的原因和对基于CLAHE色调映射算法产生的影响,证明了对原传感器曲线修正的必要性。文中给出的误差校正方法不仅在主观上具有显著的效果,且在客观程度上减小了误差。同时,还给出了硬件实现的可行性方案,证明了该校正方法的有效性和实用性。此外,其对于提升该图像传感器的画质也具有一定的意义。下一步的工作将围绕CLAHE色调映射算法部分的FPGA实现展开。
[1]华顺刚,王丽丹,欧宗瑛.同一场景不同曝光图像的配准及HDR图像合成[J].计算机辅助设计与图形学学报,2007,19(4):528 -534.
[2]Aptina Corperation.Aptina 1/3 - Inch CMOS digital image sensor MT9M034 data sheet[M].San Jose,CA:Aptina Corperation,2011.
[3]Aptina Corperation.Aptina MT9M024 and MT9M034 Register Reference[M].San Jose,CA:Aptina Corperation,2012.
[4]DRAGOF,MYSZKOWSKI K,ANNEN T,et al.Adaptive logarithmic mapping for displaying high contrast scenes [J].Computer Graphics Forum,2003,22:419 -426.
[5]BOSCHETTI A,ADAMI N,LEONARDI R.High dynamic range image tone mapping based on local histogram equalization[C].Mosico:ICME,2010:1130 -1135.
[6]王建,庞彦伟.基于CLAHE的X射线行李图像增强[J].天津大学学报,2010,43(3):194 -198.
[7]徐力平,蔡艳艳.基于CLAHE的尘肺X线胸片增强技术[J].计算机应用,2007,27(6):388 -389.
[8]ZUIDERVELD K.Contrast limited adaptive histogram equalization[J].Graphics Gems,1994,8(5):474 -485.
[9]BAILEY D G.基于FPGA的嵌入式图像处理系统设计[M].原魁,何文浩,肖晗,译.北京:电子工业出版社,2012.
[10]李保其.高动态范围图像色调映射算法研究[D].西安:西安邮电学院,2011.