本发明属于实时图像处理技术领域,具体涉及一种基于msr的实时rgb图像增强方法。
背景技术:
在遥感成像时,遥感图像由于受到传感器性能下降、恶劣天气或较低环境照度等因素的影响,导致成像质量变差,具体表现为图像对比度不高、细节不清晰、颜色失真、噪声大等问题,从而影响图像的识别、判别,往往需要对图像进行增强处理。而在图像增强中,既需要对图像的动态范围做调整,又需要突出图像的细节信息。这样,单纯的传统增强方法则无法胜任了,而基于retinex理论的图像增强算法可以较好地解决这个问题,从而得到广泛研究和应用。
retinex为合成词,由retina(视网膜)和cortex(大脑皮层)组合而成。retinex理论是由edwinland在20世纪70年代提出的一种颜色恒常知觉的色彩理论。retinex理论主要包含了两个方面的内容:物体的颜色是由物体对长波、中波和短波光线的反射能力决定的,而不是由反射光强度的绝对值决定的;物体的色彩不受光照非均匀性的影响,具有一致性。retinex理论解释了同样的物体在不同的光源或光线底下颜色恒定(colorconstancy)的机理。在retinex模型中,观察者获得的图像i(x,y)由两部分组成,一部分是物体的环境光照亮度,对应于图像的低频部分,另一部分是物体的反射亮度,对应于图像的高频部分,通常称之为入射光分量和反射图像,分别用l(x,y)和r(x,y)来表示,其中l(x,y)表示入射光分量,r(x,y)表示由物体的反射性质而决定的反射图像,与入射光无关。
根据retinex理论模型,其数学表达式可表示为:
i(x,y)=l(x,y)×r(x,y)(1)
如果从给定的图像中能分离出入射光和反射图像,就能得到由目标自身性质决定的反射图像,从而达到图像增强的目的。
将式(1)转换到对数域,则有:
logr(x,y)=logl(x,y)-logi(x,y)(2)
从数学角度来说,取对数可以将复杂的乘法运算转化为简单的加法运算,式(2)取对数的好处在于将入射光分量和反射物体分离。retinex理论指出,入射光l(x,y)决定了图像中像素能达到的动态范围,反射图像r(x,y)则了决定一幅图像的内在实质,它是目标的真实反映。也就是抛开了入射光的性质来获得物体的本来面貌,这个物体的本来面貌就是我们所要得到的增强图像。在实际应用时入射光l(x,y)常采用高斯卷积进行近似估计,进而分离出反射图像r(x,y)。
目前,多尺度retinex算法(multi-scalesretinex,msr)应用较为广泛。小尺度retinex算法动态压缩能力强,图像中的细节信息能较好地凸现出来,但输出图像有一定程度上的颜色失真现象;反之,当尺度较大时,输出图像的颜色保真度好,但削弱了动态压缩能力。所以在大多算法应用中,尺度个数一般选择大、中、小三个尺度,大尺度选择80以上(大多算法设置为300),中尺度选择30~80之间,小尺度选择30以下。该算法一方面可以有效压缩图像动态范围,另一方面可以较好地复现目标的颜色信息。
msr算法的基本公式为:
li,k(x,y)=fk(x,y)*ii(x,y)(3)
其中,li,k(x,y)为第i颜色通道第k个尺度的入射光分量值(rgb图像时i=r,g,b),它由对应尺度的高斯模板与原始图像卷积得到;ii(x,y)为第i颜色通道图像dn值;fk(x,y)第k个尺度的高斯函数,一般取标准二维高斯函数,
虽然msr图像增强效果较好,但由于其算法复杂性,图像处理耗时较长,在实际应用时,仍有一定的局限性,在硬件实时图像处理实现时,难度较大,具体为:
a)现有msr算法使用三个尺度分别对r、g、b三个颜色通道进行处理且一幅图像需要多次迭代计算,造成运算量巨大,图像处理占用时间较长,不易实现实时图像处理;另外,迭代运算的结果需要参与下一次运算,需要对运算的结果进行存储,故对内外部缓存的要求较高;
b)由于msr算法包含对数和卷积等运算且计算过程均为浮点运算,造成硬件实现较为困难;
c)为较好地恢复图像的颜色,大多msr算法大尺度参数设置在300左右,造成高斯卷积模板较大,在硬件实现时占用资源较多,因此不易硬件实现。
技术实现要素:
为解决背景技术中存在的问题,同时为了在硬件平台上实现msr彩色图像增强算法,以对实时彩色图像做高质量的图像增强,本发明对算法进行优化加速设计,提供了一种基于msr的实时rgb图像增强方法。
为实现以上发明目的,本发明所采用的技术方案是:
一种基于msr的实时rgb图像增强方法,包括以下步骤:
步骤一、建立查找表
1.1)根据小尺度参数σ=1确定高斯模板数据,建立小尺度高斯卷积模板查找表,并将建立的小尺度高斯卷积模板存储;
1.2)建立对数运算查找表,并将对数数值存储;
步骤二、输入待处理数据
待处理数据包括图像帧有效、行有效和rgb图像数据;所述rgb图像数据包括ir(x,y)、ig(x,y)、ib(x,y),(x,y)表示像素点在图像中的坐标位置;
步骤三、图像增强
3.1)建立7×7图像数据矩阵;
依次接收步骤二)产生的有效rgb图像数据,并按行把有效rgb图像数据缓存在fpga内部,所述有效rgb图像数据为帧有效及行有效同时置高时对应的rgb图像数据,当缓存7行数据后,构建r颜色通道的7×7数据矩阵,开始处理7×7的中间像素,在处理的过程中并依次缓存后续图像数据,整幅图像的处理时序为从左至右、从上至下直至整幅图像处理完成;
3.2)计算r颜色通道大小两个尺度的入射光分量
3.21)将步骤3.1)生成的7×7数据阵列与步骤1.1)生成的小尺度高斯卷积模板进行卷积得到
3.22)按顺序计算每一行有效rgb图像数据的r均值,再将每一行均值累加后除以图像总行数,得到整幅图像的入射光分量ur,同时将当前帧计算的ur保存至fpga内部寄存器,则
3.23)将g、b二个颜色通道数据参照步骤3.1)至步骤3.22)同步进行处理,得到
3.3)计算增强图像;
3.31)两个尺度的权重取1/2,得到7×7图像矩阵中心点像素的反射图像值rr(x,y);
为防止对数运算时真值出现非法数值0,将式(6)改写为:
其中,对数运算采用查找表的方式实现,根据对数的真值调用步骤1.2)生成的对数数值;
3.32)参照步骤3.31),同步处理得到rg(x,y)和rb(x,y);
步骤四、图像数据映射
4.1)计算r颜色通道反射图像的均值u′r;
步骤4.1)按顺序计算反射图像rr(x,y)每一行的均值,再将每一行均值累加后除以图像总行数,得到整幅图像r颜色通道的反射光分量u′r,同时将当前帧计算的u′r保存至fpga内部寄存器;
4.2)计算r通道反射图像的标准差s;
其中,m,n分别为图像水平方向和垂直方向像素个数;
4.3)确定r颜色通道反射图像的最大值maxc和最小值minc;
maxc=u′r d×s
minc=u′r-d×s
其中,d为动态范围调节系数;
4.4)确定r颜色通道增强图像数据的限制范围;
对增强后的图像数据范围进行缩减,缩减后的增强图像r’r(x,y)为:
4.5)r颜色通道增强图像数据的映射;
将数据映射到0~2n-1输出,
4.6)参照步骤4.1)至步骤4.5),同步处理得到g颜色通道增强图像数据的映射和b颜色通道增强图像数据的映射;
步骤五、图像数据输出
将步骤四增强映射后的r、g、b三个颜色通道数据送入rgb输出模块,在帧、行有效信号的同步下,rgb输出模块逐个像素、逐行同步输出已增强的
进一步地,步骤1.1)中,将建立的小尺度高斯卷积模板存储具体为:将小尺度高斯卷积模板的数据×220取整后存放于fpga内部rom中。
进一步地,步骤1.2)中,将对数数值存储具体为:将对数数值×217取整存储于fpga的内部rom中。
进一步地,步骤4.3)中,取d=2。
同时,本发明提供一种计算机可读存储介质,所述计算机可读存储介质为fpga芯片,所述fpga芯片上存储有计算机程序,所述计算机程序被处理器执行时实现基于msr的rgb图像增强方法的步骤。
与现有技术相比,本发明技术方案具有以下积极效果:
1.本发明方法通过两个尺度的retinex算法在fpga上实现实时图像增强算法,实现时采用小尺度σ=1减小高斯模板和缓存数据的数量,采用大尺度σ=300实现
2.本发明方法利用r、g、b三路颜色通道处理模块并行运算、流水线处理,数据流同步等方法,在fpga上实现了msr图像增强算法,能够实现高分辨率(最大支持4k*4k分辨率)视频流实时处理,得到较高质量的图像,图像增强处理效果与现有三尺度retinex算法基本一致,并且在逻辑资源消耗和fpga最大工作频率上都有很大余量。该实现算法除满足rgb彩色图像增强外,也适用于灰度图像的增强处理。
3.本发明使用imx252图像探测器和xilinxartix-7系列fpgaxc7a100t-2csg484i进行算法实现和实验验证,实现了1920×1080@50fps10bit高清彩色视频图像实时增强输出,取得了较低的硬件资源开销和较高的图像增强质量。
附图说明
图1为本发明基于msr的实时rgb图像增强方法流程图;
图2为一维高斯函数曲线图;
图3为小尺度(σ=1)时的7×7高斯模板;
图4为r颜色通道7×7图像数据矩阵;
图5a为关闭本发明增强算法后拍摄的远距离原始图像;
图5b为采用三尺度retinex算法对原始图像进行处理后的示意图;
图5c为采用本发明方法两尺度retinex算法对原始图像进行处理后的示意图;
图6为本发明方法实现对雾天图像的增强效果示意图;
图7为本发明方法实现对低照度图像的增强效果示意图。
具体实施方式
以下结合附图和具体实施例对本发明的内容作进一步详细描述。
本发明提供一种基于msr的实时rgb图像增强方法,该方法具有以下特点:
首先,在尺度个数的选择上采用两尺度msr图像增强算法替代大多msr算法中的三尺度msr图像增强算法,降低算法复杂度;其次,在尺度参数的设计上,设定小尺度参数σ=1,这样一方面可以减小高斯模板尺寸,另一方面减小图像缓存行数,进而减小该算法所占用的硬件资源;最后,在迭代运算的处理上,根据相邻帧间的相关性,利用上一帧图像的有关计算结果参与下一帧图像的运算,大大降低对内/外部缓存资源的需求。大尺度参数设置为σ=300,此时,li(x,y)≈ui,其中ui为图像第i颜色通道的均值。这是因为当(x,y)=(0,0)时,
在数据映射时,采用gimp算法的cut方法进行数据缩减和映射,尽可能在映射图像中凸显更多的目标细节特征。该实现方法在降低算法复杂度的同时,实现效果与三尺度msr图像增强效果接近。
本发明是基于msr图像增强算法理论进行优化改进,并采用fpga硬件实现此理论的算法,如图1所示,本发明基于msr的rgb图像增强方法包括以下几个步骤:
步骤一、建立查找表
该步骤为建立小尺度高斯卷积模板查找表和对数运算查找表。由于高斯模板数据只由尺度参数σ唯一确定,当选定尺度参数后,高斯模板数据可提前生成并写入rom供后续运算调用,而不需要实时生成。而对数运算查找表的维数仅与图像数据的位深有关,与其他因素无关,故对数运算查找表可提前生成并写入rom供后续运算调用。
1.1)建立小尺度高斯卷积模板查找表;
如图2所示为一维高斯函数曲线,当横坐标取值为3σ时,高斯函数取值接近为0,故常取高斯函数有效取值范围为±3σ。对于离散二维高斯函数,其表达式为:
1.2)建立对数运算查找表;
在计算反射图像时,需要进行对数运算,在fpga实现时,对数运算采用查找表的方式实现。以10bit位深图像为例,其r、g、b三个分量的取值范围均为0~1023,为保证对数运算真值的合法性,取log(ir(x,y) 1)进行计算。由于log1024=3.01030,为保证计算的精度,保留5为小数,查找表采用19bit二进制数据(对数数值×217取整)存储于fpga的内部rom中,该rom地址为0000000000b~1111111111b,每一地址存储一个19bit二进制数据。参见表3(只列出部分地址和数据)。计算时根据对数的真值(rom地址)调用rom对应地址的数值;
步骤二、输入待处理数据
待处理数据包括图像帧有效、行有效和rgb图像数据;所述rgb图像数据包括ir(x,y)、ig(x,y)、ib(x,y),(x,y)表示像素点在图像中的坐标位置;
以10bit位深bayer图像数据为例,图像预处理(色彩复原、自动白平衡等处理)后得到的rgb彩色图像数据i位宽为30bit,其中r颜色通道数据ir=i[29:20],ig=i[19:10],ib=i[9:0];
步骤三、图像增强
msr图像增强算法是采用不同尺度函数加权,从而获得细节丰富、颜色保真度较好的增强图像。该算法的实质是从原始图像i(x,y)中分离出反射图像r(x,y),这个反射图像r(x,y)就是所要得到的增强图像。fpga硬件实现时,r、g、b三个颜色通道数据并行处理。由式(3)~式(7),以r颜色通道为例,图像增强包括以下几个步骤:
3.1)建立7×7图像数据矩阵;
fpga依次接收步骤2)产生的有效rgb图像数据(帧有效及行有效同时置高时对应的rgb图像数据为有效rgb图像数据),并按行把图像数据缓存在fpga内部ram中,当缓存7行数据后,构建7×7的数据矩阵,开始处理7×7的中间像素,在处理的过程中并依次缓存后续图像数据,整幅图像的处理时序为从左至右、从上至下直至整幅图像处理完成。以r颜色通道为例,7×7图像数据矩阵如图6所示,ir(x0,y0)为当前要处理像素点的r颜色通道的值。
3.21)计算大小两个尺度的入射光分量
将步骤3.1)生成的7×7数据阵列与步骤1.1)生成的小尺度高斯卷积模板进行卷积(即对应位置相乘后再相加)得到
3.22)在计算
硬件实现时r、g、b三个分量同时进行计算,以r通道为例,
3.23)将g、b二个颜色通道数据参照步骤3.1)至步骤3.22)同步进行处理,得到
3.3)计算增强图像;
硬件实现时r、g、b三个分量同时进行计算,以r通道为例,
3.31)各个尺度的权重取等值1/2,得到7×7图像矩阵中心点像素的反射图像值为:
为防止对数运算时真值出现非法数值0,式(6)可写为:
其中,
3.32)参照步骤3.31),同步处理得到rg(x,y)和rb(x,y);
步骤四、图像数据映射
硬件实现时r、g、b三个分量同时进行计算,以r通道为例,步骤4)包括以下几个步骤:
4.1)计算r颜色通道反射图像的均值u′r;
步骤4.1)按顺序计算反射图像rr(x,y)每一行的均值,再将每一行均值累加后除以图像总行数,得到整幅图像r颜色通道的反射光分量u′r,由于一帧图像完成后才能得到整幅图像的平均值u′r,故当前帧计算的u′r保存至fpga内部寄存器,下一帧图像计算时使用;
4.2)计算r通道反射图像的标准差s;
其中,m,n分别为图像水平方向和垂直方向像素个数,rr(x,y)为计算的当前图像r颜色通道反射图像值,u′r为计算的上一帧图像的r颜色通道反射图像的均值,由于当前帧图像反射图像的标准差计算需要一帧图像完成后才能得到,故当前帧计算的标准差s保存至下一帧图像计算时使用,硬件实现时,开方运算直接调用fpga内部ip核进行运算;
4.3)确定r颜色通道反射图像cut方法的最大值maxc和最小值minc;
根据gimp算法的cut方法,maxc=u′r d×s,minc=u′r-d×s。实现时,d为动态范围调节系数,用以调整增强后图像的对比度和动态范围,d越小,增强后图像对比度越高,但动态范围较小;反之,d越大,增强后图像对比度越低,但动态范围较大。通常,为保证图像对比度和动态范围,取d=2;u′r为计算的上一帧图像的r颜色通道反射图像的均值,s为计算的上一帧图像的r颜色通道反射图像的标准差;
4.4)确定r颜色通道增强图像数据的限制范围;
根据gimp算法的cut方法,对增强后的图像数据范围进行缩减,缩减后的增强图像r’r(x,y)为:
4.5)r颜色通道增强图像数据的映射;
将数据映射到0~2n-1输出,
以10bit图像为例,将数据映射到8bit(0~255)输出,
4.6)参照步骤4.1)至步骤4.5),同步处理得到g颜色通道增强图像数据的映射和b颜色通道增强图像数据的映射;
步骤五、图像数据输出
将上述增强映射后的r、g、b三个颜色通道数据送入rgb输出模块,在帧行有效信号的同步下,rgb输出模块逐行逐个像素同步输出已增强的
本发明的效果可以通过以下对比做进一步的说明和验证。
图5a至图5c为雾天拍摄的远距离原图以及采用三尺度retinex算法和本发明的算法的增强效果对比。其中图5a)为关闭本发明增强算法后拍摄的远距离原始图像,图5b)为采用三尺度retinex算法对原始图像进行计算机软件处理后的增强效果,图5c)为采用本发明获得的增强效果。对比图5b)和图5c)可以发现,本发明优化加速的增强算法与三尺度retinex增强算法处理效果接近。
图6是对雾天成像的增强前后的效果对比,可以看出,本发明算法在对图像细节进行增强的同时,可以对颜色信息进行较好的复原。
图7是采用本发明算法对低照度区域的成像的增强前后的效果对比,可以看出本发明算法可以增强低照度图像的图像细节。
表1列出了该优化加速增强算法的资源消耗情况,可见本发明的实现方法资源消耗较少,适合工程项目应用。
表1
表27×7高斯模板有效数据在fpga内部rom的实现情况;
表310bit图像数据对数运算在fpga内部rom的实现情况
1.一种基于msr的实时rgb图像增强方法,其特征在于,包括以下步骤:
步骤一、建立查找表
1.1)根据小尺度参数σ=1确定高斯模板数据,建立小尺度高斯卷积模板查找表,并将建立的小尺度高斯卷积模板存储;
1.2)建立对数运算查找表,并将对数数值存储;
步骤二、输入待处理数据
待处理数据包括图像帧有效、行有效和rgb图像数据;所述rgb图像数据包括ir(x,y)、ig(x,y)、ib(x,y),(x,y)表示像素点在图像中的坐标位置;
步骤三、图像增强
3.1)建立7×7图像数据矩阵;
依次接收步骤二)产生的有效rgb图像数据,并按行把有效rgb图像数据缓存在fpga内部,所述有效rgb图像数据为帧有效及行有效同时置高时对应的rgb图像数据,当缓存7行数据后,构建r颜色通道的7×7数据矩阵,开始处理7×7的中间像素,在处理的过程中并依次缓存后续图像数据,整幅图像的处理时序为从左至右、从上至下直至整幅图像处理完成;
3.2)计算r颜色通道大小两个尺度的入射光分量
3.21)将步骤3.1)生成的7×7数据阵列与步骤1.1)生成的小尺度高斯卷积模板进行卷积得到
3.22)按顺序计算每一行有效rgb图像数据的r均值,再将每一行均值累加后除以图像总行数,得到整幅图像的入射光分量ur,同时将当前帧计算的ur保存至fpga内部寄存器,则
3.23)将g、b二个颜色通道数据参照步骤3.1)至步骤3.22)同步进行处理,得到
3.3)计算增强图像;
3.31)两个尺度的权重取1/2,得到7×7图像矩阵中心点像素的反射图像值rr(x,y);
为防止对数运算时真值出现非法数值0,将式(6)改写为:
其中,对数运算采用查找表的方式实现,根据对数的真值调用步骤1.2)生成的对数数值;
3.32)参照步骤3.31),同步处理得到rg(x,y)和rb(x,y);
步骤四、图像数据映射
4.1)计算r颜色通道反射图像的均值u′r;
步骤4.1)按顺序计算反射图像rr(x,y)每一行的均值,再将每一行均值累加后除以图像总行数,得到整幅图像r颜色通道的反射光分量u′r,同时将当前帧计算的u′r保存至fpga内部寄存器;
4.2)计算r通道反射图像的标准差s;
其中,m,n分别为图像水平方向和垂直方向像素个数;
4.3)确定r颜色通道反射图像的最大值maxc和最小值minc;
maxc=u′r d×s
minc=u′r-d×s
其中,d为动态范围调节系数;
4.4)确定r颜色通道增强图像数据的限制范围;
对增强后的图像数据范围进行缩减,缩减后的增强图像r’r(x,y)为:
4.5)r颜色通道增强图像数据的映射;
将数据映射到0~2n-1输出,
4.6)参照步骤4.1)至步骤4.5),同步处理得到g颜色通道增强图像数据的映射和b颜色通道增强图像数据的映射;
步骤五、图像数据输出
将步骤四增强映射后的r、g、b三个颜色通道数据送入rgb输出模块,在帧、行有效信号的同步下,rgb输出模块逐个像素、逐行同步输出已增强的
2.根据权利要求1所述的基于msr的实时rgb图像增强方法,其特征在于,步骤1.1)中,将建立的小尺度高斯卷积模板存储具体为:将小尺度高斯卷积模板的数据×220取整后存放于fpga内部rom中。
3.根据权利要求2所述的基于msr的实时rgb图像增强方法,其特征在于,步骤1.2)中,将对数数值存储具体为:将对数数值×217取整存储于fpga的内部rom中。
4.根据权利要求1或2或3所述的基于msr的实时rgb图像增强方法,其特征在于:步骤4.3)中,取d=2。
5.一种计算机可读存储介质,所述计算机可读存储介质为fpga芯片,所述fpga芯片上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现权利要求1至4任一所述方法的步骤。
技术总结