基于FPGA的图像去雾算法的实现

  • 2019 年 10 月 29 日
  • 筆記

基于FPGA的图像去雾算法的实现

本文在《基于暗通道先验条件图像去雾算法》的最后段matlab的图像去雾算法的基础上对matlab代码进行转化完成verilog的FPGA图像去雾算法。

Matlab去雾算法的结果展示:

图1 实验结果1

图2 实验结果2

图3 实验结果3

1 FPGA实现先验条件图像去雾算法

如图4所示,将整个图像去雾算法分为三个模块以流水线的方式完成FPGA的图像去雾算法:

1,rgb_dark模块完成每个像素点r,g,b中最小值的输出暗通道图像;

2,Transmittance模块完成透射率图像和全球大气光强度的输出;

3,Defog模块完成最终的去雾图像的输出。

图4 FPGA实现图像去雾框图

2 仿真

如图5所示,仿真图像由$fopen打开,由$fwrite写出。

图5 仿真模型

仿真过程中每幅图像需要两帧的图像来处理,三张图片用时6帧完成输出。

图6 仿真波形

3 实验结果及分析

实验原图1

暗通道图像

透射率图像

去雾图像

实验原图2

暗通道图像

透射率图像

去雾图像

实验原图3

暗通道图像

透射率图像

去雾图像

结果分析:ω(0<ω≤1)为0时图像完全不去雾,为1时图像完全去雾但是图像会失真,视觉效果很差。从实验结果来看,每幅图像都有一些去雾效果,但是没有达到人类视觉的最佳效果,这里我们可以再加入引导滤波等算法使图像还原更逼真。

之则认为数据有误或者数据可能存在亚稳态。