首页 > 技术 > 内容

如何利用FPGA硬件实现固定倍率的图像缩放?

时间:2026-01-05  作者:Diven  阅读:0

航空电子图像处理系统为操作者提供各种图像及字符信息,随着传感器、显示器的性能指标不断提升,图像处理系统的设计面临越来越大的挑战,其中图像缩放的功能是图像处理系统的关键技术要求。图像缩放功能有两种实现方案:1)软件实现,其优点是算法选择灵活多样,生成的画面质量较高,缺点是运算时间长。2)硬件实现,其优点是分辨率高,实时性强,缺点是不易实现功能强大的优秀算法。

近年来,FPGA技术发展迅速,片内集成了PLL、硬件乘法器存储器,具有了实现优秀算法的充足资源。许多航空电子嵌入式图像处理系统是由固定的视频源和显示设备组成,系统中图像缩放的倍率是固定的。文中针对此展开重点研究,基于FPGA硬件,实现固定倍率的图像缩放。

1 图像缩放的算法

数字图像的缩放是一个处理2维离散信号的过程。输出图像中任一个像素F(x,y),均可以在输入图像f(x,y)的像素矩阵中找到其对应的位置,如图1所示。

图1 输入和输出图像像素的映射关系

F(x,y)的值可以对其邻域的原始图像进行二维卷积运算得到。

其中mxn为邻域范围,f(i,j)是输入原始图像,s(i,j)为系数函数。

因为图像中邻近的像素存在着相关性,所以输出图像像素可以依据其在原始输入图像映射位置邻域的像素数据卷积得到。邻域范围内各个像素的相关度由系数函数决定,邻域的范围决定了算法的运算速度。

基于FPGA硬件实现固定倍率的图像缩放,为了降低FPGA设计的复杂性,提高图像缩放算法的运算速度,增强系统的实时性,将2维卷积运算分解成2次1维卷积运算,对输入原始图像像素先进行行方向的卷积,再进行列方向的卷积,从而得到输出图像像素。

2 图像缩放的FPGA实现

2.1 基于FPGA实现图像缩放的功能结构

基于FPGA实现图像缩放的功能结构图如图2所示。

图2 功能结构图

卷积计算模块的硬件结构由算法决定,每个点时钟周期内,对输入原始图像像素和系数先进行行方向的卷积,再进行列方向的卷积,从而得到输出图像像素。系数产生功能是依据控制模块确定的状态,产生算法要求的系数。输入缓存由控制模块不断刷新,保证每一时钟输入给卷积计算模块相应的像素数据。输出缓存提供下一环节数据流接口。

控制模块是核心逻辑部分,可以采用逆向映射方式(按照输出像素的时间顺序递增,选择对应的输入像素得到结果),也可以采用顺向映射方式(直接在输入像素的时序中产生输出像素)。

逆向映射方式工作在输出图像的时钟域,控制模块根据缩放倍率、分辨率和同步信号,确定输入像素坐标的增量大小,使得在每一时钟周期输入缓存中出现相应的像素数据。因为逆向映射方式需要使输出时钟域与输入时钟域保持同步,所以需要大容量的输入数据存储空间,才能确保在每个时钟周期提供相应的输入像素数据。顺向映射方式输入和输出像素有很强的时序对应关系,按照输入像素的时序进程实时确定输出像素的时序,输出图像分辨率发生变化,但帧频一致。图像缩放过程中,输入一个像素可能会输出2个或3个像素,控制模块可以采用输出缓存、双口RAM、变换时钟域、增加数据总线宽度等方法达到这种同步。顺向映射方式符合输入图像的时序,不需要大容量的数据存储空间,具体根据图像缩放算法的邻域大小而定。

2.2 基于FPGA实现图像缩放的方法

基于FPGA实现图像缩放时,无论是逆向映射方式还是顺向映射方式,控制模块的设计都比较复杂。为了有着FPGA的优势,大幅度降低设计难度,简化硬件结构,文中把图像缩放过程设计为一个单元体的循环过程,在单元体内部,可以事先计算出卷积系数。例如,把每行720个像素,放大到768个像素,相当于每输入15个像素,输出16个像素。此时可以把15个像素作为一个单元体,事先计算出每个输入像素周期的卷积系数,在FPGA中设计一个包含15种情况的状态机即可。单元体的像素数量越少,事先计算卷积系数和状态机设计的工作量就越少,因此像素的数量控制在20个以内,必要时可以采用近似的整数比。当输出像素的数量与实际要求相差很小时,图像边缘部分增加或减少几个像素对显示效果影响甚微,因此各种图像缩放倍率情况下,相应个数的输入像素都可以作为一个合适的单元体。

为论述方便,文中以将768x576的输入图像放大到1 024x768为例,说明基于FPGA实现对输入原始图像像素先进行行方向的卷积,再进行列方向的卷积,从而得到输出图像像素。

2.2.1 基于FPGA实现行方向的卷积

图像在行方向的放大比例为3:4,即单元体为3个输入像素和4个输出像素,如图3所示。

图3 单元体示意图

输入图像的AB空间中均匀分布X1、X2、X3,3个像素,放大后输出图像的这个空间将输出y0、y1、y2、y3,4个像素。这个单元体的时序关系是:当输入X1像素时,输出Y0像素;当输入X2像素时,输出Y1像素;当输入X3像素时,输出Y2和Y3像素。行方向的卷积公式为:

基于FPGA实现的源程序如下:

基于FPGA实现的仿真时序图如图4所示。

图4 时序图

在本例中时钟为输入的点时钟,为了在X3像素周期时输出2个像素:Y2和Y3,采用了扩充数据总线的方式。

2.2.2 基于FPGA实现列方向的卷积

数据流在行方向放大后写入双口RAM,然后从另一侧端口读出进行列方向的放大。由于行方向的卷积算法,双口RAM中至少应存储连续的3行输入图像像素数据,其中2行输入图像像素数据处于被读出状态,产生放大后的输出图像像素,另一行空间被写入当前的输入图像像素数据,循环刷新。

列方向的单元体和行方向相同,也由3个输入像素和4个输出像素组成,每种状态下也是同样的卷积系数,只是图像横向的空间变换成图像竖向的空间,因此基于FPGA实现列方向的卷积的方法与基于FPGA实现行方向的卷积的方法相同,此处不再赘述。

3 结束语

基于FPGA实现图像缩放,需要根据图像缩放的倍率确定包含适当数量像素的单元体。在单元体内部,根据图像缩放算法确定每个输出像素的计算公式和卷积系数,确定实现点时钟倍频效果的硬件方案。顺向映射方式输入和输出处于帧同步状态,由于输出像素数量多于输入像素,输出像素的点时钟频率要高于输入像素。本文行方向的放大过程,点时钟频率平均增加1/3倍,列方向的放大过程,点时钟频率还要继续增加1/3倍。实现倍频效果可以采用更高频的独立时钟,或者倍频输入点时钟,再或者增加数据总线宽度。为节省数据存储空间,当对图像放大时,先进行列方向的放大,后进行行方向的放大;当对图像缩小时,先进行行方向的缩小,后进行列方向的缩小。

基于FPGA实现图像缩放功能实时性强、分瓣率高。许多航空电子嵌入式图像处理系统是由固定的视频源和显示设备组成,系统中图像缩放的倍率是固定的。本文基于FPGA硬件实现固定倍率的图像缩放,能够大幅度降低设计难度,减少工作量。

基于FPGA硬件实现固定倍率的图像缩放的方法已经应用于某款航空电子产品中,电路板的原有硬件没有变动,对电路板中FPGA重新进行了设计,增加了新的内容,应用效果良好。

猜您喜欢


贴片电阻上的「01B」标记并非直接表示阻值大小,而是代表其阻值代码。要确定01B贴片电阻的具体阻值,需要将其代码进行解码。「01B」采用的是三位数代码标注法。其...
2024-11-26 11:30:02
电流检测电阻是关键元件,直接影响电路的性能和稳定性。作为国内知名电子元器件品牌,LIZ(丽智)高品质的电流检测电阻产品在市场中占据重要地位。本文将详细介绍LIZ...
2017-05-03 08:29:30
开关电源是现代电子设备中不可少的组成部分,应用于多个领域。在计算机和通信设备中,开关电源提供稳定的电压和电流,确保设备的正常运行。在家用电器方面,如电视、冰箱和...
2008-10-21 00:00:00
梅花槽盘头自攻螺钉是应用于各类工业和家庭项目中的紧固件。其独特的梅花槽设计,能够提供更好的扭矩传递,减少滑丝的风险,使安装更加稳固可靠。盘头设计不仅增强了螺钉的...
2009-11-25 00:00:00
电阻器作为基础且关键的元件,其性能直接影响整个电路的稳定性和可靠性。KOA(兴亚)作为知名的电阻制造商,其铝壳电阻因优异的性能和的应用而受到关注。本文将详细介绍...
2015-10-09 22:58:30
光敏电阻作为重要的光电元件,应用于各种光线检测和自动控制系统中。市面上光敏电阻品牌众多,其中TDK作为知名的电子元器件制造商,其光敏电阻产品受到关注。本文将围绕...
2022-08-14 17:42:38
胶堵、胶帽和保护套是常见的工业和日常生活中使用的产品,主要用于保护和密封。胶堵通常用于封闭管道或容器的开口,防止灰尘、水分和其外界因素的侵入,确保内部物品的安全...
2025-03-06 00:00:00
当今高速发展的科技时代,电子设备对性能的要求越来越高,内存作为电子设备的关键部件,其性能直接影响着设备的运行速度和稳定性。DDR4 内存作为新一代内存标准,拥有...
2024-04-26 00:00:00