總覽與流程
此程式碼實現了一種基於傅立葉變換的合成孔徑雷達 (SAR) 成像演算法,通常稱為距離遷移演算法 (Range Migration Algorithm, RMA) 或 Omega-K (ω-k) 演算法。其核心目標是將從二維平面掃描收集到的一系列雷達回波信號,通過精密的信號處理步驟,合成為一張高解析度的二維圖像。
核心處理流程:
原始數據
讀取雷達回波與背景信號
預處理
背景相減、相位校準、數據重整
頻域轉換
透過 2D-FFT 進入 K 空間
Stolt 內插
關鍵步驟:將非均勻網格重採樣
逆轉換成像
透過 2D-IFFT 重建成像
演算法流程圖
下圖詳細展示了從原始數據到最終成像的完整信號處理鏈路。
讀取 RAW 檔案
重塑 reshape 為 (fast-time × slow-time)
背景減法: sdata_time = raw - bkg
相位中心校正 (phase-center calibration)
重排 raster scan → 3D array F1(Mx,My,N)
2D 空間 FFT (ftx, fty) → F2(kx, ky, Kr)
計算 k 空間; 以矩形遮罩近似光錐截斷
1D 線性內插 (interp1): 將非均勻 kz 插值到均勻 kz → fhat
Kz → Z 轉換 (1D-FFT) → fhat_F
zero-pad → 2D IFFT (iftx, ifty) → fhat3
計算影像座標 (xIm,yIm,z) 並顯示影像
核心概念:什麼是 K 空間 (K-Space)?
在深入程式碼細節之前,理解「K 空間」是至關重要的。簡單來說,K 空間並不是我們實際所見的物理空間,而是影像的頻率藍圖。所有雷達的原始回波數據都是在這個 K 空間中被收集和組織的,而成像的過程,本質上就是將這份藍圖透過數學方法(逆傅立葉變換)「沖洗」成我們能看到的圖像。
🗺️ K 空間的構成:中心 vs. 外圍
K 空間中的每個點都代表了圖像中一個特定的「空間頻率」。
- K 空間中心 (低頻): 儲存了圖像的整體對比和亮度資訊。這裡的數據能量最強,決定了圖像的大致輪廓和基本樣貌。
- K 空間外圍 (高頻): 儲存了圖像的細節、邊緣和紋理資訊。這裡的數據能量較弱,但決定了圖像的清晰度和解析度。
📡 雷達如何「繪製」K 空間?
與 MRI 使用磁場梯度不同,SAR 雷達是透過自身的移動和信號的頻率變化來填充 K 空間的:
- 方位向 (kx, ky): 雷達在 XY 平面上的物理移動掃描,對應了 K 空間中 `kx` 和 `ky` 軸的採樣。
- 距離向 (kz): 雷達發射的啁啾信號 (Chirp) 的頻率變化,經過處理後,對應了 K 空間中 `kz` 軸的採樣。
💡 為什麼需要 Stolt 內插?
正是因為上述的採樣方式,雷達收集到的數據在 K 空間中並不是一個規整的矩形網格,而是一個彎曲的弧面。然而,最高效的成像演算法—快速傅立葉變換 (FFT)—只能處理規整的矩形網格數據。
因此,Stolt 內插這個關鍵步驟的目的,就是透過數學計算,將這個彎曲弧面上的數據點,精確地重採樣 (resample) 到一個虛擬的、規整的矩形網格上。完成了這一步,我們才能使用 IFFT 將 K 空間數據成功轉換為清晰、無失真的圖像。
一句話總結:K 空間是雷達原始數據的儲存庫,而成像演算法的核心任務,就是將這個庫中非規整的數據,校正並轉換為我們看得懂的物理圖像。
1. 參數設定
在進行任何處理之前,程式碼首先定義了雷達系統的物理特性和信號採集的參數。這些參數是整個演算法的基礎,決定了最終圖像的解析度和成像範圍。
雷達系統參數
- 帶寬 (fBW): 8 GHz
- 載波頻率 (fc): 79.6 GHz
- 天線波束寬度 (theta_b): 60 度
- 距離解析度 (RR): ~1.875 cm
時間域參數
- 採樣率 (fs): 50 MHz ("快時間")
- 脈衝持續時間 (T): 48 µs
- 掃描點數 (M): 63001 ("慢時間")
- 掃描間隔 (spacing): 1.6 mm
"快時間" (Fast-Time) 指的是單次雷達脈衝回波的採集時間,它決定了距離維度的資訊。"慢時間" (Slow-Time) 則對應雷達在空間中移動掃描時的採集時間點,它決定了方位維度的資訊。
2. 數據採集與預處理
此階段從檔案讀取原始二進制數據,並進行初步的清理和校準,為後續的複雜處理做準備。
- 1
讀取原始數據
從原始檔案中讀取目標測量信號和背景信號。
- 2
背景相減
將目標信號減去背景信號。這是一個關鍵步驟,用以消除由系統內部反射或靜態環境造成的固定雜波,凸顯移動目標或感興趣的物體。
- 3
相位中心校準
應用一個相位校正因子。這是為了補償天線發射與接收相位中心之間的物理偏移。如果不進行校準,圖像會出現散焦或變形。
3. 掃描數據重整
原始數據是按照雷達的物理掃描路徑(光柵掃描,即 "蛇行" 路徑)儲存的。為了進行基於傅立葉變換的二維處理,必須將這些一維的數據流重新排列成一個對應物理空間 (X, Y) 的二維網格。
光柵掃描 (Raster Scan) 到 XY 網格的轉換
程式碼中的迴圈會將 "蛇行" 的採集順序還原為規整的矩形網格。下面的動畫展示了這個過程:
原始掃描順序
重整後 XY 網格
4. 核心重建演算法
這是整個程式碼最核心、最複雜的部分。它透過一系列在頻域(K 空間)的操作,將收集到的數據聚焦成清晰的圖像。
步驟 4.1: 進入 K 空間 (2D-FFT)
對重整後的 XY 空間數據進行二維快速傅立葉變換。這一步將數據從空間域 (x, y) 轉換到空間頻率域 (kx, ky),也就是俗稱的 K 空間。在 K 空間中,目標的能量分佈與其空間結構有著直接的對應關係。
步驟 4.2: Stolt 內插 (重採樣)
這是 RMA 演算法的精髓。經過 2D-FFT 後,數據在 K 空間中是分佈在一個非均勻的、類似於球面或弧形的網格上。然而,要使用高效的逆傅立葉變換 (IFFT) 來重建圖像,數據必須位於一個均勻的笛卡爾(矩形)網格上。
程式碼透過一維線性內插 (interp1),將每個位置上的非均勻採樣點的值,映射到一個預先定義好的均勻 Kz 軸上。這個過程被稱為 "Stolt Migration" 或 "Stolt Interpolation",它校正了由雷達波傳播引起的相位扭曲,實現了完美的聚焦。(註:非均勻快速傅立葉變換 NUFFT 是此步驟另一種更高效的替代方案)。
原始 K 空間數據
∷
(非均勻網格)
重採樣後數據
⠿
(均勻網格)
步驟 4.3: Kz 空間至 Z 空間轉換 (1D-FFT)
對重採樣後的 K 空間數據,沿著 `kz` 維度進行一次一維傅立葉變換。這一步將數據從空間頻率 `kz` 軸轉換到物理距離 z 軸,完成了距離向的聚焦。
變數解析:`fhat_F`
這個變數代表「混合空間數據」。它的 X 和 Y 維度仍在頻率域 (`kx`, `ky`),但 Z 維度已透過 FFT 轉換回空間域 (`z`)。您可以將它想像成一個在距離向已經聚焦,但在方位向仍是模糊的半成品數據。
5. 圖像生成與繪製
最後一步是將經過完美聚焦的 K 空間數據轉換回我們能看到的圖像空間。
- 1
零填充 (Zero Padding)
在進行逆轉換前,對數據進行零填充。這在信號處理中相當於增加了採樣點,可以使最終的圖像看起來更平滑(內插效果),提高視覺品質。
- 2
返回圖像空間 (2D-IFFT)
對填充後的數據執行二維逆快速傅立葉變換,將數據從 K 空間 (kx, ky) 轉換回圖像空間 (x, y)。至此,重建後的複數圖像數據已經生成。
變數解析:`fhat3`
這個變數是演算法的最終輸出,代表「最終圖像空間數據」。它的所有維度 (`x`, `y`, `z`) 都已回到物理空間,是一個完全聚焦的完成品。這個三維複數矩陣的絕對值就代表了空間中每個點的反射強度。
- 3
繪製圖像
取重建後複數數據的絕對值,並擷取特定距離的單一切片 (例如 z=20),得到一個二維的強度分佈圖。最後使用程式函數將其繪製成最終的雷達成像結果。