PCA 壓縮自然影像:為什麼找出主要方向還不夠?

PCA 壓縮自然影像:為什麼找出主要方向還不夠?


一張彩色照片看起來有三個通道:紅、綠、藍。但如果把自然影像當成統計資料來看,三個通道都混合承擔亮度、輪廓、色相與飽和度的變化,並不一定值得用同一種方式保存。若把三者用同樣的位元預算處理,可能是在重複記錄相近的統計結構。

這正是蔡宜靜在林秀豪指導下完成的碩士論文〈自然影像的優化色彩編碼(Optimized Color Encoding for Natural Images)〉切入的問題。論文不是提出一個可以直接取代 JPEG、WebP 或 AVIF 的完整檔案格式,而是問一個更基礎、也更值得拆開看的問題:如果第一主成分主要承擔影像的無彩結構,那麼能不能保留這條結構軸,不對它做與色彩平面相同的截斷,只用很少的碼去表達剩下的色彩?

論文摘要報告:在它的 RGB 自然影像設定中,保留彩色影像最關鍵、且具有灰階性質的第一主成分,再對剩下的二維色彩資料做複數主成分分析(Complex Principal Component Analysis, complex PCA),以摘要所稱的 4.7% compression ratio 重建影像,肉眼幾乎難以分辨原圖。不過公開摘要沒有足夠資訊確認 4.7% 是係數保留比例、某個表示的比例,還是包含所有附加資訊(side information)的最終檔案位元比例。可檢驗的設計重點,是它把「亮度結構」和「色彩細節」分開處理。

先把林秀豪相關的兩條線分開

「PCA compression 林秀豪」容易讓人以為有一篇作者就是林秀豪的 PCA 壓縮論文。公開學位論文資料顯示,核心論文的作者是蔡宜靜,林秀豪是指導教授;論文為國立清華大學物理學系碩士論文,畢業學年度 112、共 52 頁。它的章節從色彩視覺、色彩空間一路走到 PCA、複數 PCA 和優化色彩編碼。論文紀錄與摘要

另一條線是林秀豪與岑美茵共同申請的〈影像的稀疏邊緣編碼及解碼方法〉。這不是 PCA 論文,反而在專利說明中把 PCA 描述成「有重要性排序、但代碼不稀疏」的對照方法,再改用零和遮罩、影像電荷與稀疏線性系統來解碼。台灣專利 TW202437759A

把兩者放在同一篇文章裡,並不是把它們說成同一個演算法,也不主張專利是這篇論文的直接延伸。目前能確認的是兩者的作者/指導與專利署名關係;本文只是把它們並置比較,藉此看見一條工程問題鏈:PCA 擅長找出低維的主要方向;影像壓縮還要關心係數是否稀疏、解碼時要算多少東西、以及剩下的資料怎樣分配位元。

PCA 到底保留了什麼?

主成分分析(Principal Component Analysis, PCA)可以先用一個二維點雲理解。假設資料點大致沿著右上方的斜線排列,原本的 x 和 y 都有數值,但它們一起增減,並不是最自然的座標。PCA 會找一條穿過平均值的軸,讓所有點投影到這條軸後的變異最大;再找一條與它垂直的軸,捕捉剩下的變化。這個「找最貼近資料點的方向」問題,早期可追溯到 Pearson 對空間點的最佳擬合,後來 Hotelling 將它整理成統計變數的 principal components。Pearson(1901)、Hotelling(1933)

下文公式先描述一般資料的 PCA:令每一列是一個樣本、每一欄是一個特徵,中心化後的資料為:

Xc=X−1μTX_c = X - \mathbf{1}\mu^T

第一主成分要找的是單位向量 w:

max⁡∥w∥2=1Var⁡(Xcw)\max_{\|w\|_2=1} \operatorname{Var}(X_c w)

對中心化資料,這等價於最大化:

wTSw,S=1n−1XcTXcw^T S w, \qquad S=\frac{1}{n-1}X_c^T X_c

用拉格朗日乘數法求解,會得到:

Sw=λwSw=\lambda w

所以第一主成分方向是最大特徵值對應的特徵向量;每個特徵值則代表資料沿著該方向的變異量。前 k 個特徵向量組成 W_k 後,低維座標與重建分別是:

z=(x−μ)Wk,x^=μ+zWkTz=(x-\mu) W_k, \qquad \hat{x}=\mu+zW_k^T

這裡有一個常被忽略的等價性:PCA 不只是在最大化投影變異,也是在所有通過平均值的 k 維 affine 子空間中,找出總平方重建誤差最小的那一個。這正是它能被拿來做近似壓縮的原因。

在自然影像研究裡,資料可能是像素、色彩向量、局部 patch 或整張影像的排列;不同排列會得到不同的共變異結構。論文的實際資料排列仍應以原文實驗設定為準,不能把所有「影像 PCA」結果視為同一件事。實作上通常不直接形成共變異矩陣,而是對 X_c 做奇異值分解(Singular Value Decomposition, SVD):

Xc=UΣVTX_c=U\Sigma V^T

V 的欄就是主成分方向,而特徵值與奇異值的關係是 λⱼ = σⱼ²/(n−1)。直接做 SVD 可以避免先建立可能很大的 d × d 矩陣;NumPy 和 scikit-learn 的文件也都以這個數值線性代數觀點描述 PCA。NumPy SVD、scikit-learn PCA

因此,PCA 壓縮不是「把最不重要的原始欄位刪掉」。它是先換一組座標,再截掉後面的座標。PC1 通常是多個原始欄位的線性組合;它的係數不是因果效果、也不是分類模型的 feature importance。

為什麼自然影像的 PC 會長得像邊緣?

如果把任意亂數矩陣丟給 PCA,主成分不會自動長成有意義的影像濾波器。自然影像之所以有特殊結果,是因為相鄰像素通常不是獨立的:平滑區域很多,突然變化集中在物體邊界,影像的能量分布也不均勻。

早期研究〈The principal components of natural images〉以自然影像與文字影像做比較,發現自然影像的主成分近似高斯函數的導數型局部濾波器,和視覺皮質及心理物理研究中常見的局部方向性結構相似;文字影像的結果則高度依賴尺度。Hancock、Baddeley、Smith(1992)

Heidemann 後來重新檢視自然灰階與彩色影像的 principal components,將主成分的水平、垂直型態與可轉向帶通濾波器(steerable bandpass filters)連起來,並討論空間結構與色彩結構對總變異的貢獻。Heidemann(2006)

這個背景很重要,因為它說明「第一主成分比較重要」不是一條脫離資料的定理。它依賴你分析的是什麼樣的影像、如何切 patch、如何排列樣本、在哪個色彩空間做 PCA。PCA 看到的是資料分布;自然影像的統計結構,才讓這個分布帶有邊緣與亮度的解讀。

論文的關鍵設計:不要讓亮度和色彩競爭同一個壓縮額度

直接對 RGB 做 PCA 有一個結構上的問題。在論文的 RGB 自然影像設定下,三個通道都混合承擔亮度、輪廓、色相與飽和度的變化;把它們合在同一個輸入裡,前面的主成分可能混合無彩(achromatic)與彩色(chromatic)變化。論文摘要報告,無彩資訊在主要變異中占比較重要的位置。

論文因此先看 HSV 色彩模型。HSV 把色相(Hue)、飽和度(Saturation)和明度/Value 分量分開,直覺上比 RGB 更接近「結構」和「色彩」的分工;但 HSV 不是線性、均勻的歐氏座標,色相還有週期接縫,不能因為三個字母分開了,就直接說它是最好的壓縮空間。論文把 HSV 當成驗證假設的中間步驟,再提出自己的優化色彩編碼。

依公開摘要與章節標題,這套方法的高階流程可以整理成四步;實際資料排列、保留數量與編碼細節仍應回到論文全文核對:

  1. 在該論文的 RGB 自然影像設定中,找出一條最重要、具有灰階性的主軸,作為 optimized grayscale axis。
  2. 將彩色資料分解成「保留的無彩結構」與「剩餘二維色彩平面」。
  3. 把二維色彩平面視為複數資料,用複數 PCA 找到更適合它的正交方向與係數。
  4. 保留第一主成分,把色彩平面的係數以較低比例保存,再做反變換重建 RGB 影像。

這和「對三個通道全部截斷」的差異,在於它先承認不同訊息的任務不一樣:該設計假定輪廓和明暗的失真比局部色彩的近似更容易被察覺。前半是論文對資料統計的描述;後半是本文把它解讀成影像編碼設計時的工程直覺,不能視為論文已用感知實驗證明的結論。這不是 PCA 自己發現了人眼法則,而是研究者把影像統計、色彩表示和視覺直覺放進同一個編碼設計。

複數 PCA 不是把兩個實數 PCA 並排

將兩個色彩座標 a、b 合成一個複數變數:

z=a+ibz=a+ib

是複數 PCA 的直覺入口。實數 PCA 只允許在實數空間裡旋轉;複數 PCA 提供一種同時表達幅度與相位關係的方式,變換由酉矩陣(unitary matrix)控制,協方差也改為厄米特(Hermitian)結構。它可以保留兩個色彩自由度的聯合表示,但本身不會自動降低維度或保證壓縮更好;是否勝過直接對兩個實數座標做 PCA,仍要用同一資料與位元預算比較。

代價是詮釋更難。複數主成分有相位不定性:同一個方向乘上一個單位複數相位,可能仍代表同一個複數子空間。Denimal 與 Camiz 的研究正是處理這個問題:複數資料的幾何有內在不定性,需要額外的實數框架與圖形化工具協助解讀。Denimal & Camiz(2022)

所以論文中「對剩下的二維色彩資料做 complex PCA」的意義,不是把方法冠上一個更高級的名字,而是提供一種讓二維色彩平面維持聯合結構的表示方式。對實作來說,仍必須明確保存變換、相位慣例、量化規則與重建時的色域處理。

4.7% 應該怎麼讀?

最容易被誤讀的句子是「用 4.7% 的比例壓縮色彩資料」。它至少可能有三種不同意思:

  • 只保留原始色彩係數數量的 4.7%。
  • 色彩平面的某個矩陣或主成分表示縮成原本的 4.7%。
  • 最終檔案的位元數是原始色彩資料的 4.7%。

這三者不是同一件事,而且「4.7% compression ratio」本身還可能被不同作者用來表示「壓縮後是原始大小的 4.7%」,或「4.7:1 的壓縮比」;後者約等於保留原始大小的 21.3%。若要和 JPEG、WebP 或 AVIF 比較,還要交代量化、熵編碼、區塊或 patch 的邊界、PCA basis 是否每張影像各自傳送,以及重建時是否產生超出色域的值。公開論文摘要只足以支持作者報告了一個 4.7% compression ratio,不足以讓我們判斷實際 rate 定義,更不能直接翻成通用 codec 的壓縮率。

「肉眼幾乎無法分辨」也要同樣謹慎。影像品質至少可以分成像素誤差與感知相似度兩條線:PSNR(Peak Signal-to-Noise Ratio)偏向逐像素的均方誤差,SSIM(Structural Similarity Index Measure)則比較亮度、對比與結構的相似性。兩者都不是完整的人類視覺模型,而且顯示器、觀看距離、影像內容都會影響判斷。Hore & Ziou(2010)

換句話說,這項結果很值得當作「表示法設計的證據」,但還不是「全面擊敗現有影像格式」的證據。

另一個目標:從低維表示走向稀疏邊緣表示

PCA 最大化變異,卻不保證係數稀疏。對一張 512×512 的灰階影像,即使只保留少數主成分,每個主成分仍可能對大量像素都有非零權重;實際是否 dense,仍取決於資料排列與基底。這在數學上很有效率,在編碼與解碼時卻未必便宜:稀疏度提升也不等於檔案壓縮率提升,還要把係數選取、索引、量化與傳輸成本算進去。

林秀豪與岑美茵的〈影像的稀疏邊緣編碼及解碼方法〉提供了另一種設計取向。專利描述的編碼器用元素總和為零的方形遮罩,和影像做互相關,取得影像電荷;這是一種對局部變化特別敏感、類似高通或差分濾波的表示。因為遮罩元素總和為零,完全平坦的區域會互相抵消,輸出接近零;只有在專利示例採用的 Laplacian 型遮罩下,才可看到非零響應集中在邊緣附近。這裡的「影像電荷」是影像位置上的數值響應,不是物理電荷;不能把一般零和遮罩都直接等同於 Laplacian。

解碼不是把一個 PCA 矩陣直接乘回去,而是把問題寫成稀疏線性系統或 Poisson equation,再用鬆弛法求穩態解;專利也提到可以用 multigrid method 加速。這裡的核心轉變是:不要只問「哪些方向解釋最多變異」,也要問「哪些局部事件值得先編碼、而且解碼時能否用較少運算恢復」。

在 Lena 單一示例中,Hoyer sparseness 從 6.93% 增至 37.45%,增加 30.52 個百分點,約為原本的 5.4 倍;專利原文將這個比例寫成 541% 的 enhancement。專利說明書 也把運算量降低與高精度重建列為發明效果主張,但沒有提供足以和 JPEG、WebP 或 AVIF 公平比較的完整 rate–distortion 基準。因此不能把這個數字寫成壓縮率,或泛化成所有自然影像的保證;它只展示了 PCA 與稀疏邊緣表示的不同目標。

這也能和 Olshausen、Field 的稀疏編碼研究對照。那篇經典工作顯示,在自然影像上追求稀疏表示,可以得到類似視覺系統簡單細胞感受野的局部、方向性基底;它不是 PCA 的後續版本,而是另一個目標函數的提醒:最大變異、最小重建誤差和最少非零係數,並不是同一個最佳化問題。Olshausen & Field(1996)

從公開資料可以合理得到的結論

第一,壓縮不是單一的「降維率」問題。你要同時決定表示空間、保留什麼訊息、係數是否稀疏、如何量化、怎麼傳送 basis,以及解碼成本由誰支付。

第二,PCA 的「重要」是統計定義,不是語意定義。第一主成分可能保留最多能量,但不一定保留最重要的分類訊號,也不一定等於人眼最在意的色彩差異。Jolliffe 與 Cadima 的 PCA 綜述把這點說得很清楚:PCA 是由資料定義、逐步最大化變異的自適應線性降維,不會自動知道你的下游目標。Jolliffe & Cadima(2016)

第三,對自然影像做方法設計時,資料的生成統計不能被藏在「演算法」兩個字後面。邊緣多、平滑區域多、亮度和色彩的變異尺度不同,這些先驗才是為什麼「保留一條灰階軸、壓縮一個色彩平面」可能有效。換成醫學影像、遙測影像或插畫,主成分的意義和最佳位元分配都可能改變。

最後,這篇論文與那件專利最適合被並置讀成兩個研究問題,而不是一個已完成的通用壓縮標準:一個先用 PCA 找到結構,再用複數 PCA 處理色彩;另一個把注意力放到係數稀疏、邊緣集中與解碼量。你若要實作或延伸,應該先補齊三件事:明確的 rate 定義、和 JPEG/WebP/AVIF 的同位元公平比較,以及 PSNR、SSIM 和盲測的共同評估。這三件事完成前,「4.7%」是一個值得追的研究結果,不是一句可以直接拿來做產品承諾的數字。

References