本发明属于视频图像去雾处理的技术领域,具体的说是一种应用于智能驾驶、视频监控、医疗场景下的视频图像处理去雾电路。
背景技术:
在视频图像领域,雾会导致图像处理效果大打折扣,无法满足一些关键场景的要求;而在当前非常热门的自动驾驶领域,汽车电子系统捕捉到的图片和视频,是汽车自我决策的重要依据,如果在雾天下,如果不能实时的对汽车捕捉到的视频进行去雾处理,决策就会出现问题,更有甚者会造成事故的发生,严重威胁了驾驶人和乘客的人身安全。同时在医疗领域内窥镜等医疗设备也难免会被雾气影响,给医生的手术带来困难。图像去雾对各个领域的发展都有重大的影响,所以设计一个实时去雾系统是一件刻不容缓的事情。
近几年通过对图像进行观察统计,做各种假设或者先验规律,单幅图像去雾方法研究取得了一定的进展。例如,tan等人利用无雾图像的对比度比有雾图像要高的事实,通过最大化局部对比度的方法实现单幅图像去雾;fattal等人假设透射率和物体表面阴影局部不相关,利用独立成分分析方法和马尔可夫随机场模型实现图像去雾。he等人基于暗通道先验知识和大气退化模型,利用软抠图技术改善透射率图实现图像的复原。通过理论分析,he等人采用软抠图导致整个算法有很高的时间复杂度和空间复杂度。tarel等人采用中值滤波会导致复原图像在景深发生突变的边缘会产生光晕效应。ma等人提出了一种新的融合图像选取的思路。第一输入图像是简单的线性拉伸,第二输入图像是利用了基于导向滤波的高增强滤波算法,在singh等人提出的关于去雾算法的综述中,ma等人提出的这种去雾算法只是停留在软件建模方面,还没有办法应用到实际场景中去,并且该去雾算法中,第一第二输入图像计算中,存在大量乘除法和数据冗余部分,有非常大的用硬件方法优化的空间。且刘华军和周晓波的工作虽然只是实现了去雾效果较差的的限制对比度自适应直方图均衡算法的硬件实现,但是他们证明了去雾算法实时化和硬件化的可能。并且当前的去雾算法都是基于x86架构cpu的软件模型,基于x86架构cpu性能强大而全面且能耗非常高的,这些特性并不是以上场景所需要的,所以针对以上场景迫切需要设计一个低功耗实时的去雾加速器。
技术实现要素:
本发明为解决上述现有技术中存在的不足之处,提出一种基于数据复用导向滤波和对比度拉伸的融合去雾电路,以期能实现对任意图片的高速实时去雾,提高去雾速度和效果,并减少资源占用。
本发明为解决技术问题采用如下技术方案:
本发明一种基于数据复用导向滤波和对比度拉伸的融合去雾电路的特点包括:输入ram模块、去雾模块和输出ram模块;其中,所述去雾模块包括:缓冲器、移位寄存器阵列、导向滤波模块、升压滤波模块、线性拉伸模块、图像融合模块;所述移位寄存器阵列由k-1个移位寄存器构成,且每个移位寄存器采用串联方式组合,其中,k为滤波窗口大小;
所述输入ram模块包含三个通道,并将所存储的大小为m×n的图片数据分别通过第一通道传递给所述缓冲器、通过第二通道传递给所述导向滤波模、通过第三通道传递给所述线性拉伸模块;其中m和n为正整数;
所述导向滤波模块对所接收到的图片数据进行导向滤波处理后,得到平滑图片数据i后传给所述升压滤波模块,同时给所述缓冲器一个使能信号;
所述缓冲器在接收到所述导向滤波模块的使能信号后,将所接收的图片数据传递给所述升压滤波模块;
所述升压滤波模块对所接收的平滑图片数据i'和所述缓冲器传输的图片数据进行升压滤波处理,得到锐化图片数据q后传给输出ram模块;
所述线性拉伸模块对所接收的图片数据的rgb三通道值进行灰度融合,得到灰度图片;再对所述灰度图片中的灰度值进行筛选,得到最大灰度值和最小灰度值后,用于计算得到对比度拉伸后的图片数据并传给所述图像融合模块,同时给所述图像融合模块一个使能信号;
所述图像融合模块接收所述对比度拉伸后的图片数据及相应的使能信号,从输出ram模块中读取所述锐化图片数据q,并与对比度拉伸后的图片数据进行移位相加融合处理,得到去雾后的图片数据送回所述输出ram模块中。
本发明所述的基于数据复用导向滤波和对比度拉伸的融合去雾电路的特点也在于,所述导向滤波模块包括:三个移位寄存器阵列、两个先入先出队列fifo、移位寄存器阵列、平方模块、方差归一化单元、四个均值模块、三个加法器和三个乘法器;
第一移位寄存器阵列和第一先入先出队列fifo分别周期性接收所述图片数据并进行存储;
所述平方模块和第一均值模块分别周期性的接收所述移位寄存器阵列传来的一列图片数据并进行处理,相应得到平方值和第一均值;由第二先入先出队列fifo对所述第一均值进行存储;
第二均值模块对所述平方值进行处理,得到第二均值;
第一乘法器对所述第一均值进行计算,得到第一乘法结果;
第一加法器对所述第一乘法结果和第二均值进行处理,得到第一加法结果并传递给所述方差归一化单元;由所述方差归一化单元计算得到系数a,并存储至第二移位寄存器阵列;
第二加法器对所述系数a和整数“1”进行计算,得到第二加法结果;
第二乘法器对所述第二加法结果和所述第一均值进行计算,得到系数b后存储至第三移位寄存器阵列;
第三均值模块对所述系数b进行处理,得到平均值
第四均值模块对所述系数a进行处理,得到平均值
第三乘法器对所述平均值
第三加法器对所述平均值
所述导向滤波模块中的均值模块包括:加法树、行计数器、列计数器、系数查找表、数据复用单元、结果存储单元、列和存储阵列、阵列控制器、两个加法器和乘法器;
令均值滤波窗口大小为k×k;
所述加法树从移位寄存器阵列依次读出k个像素值,并将k个像素值相加后得到当前列和si,再分别传递给第四加法器以及列和存储阵列;
所述列和存储阵列接收所述阵列控制器发送的写地址信号后,将当前列和si存储到相应的存储单元中;
所述第四加法器将当前列和si和上一个加法结果sum_i-1进行计算,得到当前加法结果sum_i,并在求和控制器的控制下,发送给所述数据复用单元或结果存储单元;当i=1时,令sum_i-1为“0”;若加法树读取的行数小于k,则求和控制器产生低电平信号,使得所述当前加法结果sum_i传输至所述数据复用单元;若加法树读取的行数大于等于k,则求和控制器产生高电平信号,使得所述当前加法结果sum_i传输至结果存储单元;
在求和控制器的控制下,所述第四加法器接收所述结果存储单元或所述数据复用单元的上一个加法结果sum_i-1;若加法树读取的行数小于k,则求和控制器产生低电平信号,使得所述数据复用单元将所存储的上一个加法结果sum_i-1传递给所述第四加法器;若加法树读取的行数大于等于k,则求和控制器产生高电平信号,使得所述结果存储单元将所存储的上一个加法结果sum_i-1传递给所述第四加法器;
所述列和存储阵列接收所述阵列控制器发送的读地址信号后,第五加法器从列和存储阵列中读取当前列和si并与所述结果存储单元中的当前加法结果sum_i进行计算,得到当前第五加法结果sum5_i;
行计数器用于对所述加法树读取移位寄存器阵列中的数据次数进行计数,当行计数值达到m-1时,则所述行计数器清零;所述列计数器累加“1”;
当列计数值达到n-1时,则所述列计数器清零;表示均值模块完成m×n个数据处理;
所述解码器对所述行计数器和列计数器中传来的行数和列数所对应的地址进行解码并传递给所述系数查找表;由所述系数查找表获取相应位置上的系数后传递给第四乘法器,用于与当前第五加法结果sum5_i进行计算,得到均值。
与现有技术相比,本发明的有益效果在于:
1、本发明在线性拉伸模块采用对比度线性拉伸的方式,相对于传统的线性拉伸串行化要按照先后顺序对r、g、b三通道进行分别筛选出每个通道的最大值和最小值,再遍历每个通道计算像素值线性拉伸值,耗费大量时间,传统的线性拉伸并行化需要三个除法器计算复杂,功率消耗大,而改进的线性拉伸能够克服传统方式的不足,在不牺牲面积的情况下,缩短了线性拉伸时间,且灰度计算和灰度通道比较采用并行计算,那么时间将更大程度降低。
2、本发明在导向滤波模块采用的方式是将箱式滤波和求均值模块分割开,将移位寄存器拉到输入端作为公用,以lut代替乘法器,减少了求平均的延迟,提高了求平方的效率,其次使用基于数据复用的平均数计算单元,减少了传统基于加法器的平均数计算单元的资源消耗。
3、本发明在导向滤波模块使用了考虑边缘情况的系数箱式滤波模块,使得系数计算更加准确,减少了插在路径中的寄存器,优化了计算路径。
附图说明
图1为本发明融合去雾电路整体框架图;
图2为本发明导向滤波模块系统示意图;
图3为本发明箱式滤波模块示意图;
图4为本发明线性拉伸模块整体框架示意图;
图5为本发明线性拉伸结构对比示意图;
图6为本发明线性拉伸时间对比示意图。
具体实施方式
在本实施例中,一种基于数据复用导向滤波和对比度拉伸的融合去雾电路,如图1所示,包括:输入ram模块、去雾模块和输出ram模块;其中,去雾模块包括:缓冲器、移位寄存器阵列、导向滤波模块、升压滤波模块、线性拉伸模块、图像融合模块;移位寄存器阵列由k-1个移位寄存器构成,且每个移位寄存器采用串联方式组合,其中,k为滤波窗口大小;
输入ram模块包含三个通道,并将所存储的大小为m×n的图片数据分别通过第一通道传递给缓冲器、通过第二通道传递给导向滤波模、通过第三通道传递给线性拉伸模块;其中m和n为正整数;在该实例中m=480,n=270,即图像的大小为480*270,单位是像素;
导向滤波模对所接收到的图片数据进行导向滤波处理后,得到平滑图片数据i后传给升压滤波模块,同时给缓冲器一个使能信号;
缓冲器在接收到导向滤波模块的使能信号后,将所接收的图片数据传递给升压滤波模块;
升压滤波模块对所接收的平滑图片数据i'和缓冲器传输的图片数据进行升压滤波处理,得到锐化图片数据q后传给输出ram模块;
线性拉伸模块对所接收的图片数据的rgb三通道值进行灰度融合,得到灰度图片;再对灰度图片中的灰度值进行筛选,得到最大灰度值和最小灰度值,在本实例中,如图4所示,对灰度通道进行筛选,选出最大值和最小值后,利用
如图5所示,传统的线性拉伸串行化和并行化要按照先后顺序对r、g、b三通道进行分别筛选出每个通道的最大值和最小值,如图6所示,将传统的线性拉伸结构和改进的线性拉伸结构进行对比,传统的线性拉伸串行化要遍历每个通道计算每个像素值线性拉伸值,即要先后遍历6次,耗费大量时间,而改进的线性拉伸缩短了线性拉伸时间,且灰度计算和灰度通道比较采用并行计算,那么时间将更大程度降低;
图像融合模块接收对比度拉伸后的图片数据及相应的使能信号,从输出ram模块中读取锐化图片数据q,在本实例中,在融合过程中,高升压的输出值q乘以设置好的参数0.4,对比度拉伸后的图片数据乘设置好的参数0.6,将两乘积相加得到融合最终值p即p=q·0.4 l·0.6传送到输出ram中。并与对比度拉伸后的图片数据进行移位相加融合处理,得到去雾后的图片数据送回输出ram模块中。
具体实施中,导向滤波模块包括:三个移位寄存器阵列、两个先入先出队列fifo、移位寄存器阵列、平方模块、方差归一化单元、四个均值模块、三个加法器和三个乘法器;
在本实例中,如图2所示,将各个移位寄存器命名为l0至li并串联在一起排成移位寄存器阵列;移位寄存阵列中各个移位寄存器采用的是串联的方式组合在一起,前一个移位寄存器的作为下一个移位寄存器的输入,第一个移位寄存器接收来自输入ram模块的图片数据,放在第一个存储单元中并在移位脉冲的作用下依次将这些图片数据右移输出到下一个移位寄存器,在接收到输出使能后,将所述移位寄存器阵列的每一个移位寄存器中图片数据并行发送到所述导向滤波模块中;
第一移位寄存器阵列和第一先入先出队列fifo分别周期性接收图片数据并进行存储;
在本实例中,如图2所示,将第一移位寄存器阵列中的图片数据分别先平方后均值和先均值再平方操作;
平方模块和第一均值模块分别周期性的接收移位寄存器阵列传来的一列图片数据并进行处理,相应得到平方值和第一均值;由第二先入先出队列fifo对第一均值进行存储;
第二均值模块对平方值进行处理,得到第二均值;
第一乘法器对第一均值进行计算,得到第一乘法结果;
第一加法器对第一乘法结果和第二均值进行处理,得到第一加法结果并传递给方差归一化单元;在本实施例中,方差归一化单元即
第二加法器对系数a和整数“1”进行计算,得到第二加法结果;
第二乘法器对第二加法结果和第一均值进行计算,得到系数b后存储至第三移位寄存器阵列;
第三均值模块对系数b进行处理,得到平均值
第四均值模块对系数a进行处理,得到平均值
第三乘法器对平均值
第三加法器对平均值
本实施例中,导向滤波模块中的均值模块包括:加法树、行计数器、列计数器、系数查找表、数据复用单元、结果存储单元、列和存储阵列、阵列控制器、两个加法器和乘法器;
令均值滤波窗口大小为k×k;
具体实施中,如图3所示,在滤波使能为低的时候,移位寄存阵列内部数据清零,并且行计数和列计数保持为0,系数查找表输出为不定态,系数输出模块输出为不定态;在滤波启动信号拉高后,数据开始进入移位寄存阵列,此时除移位寄存阵列之外的模块仍不工作,滤波窗口大小为k×k,从移位寄存器阵列每次出k个像素送到加法树模块,本实例中将k的值设置为8,每8个像素为一列;
加法树从移位寄存器阵列依次读出k个像素值,并将k个像素值相加后得到当前列和si,再分别传递给第四加法器以及列和存储阵列;列和存储阵列接收阵列控制器发送的写地址信号后,将当前列和si存储到相应的存储单元中;在本实例中,将这k个像素值相加得到s0,根据移位寄存器出的k个像素值依次得到s1、s2、s3.....再分别送到加法器和列和存储阵列存储这些数据,
第四加法器将当前列和si和上一个加法结果sum_i-1进行计算,得到当前加法结果sum_i,在本实例中,将得到的s0、s1......si-1共i个像素和相加的值sum1分别存在结果和数据复用块中,待下一个si出现,计算下一个sum2=s1 ......si-s0,依次类推得到各个加法结果sumi;并在求和控制器的控制下,发送给数据复用单元或结果存储单元;当i=1时,令sum_i-1为“0”;若加法树读取的行数小于k,则求和控制器产生低电平信号,使得当前加法结果sum_i传输至数据复用单元;若加法树读取的行数大于等于k,则求和控制器产生高电平信号,使得当前加法结果sum_i传输至结果存储单元;
在求和控制器的控制下,第四加法器接收结果存储单元或数据复用单元的上一个加法结果sum_i-1;若加法树读取的行数小于k,则求和控制器产生低电平信号,使得数据复用单元将所存储的上一个加法结果sum_i-1传递给第四加法器;若加法树读取的行数大于等于k,则求和控制器产生高电平信号,使得结果存储单元将所存储的上一个加法结果sum_i-1传递给第四加法器;
列和存储阵列接收阵列控制器发送的读地址信号后,第五加法器从列和存储阵列中读取当前列和si并与结果存储单元中的当前加法结果sum_i进行计算,得到当前第五加法结果sum5_i;
行计数器用于对加法树读取移位寄存器阵列中的数据次数进行计数,当行计数值达到m-1时,则行计数器清零;列计数器累加“1”;
当列计数值达到n-1时,则列计数器清零;表示均值模块完成m×n个数据处理;
解码器对行计数器和列计数器中传来的行数和列数所对应的地址进行解码并传递给系数查找表;由系数查找表获取相应位置上的系数后传递给第四乘法器,用于与当前第五加法结果sum5_i进行计算,得到均值。
在本实例中,如图3所示,例如,当(0,0)像素位于滤波窗口的(5,5)的位置时,行计数器和列计数器开始工作,并且此时系数编码查找表开始输出当前系数编码值,以及系数输出模块根据接收到的系数编码值输出对应的系数值,系数编码值为0和系数值为1/25,即0.04,当系数计算完成后,系数值送到乘法器与得到的均值进行乘法,得到(0,0)像素对应的平均值。此时行计数器为m-2,列计数器为0,(m-2,0)像素位于滤波窗口的(5,5)的位置,系数编码值为2和系数值为1/35,即0.028564453125,当系数计算完成后,系数值送到乘法器与得到的均值进行乘法,得到(m-2,0)像素对应的平均值。按照这样的计算方法,可以对一整幅图像进行均值滤波,当计算完成后,模块会输出计算完成信号。
1.一种基于数据复用导向滤波和对比度拉伸的融合去雾电路,其特征包括:输入ram模块、去雾模块和输出ram模块;其中,所述去雾模块包括:缓冲器、移位寄存器阵列、导向滤波模块、升压滤波模块、线性拉伸模块、图像融合模块;所述移位寄存器阵列由k-1个移位寄存器构成,且每个移位寄存器采用串联方式组合,其中,k为滤波窗口大小;
所述输入ram模块包含三个通道,并将所存储的大小为m×n的图片数据分别通过第一通道传递给所述缓冲器、通过第二通道传递给所述导向滤波模、通过第三通道传递给所述线性拉伸模块;其中m和n为正整数;
所述导向滤波模块对所接收到的图片数据进行导向滤波处理后,得到平滑图片数据i后传给所述升压滤波模块,同时给所述缓冲器一个使能信号;
所述缓冲器在接收到所述导向滤波模块的使能信号后,将所接收的图片数据传递给所述升压滤波模块;
所述升压滤波模块对所接收的平滑图片数据i'和所述缓冲器传输的图片数据进行升压滤波处理,得到锐化图片数据q后传给输出ram模块;
所述线性拉伸模块对所接收的图片数据的rgb三通道值进行灰度融合,得到灰度图片;再对所述灰度图片中的灰度值进行筛选,得到最大灰度值和最小灰度值后,用于计算得到对比度拉伸后的图片数据并传给所述图像融合模块,同时给所述图像融合模块一个使能信号;
所述图像融合模块接收所述对比度拉伸后的图片数据及相应的使能信号,从输出ram模块中读取所述锐化图片数据q,并与对比度拉伸后的图片数据进行移位相加融合处理,得到去雾后的图片数据送回所述输出ram模块中。
2.根据权利要求1所述的基于数据复用导向滤波和对比度拉伸的融合去雾电路,其特征是,所述导向滤波模块包括:三个移位寄存器阵列、两个先入先出队列fifo、移位寄存器阵列、平方模块、方差归一化单元、四个均值模块、三个加法器和三个乘法器;
第一移位寄存器阵列和第一先入先出队列fifo分别周期性接收所述图片数据并进行存储;
所述平方模块和第一均值模块分别周期性的接收所述移位寄存器阵列传来的一列图片数据并进行处理,相应得到平方值和第一均值;由第二先入先出队列fifo对所述第一均值进行存储;
第二均值模块对所述平方值进行处理,得到第二均值;
第一乘法器对所述第一均值进行计算,得到第一乘法结果;
第一加法器对所述第一乘法结果和第二均值进行处理,得到第一加法结果并传递给所述方差归一化单元;由所述方差归一化单元计算得到系数a,并存储至第二移位寄存器阵列;
第二加法器对所述系数a和整数“1”进行计算,得到第二加法结果;
第二乘法器对所述第二加法结果和所述第一均值进行计算,得到系数b后存储至第三移位寄存器阵列;
第三均值模块对所述系数b进行处理,得到平均值
第四均值模块对所述系数a进行处理,得到平均值
第三乘法器对所述平均值
第三加法器对所述平均值
3.根据权利要求2所述的基于数据复用导向滤波和对比度拉伸的融合去雾电路,其特征是,所述导向滤波模块中的均值模块包括:加法树、行计数器、列计数器、系数查找表、数据复用单元、结果存储单元、列和存储阵列、阵列控制器、两个加法器和乘法器;
令均值滤波窗口大小为k×k;
所述加法树从移位寄存器阵列依次读出k个像素值,并将k个像素值相加后得到当前列和si,再分别传递给第四加法器以及列和存储阵列;
所述列和存储阵列接收所述阵列控制器发送的写地址信号后,将当前列和si存储到相应的存储单元中;
所述第四加法器将当前列和si和上一个加法结果sum_i-1进行计算,得到当前加法结果sum_i,并在求和控制器的控制下,发送给所述数据复用单元或结果存储单元;当i=1时,令sum_i-1为“0”;若加法树读取的行数小于k,则求和控制器产生低电平信号,使得所述当前加法结果sum_i传输至所述数据复用单元;若加法树读取的行数大于等于k,则求和控制器产生高电平信号,使得所述当前加法结果sum_i传输至结果存储单元;
在求和控制器的控制下,所述第四加法器接收所述结果存储单元或所述数据复用单元的上一个加法结果sum_i-1;若加法树读取的行数小于k,则求和控制器产生低电平信号,使得所述数据复用单元将所存储的上一个加法结果sum_i-1传递给所述第四加法器;若加法树读取的行数大于等于k,则求和控制器产生高电平信号,使得所述结果存储单元将所存储的上一个加法结果sum_i-1传递给所述第四加法器;
所述列和存储阵列接收所述阵列控制器发送的读地址信号后,第五加法器从列和存储阵列中读取当前列和si并与所述结果存储单元中的当前加法结果sum_i进行计算,得到当前第五加法结果sum5_i;
行计数器用于对所述加法树读取移位寄存器阵列中的数据次数进行计数,当行计数值达到m-1时,则所述行计数器清零;所述列计数器累加“1”;
当列计数值达到n-1时,则所述列计数器清零;表示均值模块完成m×n个数据处理;
所述解码器对所述行计数器和列计数器中传来的行数和列数所对应的地址进行解码并传递给所述系数查找表;由所述系数查找表获取相应位置上的系数后传递给第四乘法器,用于与当前第五加法结果sum5_i进行计算,得到均值。
技术总结