发明内容
本发明提供一种图像去雾方法及其在FPGA上的实现方法,以解决现有技术中图像去雾方法处理速度慢、实时性差的技术问题。
本发明提供图像去雾方法,所述图像去雾方法包括:
根据Idark(x)=min(Ir(x),Ig(x),Ib(x))求取输入图像I(x)的广义暗通道Idark(x),其中,r为红色通道,g为绿色通道,b为蓝色通道,x为像素点的灰度值;
根据Idark(x)求取输入图像I(x)的大气光照值A;
基于大气散射模型I(x)=J(x)t(x)+A(1-t(x))和广义暗通道先验条件Jdark(x)=0,求取输入图像的透射率t(x)的计算模型:其中,J(x)为去雾图像,Jdark(x)为去雾图像的广义暗通道,根据Idark(x)和大气光照值A,求取输入图像的透射率t(x);
根据所述输入图像I(x)、大气光照值A和透射率t(x)求取去雾图像J(x)。
优选的,所述根据Idark(x)求取输入图像I(x)的大气光照值A包括:
预设大气光照限制因子A0;
根据公式A=min(max(Idark(x)),A0),求取输入图像I(x)的大气光照值A。
优选的,所述根据Idark(x)和A求取输入图像的透射率t(x)包括:
获取去雾程度因子ω;
根据计算模型求取输入图像的透射率t(x)。
优选的,所述获取去雾程度因子ω包括:
判断输入图像中各像素点G分量的灰度值与预设灰度阈值T的大小关系;
获取满足灰度值小于灰度阈值T的像素数num与输入图像像素总数的比例P;
根据比例P的范围获取对应的去雾程度因子ω。
优选的,所述根据比例P的范围获取对应的去雾程度因子ω包括:
建立比例P与去雾程度因子ω的对应关系:
根据所述对应关系获取对应的去雾程度因子ω。
优选的,所述根据Idark(x)和A求取输入图像的透射率t(x)包括:
预设透射率限制因子t0;
根据计算模型求取输入图像的透射率t(x)。
优选的,所述根据I(x)、A和t(x)求取去雾图像J(x)包括:
对大气散射模型I(x)=J(x)t(x)+A(1-t(x))进行逆运算,获取去雾图像J(x)的计算模型:
根据输入图像I(x)、大气光照值A和透射率t(x)求取去雾图像J(x)。
本发明还提供一种图像去雾方法在FPGA上的实现方法,所述方法包括:
根据Idark(i)=min(Ir(i),Ig(i),Ib(i))求取输入视频帧I(i)的广义暗通道Idark(i),其中,r为红色通道,g为绿色通道,b为蓝色通道,i为输入视频的帧数;
根据Idark(i)求取输入视频帧I(i)的大气光照值A;
基于大气散射模型I(i)=J(i)t(i)+A(1-t(i))和广义暗通道先验条件Jdark(i)=0,求取输入图像的透射率t(i)的计算模型:其中,J(i)为去雾视频帧,Jdark(i)为去雾视频帧的广义暗通道;
判断所述帧数i是否为1;
若i=1,则根据大气光照限制因子A0和Idark(1),求取第一帧的透射率t(1);根据I(1)、A0和t(1),求取去雾图像J(1);
若i≠1,则根据上一视频帧的大气光照值Ai-1和Idark(i),求取视频帧I(i)的透射率t(i);根据I(i)、Ai-1和t(i)求取去雾图像J(i)。
优选的,所述若i=1,则根据大气光照限制因子A0和Idark(1),求取第一帧的透射率t(1)包括:
获取去雾程度因子的初始值ω0;
根据计算模型:求取第一视频帧的透射率t(1)。
优选的,所述若i≠1,则根据上一视频帧的大气光照值Ai-1和Idark(i),求取视频帧I(i)的透射率t(i)包括:
获取上一视频帧的去雾程度因子ωi-1;
根据计算模型:求取视频帧I(i)的透射率t(i)。
本发明的实施例提供的技术方案可以包括以下有益效果:
本发明提供一种图像去雾方法及其在FPGA上的实现方法,本图像去雾方法以大气散射模型和广义暗通道先验条件为基础,通过简化的广义暗通道算法Idark(x)=min(Ir(x),Ig(x),Ib(x))求取输入图像I(x)的广义暗通道Idark(x),进而根据Idark(x)求取模型中的大气光照值和透射率,最终获得去雾图像J(x)。根据本方法得到的图像过渡自然,其去雾效果可以逼近引导滤波算法,但通过简化运算大大降低算法复杂度和运算量,从而增强图像去雾的处理速度和实时性。进一步,由于本方法是基于像素点的处理,因此,本方法在FPGA上实现时,可以在保证处理效果的同时,无需缓存图像窗口数据,且无需对输入视频帧进行滤波处理,可以有效满足FPGA的流式处理特点。同时,本方法对于大气光照值等参数的替换处理可以进一步实现图像的实时去雾处理。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置的例子。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其它实施例的不同之处。
请参考图1,所示为一种图像去雾方法的方法流程图。
由图1可知,本发明提供一种图像去雾方法,所述图像去雾方法包括:
S101:根据Idark(x)=min(Ir(x),Ig(x),Ib(x))求取输入图像I(x)的广义暗通道Idark(x),其中,r为红色通道,g为绿色通道,b为蓝色通道,x为像素点的灰度值。
输入图像I(x)为在有雾天气的条件下,通过数码相机等数字成像设备获取的由红绿蓝三原色构成的彩色图像。本发明中,广义暗通道即为任意图像中各个像素点的三个通道(即红色通道、绿色通道和蓝色通道)中灰度的最小值。因此,可根据公式Idark(x)=min(Ir(x),Ig(x),Ib(x))求取输入图像I(x)的广义暗通道Idark(x),其中,x为像素点的灰度值。
大气散射模型I(x)=J(x)t(x)+A(1-t(x))是图像去雾方法中最常采用的物理模型。大气散射模型包括大气光照值A和透射率t(x)两个未知量,即若求取去雾图像J(x),则必须预先获得以上两个未知量的值。
S102:根据Idark(x)求取输入图像I(x)的大气光照值A。
对于输入图像I(x)而言,通常认为天空区域受雾影响最大,且该区域的像素灰度值常常是全图中灰度值最大的点,则大气光照值A可以通过下式来求取:
A=max(Idark(x))
由此,可根据Idark(x)求取输入图像I(x)的大气光照值A。
S103:基于大气散射模型I(x)=J(x)t(x)+A(1-t(x))和广义暗通道先验条件Jdark(x)=0,求取输入图像的透射率t(x)的计算模型:其中,Jdark(x)为去雾图像的广义暗通道,根据Idark(x)和A,求取输入图像的透射率t(x)。
通过统计发现去雾图像J(x)中非天空区域的R、G、B分量中至少有一个值很小,即去雾图像的广义暗通道Jdark(x)=min(Jr(x),Jg(x),Jb(x))的值很小,可以认为去雾图像J(x)的广义暗通道近似为零。在以上广义暗通道的定义和分析的基础上,本发明中广义暗通道先验条件,即对去雾图像J(x)的广义暗通道的假设为Jdark(x)=0。
本方法对于透射率t(x)的求取方法基于大气散射模型、广义暗通道以及广义暗通道的先验条件。对大气散射模型两边同时求取广义暗通道可得:Idark(x)=Jdark(x)t(x)+A(1-t(x)),再根据广义暗通道的先验条件Jdark(x)=0可得:Idark(x)=A(1-t(x)),经变形即可获得输入图像的透射率t(x)的计算模型:根据Idark(x)和A,即可求取输入图像的透射率t(x)。
S104:根据所述输入图像I(x)、大气光照值A和透射率t(x)求取去雾图像J(x)。
通过以上步骤S102和S103的求取,大气散射模型中大气光照值A和透射率t(x)两个未知量的值均可获得。将大气光照值A和透射率t(x)的值带入大气散射模型中,经变形即可获取去雾图像J(x)的计算模型:
根据预先获取的I(x)、A和t(x),即可求取去雾图像J(x)。
本发明提供的图像去雾方法,以大气散射模型和广义暗通道先验条件为基础,通过简化的广义暗通道算法Idark(x)=min(Ir(x),Ig(x),Ib(x))求取输入图像I(x)的广义暗通道Idark(x),进而根据Idark(x)求取模型中的大气光照值A和透射率t(x),最终获得去雾图像J(x)。根据本方法得到的图像过渡自然,其去雾效果可以逼近引导滤波算法,同时,本方法是基于像素点的处理,无需缓存图像窗口数据,且无需对输入图像I(x)进行滤波处理,简化的模型大大降低算法复杂度和运算量,从而增强图像去雾的处理速度和实时性。
进一步,为了防止输入图像I(x)中存在某些外界干扰而导致大气光照值A偏大的情况,本发明某些实施例中增加一个大气光照限制因子A0,此时,大气光照值A的计算公式为:
A=min(max(Idark(x)),A0)
通常,大气光照限制因子A0预设为240。
雾天会降低图像的能见度和对比度,雾气越大,大气中悬浮的水滴、冰晶以及颗粒物越多,大气散射作用也就越显著,图像受雾影响程度越严重。其直观表现为雾气越大,图像画面越白,低灰度值的像素点越少。因此,可以根据图像受雾影响程度的大小确定对图像的处理强度。
在本发明某些实施例中,为了建立受雾影响程度与去雾强度的关联性,在透射率t(x)的计算模型的基础上增加去雾程度因子ω,去雾程度因子ω可以反映受雾影响程度,其值越大,表明图像受雾影响程度越大,图像去雾算法的所需的处理强度也应越大。由此,在去雾程度因子ω基础上获得的透射率t(x)的计算模型为:
去雾程度因子ω的大小与低灰度值的像素点数量有关,低灰度值的像素点可以为灰度值小于灰度阈值T的像素点。获取去雾程度因子ω的具体方法包括:
S11:逐点判断输入图像G分量的灰度值与预设灰度阈值T的大小关系。
预设灰度阈值T一般为80左右,其数值越大,满足要求的低灰度值像素点越多,去雾程度因子ω对透射率t(x)的修正作用越小,即去雾程度因子ω反映受雾影响程度的准确性越低。
假设输入图像I(x)的大小为row×col,则需逐个像素点判断输入图像G分量的灰度值与预设灰度阈值T的大小关系,即将row×col个像素点G分量的灰度值与预设灰度阈值T做比较。
由于G分量的灰度值与输入图像I(x)的灰度值最为接近,因此,本实施例以G分量的灰度值作为比较依据,而不采用R或B分量,从而提高统计的准确性。
S12:获取满足灰度值小于灰度阈值T的像素数num与输入图像像素总数的比例P。
统计步骤S11中的比较结果,记录满足灰度值小于灰度阈值T的像素数num,并根据像素数num与输入图像I(x)的大小row×col,获取像素数num与输入图像像素总数的比例P,比例P的计算公式为:
S13:根据比例P的范围获取对应的去雾程度因子ω。
根据经验统计建立比例P与去雾程度因子ω的映射关系:
通常,去雾程度因子ω的初始值ω0为0.7。需要说明的是,上述映射关系是通过统计大量不同雾天拍摄图像而获得的经验值,因此,上述映射关系并非固定,可以根据不同情况增加或减少映射链以及改变与比例P对应的映射值。
另外,为防止透射率t(x)数值过小而导致去雾图像J(x)发白的现象,在本发明的某些实施例中,可以增加一个透射率限制因子t0,当的计算结果小于透射率限制因子t0时,将透射率限制因子t0确定为输入图像的透射率t(x),即以透射率限制因子t0为基础的透射率t(x)计算模型为:根据预先获取的ω、Idark(x)、A以及t0计算透射率t(x)。
根据以上图像去雾方法,本发明还提供一种图像去雾方法在FPGA上的实现方法,即视频在FPGA上播放的每一帧图像的去雾处理方法均以上述图像去雾方法为基础。
请参考图2,所示为本发明实施例中提供的一种图像去雾方法在FPGA上的实现方法。
由图2可见,本发明提供的图像去雾方法在FPGA上的实现方法所述方法包括:
S201:根据Idark(i)=min(Ir(i),Ig(i),Ib(i))求取输入视频帧I(i)的广义暗通道Idark(i),其中,r为红色通道,g为绿色通道,b为蓝色通道,i为输入视频的帧数。
S202:根据Idark(i)求取输入视频帧I(i)的大气光照值A。
S203:基于大气散射模型I(i)=J(i)t(i)+A(1-t(i))和广义暗通道先验条件Jdark(i)=0,求取输入图像的透射率t(i)的计算模型:其中,J(i)为去雾视频帧,Jdark(i)为去雾视频帧的广义暗通道。
S204:判断所述帧数i是否为1。
S205:若i=1,则根据大气光照限制因子A0和Idark(1),求取第一帧的透射率t(1);根据I(1)、A0和t(1),求取去雾图像J(1)。
S206:若i≠1,则根据上一视频帧的大气光照值Ai-1和Idark(i),求取视频帧I(i)的透射率t(i);根据I(i)、Ai-1和t(i)求取去雾图像J(i)。
大气光照值A需要对整幅视频帧I(i)统计完成后才能获得,此时,具有流式处理特点的FPGA中的当前帧已输出,因此,若依然使用当前帧的大气光照值显然无法达到对图像去雾的效果。由于FPGA中相邻两帧图像间的差异非常小,故在FPGA上的实现方法中,可以采用前一帧图像的大气光照值Ai-1作为当前帧的参数进行运算,从而获取当前帧的透射率t(i)以及去雾图像J(i)。
对于视频第一帧的透射率t(1),由于不存在前一帧图像,也就是无法利用大气光照值Ai-1代替第一帧的大气光照值进行运算,因此,本实施例利用大气光照限制因子A0作为视频第一帧的大气光照值参与计算,通常,大气光照限制因子A0预设为240。
与本发明提供的图像去雾方法中的实施例相对应,为了建立受雾影响程度与去雾强度的关联性,可以在透射率t(i)的计算模型的基础上增加去雾程度因子ω。
具体的,所述若i=1,则根据计算模型:求取第一视频帧的透射率t(1);所述若i≠1,则根据计算模型:求取视频帧I(i)的透射率t(i)。
与大气光照值A类似,由于去雾程度因子ω也需要对整幅视频帧I(i)统计完成后才能获得,因此,可以采用上一视频帧的去雾程度因子ωi-1作为当前帧的参数进行运算。同样的,对于视频第一帧的透射率t(1),由于不存在前一帧图像,因此,本实施例利用去雾程度因子的初始值ω0作为视频第一帧的去雾程度因子参与计算。通常的,去雾程度因子的初始值ω0可以预设为0.7。
另外,为了防止视频图像的亮度发生抖动,也为了进一步减小FPGA的计算量,还可以隔几帧计算一次去雾程度因子ω,也就是说,当前帧以及自当前帧以后的连续几帧视频图像都采用同一个去雾程度因子ωi-1作为去雾程度因子进行运算。
由于本图像去雾方法在FPGA上的实现方法是基于像素点的处理,保证处理效果的同时,无需缓存图像窗口数据,且无需对输入视频帧I(i)进行滤波处理。同时,本方法对于大气光照值等参数的替换处理可以有效满足FPGA的流式处理特点,使得FPGA无需消耗过多资源即可实现视频的实时去雾处理。
以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明的保护范围之内。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。