Sci论文 - 至繁归于至简,Sci论文网。 设为首页|加入收藏
当前位置:首页 > 计算机论文 > 正文

基于 ZYNQ UltraScale+MPSoC的实时视频图像锐化算法实现论文

发布时间:2023-08-23 15:10:19 文章来源:SCI论文网 我要评论














SCI论文(www.lunwensci.com)

  摘 要 :本文通过为 ZYNQ UltraScale+MPSoC 移植 Linux 操作系统、交叉编译 QT 和 OpenCV 应用程序、外接一个 USB 摄像头、显示器,搭建了一套实时视频图像锐化处理系统。系统调用 V4L2 接口采集视频图像信息,然后将视频图像信息 从内核空间映射到用户空间,便于应用程序快速读取、处理视频数据。另外通过 QT 应用程序调用 OpenGL 指令以驱动 GPU 采用 3×3 模板的 Laplacian 算子对采集到的视频图像进行迭代两次的锐化处理,最终将处理结果在显示器上显示。
  Real-time Video Image Sharpening Algorithm Based on ZYNQ UltraScale + MPSoC is Implemented

  WANG Zhengji,FAN Yongjie,LI Guanlin,LIU Yuyu


  (School of Science, Kunming University of Science and Technology, Kunming Yunnan 650500)

  【Abstract】:This paper builds a real-time video image sharpening processing system by porting the Linux operating system, cross-compiling QT and OpenCV applications, and connecting a USB camera and display for ZYNQ UltraScale+MPSoC. The system calls the V4L2 interface to collect video image information, and then maps the video image information from the kernel space to the user space, which is convenient for applications to quickly read and process video data. In addition, the OpenGL instruction is called through the QT application to drive the GPU to use the Laplacian operator of the 3×3 template to sharpen the acquired video image twice, and finally display the processing result on the display.

  【Key words】:ZYNQ UltraScale+MPSoC;real-time video image sharpening processing system;GPU;OpenGL;V4L2

  0 引言

  随着片上系统 SoC 体积的减小、功耗的降低、系 统功能的增加以及图像处理技术的迅速发展,嵌入式图 像处理系统面临更大的技术挑战,需要更低的延时,更 高的精度 [1]。
\

  实时视频处理技术在工业生产、缺陷检测、自动驾 驶等领域有着不可替代的作用,同时各个领域也对图像 处理带宽、实时性及清晰度有了更高的要求。如何高效地 采集实时视频图像并进行处理是一个有待解决的问题 [2]。

  图像锐化是图像增强的主要应用方面,通过增强高频分量来减少图像中的模糊、增强图像细节边缘和轮 廓,在目标识别、视频监控等领域应用广泛 [3]。实时视 频图像锐化处理通常需要比较大的计算量和比较长的运 行时间, 用 CPU 处理根本无法满足实时性要求, 影响 了其在实际应用中的效果。因此使用 GPU 对视频图像 锐化算法进行加速具有重要意义。

  ZYNQUltraScale+MPSoC 的 GPU 是一款基于 Mali ™ -400 MP2 硬件的 2D 和 3D 加速子系统。支持 OpenGL ES1.1 和 2.0.支持纹理大小高达 4096×4096 像素的图像。 本文使用的硬件平台 ZYNQ UltraScale+MPSoC采用 ARM+FPGA 的架构。ARM 系统集成了 4 个 ARM Cortex ™ -A53 处理器, 速度高达 1.2GHz, 另外还包含 2 个 Cortex-R5 处理器,速度高达 500MHz[4]。

  针对以上问题, 本文提出了以 ZYNQ UltraScale+ MPSoC 为主控芯片,使用内核提供给应用程序的 V4L2 接口采集视频图像信息。通过 OpenGL 着色器编程实 现 GPU 对实时视频图像锐化算法的加速。

  1 算法实现流程

  锐化算法实现流程如图 1 所示: 底层采用 Xilinx ZYNQ UltraScale+MPSoC 作为主控板, 中间层是 Linux 系统,顶层是 QT 应用程序。USB 摄像头通过 USB 接口 与开发板连接,显示器通过 DP 接口与开发板连接。应 用程序利用 QT 开发环境编译链接 OpenCV 库函数将申 请到的帧缓冲区在视频采集输入队列中排队, 调用 ioctl 函数发出开始采集命令时,视频数据被写入帧缓冲区, 应用程序再从视频采集输出队列中取出帧缓冲区,待处 理完成后,将帧缓冲区重新放入视频采集输入队列,循 环往复采集连续的视频数据。QT 调用 OpenGL 指令驱 动 GPU 对采集到的视频图像进行锐化处理,最终在显 示器上显示处理后的结果。
\

  1.1 具体实施

  (1)运行环境的搭建。

  首先使用 PetaLinux 工具为开发板移植 Linux 系统 ; 其次图像处理程序的运行必须依赖于 QT 和 OpenCV 库函 数的支持,为了让 PC 端的软件工程交叉编译的可执行文 件能够在 ZYNQ 的嵌入式 Linux 系统中运行,向嵌入式系 统移植 QT 和 OpenCV 库函数是必须完成的工作,另外在 Linux 根文件系统中还添加了 GDB Serve、V4L2、GPU 库,如图 2 所示。
\

  (2)图像采集。

  V4L2 是内核提供给应用程序访问音视频驱动的统 一接口,它最基本的一个应用是从摄像头等设备上获取 视频数据。

  在 QT 应用程序中, 使用库函数 open 打开摄像头 设备文件、调用 ioctl 库函数查看摄像头支持的格式以 及进行视频采集的参数初始化,包括设置采集的像素 格式为 YUV 422、分辨率为 1280×720. 如图 3 所示, 可知此款摄像头 1s 最高传输 10 帧此种像素格式和分辨 率的视频图像。本文在内核空间中申请 6 个帧缓冲区, 设置数据交换模式为内存映射模式,将每个缓冲区映射 到用户空间。驱动和应用程序共享这些缓冲区,因此不 需要额外的对数据缓冲区进行拷贝工作,从而加快了图 像信息的捕捉速度、提高了传输效率 [5]。
\

  (3)实时视频图像处理。

  OpenGL 是一组调用 GPU 功能的 API 规范, GPU 的硬件开发商需要提供满足 OpenGL 规范的实现,这 些实现通常被称为驱动 [6] , 主要负责将 OpenGL 定义 的 API 命令翻译为 GPU 指令。

  视频图像锐化处理流程如图 4 所示:在 QT 应用程 序中通过重写 initializeGL 函数和 paintGL 函数完成 锐化处理的准备工作。在片段着色器源码中完成图像锐化算法的实现。
\

  由于 OpenGL 是一个 API 规范, 本身并不是一个 API, 因此在 initializeGL 函数中首先要调用 initialize OpenGLFunctions 函数将 QT 里的函数指针指向显卡 的函数;其次初始化顶点坐标和纹理坐标,将初始化的 坐标数据从 CPU 端传递给 OpenGL 的顶点着色器;最 后完成顶点着色器源码和片段着色器源码的编译链接以 及纹理 textureY、textureUV 的创建、过滤方式和环 绕方式的设置。

  在 paintGL 函数中主要完成纹理的激活、绑定、纹理 单元的分配、着色器的绑定以及使用函数 glTexImage2D 加载 V4L2 采集到的实时视频图像作为纹理。

  使用 OpenGL 做图像处理,最主要的就是片段着色 器源码的实现。在本文中借助拉普拉斯算子模板实现图 像锐化处理。首先在片段着色器源码中初始化如图 5(a) 所示的拉普拉斯算子模板,紧接着创建两个着色器取样 器 :uniform sampler2D tex_y 和 uniform sampler2D tex_uv,tex_y 用于获取纹理图像的亮度信息,tex_uv 用 于获取纹理图像的色彩信息,使用 texture2D 根据当前 纹理坐标 textureout 从取样器中提取当前像素值,再 通过改变纹理坐标的值获取当前像素的八领域像素值, 提取方式如图 5(b) 所示。然后将像素格式转换为 RGB 格式,最后将模板中的数值与其重合的像素值相乘再求 和,将结果赋予与模板中心重合的像素,再进行一次迭 代处理,用 gl_FragColor 函数接收迭代两次所得的像 素值。
\

  继而 OpenGL 到硬件驱动中找到接口的实现即 GPU 指令, GPU 根据指令让每个像素点并行执行一次 片段着色器中的源码,最终将处理结果进行显示。

  1.2 结果展示

  作为对比, 还调用 OpenCV 提供的 VideoCapture 类的成员函数 read 读取摄像头视频图像,如图 6 所示, 使用 split 函数分离图像通道,调用 filter2D 函数对每 一个通道进行迭代两次的锐化处理,最后调用 merge 函数将处理后的 3 个通道进行合并; 一方面通过调用 QT 提供的库函数 gettimeofday 计算:采集图像信息、 迭代两次锐化处理、结果显示一共花费的时间。另一 方面通过 top 命令查看程序在后台运行时 CPU 的使用 率。如图 7 所示, 无论是基于 GPU 的图像锐化还是基 于 CPU 的图像锐化都能增强图像细节边缘和轮廓,让 图像更清晰,更利于目标识别。如图 8 所示,可知使 用 ZYNQ UltraScale+MPSoC 的 CPU 对 一 帧 视 频 图 像进行采集、迭代两次的锐化处理、显示处理结果大约需要 0.25s, 而且 CPU 使用率高达 37.4%。如图 9 所 示,可知调用本文搭建的图像锐化处理系统对一帧视频 图像进行采集到处理结果显示只需要大约 0.11s(Image acquisition time+update time+paintGL time),而且 CPU 使用率仅仅占 2.2%。
\

  2 结论

  本文在 ZYNQ UltraScale+MPSoC 硬件平台上移 植 Linux 操作系统和 QT、OpenCV 应用程序。应用程 序中采用 V4L2 接口采集实时视频图像,提高了图像数 据的传输效率,另外调用 OpenGL 接口函数驱动 GPU 对采集到的实时视频图像进行锐化处理并显示。充分利 用该硬件平台的 Mali ™ -400 MP2 以及 Linux 内核提 供的 V4L2 接口 [7]。
\


  在 USB 摄像头 1s 传输 10 帧图像的情况下,调用 V4L2、GPU 1s 钟可以采集、处理并显示大约 9 帧图像。 而调用 CPU 1s 钟最多采集、处理并显示 4 帧图像且出 现画面严重卡顿和丢帧现象。通过结果验证,本系统基 本满足实时视频图像的高效采集、提高图像清晰度、延 时低,实时性的要求。为嵌入式图像处理系统如何高效 地采集实时视频图像并调用 GPU 进行锐化处理提供了参考,有一定的研究价值和应用前景。

  参考文献

  [1] 郭大朋.基于FPGA的嵌入式图像处理系统设计[J].中国新通 信,2019.21(9):53.
  [2] 魏洪健,徐琦琳,张瑛,等 .一种基于ZYNQ的视频采集处理系 统[J].计算机技术与发展,2022.32(11):24-29.
  [3] 刘智,夏春蕾,戴曙光 .基于FPGA的图像锐化实现[J].微型机 与应用,2012(3):40-41+45.
  [4] 许晓,毕远伟 .基于Cortex-A53的嵌入式图像采集系统设计 [J].智能计算机与应用,2019.9(1):65-68.
  [5] 毛业进,孙文华.基于V4L2的视频采集系统的设计与实现[J]. 数字技术与应用,2014(11):153-155.
  [6] 刘晖,田泽,张骏,等.基于OpenGL的GPU命令处理器设计方 法研究[J].航空计算技术,2020.50(3):105-108.
  [7] AMD ZYNQ UltraScale+ MPSoC automotive platform with deep learning processor advances low-latency, AI-based image processing for automated parking system[J].M2 Presswire,2022.

关注SCI论文创作发表,寻求SCI论文修改润色、SCI论文代发表等服务支撑,请锁定SCI论文网!

文章出自SCI论文网转载请注明出处:https://www.lunwensci.com/jisuanjilunwen/62073.html

相关内容

发表评论

Sci论文网 - Sci论文发表 - Sci论文修改润色 - Sci论文期刊 - Sci论文代发
Copyright © Sci论文网 版权所有 | SCI论文网手机版 | 鄂ICP备2022005580号-2 | 网站地图xml | 百度地图xml