雾整改
这个例子展示了如何把雾从雾蒙蒙的条件下图像捕获。该算法适合fpga。
雾精馏是一个重要的预处理步骤应用于自动驾驶和对象识别。捕获的图像模糊和朦胧的条件低能见度和可怜的对比。这些条件会导致表现不佳的视觉算法进行模糊图像。雾整改提高输入图像的质量这样的算法。
这个例子显示了一个流雾矫正算法的定点实现适合部署到硬件。
改善雾蒙蒙的输入图像,该算法执行除雾然后对比度增强。图中显示了这两种操作的步骤。
这个例子需要一个雾蒙蒙的RGB图像作为输入。执行除雾,该算法估计图像的暗通道,计算空气光映射基于黑暗的通道,并改进空气光映射通过使用过滤器。恢复阶段创建一个除雾图像减去精制空气光从输入图像地图。
然后,对比度增强阶段评估的范围在图像强度值,并使用对比度拉伸值的范围扩大,使功能更清楚地脱颖而出。
除雾
有四个步骤执行除雾。
1。黑暗的信道估计:图像的像素代表non-sky地区低强度至少在一个颜色组件。低强度形成的通道称为黑暗的通道。规范化,fog-free形象,暗通道像素的强度很低,几乎为零。在雾蒙蒙的形象,暗通道像素的强度很高,因为他们是被雾。除雾算法使用黑暗通道像素强度估算的雾。
该算法估计黑暗的通道通过寻找pixel-wise最低输入图像的所有三个部分在哪里。
2。空气光图计算:在一个图像被称为白效果空气光。算法计算空气光映射从黑暗的通道估计通过乘以一个阴霾的因素,,代表的阴霾被删除。的价值是在0和1之间。更高的价值意味着更多的烟雾从图像将被删除。
3所示。空气光图改进:该算法消除了空气光图像与前一阶段通过使用双边滤波块。这种平滑增强图像的细节。被称为优雅形象。
4所示。恢复:减少over-smoothing效果,这个阶段纠正过滤图像使用这些方程。常数,改变中线,代表着黑暗的地区空气光地图从黑暗到光明的值。的示例使用一个经验值。
算法然后减去空气光映射的输入模糊图像和繁殖的因素。
对比度增强
有五个步骤在对比度增强。
1。RGB灰色转换:这个阶段除雾RGB图像转换,,从雾中去除算法转化为灰度图像,。
2。直方图计算:这个阶段使用柱状图块来计算像素的数量在每个强度下降水平从0到255。
3所示。直方图归一化:该算法可实现直方图值除以他们输入图像的大小。
4所示。提供计算:这个阶段计算累积分布函数的归一化直方图(CDF)本值通过添加他们前面的直方图本值的总和。
5。对比度拉伸:对比拉伸是一种图像增强技术,提高了图像的对比拉伸强度值的范围来填补整个动态范围。当动态范围增加,图像中的细节更清晰可见。
5。i1和i2计算:这一步比较CDF实验组的值和两个阈值水平。在这个例子中,阈值是0.05和0.95。这个计算确定哪些像素强度值结合CDF实验组的阈值。这些值确定的强度范围拉伸操作。
5 b。T计算:这一步计算拉伸像素强度值来满足所需的输出强度值,和。
10%的最大输出强度地板(10 * 255/100)uint8
输入。
90%的最大输出强度层(即:90 * 255/100)uint8
输入。
T是一个256 -元素向量分成段,,。的部分元素计算输入之间的关系强度范围和所需的输出强度范围。
和代表两个像素在输入图像的范围和强度和代表两个整流输出图像的像素强度的范围。
这些方程显示元素T计算。
5 c。代替强度值:这一步将除雾图像的像素强度拉伸强度值。中的每个像素值除雾图像被替换为相应的强度T。
HDL实现
示例模型实现算法使用一个热气腾腾的像素格式和定点块从视觉HDL工具箱。串行接口模拟实时系统和高效的硬件设计,因为您需要更少的内存来存储像素数据计算。串行接口还允许独立运作的设计图像大小和格式,使其更有弹性时间错误。定点数据类型使用更少的资源,对FPGA提供更好的性能。必需的变量初始化的例子InitFcn回调。
FogImage阻止进口输入图像到模型中。的帧像素块转换输入帧的像素流uint8
价值观和pixelcontrol
公共汽车。的像素帧块将像素流回到图像帧。hdlInputViewer子系统和hdlOutputViewer子系统显示雾蒙蒙的输入图像和除雾增强输出图像,分别。ImageBuffer子系统存储除雾图像的对比度增强阶段根据需要可以阅读它。
FogRectification子系统包括除雾和对比度增强算法,实现了定点数据类型。
FogRemoval子系统,一个最小的块名叫DarkChannel计算黑暗通道强度通过寻找最低在所有三个组件。然后一个双边滤波器块改进黑暗通道的结果。过滤块空间标准偏差2
和强度标准差0.5
。这些参数用于推导出滤波器系数。滤波器的输出阶段的位宽是一样的输入。
接下来,空中光图像的计算方法是用精制黑暗通道乘以霾因子,0.9
。乘以这个因素后,双边滤波器避免精度损失,会发生从删除的最大输入16位大小双边滤波器。
恢复子系统消除了空气光的图像,然后预防over-smoothing尺度图像。的像素流对准器块对齐的输入像素流空气光图像减法。比例因子,发现,中点的原始图像和图像之间的差异与空气光移除。恢复子系统返回除雾图像低对比度。因此,必须进行对比度增强图片增加可见性。
FogRemoval子系统的输出存储在图像缓冲区。ContrastEnhancement子系统断言流行
信号读取帧缓冲区。
ContrastEnhancement子系统使用颜色空间转换块将RGB除雾图像转换为灰度图像。然后直方图计算像素强度值的直方图。柱状图完成后,生成一个readRdy信号。然后HistNormAndCDFCalculation子系统可实现直方图值和计算提供。
i1Andi2Calculation子系统计算和描述输入强度范围值。然后TCalculation子系统返回目标输出强度值的列表。这256个值写入一个查找表。对比Stretching-LUT区域生成的逻辑流行信号读取像素强度的除雾图像的图像缓冲区,并喂这些值读取地址的。返回相应的拉伸强度值的定义T更换除雾图像的像素值。
建模的图像缓冲区子系统包含两个选项连接到外部内存。这是一个变体子系统之间,你可以选择BehavioralMemory子系统和模型框架缓冲区接口(视觉HDL工具箱支持包Xilinx Z金宝appynq-Based硬件)块。
如果你没有使用BehavioralMemory子系统下面提到的支持包。金宝app此块包含高密度脂蛋白FIFO模块。BehavioralMemory返回存储帧的时候收到一个流行请求信号。流行请求BehavioralMemory必须高帧的每一行。
视频帧缓冲块需要视觉HDL工具箱支持包Xilinx Zynq-Based硬件™。金宝app适当的参考设计,支持包可以映射这一块AXI-Stream VDMA缓冲在黑板金宝app上。这个帧缓冲返回存储帧接收popVB请求信号。流行请求这一块必须高只有一个周期每帧。
输入图像缓冲区子系统是除雾后生成像素流和控制总线。获取像素流在对比度增强操作,后拉伸强度(T)计算。
仿真和结果
这个示例使用RGB 240 - 320像素的输入图像。输入像素和像素使用增强的输出uint8
数据类型。这个设计没有multipixel支持。金宝app
图中显示输入和增强输出图像从FogRectification获得子系统。
您可以生成HDL代码FogRectification子系统。需要产生高密度脂蛋白HDL编码™许可证代码。这个设计合成了英特尔®Arria®10 GX 115 s2f45i1sg FPGA。表显示了资源利用率。HDL设计实现时钟频率为200 MHz。
% = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =% |模型名称| | FogRectificationHDL | |% = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =输入图像分辨率% | | | 320 x 240 | |% | ALM利用率| | 10994 | |总额% |注册| | 20632 | |总内存块% | | | 67 | |% |总DSP模块| | 39 | |% = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =