SAR成像學習(三)距離方向成像matlab代碼解析 1


本文將結合matlab代碼講解SAR距離向成像問題。
本文只研究距離向,且是正側視情況。
文中以同一方位向座標上四個目標點的成像爲例,這四個目標的關係如下:



目標的相關信息:

% 關於目標
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Xc=2.e3;                 % Range distance to center of target area
X0=50;                   % target area in range is within [Xc-X0,Xc+X0]
ntarget=4;                        % number of targets
%%%%%%%%%%%%% Targets' parameters  %%%%%%%%%%%%%%%%%%
%
% xn: range;               fn: reflectivity 發射係數
%
xn(1)=0;                   fn(1)=1;
xn(2)=.7*X0;               fn(2)=.8;
xn(3)=xn(2)+2*dx;          fn(3)=1.;
xn(4)=-.5*X0;              fn(4)=.8;
%注意這裏的xn是相對於中間的Xc的位置
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
發射信號是線性調頻信號:
% 關於發射信號
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
colormap(gray(256))
cj=sqrt(-1);
pi2=2*pi;
%
c=3e8;                   % Propagation speed
B0=100e6;                % Baseband bandwidth is plus/minus B0 注意這裏的帶寬是2B0
w0=pi2*B0;
fc=1e9;                  % Carrier frequency
wc=pi2*fc;

Tp=.1e-6;               % Chirp pulse duration

alpha=w0/Tp;             % Chirp rate
wcm=wc-alpha*Tp;         % Modified chirp carrier 即是式子中的beta
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

1 問題的描述

成像的過程只要分爲兩步: 發射信號到接收信號;後處理,即接收信號到影像 如圖:



第一步是個正問題,主要由硬件完成,第二步是個逆問題,主要由軟件完成。
第一個問題的輸入f 0 (x)  是地面目標的理想函數,其與發射信號p(t)  的聯合起來之後得到輸c出:回波信號s(t) 
第二個問題的輸入是s(t)  ,通過與p  (t)  匹配濾波,得到輸出f(x)  。這個輸出就是我們想要的。如何得到f(x)  就是我們的核心問題。
理想情況下f(x)=f 0 (x)  ,這意味着我們得到了地面目標函數,也即是我們的影像完全真實地反映了地面的情況。但是,這是不可能實現的。不過,通過合理地解這個逆問題,使得f(x)  接近f 0 (x)  是成像的關鍵問題,也是我們不斷努力的目標。

2 問題的分析和解決



其實問題的解決辦法在上一個圖中已經暗示了,他就是匹配濾波技術,這個技術我們已經在“急救箱系列”分析過了。但是面對實際問題,還是有許多問題需要說明,尤其是像我這樣的新手。

2.1 再談匹配濾波



匹配濾波的實施公式:
S M (t)=F 1 (ω) [S(ω)P  (ω)] 

其中S(ω),P(ω)  分別爲回波信號s(t)  和參考(發射)信號p(t)  的傅里葉變換,p(t) s(t) S(ω)  的形式分別如下:
p(t)=a(t)exp(jβt+jαt 2 ) 

s(t)= n σ n p(t2x n /c) 

S(ω)=P(ω) n σ n exp(jω2x n c ) 

接着推導匹配濾波的實施公式得到:
s M (t) =F 1 (ω) [ n σ n |P(ω)| 2 exp(jω2x n c )]= n σ n Psf t (t2x n c )  

其中Psf t =F 1 (ω) [|P(ω)| 2 ]  表示時間域距離成像點擴散函數。
這樣就得到了我們的問題的答案:
f(x)=s M (t)= n σ n Psf t [2c (xx n )] 

這裏的轉換時用到了時間和距離的比例關係:
x=c2 t 

利用這個關係同樣可以得到距離域的點擴散函數。

2.2 採樣


這個問題是必然會碰見的問題,因爲我們要進行的是“數字處理”。這裏的關鍵問題有:


  • 採樣間隔,這個由信號帶寬2B 0   決定:
    δt<=1/2B 0 =π/ω 0  

  • 採樣起止時刻:
    T s =2(X c X 0 )c  

    T f =2(X c +X 0 )c + T p  

    其中,T p   表示信號持續的時間,最後加上這一項是爲了避免出現回波信號中含有部分波的情況。

  • 採樣的時間段:
    t[T s ,T f ] 

    T f T s =4X 0 c + T p  

  • 採樣點數:
    n=2ceil((.5(TfTs))/dt) 

    取這麼多采樣點是考慮到離散傅里葉變換的問題。

  • 空間域和頻率域採樣序列:
    x i =ct i 2 =(X c X 0 )+(i1)cδt2  

    ω i =ω c +(in2 1)δω 

    δω=2πnδt  


該部分的代碼是:

% 採樣問題
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
dt=pi/(2*alpha*Tp);      % Time domain sampling (gurad band plus minus
                         % 50 per) or use dt=1/(2*B0) for a general
                         % radar signal
%
Ts=(2*(Xc-X0))/c;        % Start time of sampling
Tf=(2*(Xc+X0))/c+Tp;     % End time of sampling

% Measurement parameters
n=2*ceil((.5*(Tf-Ts))/dt);   % Number of time samples
t=Ts+(0:n-1)*dt;             % Time array for data acquisition
dw=pi2/(n*dt);               % Frequency domain sampling
w=wc+dw*(-n/2:n/2-1);        % Frequency array (centered at carrier)
x=Xc+.5*c*dt*(-n/2:n/2-1);   % range bins (array); reference signal is
                             % for target at x=Xc.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

2.3 結果

四個目標的回波信號對應的代碼是:
% 獲得回波信號
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
s=zeros(1,n);              % Initialize echoed signal array
%暫時可以忽略
na=8;                      % Number of harmonics in random phase               
ar=rand(1,na);             % Amplitude of harmonics
ter=2*pi*rand(1,na);       % Phase of harmonics

for i=1:ntarget;
   td=t-2*(Xc+xn(i))/c;
   %注意這裏的時間是對採樣時間序列的一個延遲,另外有一個平移
   %這個要跟後面的參考信號也就是匹配濾波器對應上,而且他會影響恢復出來的f(x)的解譯

   pha=wcm*td+alpha*(td.^2);         % Chirp (LFM) phase
   for j=1:na;                       % Loop for CPM harmonics 相位調製!可以暫時忽略
      pha=pha+ar(j)*cos((w(n/2+1+j)-wc)*td+ter(j));
   end;
   s=s+fn(i)*exp(cj*pha).*(td >= 0 & td <= Tp); %回波信號 注意是各個目標的回波信號的疊加 
   %特別注意這裏的Tp,是脈衝持續的時間
end;
匹配濾波用到的參考信號對應的代碼是:
% Reference echoed signal
%
td0=t-2*(Xc+0)/c; 
%注意這裏的時間參考點
%這個要跟前面的回波信號的時間對應上,而且他會影響恢復出來的f(x)的解譯
pha0=wcm*td0+alpha*(td0.^2);         % Chirp (LFM) phase
for j=1:na;                          % Loop for CPM harmonics
   pha0=pha0+ar(j)*cos((w(n/2+1+j)-wc)*td0+ter(j));
end;
s0=exp(cj*pha0).*(td0 >= 0 & td0 <= Tp);
解調及顯示:
% Baseband conversion 解調 
% 這裏和該系列前面講的正交解調還是不一樣的,當時討論過
% 爲什麼會出來了複數圖像,現在看來,這個問題有點幼稚。
% 線性調頻信號本身就可以表示成複數,回波信號也是。
% 任何一個數只要我們願意,都可以在形式上表示成複數(無非實數的虛數部分爲零嘛)。
% 不應該覺得複數是什麼奇怪的事情,而應該覺得它實實在在,就在那裏,這是見得少了罷了。
%
sb=s.*exp(-cj*wc*t);
sb0=s0.*exp(-cj*wc*t);

plot(t,real(sb))%只是顯示了振幅
xlabel('Time, sec')
ylabel('Real Part')
title('Baseband Echoed Signal')
axis('square')
axis([Ts Tf 1.1*min(real(sb)) 1.1*max(real(sb))])
print P1.1a.ps
pause(1)
%
plot(t,real(sb0))
xlabel('Time, sec')
ylabel('Real Part')
title('Baseband Reference Echoed Signal')
axis('square')
axis([Ts Tf 1.1*min(real(sb0)) 1.1*max(real(sb0))])
print P1.2a.ps
pause(1)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
![這裏寫圖片描述]()




注意圖中只是畫出了振幅信息,而忽略了相位信息,實際上相位信息是非常有用的,特別是在有的應用中。
匹配濾波及結果:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 目標函數重建
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Fourier Transform
%
fsb=fty(sb);
fsb0=fty(sb0);

% Power equalization
% 這裏是對參考信號做了一個處理,暫時可以先忽略
mag=abs(fsb0);
amp_max=1/sqrt(2);     % Maximum amplitude for equalization
afsb0=abs(fsb0);
P_max=max(afsb0);
I=find(afsb0 > amp_max*P_max);
nI=length(I);
fsb0(I)=((amp_max*(P_max^2)*ones(1,nI))./afsb0(I)).* ...
        exp(cj*angle(fsb0(I)));
%
% Apply a window (e.g., power window) on fsb0 here
%
E=sum(mag.*abs(fsb0));

%
% Matched Filtering
%
fsmb=fsb.*conj(fsb0);
%
%
% Inverse Fourier Transform
%
smb=ifty(fsmb);       % Matched filtered signal (range reconstruction)
%
% Display
%
plot(x,(n/E)*abs(smb))
xlabel('Range, meters')
ylabel('Magnitude')
title('Range Reconstruction Via Matched Filtering')
axis([Xc-X0 Xc+X0 0 1.1]); axis('square')
print P1.6a.ps
pause(1)
結果:


3 如果不採用匹配濾波技術


如果不採用匹配濾波技術,可以用一種叫pulse compression的方法。但是它對信號的形式有一定的限制,比如線性調頻信號。上面介紹的匹配濾波方法並不侷限於線性調頻信號。
代碼:

% 另一種方法Time domain Compression
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%解調並壓縮
td0=t-2*(Xc+0)/c;
scb=conj(s).* ...
     exp(cj*wcm*td0+cj*alpha*(td0.^2));  % Baseband compressed signal
%
plot(t,real(scb))
xlabel('Time, sec')
ylabel('Real Part')
title('Time Domain Compressed Signal')
axis('square')
print TimeDomainCompressedSignal.png
pause(1)

%因爲上面的信號包含了與目標的位置相關的頻率成分,所以只要進行一個傅里葉變換即可得到問題的解。
fscb=fty(scb);

X=(c*(w-wc))/(4*alpha);     % Range array for time domain compression 注意參考點
plot(X+Xc,(dt/Tp)*abs(fscb)) %?

xlabel('Range, meters')
ylabel('Magnitude')
title('Range Reconstruction Via Time Domain Compression')
axis([Xc-X0 Xc+X0 0 1.1]); axis('square')
%axis([Xc-X0 Xc+X0 0 1.1*max(abs(fscb))]); axis('square')
pause(1)
結果:


說明:
觀察上面的結果和匹配濾波得到的結果可以發現明顯的不同,這裏的原因我暫時也不是特別清楚,也可能是這段代碼有問題。但是必須注意到:這肯定是由於信號的壓縮造成的。這個後面再回來說。

以上所有的分析中有一個問題被我掩蓋了,那就是幅寬問題,如果幅寬很大,以上的分析沒有問題,但是如果幅寬相對脈衝持續時間比較小,會帶來一個問題,這個問題的解決需要在匹配濾波的過程中添加一些步驟。
未完待續。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章