1. 程式人生 > >《合成孔徑雷達成像——演算法與實現》之【1】模擬圖2.2

《合成孔徑雷達成像——演算法與實現》之【1】模擬圖2.2

重點在於理解“由於影象扭曲或旋轉帶來的頻域表現形式的變化”。

這裡寫圖片描述

% SAR_Figure_2_2
% 2016.10.31
clear all;clc;close all;

%% 引數設定
M = 256;                % 矩陣高度
N = 256;                % 矩陣寬度
top = M/8+1;
bottom = M*7/8;
left = N/8+1;
right = N*7/8;
theta = pi/12;          % 扭曲或旋轉角度

%% 生成訊號
% 原始訊號
S0 = zeros(M,N);
S0(top:bottom,left:right) = 1
; % 扭曲訊號 S1 = zeros(M,N); for ii = 1:M for jj = 1:N x = jj-N/2; y = (M+1-ii)-M/2; xx = round(x+N/2); yy = M+1-round(x*sin(-theta)+y*cos(-theta)+M/2); if(yy>=1 && yy<= M) S1(ii,jj) = S0(yy,xx); end end end % 旋轉訊號 S2 = zeros(M,N); for
ii = 1:M for jj = 1:N x = jj-N/2; y = (M+1-ii)-M/2; xx = round(x*cos(-theta)-y*sin(-theta)+N/2); yy = M+1-round(x*sin(-theta)+y*cos(-theta)+M/2); if(xx>=1 && xx<= N && yy>=1 && yy<=M) S2(ii,jj) = S0(yy,xx); end
end end %% 二維傅立葉變換 % 原始訊號的二維傅立葉變換 S0_ff = fftshift(fft2(fftshift(S0))); S0_ff = abs(S0_ff); S0_ff = S0_ff/max(max(S0_ff)); S0_ff = 20*log10(S0_ff+1e-4); % 原始訊號二維傅立葉變換 S1_ff = fftshift(fft2(fftshift(S1))); S1_ff = abs(S1_ff); S1_ff = S1_ff/max(max(S1_ff)); S1_ff = 20*log10(S1_ff+1e-4); % 原始訊號二維傅立葉變換 S2_ff = fftshift(fft2(fftshift(S2))); S2_ff = abs(S2_ff); S2_ff = S2_ff/max(max(S2_ff)); S2_ff = 20*log10(S2_ff+1e-4); %% 畫圖 figure,set(gcf,'Color','w');colormap jet subplot(2,3,1),imagesc(S0);axis image off title('(a)時域,原始訊號'); subplot(2,3,4),imagesc(S0_ff);axis image off title('(b)原始訊號頻譜'); subplot(2,3,2),imagesc(S1);axis image off title('(c)時域,扭曲訊號'); subplot(2,3,5),imagesc(S1_ff);axis image off title('(d)扭曲訊號頻譜'); subplot(2,3,3),imagesc(S2);axis image off title('(e)時域,旋轉訊號'); subplot(2,3,6),imagesc(S2_ff);axis image off title('(f)旋轉訊號頻譜');