一种基于fpga的星上迭代图像处理方法
【技术领域】
[0001]本发明涉及一种图像处理方法,特别是一种基于FPGA的星上迭代图像处理方法,适用于大数据量、有迭代运算的实时图像处理算法的硬件实现,属于实时遥感图像处理领域。
【背景技术】
[0002]随着遥感技术的发展,人们对遥感成像需求日益迫切,成像质量的要求也越来越高。因此具有预识别、预处理能力的星上处理方法对于改善遥感图像质量至关重要。目前星上图像处理算法主要是图像预处理以及一些基于图像处理的自适应调节等算法,其中自适应调节这类算法需要采用重复多次迭代进行求解,计算量大,不适合于对图像的快速处理和在硬件上的实时实现。
[0003]而FPGA由于结构的限制,特别适合于实现数据量巨大、可以流水线实现的图像处理算法。所谓流水线方法:是将处理流程分为若干步骤,整个数据处理是“单流向”的,即没有反馈或者迭代运算,前一步骤的输出是下一个步骤的输入。
[0004]为了能在FPGA平台上实现自适应调节这类重复多次迭代的算法,并且适应目前遥感相机多片CCD同时工作、数据量巨大的要求,必须合理的设计图像处理算法的实现方法,以最大限度的利用运算、存储等硬件资源。同时,为使硬件资源有效发挥作用,算法与架构之间的密切配合是很重要的,必须考虑数据流的有效控制方法,将运算单元充分利用,减少逻辑资源的开销。
【发明内容】
[0005]本发明的技术解决问题是:克服FPGA平台不擅长处理迭代算法这一问题,提出一种基于FPGA的星上迭代图像处理算法的实现架构,利用双口 RAM与寄存器组搭建了一个图像处理架构,将存在迭代运算的图像处理算法嵌入此架构内,通过控制双口 RAM和寄存器组的读写来实现数据的迭代和不同CCD之间运算的切换,使一个图像处理算法模块能够流水线处理多片不同类型(XD,用处理一片CXD的FPGA资源,完成了多片CXD的处理,提高了FPGA的硬件资源利用率,最大程度上满足了大数据量星上图像迭代运算的需求。
[0006]本发明的技术解决方案是:一种基于FPGA的星上迭代图像处理方法,步骤如下:
[0007](I)根据预先给定的星上迭代图像处理算法,确定各片CXD进行图像处理所需参数的数量Hl1和星上迭代图像处理算法产生反馈参数的数量Hl2,并根据叫和Hl2在双口 RAM中开辟用于存储参数及反馈参数的空间;
[0008](2)在有效图像数据到来前,通过CXD写地址信号和写使能信号联合控制,将各片CXD进行图像处理所需的参数写入双口 RAM ;
[0009](3)在进行星上迭代图像处理前,选取一片(XD,读出双口 RAM中该片CXD进行图像处理所需的参数和前一时刻算法产生的反馈参数,将CCD进行图像处理所需的参数和前一时刻算法产生的反馈参数锁存于寄存器组中,初始时刻算法的反馈参数均为“O” ;
[0010](4)步骤(3)中选取的CXD利用预先给定的星上迭代图像处理算法进行运算,得出当前时刻图像的特征参数和用于下一时刻计算的反馈参数,并更新存放当前时刻图像特征参数的寄存器和存放用于下一时刻计算反馈参数的寄存器;
[0011](5)在当前CCD数据使能结束并且图像处理算法计算完毕后,将步骤(3)中选取的CCD进行图像处理所需的参数和当前时刻算法产生的反馈参数写入双口 RAM中;
[0012](6)选取新的一片(XD,重复步骤(3)?步骤(5),直至遍历所有(XD。
[0013]所述步骤⑴中根据一片CCD进行图像处理所需的参数数量叫和图像处理算法产生的反馈参数数量m2,在双口 RAM中开辟空间,用于存储参数及反馈信号,具体为:
[0014]若FPGA串行处理η片CXD数据,则双口 RAM中开辟的空间为:
[0015]M = n*2~ceil (1g2 O'ceiiaog^)+m2)),其中 M 为双口 RAM 中存储空间的长度,双口 RAM位宽由所有参数中位宽最大的决定,ceil表示向无限大取整。
[0016]所述步骤(2)中通过CXD写地址信号和写使能信号联合控制,将各片CXD进行图像处理所需的参数写入双口 RAM ;具体为:
[0017]在各片CCD有效数据到来之前,外部发送的参数信号和参数使能信号会将各片CCD的工作状态和各片CCD进行图像处理所需的参数进行广播,广播结束后,解析各片CCD进行图像处理所需的Hl1个参数,并控制写地址信号和写使能信号将!!^个参数写入双口 RAM。
[0018]所述写地址信号由计数器输出拼接生成,计数器位宽为ceil (1g2Hi1)+ceil (log2n),由长度为n*2~ceil (1g2Hi1)个时钟周期的高电平触发计数,双口 RAM写信号由三部分拼接而成,第一部分截取计数器输出的第ceil (1g2lIi1)+Ibit开始的高 ceil (log2n)数据,第二部分的数据为 “0”,“O” 的位宽为 ceil (1g2 (2~ceil (1g2In1)+m2))-ceil (1g2Hi1),补“O”的作用是使写地址跨越叫个参数;第三部分位宽为ceil (1g2Hi1),截取计数器输出低ceil (1g2lH1)bit数据,将以上三部分写信号按照先后顺序从高到低拼接起来形成各片CCD进行图像处理所需的Hi1个参数的写地址。
[0019]本发明相比现有技术优点在于:
[0020](I)本发明在FPGA平台下,通过寄存器组和双口 RAM的灵活配合,以流水线的方式实现了迭代算法,提高了 FPGA的硬件资源利用率,最大程度上满足了大数据量星上图像迭代运算的需求;
[0021](2)本发明为每片CXD规划RAM区域,通过切换RAM地址使图像处理算法流水线处理不同的(XD,用处理一片CXD的FPGA资源,流水线实现多片不同类型CXD的处理,最大程度上节省了硬件资源,更好地适应了星上图像处理;
[0022](3)本发明中的架构在运算过程中对迭代参数进行实时更新,适用于有迭代运算的实时图像处理算法,具有较强的工程应用价值。
【附图说明】
[0023]图1为本发明的算法流程图;
[0024]图2为双口 RAM存储空间规划示意图;
[0025]图3双口 RAM与寄存器组读写及更新的时序关系图;
[0026]图4写入双口 RAM数据格式实现图;
[0027]图5计数器生成RAM地址实现图;
[0028]图6寄存器组参数更新实现图;
[0029]图7双口 RAM输入实现图。
【具体实施方式】
[0030]如图1所示为本发明的算法流程图,从图1可知,本发明提供的一种基于FPGA的星上迭代图像处理方法,具体步骤如下:
[0031](I)根据预先给定的星上迭代图像处理算法,确定各片CXD进行图像处理所需参数的数量Hl1和星上迭代图像处理算法产生反馈参数的数量Hl2,并根据叫和Hl2在双口 RAM中开辟用于存储参数及反馈参数的空间;具体为:
[0032]若FPGA串行处理η片CXD数据,则双口 RAM中开辟的空间为:
[0033]M = n*2~ceil (1g2 O'ceiiaog^)+m2)),其中 M 为双口 RAM 中存储空间的长度,双口 RAM位宽由所有参数中位宽最大的决定,ceil表示向无限大取整。
[0034]!!^和Hl2不同步更新,!!^个参数来主要是外部注入用来控制算法的参数以及相机当前工作状态等参数,算法计算过程中不改变这些参数。Hl2个参数是图像处理算法计算过程中产生的,并反馈用于下一时刻算法计算,因此在算法计算完毕后需要实时更新。
[0035](2)如图3所示,在有效数据到来前,解析各片CCD的参数,将Mm1个参数写入双口 RAM。输入双口 RAM的数据格式如图4所示产生,通过选择器级联的方式,将η片CXD共I^m1A参数变为串行方式输入双口 RAM,CCD标识在“写”和“读”时用于切换不同CCD的参数。通过CCD写地址信号和写使能信号联合控制,将各片CCD进行图像处理所需的参数写入双口 RAM ;具体为:
[0036]在各片CCD有效数据到来之前,外部发送的参数信号和参数使能信号会将各片CCD的工作状态和各片CCD进行图像处理所需的参数进行广播,广播结束后,解析各片CCD进行图像处理所需的Hl1个参数,并通过写地址信号和写使能信号将!!^个参数写入双口 RAM,
[0037]所述写地址信号由计数器输出拼接生成,计数器位宽为ceil (1g2Hi1)+ceil (log2n),由长度为n*2~ceil (1g2Hi1)