基于基于FPGA实现固定倍率的图像缩放实现固定倍率的图像缩放
基于FPGA硬件实现固定倍率的图像缩放,将2维卷积运算分解成2次1维卷积运算,对输入原始图像像素先进行行方向的卷积,再进行列方向的卷积,
从而得到输出图像像素。把图像缩放过程设计为一个单元体的循环过程,在单元体内部,事先计算出卷积系数。降低了FPGA设计的复杂性,提高了图
像缩放算法的运算速度,增强了系统的实时性,已经应用于某款航空电子产品中,应用效果良好。
航空电子图像处理系统为操作者提供各种图像及字符信息,随着传感器、显示器的性能指标不断提升,图像处理系统的设计面临越来越大的挑战,其中图像缩放的功能是
图像处理系统的关键技术要求。图像缩放功能有两种实现方案: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、变换时钟域、增加数据总线宽度等方法达到这种同步。顺向映射方式符合输入图像的时序,不需要大
容量的数据存储空间,具体根据图像缩放算法的邻域大小而定。