基于FPGA多帧融合的智能相机处理系统

FPGA技术江湖 2023-08-05 08:06

大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分。大侠可以关注FPGA技术江湖,在“闯荡江湖”、"行侠仗义"栏里获取其他感兴趣的资源,或者一起煮酒言欢。“煮酒言欢”进入IC技术圈,这里有近50个IC技术公众号。


第一部分 设计概述

1.1 设计目的

本设计针对低照度高动态情况下,单帧图像曝光不足导致的图像噪声大、色彩失准等问题,在传统的 HDR 多帧融合(Frames Merging)方法上,采用层次化的图像配准(Image Alignment)方案、自适应白平衡(White Balance)与色调映射(Tone Mapping)策略,在降低图像噪声、真实还原景物色彩的基础上,极大 抑制了多帧融合时常见的运动伪影(Motion Artifact)现象。本设计采用 FPGA 进 行图像处理加速后,可以实现视频流的实时处理,视频流经过摄像头输入后,由 FPGA 进行处理并以较低的时延经 HDMI 信号输出。

1.2 应用领域

本设计可用于手持摄像系统(摄像机、智能手机)图像、视频流的 HDR 处 理,可用于低照度情况下固定监控系统的视频流 HDR 处理,可用于线上直播系统的视频流 HDR 处理。

1.3 主要技术特点

采用层次化的图像配准方案,对输入的拜尔格式(Bayer Mosaic)原始图像 进行处理,生成四层高斯图像金字塔(Gaussian Pyramids)。较高层次的图像配准结果将作为低层次配准的预偏移。这一过程极大优化了算法效率,其结构化的特 点为并行处理提供了便利。

采用有权重的图像融合方案,对输入的多帧图像,经图像配准后计算相应图像对(Image Pairs)的 L1 残差,得到各融合帧(Alternate Frame)相对参考帧 (Reference Frame)的权重,有效地降低了配准失误造成的运动伪影。

采用自适应白平衡及色调映射策略,在低光照情况下最大程度还原了景物的 色彩;在保证较高信噪比的情况下,提高了主要景物的亮度。

利用 FPGA 进行硬件加速,在 Pynq-z2 的 Python 开发环境中挂载封装有 IP 加速核的 Overlay,极大提高了运行速度,能够实时处理。

1.4 关键性能指标

相机感光度(ISO)、快门时间(Shutter Time)、融合帧数;

图像融合处理时间、视频流处理延时;

图像信噪比、色彩还原度、细节清晰度、纹理清晰度(人眼观察)。

1.5 主要创新点

(1) 低照度高动态图像处理;

(2) 层次化的图像配准;

(3) 有权重的图像融合降噪;

(4) 自适应白平衡与色调映射策略;

(5) FPGA 硬件加速;

(6) 低时延视频流处理。

第二部分 系统组成及功能说明

2.1 整体介绍

PYNQ-Z2 是基于 Xilinx ZYNQ-7000 FPGA 的平台,除继承了传统 ZYNQ 平 台的强大处理性能外,还兼容 Arduino 接口与标准树莓派接口,这使得 PYNQZ2 的具有极大的可拓展性与开源性。PYNQ 是一个新的开源框架,使嵌入式编 程人员能够在无需设计可编程逻辑电路的情况下即可充分发挥 Xilinx Zynq All Programmable SoC(APSoC)的功能。与常规方式不同的是,通过 PYNQ-Z2,用户可以使用 Python 进行 APSoC 编程,并且代码可直接在 PYNQ-Z2 上进行开发 和测试。通过 PYNQ-Z2,可编程逻辑电路将作为硬件库导入并通过其 API 进行编程,其方式与导入和编程软件库基本相同。

Xilinx Zyng All Programmable device 是一种基于双核 ARM cortex - a9 处理 器(称为处理系统或 PS)的 SOC,集成了 FPGA fabric(称为可编程逻辑或 PL)。PS 子系统包括许多专用外设(内存控制器、USB、Uart、IIC、SPI 等),并可以扩展额外的硬件 IP,其封装在 PL 的 Overlay 中。Overlay(或 Hardware Libraries, 硬件库)是可编程/可配置的 FPGA 设计,能将用户设计的应用从 Zynq 的处理系 统(PS 端)扩展到可编程逻辑(PL 端)。Overlay 可用于加速软件程序,或为特定程序定制硬件平台。

本设计的硬件平台整体结构如上图所示。为了对低照度高动态下的多帧融合 图像处理系统进行硬件加速,我们利用 Vivado HLs 工具,自主设计了 DownSample、Alignment、Merge、raw2rgb 等 IP Cores,并通过 AXI 总线与处理器核(PS 端)及存储器接口相连。在 PYNQ-Z2 的设计流中,这些 IP 被封装成 Overlay 并构造 Python API 驱动,以供 PYNQ-Z2 中的 Python 开发环境(JupyterNotebook)调用。

我们调用了 PYNQ-Z2 自有的 HDMI Overlay 进行处理流程及结果的显示。此外,PYNQ-Z2 为我们提供了丰富的存储单元、外设模块与通信接口。这些存储单元被用来存储图像数据及各类处理中间结果,而各类外设模块及通信接口则 被用来进行系统调试与控制的过程监控。

图像处理系统的工作流程如上图所示。相机在低曝光的情况下拍摄多帧(比 如说,6 帧)图片,这些原始图片(RAW images)由相机 CCD 或 CMOS 图像传感器生成,其像素值以拜耳阵列的形式存储。我们首先将原始各输入帧进行一次系数 2 的均值下采样,两次系数 4 的高斯下采样,得到一个四层的高斯图像金字塔。基于这个高斯图像金字塔,我们进行层次化的图像配准。配准的结果将作为图像融合的参考,同时结合备选帧与参考帧的 L1 残差作为融合权重,进行图像 融合。融合后的图像进行去马赛克及伽马降噪,并进行自适应的白平衡及色调映 射等操作,将单通道的融合图像转为三通道(对应 RGB 色彩空间)输出图像, 最终输出与原始图像同分辨率的处理结果。

均值下采样与高斯下采样处理被封装在名为 DownSample 的 IP core 中,层次化图像配准处理被封装在名为 Alignment 的 IP core 中,图像融合处理被封装在名为 Merge 的 IP core 中,去马赛克、白平衡、色调映射等处理被封装在名为 raw2rgb 的 IP core 中。这些 IP cores 挂载到 AXI 总线上,经封装为 Overlay 提供 Python API 给 PYNQ-Z2 的 Jupyter-Notebook。

2.2 各模块介绍

下采样模块(DownSample)

下采样模块为后续的层次化图像配准处理提供四层高斯图像金字塔。四层高斯金字塔的最底层为全分辨率的拜耳原始图像(我们称该层为 layer_raw),其像素点以拜耳阵列的形式排布,如下图所示。

我们首先进行系数 2 的均值下采样,直观上将一个 2*2 像素的“方格”取均值下采样为一个像素。下采样后的结果类似于一个单通道的灰度图像,但实际上绿色通道对下采样后的结果影响较大。我们称该层为 layer_0。

layer_0 随后进行两次系数 4 的高斯下采样。卷积核函数见附录。该卷积核 函数的大小为 5*5 像素,以 4 像素为步长在被采样的图像上以后,对该图像进行下采样。高斯下采样的结果将在一定程度上保留了采样前图像的低频信息,而图 像细节则被丢失。直观上图像的大致轮廓被保留,图像尺寸更小,细节模糊不清。两次高斯下采样的结果分为称之为 layer_1 与 layer_2。

经下采样模块处理后的结果可以用下图说明。

图像配准模块(Alignment)

图像配准以图像对(Image Pairs)的形式,在融合备选帧(Alternate Frame) 与参考帧(Reference Frame)之间展开。对参考帧中的每一个 16*16 像素的图块 (Tile),寻找其在融合备选帧中使两者 L1 残差最小图块,两个图块位置上的偏 移即为配准结果。其 L1 残差的计算方式可用下式表达。

式中的求和对一个图块内的所有像素进行,配准的目的是对参考帧中的每一个图 块,寻找其在每一个备选帧中的对应图块,使得上式的结果最小。此时两个图块 的坐标偏移量即为配准结果。

在保证图像间偏差不大的前提下,图块配准的搜索范围可以限定图块原始位 置周围的若干像素内。为了进一步提高配准的效率,我们采用层次化的配准方案:在上层低分辨率图像中进行预配准,配准结果将作为下层图像配准的预偏移 (Previous Offset)。各层图像以图块为基本单位,在预偏移的基础上进行小范围的配准。由此,上述残差计算式可以重新表达如下。

式中的𝑥𝑝, 𝑦𝑝即为上一层图像配准结果在本层配准的表达。

最终,层次化的图像配准处理将生成各层次上的配准结果。而我们所关心的 是全分辨率原始图像的配准结果,其将作为图像融合的依据进入到后续处理当中。

图像融合(Merge)

图像融合是多帧处理的关键步骤之一。在经过图像配准后,我们已经知道了参考帧中每一个图块在融合备选帧中的位置。这样一来,根据配准结果,从每一 个备选帧中提取相应的图块叠加在参考帧上,即可完成图像融合。然而,图像配准过程中有可能出现配准失误;另一方面,备选帧同样可能因为抖动而产生伪影。这就需要依照参考帧图块与备选帧图块的偏差建立误差权重,误差小的图块融合时的权重大,而误差较大的图块在融合时的权重较小。

我们仍然使用类似于图像配准时的残差公式来计算误差,具体如下。

式中,𝑡𝑥,𝑡𝑦为参考帧中图块的索引,𝑥1, 𝑦1为配准后备选帧中图块内的像素 索引。通过计算相应图块内所有像素值的 L1 残差,我们就能衡量经过配准后的 图块对的误差,进而确定其在融合时的权重。

拜耳图像到 RGB 图像(raw2rgb)

上述处理的结果仍然是单通道的拜尔图像。我们需要将其转化为三通道的 RGB 图像,从而进行显示。余下的处理步骤通常包括校正(Correction)、去马赛 克(Demosaic)、色调映射(Tone Mapping)、白平衡(White Balance)等处理。这些处理通常也由 ISP 完成。我们将这些处理封装在 raw2rgb 这一 IP core 中,进 而将处理的结果通过 HDMI 显示。

第三部分 完成情况及性能参数

我们完成了图 2 所述的各处理模块 IP cores 的封装与 Overlay 的挂载,通过在PYNQ-Z2本地读取一组6帧RAW格式拜耳图像(这些图像固定采用ISO=800, 快门时间为 1/16s 的拍摄参数),分块循环调用挂载的各处理模块 IP cores,进而 得到处理后的结果,通过 HDMI 进行显示。关键地,整个处理流程平均用时为83ms,并且具有进一步优化的空间。通过将更多的处理流程硬件化,减少在 AXI 总线上来回数据传输的次数,我们将进一步减少系统处理的平均用时。

下图是系统调试的实拍图。

通过对比,我们能够较为明显地看到处理效果。通常在低照度下拍摄的图像会呈现如下的效果。

如果为了图像效果,直接提高图像亮度,并提高对比度,则会产生较多噪声, 同时产生色彩偏移。图像会呈现如下的效果。

而经过 FPGA 中的图像处理系统处理后,图像的噪点被极大消去,色彩得到了校正,更加接近景物的原始色泽。图像呈现出如下的效果。

对上图的局部进行放大后,可以明显看到经过处理后的图像,在效果上有了明显的提升。下图是三处细节放大后的对比结果。

第四部分 总结

可扩展之处

(1)通过将更多的处理流程硬件化,减少在 AXI 总线上来回数据传输的次数,我们将进一步减少系统处理的平均用时,最后实现视频流的实时处理。之后,我们将为该系统加装摄像头模块,使得实时视频流经过系统处理后,以低时延输出。

(2)通过优化色调映射模块,我们计划在全局色调映射前加入局部色调映射,进一步提升在低照度下图像色彩的质量。

(3)通过调用 PYNQ-Z2 提供的 OpenCV 图像处理库,我们计划在图像处理流中增加人脸识别模块,对人脸识别激活的图块进行细致的配准及融合处理, 使得我们的图像处理系统在面对人脸时具有更好的效果。


- -THE END- -


往期精选 

 
 

【免费】FPGA工程师人才招聘平台

FPGA人才招聘,企业HR,看过来!

系统设计精选 | 基于FPGA的实时图像边缘检测系统设计(附代码)

基于原语的千兆以太网RGMII接口设计

时序分析理论和timequest使用_中文电子版

求职面试 | FPGA或IC面试题最新汇总篇

FPGA图像处理专题课新增Vivado部分内容,线上线下均可报名

FPGA时序分析及约束专题课新增Vivado部分内容,线上线下均可报名

FPGA就业班,2023.07.09开班,系统性学习FPGA,高薪就业,线上线下同步!

FPGA技术江湖广发江湖帖

无广告纯净模式,给技术交流一片净土,从初学小白到行业精英业界大佬等,从军工领域到民用企业等,从通信、图像处理到人工智能等各个方向应有尽有,QQ微信双选,FPGA技术江湖打造最纯净最专业的技术交流学习平台。


FPGA技术江湖微信交流群

加群主微信,备注姓名+学校/公司+专业/岗位进群


FPGA技术江湖QQ交流群

备注姓名+学校/公司+专业/岗位进群

FPGA技术江湖 任何技术的学习就好比一个江湖,对于每一位侠客都需要不断的历练,从初入江湖的小白到归隐山林的隐世高人,需要不断的自我感悟自己修炼,让我们一起仗剑闯FPGA乃至更大的江湖。
评论
  • 我的一台很多年前人家不要了的九十年代SONY台式组合音响,接手时只有CD功能不行了,因为不需要,也就没修,只使用收音机、磁带机和外接信号功能就够了。最近五年在外地,就断电闲置,没使用了。今年9月回到家里,就一个劲儿地忙着收拾家当,忙了一个多月,太多事啦!修了电气,清理了闲置不用了的电器和电子,就是一个劲儿地扔扔扔!几十年的“工匠式”收留收藏,只能断舍离,拆解不过来的了。一天,忽然感觉室内有股臭味,用鼻子的嗅觉功能朝着臭味重的方向寻找,觉得应该就是这台组合音响?怎么会呢?这无机物的东西不会腐臭吧?
    自做自受 2024-12-10 16:34 138浏览
  • 时源芯微——RE超标整机定位与解决详细流程一、 初步测量与问题确认使用专业的电磁辐射测量设备,对整机的辐射发射进行精确测量。确认是否存在RE超标问题,并记录超标频段和幅度。二、电缆检查与处理若存在信号电缆:步骤一:拔掉所有信号电缆,仅保留电源线,再次测量整机的辐射发射。若测量合格:判定问题出在信号电缆上,可能是电缆的共模电流导致。逐一连接信号电缆,每次连接后测量,定位具体哪根电缆或接口导致超标。对问题电缆进行处理,如加共模扼流圈、滤波器,或优化电缆布局和屏蔽。重新连接所有电缆,再次测量
    时源芯微 2024-12-11 17:11 75浏览
  • 概述 通过前面的研究学习,已经可以在CycloneVGX器件中成功实现完整的TDC(或者说完整的TDL,即延时线),测试结果也比较满足,解决了超大BIN尺寸以及大量0尺寸BIN的问题,但是还是存在一些之前系列器件还未遇到的问题,这些问题将在本文中进行详细描述介绍。 在五代Cyclone器件内部系统时钟受限的情况下,意味着大量逻辑资源将被浪费在于实现较大长度的TDL上面。是否可以找到方法可以对此前TDL的长度进行优化呢?本文还将探讨这个问题。TDC前段BIN颗粒堵塞问题分析 将延时链在逻辑中实现后
    coyoo 2024-12-10 13:28 101浏览
  • 全球知名半导体制造商ROHM Co., Ltd.(以下简称“罗姆”)宣布与Taiwan Semiconductor Manufacturing Company Limited(以下简称“台积公司”)就车载氮化镓功率器件的开发和量产事宜建立战略合作伙伴关系。通过该合作关系,双方将致力于将罗姆的氮化镓器件开发技术与台积公司业界先进的GaN-on-Silicon工艺技术优势结合起来,满足市场对高耐压和高频特性优异的功率元器件日益增长的需求。氮化镓功率器件目前主要被用于AC适配器和服务器电源等消费电子和
    电子资讯报 2024-12-10 17:09 87浏览
  • 天问Block和Mixly是两个不同的编程工具,分别在单片机开发和教育编程领域有各自的应用。以下是对它们的详细比较: 基本定义 天问Block:天问Block是一个基于区块链技术的数字身份验证和数据交换平台。它的目标是为用户提供一个安全、去中心化、可信任的数字身份验证和数据交换解决方案。 Mixly:Mixly是一款由北京师范大学教育学部创客教育实验室开发的图形化编程软件,旨在为初学者提供一个易于学习和使用的Arduino编程环境。 主要功能 天问Block:支持STC全系列8位单片机,32位
    丙丁先生 2024-12-11 13:15 49浏览
  • 近日,搭载紫光展锐W517芯片平台的INMO GO2由影目科技正式推出。作为全球首款专为商务场景设计的智能翻译眼镜,INMO GO2 以“快、准、稳”三大核心优势,突破传统翻译产品局限,为全球商务人士带来高效、自然、稳定的跨语言交流体验。 INMO GO2内置的W517芯片,是紫光展锐4G旗舰级智能穿戴平台,采用四核处理器,具有高性能、低功耗的优势,内置超微高集成技术,采用先进工艺,计算能力相比同档位竞品提升4倍,强大的性能提供更加多样化的应用场景。【视频见P盘链接】 依托“
    紫光展锐 2024-12-11 11:50 47浏览
  • RK3506 是瑞芯微推出的MPU产品,芯片制程为22nm,定位于轻量级、低成本解决方案。该MPU具有低功耗、外设接口丰富、实时性高的特点,适合用多种工商业场景。本文将基于RK3506的设计特点,为大家分析其应用场景。RK3506核心板主要分为三个型号,各型号间的区别如下图:​图 1  RK3506核心板处理器型号场景1:显示HMIRK3506核心板显示接口支持RGB、MIPI、QSPI输出,且支持2D图形加速,轻松运行QT、LVGL等GUI,最快3S内开
    万象奥科 2024-12-11 15:42 71浏览
  • 智能汽车可替换LED前照灯控制运行的原理涉及多个方面,包括自适应前照灯系统(AFS)的工作原理、传感器的应用、步进电机的控制以及模糊控制策略等。当下时代的智能汽车灯光控制系统通过车载网关控制单元集中控制,表现特殊点的有特斯拉,仅通过前车身控制器,整个系统就包括了灯光旋转开关、车灯变光开关、左LED前照灯总成、右LED前照灯总成、转向柱电子控制单元、CAN数据总线接口、组合仪表控制单元、车载网关控制单元等器件。变光开关、转向开关和辅助操作系统一般连为一体,开关之间通过内部线束和转向柱装置连接为多,
    lauguo2013 2024-12-10 15:53 81浏览
  •         在有电流流过的导线周围会感生出磁场,再用霍尔器件检测由电流感生的磁场,即可测出产生这个磁场的电流的量值。由此就可以构成霍尔电流、电压传感器。因为霍尔器件的输出电压与加在它上面的磁感应强度以及流过其中的工作电流的乘积成比例,是一个具有乘法器功能的器件,并且可与各种逻辑电路直接接口,还可以直接驱动各种性质的负载。因为霍尔器件的应用原理简单,信号处理方便,器件本身又具有一系列的du特优点,所以在变频器中也发挥了非常重要的作用。  &nb
    锦正茂科技 2024-12-10 12:57 76浏览
  • 一、SAE J1939协议概述SAE J1939协议是由美国汽车工程师协会(SAE,Society of Automotive Engineers)定义的一种用于重型车辆和工业设备中的通信协议,主要应用于车辆和设备之间的实时数据交换。J1939基于CAN(Controller Area Network)总线技术,使用29bit的扩展标识符和扩展数据帧,CAN通信速率为250Kbps,用于车载电子控制单元(ECU)之间的通信和控制。小北同学在之前也对J1939协议做过扫盲科普【科普系列】SAE J
    北汇信息 2024-12-11 15:45 81浏览
  • 习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-10 16:13 105浏览
  • 【萤火工场CEM5826-M11测评】OLED显示雷达数据本文结合之前关于串口打印雷达监测数据的研究,进一步扩展至 OLED 屏幕显示。该项目整体分为两部分: 一、框架显示; 二、数据采集与填充显示。为了减小 MCU 负担,采用 局部刷新 的方案。1. 显示框架所需库函数 Wire.h 、Adafruit_GFX.h 、Adafruit_SSD1306.h . 代码#include #include #include #include "logo_128x64.h"#include "logo_
    无垠的广袤 2024-12-10 14:03 69浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦