本发明属于雷达成像与数字信号处理领域,特别涉及了一种基于fpga的sar图像几何失真校正方法。
背景技术:
极坐标格式算法(polarformatalgorithm,简称pfa)是一种经典的sar成像算法,该算法采用极坐标格式存储数据,有效地解决了远离成像区中心散射点的越分辨单元走动问题。
但是,经典的pfa算法也存在明显的缺陷。由于pfa采用了平面波前的假设,而实际的波前是弯曲的,由此引入的误差主要表现为空间频域的一次和二次空变相位误差,对应使图像产生几何失真和散焦,限制了pfa的有效成像场景大小。特别是在近场,高分辨率条件下,如果不对其进行补偿,有效的成像场景大小已不能满足实际需求。
sar回波数据具有数据量大、数据率高的特点;在sar处理算法中,有一些传统经典的算法控制流程简洁,比较适合fpga硬件实现。所以结合sar成像处理系统的性能需求与fpga的技术特点,利用fpga处理sar回波数据成为当前的研究热点。
技术实现要素:
为了解决上述背景技术提出的技术问题,本发明旨在提供一种基于fpga的sar图像几何失真校正方法,使pfa成像后图像的几何失真得到显著校正。
为了实现上述技术目的,本发明的技术方案为:
一种基于fpga的sar图像几何失真校正方法,包括以下步骤:
(1)根据成像场景参数,计算几何失真校正所需参数,并铺设校正点网格;
(2)对于一列校正点,计算得到其在sar图像中的坐标,进而得到其对应在ddr中存储的地址,将地址暂存在一个地址fifo中;
(3)每次从地址fifo中读取一个校正点网格的地址,进行一次读操作,读取该地址对应的数据,将数据暂存在另一个fifo中;
(4)重复步骤(3),直至该列校正点对应数据的读取全部完成,再写回ddr中;
(5)重复步骤(2)-(4),直至校正点网格全部处理完成。
进一步地,在步骤(1)中,按照下式铺设校正点网格:
上式中,(j,i)为任一网格坐标,(xt,yt)为地面散射点的真实坐标,na、nr分别为方位向和距离向采样点数,pixel_a、pixel_r分别为方位向和距离向网格大小。
进一步地,在步骤(1)中,在铺设校正点网格时,距离向网格与方位向网格大小需设定为统一值,令pixel_r=pixel_a。
进一步地,在步骤(2)中,当计算所得sar图像中的坐标超出采样点范围时,将其直接置零。
进一步地,在步骤(2)中,当计算所得sar图像中的坐标不是整数时,采用四舍五入的方式对其取整后,再转化为其对应在ddr中存储的地址。
进一步地,在步骤(2)中,计算所得sar图像中的坐标与对应ddr中存储地址的关系与成像数据写入ddr的形式和方式相关。
进一步地,成像数据是按距离向脉冲顺序写入ddr。
进一步地,ddr读写操作由fpga中设置的两个状态机gc_state和rd_ddrfifo_state控制完成,gc_state控制坐标读取、ddr读写触发,rd_ddrfifo_state控制ddr读过程中,由读缓存中读出数据;
gc_state的状态机定义如下:
0:空闲状态,等待gc_start触发信号;
1:等待坐标计算结果写入cord_fifo,当cord_fifo非空,从cord_fifo中读取一个地址;
2:等待cord_fifo有输出且ddr读缓存清空,进行ddr读信号设置与触发;判断cord_fifo是否取空,取空则跳转到4状态,否则跳转到3状态;
3:等待2状态的ddr读触发使得ddr内部工作状态发生改变后,从cord_fifo中读取下一个地址,并跳转到2状态;
4:等待当前列最后一个地址对应的数据从ddr中取出,然后跳转到下一状态;
5:触发data_fifo读使能,等待data_fifo输出有效后开始设置ddr写信号设置与触发,一次将一列校正点对应数据写入ddr;
6:结束状态;
rd_ddrfifo_state的状态机定义如下:
0:空闲状态,等待gc_start触发信号;
1:等待数据存入ddr读缓存,触发ddr读使能信号;
2:等待ddr读数据有效,将其写入data_fifo中,一次写入一个数据。
进一步地,在ddr读操作过程中,在ddr中设置2个读缓存进行乒乓读取。
采用上述技术方案带来的有益效果:
(1)本发明在铺设校正网格时采用一致的距离向与方位向网格大小,在对几何失真进行校正的同时,也能使校正后的图像与真实场景的比例一致;
(2)计算得到sar图像中的坐标通常不是整数,在本发明的实现过程中对其直接四舍五入取整再转化为其对应在ddr中存储的地址;相较于两维插值,取整更易用fpga实现,且经测试,由于雷达数据的采样点数较大,取整的结果与两维插值并无太大差别;
(3)由于ddr单个数据读取等待时间较长,本发明在ddr中设置2个读缓存进行乒乓读取,大幅提升了处理速度。在校正网格为1k*2k时,仅需0.35s。
附图说明
图1是几何失真校正原理图;
图2是本发明每列校正点处理流程图。
具体实施方式
以下将结合附图,对本发明的技术方案进行详细说明。
如图1所示为几何失真校正的原理图,图左边是校正网格,图右边的空心点阵是网格对应pfa图像。
根据地面散射点的真实坐标(xt,yt)可以得到其在sar图像中对应的坐标(a01,a10),因此,几何失真校正可以通过在图像域进行重采样实现。首先,根据波束照射范围确定地面校正区,使校正区覆盖感兴趣的波束扫描区域。然后将校正区划分为校正点网格,使校正点均匀分布在地面xy坐标系内,相邻点横向间隔和纵向间隔分别为校正后图像的方位和距离像素单元。以pfa算法为例,针对每个校正点,根据式(1)计算得到在sar图像中的坐标(a01,a10),由该坐标在sar图像中通过插值找到其‘像’,将其放回校正点,就实现了单个校正点的几何失真校正。对所有校正点逐个进行上述校正,就能够实现sar图像的几何失真校正。
其中:rct为天线相位中心到场景中心的瞬时距离值,在孔径中心时刻为rco,yc与yt分别为rco与rct对地面的投影,
在具体的fpga实现过程中,首先根据雷达场景参数计算出式(1)所需各参数,然后对校正网格进行逐列处理。
如图2所示为针对每列校正点进行的处理流程。
sar图像中像素位置(j,i)与实际坐标(x1,y1)的关系如式(2)所示。
其中,na,nr分别为方位向和距离向采样点数,pixel_a,pixel_r分别为pfa成像后图像方位向和距离向像素格大小。
根据式(3)铺设校正网格,其中网格间距可随输出图像的要求而变化,本发明中统一为pixel_a。
对于校正网格中的任一像素格(j,i),可由式(3)得到其实际坐标(xt,yt),进而由式(1)可得到其在sar图像中对应的坐标(a01,a10),对式(2)进行归一化即可得到对应像素格位置(xg,yg),再转换成对应ddr内部地址,暂存在cord_fifo中。由像素格位置(xg,yg)到对应ddr内部地址的转换关系由之前成像数据在ddr中的存储形式与方式有关,本发明中成像数据按距离向脉冲顺序写入ddr。
对于上述计算过程,地址结果是流水写入cord_fifo中的,用时远小于单个地址的ddr读操作。所以在cord_fifo非空,即cord_fifo_empty为低时,即可从cord_fifo中读取地址结果,并进行后续ddr读操作。当cord_fifo取空,即cord_fifo_empty再次有效时,可以等待进行ddr写操作。
每从cord_fifo中取出一个地址结果,等待ddr读缓存清空,即read_available信号有效后,进行ddr读信号的设置与触发。等待该次操作对应数据已存入ddr读缓存中,即data_rdy信号有效后,触发ddr读使能信号,即将read_en信号置高,从ddr读缓存中读出数据,写入data_fifo中,并进行读取数据计数,即将read_count加1。
在一次ddr读操作过程中,由读信号设置并触发,到对应数据存入ddr读缓存的延时是固定的。但可以将ddr读信号设置并触发、由ddr读缓存中读出数据分别写在两个状态机中,再利用ddr中的两个读缓存进行乒乓读取,大幅减少读数据过程用时。
当已从ddr中读出当前列对应全部数据,即read_count=nr时,则可进行ddr写操作。触发data_fifo的读使能,将data_fifo的输出与输出有效信号分别作为ddr的写输入与写使能信号,进行ddr写信号的设置与触发,一次写入一列校正点对应数据。每次写操作结束后,令写地址加上该列校正点个数,作为下一次写操作的起始地址。如此实现该列校正点数据的几何失真校正。
重复上述处理,直至所有脉冲处理完毕。
上述几何失真校正中对数据的读写处理步骤在fpga中设置两个状态机来控制完成,分别是gc_state和rd_ddrfifo_state。gc_state控制坐标读取、ddr读写触发,rd_ddrfifo_state控制ddr读过程中,由读缓存中读出数据。
gc_state的状态机定义如下:
0:空闲状态,等待gc_start触发信号。
1:等待坐标计算结果写入cord_fifo,cord_fifo非空,即cord_fifo_empty为低后,从cord_fifo中读取一个地址。
2:等待cord_fifo有输出且ddr读缓存清空,即cord_fifo_dout_valid与read_available同时有效后,进行ddr读信号设置与触发。判断cord_fifo是否取空,取空则跳转到4状态,否则跳转到3状态。
3:等待2状态的ddr读触发使得ddr内部工作状态发生改变后,可以从cord_fifo中读取下一个地址,并跳转到2状态。
4:等待当前列最后一个地址对应的数据从ddr中取出,则跳转到下一状态。
5:触发data_fifo读使能,等待data_fifo输出有效,即data_fifo_dout_valid后开始设置ddr写信号设置与触发,一次将一列校正点对应数据写入ddr。
6:结束状态。
rd_ddrfifo_state的状态机定义如下:
0:空闲状态,等待gc_start触发信号。
1:等待数据存入ddr读缓存,即data_rdy信号有效后,将read_en置高。
2:等待ddr读数据有效,即read_data_valid有效后,将其写入data_fifo中,一次写入一个数据。
实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。