博客 / 詳情

返回

高光譜成像(二)光譜角映射 SAM

在第一篇中我們已經提到:高光譜圖像的每一個像素,本質上是一個高維光譜向量。
如果一個像素有 100 個波段,那麼它就可以表示為:

\[\mathbf{x} = (I_1, I_2, \dots, I_{100}) \]

既然每個像素是一個向量,我們又知道了高光譜圖像的經典應用就是識別物質,那麼一個很自然的問題就出現了:

如何判斷兩個像素是否屬於同一種物質?

在 RGB 圖像中,我們可能比較顏色是否接近。但在高光譜圖像中,我們更關心的是:

兩個光譜曲線的“形狀”是否相似。

從此出發,就引出了一個非常經典的方法:光譜角映射(Spectral Angle Mapper,SAM)


1. 什麼是 SAM ?

SAM 起源於 1993 年的論文 The Spectral Image Processing System (SIPS) — Interactive Visualization and Analysis of Imaging Spectrometer Data ,作為高光譜圖像分析中一種經典的光譜相似性度量方法被提出。
它的核心思想非常直觀:

不比較光譜的“大小”,而比較光譜的“方向”。

換句話説:我們把每一個光譜向量看作高維空間中的一個點,那麼兩個像素之間的相似度,就可以用它們之間的“夾角”來表示。
實際上,你可以把它理解為高光譜成像領域的餘弦相似度
其邏輯並不複雜,下面就來具體展開:

2. 光譜角:為什麼是角度而不是距離?

假設現在有兩個像素:

\[\mathbf{x} = (x_1, x_2, \dots, x_n) \]

\[\mathbf{y} = (y_1, y_2, \dots, y_n) \]

它們可以看作是 n 維空間中的兩個向量。
在幾何上,這兩個向量的夾角滿足:

\[\cos(\theta) = \frac{\mathbf{x} \cdot \mathbf{y}}{|\mathbf{x}||\mathbf{y}|} \]

於是我們可以計算反餘弦來得到夾角:

\[\theta = \arccos\left(\frac{\mathbf{x} \cdot \mathbf{y}}{|\mathbf{x}||\mathbf{y}|}\right) \]

這個角度 \(\theta\) 就叫做:光譜角(Spectral Angle)
角度越小,説明這兩個向量在高維空間中越接近,兩個光譜曲線就越相似。
image.png

到這裏,你應該會有這樣的問題:比較兩個光譜向量,為什麼是用“角度”而不是“距離”?
我們知道,在機器學習的部分任務中,向量長度可能受模型縮放影響而大小不一,方向才能代表其語義,因此我們使用餘弦相似度來消除長度的影響。
那麼在光譜向量的關係中,為什麼我們同樣要使用餘弦相似度而不是直接計算歐式距離呢?

實際上,這和高光譜圖像的採集有關:在真實場景中,光譜強度會受到很多因素影響。如光照強度變化、陰影、傳感器增益等。
這些因素會影響光譜的“整體幅值”,但往往不會改變光譜曲線的“形狀”。

舉個簡單的例子:
如果我們在陽光下和陰影下拍攝一座山:
同一座山,在陽光下光強整體更高,而陰影下光強整體則會更低。
image.png
但是,這座山在光譜曲線的“相對比例關係”基本保持一致。
因此,如果使用歐氏距離進行比較,則會因這類因素而讓度量結果產生較大差異,但如果使用 SAM 計算光譜角來進行比較,那麼它會認為這兩個像素依然非常接近。
這就是 SAM 的核心優勢:對光照強度變化具有一定魯棒性。

到這裏還沒結束,通過計算光譜角,我們可以量化兩個像素的光譜向量間的相似度。
但是在實際任務中,SAM 往往用來進行像素級的圖像分類或檢測,我們要如何根據光譜角正確識別物質並進行分類,才是關鍵所在。
這便涉及到 SAM 中的另一個關鍵概念:參考光譜(Reference Spectrum)

3. 參考光譜:同一物質的“參考答案”

在實際應用中,SAM 常用於地物分類、材料識別、礦物匹配等分類或檢測任務。
而在這些具體任務中,我們使用 SAM 進行識別,並不是讓高光譜圖像數據的像素間兩兩計算光譜角,而是讓每個像素和每類物質的參考光譜逐一計算光譜角,選擇夾角最小的一類作為結果。

道理不難理解,我們知道每種物質都有其固定的屬性,比如石頭是硬的,草是軟的。
而在高光譜成像中,每種物質對不同波長的光的吸收和反射能力自然也只會穩定在某個固定區間內,而不可能產生過大波動
這就為我們測量物質的參考光譜提供了依據,通過測量和建立參考光譜,我們便能得到分類的“標準答案”。

在個人任務中,想要得到參考光譜的最簡單也是較可靠的方法就是使用標準光譜庫,如業內較權威的 USGS 光譜庫和 ASTM 光譜標準。這種方法無需標註,科學可靠,可直接應用於分類或匹配。

而如果是較小眾的領域或者機密的數據,我們也有較符合直覺的方法來建立參考光譜,那就是對數據集中的某一類別的多個像素光譜求平均,得到該類別的代表光譜。

舉個例子,假設高光譜圖像中某一類植被在 5 個窄波段上的光譜強度如下(單位為反射率,0–1 範圍):

像素編號 波段1 波段2 波段3 波段4 波段5
Pixel 1 0.12 0.35 0.50 0.60 0.55
Pixel 2 0.10 0.37 0.52 0.58 0.57
Pixel 3 0.11 0.36 0.51 0.59 0.56

求平均光譜時,對每個波段求所有像素的均值:

\[\text{平均光譜} = \left[ \frac{0.12+0.10+0.11}{3},\ \frac{0.35+0.37+0.36}{3},\ \frac{0.50+0.52+0.51}{3},\ \frac{0.60+0.58+0.59}{3},\ \frac{0.55+0.57+0.56}{3} \right] \]

計算得到:

\[\text{平均光譜} = [0.11,\ 0.36,\ 0.51,\ 0.59,\ 0.56] \]

這個平均光譜就可以作為該類別的參考光譜,用於 SAM 計算時與未知像素進行光譜角匹配。
這種方法簡單直觀,同時也能在數據量足夠的情況下有效抑制單個像素的噪聲影響,提高分類或匹配的穩定性。
這樣,我們就得到了使用 SAM 進行相關任務的完整流程,我們以高光譜圖像分類任務為例來進行説明:
image.png

4. SAM 的優缺點

作為早期的經典方法,SAM 有其優勢所在,但同樣也存在可優化的空間,簡單列舉一下:

類別 內容
優點 物理意義明確、對光照變化具有魯棒性、不需要複雜訓練,計算簡單。
缺點 對噪聲敏感、 無法處理複雜混合像素問題、 屬於像素級方法,不考慮空間信息。

其中,一個很明顯的缺陷在於 SAM 並不會像卷積一樣學習到圖像的空間結構。
它將圖像分割為一個個像素,類比到深度學習中,這種做法其實更類似於使用全連接學習圖像的孤立形式。因此,SAM 也提供了明確的優化思路。

總之,SAM 在高光譜圖像分析發展初期提供了簡單可行的像素級分類與匹配方法,成為遙感、礦物識別和材料檢測等領域的基準工具。
它的提出奠定了光譜相似性度量的基礎思想,對後續複雜算法(如引入空間信息、深度學習方法)起到了啓發和參考作用。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.