基于Omiga-K算法SAR回波生成和成像含Matlab源码
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Omiga-K算法版本2
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all;
clc;
c=299792458; %light speed
load sarecho.mat;
fc=Head(1);
B=Head(2);
Tp=Head(3);
fs=Head(4);
V=Head(5);
PRF=Head(6);
dx=Head(7);
dy=Head(8);
Res_r=Head(9);
Res_a=Head(10);
theta=Head(11);
Rg0=Head(12);
Rang_Wath=Head(13);
Range_Swath=Head(14);
Azimuth_Swath=Head(15);
h=Head(16);
Rmin=Head(17);
Src=Head(18);
Rmax=Head(19);
Azimuth_StartNum=Head(20);
Azimuth_EndNum=Head(21);
rawdatawidth=Head(22);
slicelen=Head(23);
lamda = c/fc;
K=B/Tp; %调频率
%%%%%%%%%%%%%%%%%OmigaK算法%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
cj = sqrt(-1);
% dt=1/fs;
delaymin=2*Rmin/c-Tp/2; %距离波门起始时刻
% %%%%%%%%%%%%%%%%%%%%%%%%%%Omiga K算法%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Na=rawdatawidth;
Nr=slicelen;
T=Tp;
fx0=round(Na/2);
ft0=round(Nr/2);
fx=([1:Na]-fx0)/(Na-1)*PRF; %Doppler frequency
fr=(([1:Nr]-ft0)/(Nr-1)*fs); %距离向频率
%距离压缩
N = round(fs*Tp);
figure;imagesc(abs(sr));title('回波仿真结果');
% sfa=fftshift(fft(sr),1);
% sfa2 = fftshift(fft(sfa,[],2),2);
sfa2 =fftshift(fft2(fftshift(sr)));
H_Range_Com=exp(cj*pi*fr.^2/K).'*ones(1,Na); %距离向压缩因子
H_PHASE = exp(cj*4*pi*Src/c*sqrt((fr.'+fc).^2*ones(1,Na)-ones(Nr,1)*(c*fx/2/V).^2));%参考距离中心处的方位向聚焦因子
Hshift = exp(-cj*Src*4*pi*(fr+fc)/c).'*ones(1,Na); %将图像时域移动到距离中心
sfa2 = sfa2.*H_Range_Com.*Hshift.*H_PHASE;
figure;
imagesc(abs(sfa2));
%%Stolt插值,根据非均匀值插出均匀值
% Nr2=Nr-N;
ft0=round(Nr/2);
% fr=fftshift(fr); %距离向频率
P=1;%8点sinc插值
Stolt_krkx=zeros(Nr,Na);%初始化
dfr=fs/(Nr-1);%频域间隔
Stolt_krkx = sqrt((fr.'+fc).^2*ones(1,Na)+ones(Nr,1)*(c*fx/2/V).^2)-fc;
delta_fr = Stolt_krkx-fr.'*ones(1,Na);
Kr=fix(delta_fr/dfr);
%linear interpolator
%8 point SINC interpolator
Nd = Kr(1,end)
F = [sfa2;zeros(Nd+P,Na)]; %回波数据
stolt_sfa2 = zeros(Nr,Na);
for i=P+1:Nr
for j=1:Na
T=Kr(i,j)+(-P:P);
f=F(T+i,j).';
% stolt_sfa2(i,j)=sum(f.*sinc(delta_fr(i,j)/dfr-T));
stolt_sfa2(i,j)=sinc(delta_fr(i,j)/dfr-T)*F(T+i,j);
end
end
figure;
imagesc(abs(stolt_sfa2));
%H_phase1 = exp(cj*Src*sqrt((kr+krc).^2*ones(1,Na)-ones(Nr2,1)*kx.^2));
%%聚焦因子
stolt_sfa2 = stolt_sfa2;%.*H_phase1;
sfa3 =fftshift(ifft2(stolt_sfa2));
figure;
imagesc(abs(sfa3));
[pm,pn] = plotsection(sfa3.');
% Nt =pn;
kp_a = 2;
deltA = V/PRF*kp_a;
deltR = c/2/fs;
indexa =[1:Na].';
indext = [1:Nr].';
Mr = 16;
Ma = round(Mr*kp_a);
%幅度量化dB图
% my_plot(indexa(pm-Ma:kp_a:pm+Ma),indext(pn-Mr:pn+Mr),sfa3(pn-Mr:pn+Mr,pm-Ma:kp_a:pm+Ma),50);
% xlabel('方位向(点数)');ylabel('距离向(点数)');title('Omiga-K成像结果幅度量化dB图');
figure(8);%彩色等高线图
contour(indext(pn-Mr:pn+Mr),indexa(pm-Ma:kp_a:pm+Ma),abs(sfa3(pn-Mr:pn+Mr,pm-Ma:kp_a:pm+Ma).'),40);colorbar;
%
T = sfa3(pn-Mr+1:pn+Mr,pm-Ma+1:pm+Ma);
ft2= fft(T,[],1);
T3= ifft(ft2,Mr*16,1);
ft = fft(T3,[],2);
T2 = ifft(ft,Ma*64,2);
XA = linspace(indexa(pm-Ma+1),indexa(pm+Ma),Ma*64);
XR = linspace(indext(pn-Mr+1),indext(pn+Mr),Mr*16);
% my_plot(XA,XR,T2,50);colormap(gray);
[pm2,pn2] = plotsection(T2.');
[1]孙进平, 洪文, 柳重堪,等. 条带模式合成孔径雷达回波数据的聚束成像算法处理[J]. 航空学报, 2001.
部分理论引用网络文献,若有侵权联系博主删除。