具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例通过在现场可编程门阵列FPGA平台上对输入的视频流进行串并变换生成奇像素视频流和偶像素视频流,只对奇像素视频流进行直方图统计,再根据相邻帧图像的相似性对奇像素视频流进行图像增强,从而节省了视频图像增强的资源消耗,由此提高了视频图像增强的实时性。
本发明实施例可应用于多个领域,例如,安防监控系统、工业控制领域等,在此不作限定。本发明实施例可应用于多个场合,例如,银行等金融系统监控项目、电力系统监控项目、石化行业监控项目、机房监控项目、监狱系统监控项目、交通系统监控项目、校园监控项目和网吧监控项目等,在此不作限定。
具体地,本发明实施例可应用于监视器、广告机和大屏幕拼接控制器等对视频图像有增强要求的设备。本发明实施例可以以极少的资源占用率移植到现有的带FPGA的设备上;本发明实施例也可以通过增加一个低成本的FPGA集成在监控系统后端设备如监视器、大屏幕拼接控制器上,用于实现雨雾天、阴霾天和低照度等低质量图像的增强,从而不更换摄像机就可以实现透雾、低照度情况下的图像增强处理,由此大大减少了更换前端摄像头的巨额花费。
图1示出了本发明实施例提供的基于FPGA的视频图像增强方法的实现流程图,详述如下:
在步骤S101中,在现场可编程门阵列FPGA平台上,输入视频流,对所述视频流进行串并变换,生成奇像素视频流和偶像素视频流。
在这里,在FPGA(Field Programmable Gate Array,现场可编程门阵列)平台上,使用寄存器对输入的视频流进行串并变换。奇像素视频流是指横向像素为第2n+1个像素的视频流,偶像素视频流是指横向像素为第2n个像素的视频流,其中n为非负整数。
在步骤S102中,统计所述奇像素视频流的第一帧图像的各个灰度值的像素数,生成所述第一帧图像的直方图。
需要说明的是,在黑白图像中,灰度级数是指像素之间的亮暗差别;在彩色图像中,灰度级数表现为像素之间颜色的不同。灰度级数越多,图像层次越清楚逼真。在黑白图像中,灰度值表现为亮度,例如,白色的灰度值为255,黑色的灰度值为0。在彩色图像中,灰度值表现为色彩的深浅程度,在每个像素中,R(Red,红)、G(Green,绿)、B(Blue,蓝)三个通道各有一个灰度值。
下面对直方图均衡算法进行说明:
其中,L为第一帧图像灰度级数,n
k为第一帧图像中灰度值为s
k的像素数,n为第一帧图像的像素总数。计算累积直方图各项,
取整扩展,t
k=int[(L-1)t
k+0.5)]。映射对应关系为
为了方便编程,可以不对统计直方图进行归一化,得到p(k)=n
k,k=0,1,...,L-1,p(k)为第一帧图像中灰度值为s
k的像素数,
把t
k值量化到0~L-1区间,得到统计直方图均衡化的映射函数:
式
包含一个乘法运算和一个除法运算,在实际应用中,若为8位每像素,则L=256,为了进一步节省资源消耗和提高运算速度,(L-1)×t
k=255×t
k=(t
k<<8)-t
k,其中(t
k<<8)为t
k左移8位,从而,乘法运算转换为移位运算和减法运算,大大减少了计算量。
由于FPGA进行整数除法时结果只取整数位,为了保证四舍五入,对上述算式更改为
图2示出了对图像进行直方图均衡化的示例图。上图为原始图像,原始图像受薄雾影响,图像不清晰,色彩暗淡。经过直方图均衡化,下图相对上图清晰了很多,对比度较高。但是,下图右侧的景物显得很不自然,出现了过增强的现象。
直方图均衡化处理灰度值比较集中的图像时,过增强现象更为明显,如图3所示。在图3中,下图相对上图整体亮度提升了,但是出现了许多不自然的地方,如天空的噪声被增强了,上图原本能看清的左下边招牌经过直方图均衡化后反而没法分辨了。
进一步地,步骤S102所述统计所述奇像素视频流的第一帧图像的各个灰度值的像素数,生成所述第一帧图像的直方图具体为:
统计所述奇像素视频流的第一帧图像的红、绿、蓝三个通道的各个灰度值的像素数;
将所述三个通道的各个灰度值的像素数的累加,生成所述第一帧图像的直方图。
彩色图像可以对R、G、B三个通道分别进行直方图均衡化处理,也可以将R、G、B三个通道合并进行直方图均衡化处理。由于每个通道的色彩总量不同,分开处理会导致各个通道的分布不均衡,致使图像产生偏色。实验证明,将R、G、B三个通道合并处理不会产生偏色,效果较好。
在步骤S103中,对所述第一帧图像的直方图进行增强处理得到所述第一帧图像的映射函数。
进一步地,步骤S103所述对所述第一帧图像的直方图进行增强处理得到所述第一帧图像的映射函数包括:
对所述第一帧图像的直方图超出限幅阈值的像素数进行裁剪,将所述超出限幅阈值的像素数平均分配给裁剪后的所述第一帧图像的直方图,得到所述第一帧图像的映射函数。
图4示出了本发明实施例提供了对原始图像直方图进行限幅裁剪的示意图。在本发明实施例中,针对原始图像像素值过于集中,对应的直方图的峰值很高,造成图像过增强的问题,采用限幅裁剪来实现对图像增强强度的控制。
参照图4,定义限幅阈值Y,对直方图p(k)超出限幅阈值Y的部分进行裁剪,裁剪后得到p′(k),超出限幅阈值Y的部分的像素数为S,将S平均分配给裁剪后的p′(k),得到虽然裁剪分配后的直方图又会有一部分超出限幅阈值Y,但是超出的值较小,可以不用再重新裁剪。
对图2中原始图像直方图进行限幅裁剪,参照图5、图6和图7。图5是限幅阈值为总像素数的0.5%时的图像增强效果图。图6是限幅阈值为总像素数的1.0%时的图像增强效果图。图7是限幅阈值为总像素数的1.5%时的图像增强效果图。从图5、图6和图7可以看出,适当设置限幅阈值既可以控制图像增强的强度,对抗过增强,同时能增加算法的适应性。
对图3中原始图像直方图进行限幅裁剪,参照图8和图9。图8是限幅阈值为总像素数的1.0%时的图像增强效果图。图9是限幅阈值为总像素数的1.5%时的图像增强效果图。可以看出,对于低亮度的图像以及没有过增强的现象,图像的还原较好。
进一步地,步骤S103所述对所述第一帧图像的直方图进行增强处理得到所述第一帧图像的映射函数包括:
量化所述第一帧图像的直方图,生成第一映射函数Tk;
记所述第一映射函数Tk中像素数大于拉伸阈值的最小灰度值为M,对所述第一映射函数Tk进行拉伸得到所述第一帧图像的映射函数其中,L为灰度级数,k=0,1,…,L-1。
对于量化后得到的第一映射函数,当直方图的限幅阈值越大,分配累积后量化丢失的灰度级就越多。对第一映射函数进行自适应拉伸,可以在使用较小的直方图限幅阈值时保持细节。通过拉伸可以在图像增强的同时保持图像的细节。
对于8位每像素的图像而言,原本灰度值的范围为0~255,进行拉伸后灰度值的范围为M~255。拉伸具有自适应性是因为,对于同一拉伸阈值,不同图像有其对应的M值,能根据图像本身特点调整M值。拉伸就是为了将第一映射函数中我们关心的那部分值间距拉开,从而增强那部分的对比度,由此保持了图像的细节。
参照图10,上图限幅阈值为0.5%,拉伸阈值为0,下图限幅阈值为0.5%,拉伸阈值为35。进行拉伸后,图像中的厚雾几乎去除了,没有过增强现象,层次感较强。
在步骤S104中,根据相邻帧图像的相似性,用所述第一帧图像的映射函数处理得到第二帧图像的映射函数,以此类推,用上一帧图像的映射函数处理得到当前帧图像的映射函数,生成奇像素图像增强视频流。
在这里,如果对视频流图像一帧一帧单独处理,则必须对当前帧图像数据进行缓存处理,待当前帧图像数据传输完成后,得到直方图,计算出映射函数后,再将存储的当前帧的图像数据输出。若对于1920×1080、60Hz、8位每像素的视频来说,每帧图像数据量很大,普通FPGA内部存储容量不能满足要求,需要外扩DDR(Double Data Rate,双倍速率同步动态随机存储器)来进行存储,增加了硬件成本,且消耗大量FPGA引脚和控制DDR相关的逻辑资源。
在实际应用中,由于视频流中相邻两帧图像具有极大的相似性,因此,可利用FPGA并行处理的优势,使用上一帧图像的映射函数处理当前帧,在映射当前帧的同时计算当前帧的映射函数,用于处理下一帧。输入视频流没有进行缓存,即视频流在有效数据区,图像数据由固定的映射函数实时处理输出,同时图像数据进入直方图统计模块进行当前帧图像的直方图统计,利用视频流的帧同步间隙,将统计完成的直方图计算生成映射函数,等待下一帧图像数据的到来。
进一步地,步骤S101所述在现场可编程门阵列FPGA平台上,输入视频流,对所述视频流进行串并变换,生成奇像素视频流和偶像素视频流具体为:
在现场可编程门阵列FPGA平台上,实时输入视频流,对所述实时输入的视频流进行串并变换,生成奇像素视频流和偶像素视频流。
在本发明实施例中,输入视频流不进行缓存,即视频流在有效数据区,对实时输入的视频流进行实时处理。在这里,利用两个相邻帧图像的相似性和映射函数与图像像素点的位置无关性,由此不用存储每一帧图像也可以实现实时处理每一帧图像。这种处理方式不会出现高速运动图像的失真问题,而且增强效果与单帧单处处理效果无区别。
在步骤S105中,复制所述奇像素视频流的所有帧图像的映射函数,用复制的所述映射函数处理所述偶像素视频流,得到偶像素图像增强视频流,将所述奇像素图像增强视频流与所述偶像素图像增强视频流进行并串变换,输出图像增强视频流。
若对于1920×1080、60Hz、8位每像素的视频来说,每帧图像数据量很大,对于处理速度要求比较高,对于低成本FPGA来说,时序要求比较高,布线要求比较严格。如果应用在资源消耗比较大的FPGA上,将很难满足FPGA时序要求,程序的稳定性和移植的成功率都会下降。
在本发明实施例中,虽然将输入视频流分成两路并行处理,但是只对奇像素视频流进行直方图统计和映射函数计算,增加的另一路只是将上一路的处理结果直接复制过来,只增加了极少量的视频串并和并串转换逻辑资源与存储映射函数的RAM(Random Access Memory,随机存储器)资源。
在这里,只对奇像素视频流进行直方图统计是利用了图像数据的空间连续性和分布的随机性。经过大量实验表明,间隔采样统计的结果与连续采样统计的结果几乎相同。因此,利用这一特性,在降低FPGA处理速度要求的同时,只增加了少量的资源消耗。
本发明实施例通过在现场可编程门阵列FPGA平台上对输入的视频流进行串并变换生成奇像素视频流和偶像素视频流,只对奇像素视频流进行直方图统计,再根据相邻帧图像的相似性对奇像素视频流进行图像增强,从而节省了视频图像增强的资源消耗,由此提高了视频图像增强的实时性。
图11示出了本发明实施例提供的基于FPGA的视频图像增强装置的结构框图,为了便于说明,仅示出了与本实施例相关的部分。参照图11,所述装置包括:
串并变换模块111,在现场可编程门阵列FPGA平台上,输入视频流,对所述视频流进行串并变换,生成奇像素视频流和偶像素视频流。
直方图统计模块112,统计所述奇像素视频流的第一帧图像的各个灰度值的像素数,生成所述第一帧图像的直方图。
映射函数生成模块113,对所述第一帧图像的直方图进行增强处理得到所述第一帧图像的映射函数。
奇像素图像增强视频流生成模块114,根据相邻帧图像的相似性,用所述第一帧图像的映射函数处理得到第二帧图像的映射函数,以此类推,用上一帧图像的映射函数处理得到当前帧图像的映射函数,生成奇像素图像增强视频流。
图像增强视频流输出模块115,复制所述奇像素视频流的所有帧图像的映射函数,用复制的所述映射函数处理所述偶像素视频流,得到偶像素图像增强视频流,将所述奇像素图像增强视频流与所述偶像素图像增强视频流进行并串变换,输出图像增强视频流。
进一步地,所述映射函数生成模块113包括:
限幅裁剪子模块,对所述第一帧图像的直方图超出限幅阈值的像素数进行裁剪,将所述超出限幅阈值的像素数平均分配给裁剪后的所述第一帧图像的直方图,得到所述第一帧图像的映射函数。
进一步地,所述映射函数生成模块113包括:
量化子模块,量化所述第一帧图像的直方图,生成第一映射函数Tk。
映射函数拉伸子模块,记所述第一映射函数T
k中像素数大于拉伸阈值的最小灰度值为M,对所述第一映射函数T
k进行拉伸得到所述第一帧图像的映射函数
其中,L为灰度级数,k=0,1,…,L-1。
优选地,所述直方图统计模块112具体用于:
统计所述奇像素视频流的第一帧图像的红、绿、蓝三个通道的各个灰度值的像素数;
将所述三个通道的各个灰度值的像素数的累加,生成所述第一帧图像的直方图。
优选地,所述串1具体用于:
在现场可编程门阵列FPGA平台上,实时输入视频流,对所述实时输入的视频流进行串并变换,生成奇像素视频流和偶像素视频流。
可选地,所述装置还包括分辨率检测模块,所述分辨率检测模块用于检测视频分辨率,给视频增加视频分辨率参数。
可选地,所述装置还包括I2C(Inter-Integrated Circuit,两线式串行总线)接口,所述I2C接口用于提供外部MCU(Micro Control Unit,微控制单元)控制视频增强的相关寄存器进行使能开关、强度控制等。
图12示出了本发明另一实施例提供的基于FPGA的视频图像增强装置的结构框图。
参照图12:
直方图统计模块121可以由一个20位宽256深度的双口RAM、控制寄存器和控制逻辑子模块组成,双扣RAM由FPGA内嵌的块RAM构成。直方图统计就是实时将输入的8比特数据对应的RAM地址数据加1,每帧图像数据传输结束且计算得到映射数据后,由状态控制模块123给予控制清零。
运算控制模块122主要用于将直方图统计数据根据I2C配置参数和分辨率数据进行限幅裁剪、累加分配、量化和拉伸,主要负责数据的逻辑运算。
状态控制模块123根据输入的视频同步信号区分视频流的数据区和同步区,当处于数据区时,直方图统计模块121实时统计各个灰度值的像素数,同时数据经由映射模块124同步映射输出,当传输完成一帧图像,进入同步区,直方图RAM写使能关闭,由读端口输出数据进入运算控制模块122进行运算后得到映射数据,写入映射模块124RAM中,然后运算控制模块122控制直方图统计单元将统计RAM清零,等待下一帧数据再进行处理。
本发明实施例应用在监视器上,增加一个处理小板对输入的信号进行增强处理;应用在屏幕拼接内置拼接盒上,将FPGA集成在板子上,通过机芯与FPGA通信,控制图像增强的开关与强度。
奇像素图像增强视频流和偶像素图像增强视频流通过并串变换模块125得到图像增强视频流。并串变换模块125可以通过寄存器来实现。
本发明实施例通过在现场可编程门阵列FPGA平台上对输入的视频流进行串并变换生成奇像素视频流和偶像素视频流,只对奇像素视频流进行直方图统计,再根据相邻帧图像的相似性对奇像素视频流进行图像增强,从而节省了视频图像增强的资源消耗,由此提高了视频图像增强的实时性。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。