一种在fpga上实现的图像去雾方法
【技术领域】
[0001] 本发明属于图像处理技术领域,涉及一种在FPGA上实现的图像去雾方法。
【背景技术】
[0002] 在视频监控、摄像、导航控制、目标跟踪等技术领域,都涉及到对有雾图像的处理。 在雾霾等恶劣天气下物体的反射光在大气中发生散射和吸收,导致获取的图像不清晰,信 息丢失,可视性差,色彩淡化。由于雾霾问题的特殊性,目前大多数都是从算法出发通过软 件对图像去雾。一些算法已经获得了很好的去雾效果,如在亮度分量上进行多尺度Retinex 处理的去雾算法,双边滤波去雾算法,基于已知的景深模型的去雾算法,这些算法都需要一 些特定的先验信息,不利于系统的整体实现,也不利于实际应用中硬件实现。对于单幅图像 的快速去雾也有不少学者在研宄,如利用中值滤波及导向滤波细化透射率的去雾算法,仅 利用均值滤波估计全局大气光的快速去雾算法,对大气散射模型简化后的快速去雾算法, 基于边界邻域最大值滤波的去雾算法,利用快速双边滤波保持边缘特性的去雾算法,分割 不同雾浓度区域获取大气光的快速去雾算法,这些算法速度相对较快,但仍达不到实时处 理的需求,或者满足不了对视频处理的要求。
[0003] 在众多去雾算法中,暗通道先验去雾算法是对有雾图像的雾浓度进行准确估计, 真正考虑到雾的存在及其影响,从而达到去雾的目的,去雾效果最为显著。后来有人发现暗 通道先验理论并利用其求出粗略的大气透射率,然后结合软抠法(soft matting)得到了比 较细腻的透射率,去雾效果最为显著,但该算法软件运算复杂度较高,导致针对图像处理速 度较慢,无法满足实时处理的要求。
【发明内容】
[0004] 本发明的目的是提供一种在FPGA上实现的图像去雾方法,解决了现有技术中存 在的针对有雾图像处理速度慢导致无法满足实时处理要求的问题。
[0005] 本发明所采用的技术方案是,一种在FPGA上实现的图像去雾方法,包括以下步 骤:
[0006] 步骤1,输入原图,即彩色有雾图像至FPGA,获取彩色有雾图像的R,G,B三个通道 的像素数据并分别存入三个大小相同的只读存储器ROM中;
[0007] 步骤2,分别对三个通道的像素数据进行最小值滤波,并取其中最小值,即得到暗 通道;
[0008] 步骤3,将暗通道和R、G、B三个通道的数据分别采用阈值比较法并行计算求取三 个通道的全局大气光A ;
[0009] 步骤4,根据全局大气光A、简化的暗通道和原图求透射率t(x);具体方法为:
[0010]
【主权项】
1. 一种在FPGA上实现的图像去雾方法,其特征在于,包括以下步骤: 步骤1,输入原图,即彩色有雾图像至FPGA,获取彩色有雾图像的R,G,B三个通道的像 素数据并分别存入三个大小相同的只读存储器ROM中; 步骤2,分别对三个通道的像素数据进行最小值滤波,并取其中最小值,即得到暗通 道; 步骤3,将暗通道和R、G、B三个通道的数据分别采用阈值比较法并行计算求取三个通 道的全局大气光A ; 步骤4,根据全局大气光A、简化的暗通道和原图求透射率t(x);具体方法为:
式中,ω = [〇,l],F(y)是各通道的图像数据;Ae是各通道的全局大气光;上标c表示 R(红),G(绿),B(蓝)三个通道,Ω (X)表示X的一个邻域,y为邻域中的像素点,X为原 图中的像素点; 其中,简化的暗通道的获取方法如下: 步骤4. 1,对步骤1中输入的彩色有雾图像采用边缘检测法检测出边缘图像; 步骤4. 2,将边缘图像与原图的R,G,B通道的数据分别进行比较,将R,G,B通道中与边 缘图像像素值一样的像素点标记出来,即得到边缘部分,故将原图划分为边缘部分和非边 缘部分; 步骤4. 2,对边缘部分保持原值不做处理,非边缘部分进行最小值滤波,并取R,G,B通 道中的最小值作为简化的暗通道; 击骤5,枏抿诱射銮、女气光A和原图恢复m子雾图像,具体为:
式中,I(X)为彩色有雾图像,J(X)为恢复后的无雾图像,h为阈值,取值0. 1。
2. 根据权利要求1所述的一种在FPGA上实现的图像去雾方法,其特征在于,所述步骤 2中最小值滤波的过程具体为: 步骤2. 1,将任一通道的像素数据依次输入到两个行缓冲器中,并经过列延时,形成 3X3模板; 步骤2. 2,将步骤2. 1中得到的3 X 3模板中的9个像素值均进行最小值滤波,并取滤波 后其中最小的像素值作为暗通道。
3. 根据权利要求2所述的一种在FPGA上实现的图像去雾方法,其特征在于,所述步骤 2. 1具体为: A,将R0M_X中读取的第一行数据先写入行缓冲器2中;R0M_X代表任意一个通道的像 素数据对应的只读存储器,X为通道,取值为R,G,B,当X为R时,R0M_R为只读存储器中存 储R通道的像素数据,当X为G时,R0M_G为只读存储器中存储G通道的像素数据,当X为B 时,R0M_B为只读存储器中存储B通道的像素数据; B,当第二行数据到来时,将行缓冲器2当中的第一行数据写入行缓冲器1中,并将第二 行数据写入行缓冲器2当中; C,当第三行数据到来时,将ROM_X输出的数据以及两个行缓冲器输出的数据分别经过 列延时形成3X3模板。
4. 根据权利要求3所述的一种在FPGA上实现的图像去雾方法,其特征在于,行缓冲器 1和行缓冲器2均采用FIFO实现。
5. 根据权利要求1所述的一种在FPGA上实现的图像去雾方法,其特征在于,所述步骤 3中的阈值比较法具体为: 步骤3. 1,将X通道中所有暗通道数据依次与阈值h进行比较,如果暗通道数据小于阈 值h,则将该暗通道数据对应的像素点舍弃;如果暗通道数据大于阈值h,则将该暗通道数 据与原图中该暗通道数据对应位置上的像素值比较,并执行步骤3. 2 ; 步骤3. 2,如果该暗通道数据大于原图对应位置上的像素值,则将原图对应位置上的像 素值作为A'值;如果该暗通道数据不大于原图对应位置上的像素值,则将该暗通道数据 作为Y值; 步骤3. 3,将步骤3. 2中得到的A '值与下一个暗通道数据进行比较,并执行步骤 3. 1~步骤3. 2,将最终得到的Y值作为X通道的全局大气光A值。
【专利摘要】本发明公开了一种在FPGA上实现的图像去雾方法,包括以下步骤:输入彩色有雾图像至FPGA,获取彩色有雾图像的R,G,B三个通道的像素数据并分别存入三个大小相同的只读存储器中;分别对三个通道的像素数据进行最小值滤波,并取其中最小值,即得到暗通道;将暗通道和R、G、B三个通道的数据分别采用阈值比较法并行计算求取三个通道的全局大气光;根据全局大气光、简化的暗通道和原图求透射率;根据透射率、大气光和原图恢复出无雾图像。本发明的一种在FPGA上实现的图像去雾方法,解决了现有技术中存在的针对有雾图像处理速度慢导致无法满足实时处理要求的问题。
【IPC分类】G06T5-00
【公开号】CN104751421
【申请号】CN201510104930
【发明人】胡辽林, 刘光飞, 安靖宇
【申请人】西安理工大学
【公开日】2015年7月1日
【申请日】2015年3月10日