李順利 姚廷富 余萍 李丹



摘要:隨著大數據技術的飛速發展,矩陣分解特別是矩陣的奇異值分解(SVD)在數據檢索、圖像壓縮、人臉識別、神經網絡等領域有著廣泛應用。針對圖像壓縮問題,首先給出了矩陣奇異值分解的基本理論,指出了矩陣奇異值的存在和唯一性,同時分析了矩陣奇異值分解的一般方法并用Matlab加以實現;然后論述了矩陣奇異值分解用于圖像壓縮的基本原理,最后用數值實驗展示理論方法的有效性。
關鍵詞:矩陣分解;圖像壓縮;低秩逼近
中圖分類號:TP18? ? ? 文獻標識碼:A
文章編號:1009-3044(2022)19-0001-02
1 奇異值分解的基本理論
矩陣的奇異值分解(Singular Value Decomposition,簡稱SVD),在數值計算中是一種重要的矩陣分解,在最優解問題、擾動問題[1]、最小二乘問題、廣義逆問題以及圖像處理[2]等問題中都有著重要應用。
1.1 奇異值分解的概念
定義1.1[3] 設實矩陣[A∈Rm×n](或復矩陣[A∈Cm×n]),半正定矩陣[ATA](當[A]為復矩陣時為[A?A],[A?]為[A]的共軛轉置)的特征值為[λ1≥λ2≥…λr>λr+1=…λn=0],則稱特征值的算術平方根,即[σi=λii=1,2,…,n]為[A]的奇異值,記作[σ1≥σ2≥…≥σr>σr+1=…=σn=0],矩陣[A]的全部奇異值組成的集合為[σ(A)]:
[σ(A)={σ≥0:ATAx=σ2x,x∈Rn,x≠0}].
特別地,當[A]為零矩陣時,它的奇異值為[0].
定理1.2[4] 設實矩陣[A∈Rm×n](或復矩陣[A∈Cm×n]),則[A]的奇異值是唯一確定的,并且一定存在正交矩陣(或酉矩陣)[U=[u1,u2…um]∈Rm×m](或[U∈Cm×m])和正交矩陣(或酉矩陣)[V=[v1,v2,…vn]∈Rm×m](或[V∈Cn×n]),使得[A]滿足:
[Am×n=Um×mDm×nVTn×n], ? ? ? ? ? ? ? ? ?(1)
其中[D=D000],且[D=diagσ1,σ2,…,σr,] [σi(i=1,2…r)]為矩陣[A]的全部非零奇異值,稱該分解方法為矩陣的奇異值分解,[uj(j=1,2…m)]為矩陣[A]的左奇異向量,[vi(i=1,2…n)]為矩陣[A]的右奇異向量。
1.2 奇異值分解的一般步驟
1)計算[ATA]的特征值[λii=1,2,…,n]以及對應的特征向量[ξii=1,2,…,n]并正交單位化為[vii=1,2,…,n](標準正交特征向量),組成矩陣[V];
2)求[A]的秩[r],奇異值[σi=λii=1,2,…,n]及[D=diagσ1,σ2,…,σn];
3)由等式(1.1)可得:[AV=UD]即,[AVD-1=U],計算[U];
4)奇異值的分解為[A=UDVT].
2 基于SVD的圖像壓縮的原理——低秩逼近
近年來,隨著網絡技術的發展,對數據存儲的要求越來越高,而我們熟知的圖像都是以數據的形式進行存儲,因此在盡量保持清晰度的基礎上減少圖像存儲的空間有一定的應用價值。
定理2.1[5](秩一逼近) 設矩陣[A]的秩為[r], [A]的全部奇異值為[σ1≥σ2≥…≥σr>σr+1=…=σn=0],則[A]可以表示成[r]個秩1矩陣之和:
[A=U(D1+D2+…+Dr+…Dn)VT=j=1rσjujvTj], ? (2)
其中[Dj=diag(0,…,0,σj,0…,0)], [j=1,2,…,n.]
定義2.1[6]? 當矩陣[A]的秩為[r [Am×n=Um×rD′r×rVTr×n] ? ? ? ? ? ? ? ? ? ?(3) 其中[Um×r=[u1,u2…ur]],[D′r×r=diagσ1,σ2,…,σr],[Vr×n=[v1,v2,…vr]]等式(3)稱為矩陣[A]的截斷奇異值分解(truncated SVD),或稱為薄奇異值分解(thin SVD)。 圖像壓縮的重點和難點在于尋找矩陣[A]的低秩逼近矩陣[Ak],[Ak]需滿足數據量較矩陣[A]小(占內存較少)并且保留主要“特征”,不妨令[rank(Ak)=k],[k [Ak=j=1kσjujvTj],[k 根據矩陣[A]的Frobenius范數(F范數)的正交(復數域為酉)不變性,矩陣[A]的Frobenius范數為: [AF=UDVTF=DF=σ21+σ21+…σ2r] 則矩陣[A]與矩陣[Ak]的低秩逼近問題可以表示為如下最小二乘問題: [min? ? ? ? ? ? ? rank(B)=kA-BF=A-AkF=σ2k+1+σ2k+2+…σ2r] (5) 這一結論就是數據壓縮的基本原理。 3 圖像壓縮數值實驗 3.1 基于SVD分解的圖像壓縮的基本步驟: 1)將圖片讀取為數據矩陣,如果是彩色圖片,需要進行灰度處理。 2)設置壓縮比[7-8][ρ],其中[ρ=mnk(m+n+1)],[k]越小,壓縮比越大,壓縮后的圖像內存越小,但是清晰度越差。 3)對數據矩陣進行SVD分解,如果數據矩陣不是方陣(圖像為長方形),則轉化為截斷SVD分解。 4)用SVD分解的低秩逼近進行重構。 5)讀取壓縮后的圖像。 3.2 實例分析 1)圖像讀取 原始圖像命名為wangym.jpg,分辨率:為690×464,大小:296KB。 將原始圖像讀取為數據矩陣[A],Matlab命令如下: >> A=imread('wangym.jpg');? ?%結果為464×690×3,3代表是彩色圖像 >> imshow(A);? ?%展示[A]矩陣對應的Matlab圖片 >> A_gray=rgb2gray(A);%將彩色圖像轉化為灰度圖像(三維轉化為二維) >> imshow(A_gray) 2)設置壓縮比,并對讀取的數據矩陣[A]進行SVD分解 >>[m,n] = size(A_gray);? ? ?%獲取圖像的行數和列數 >>k = 50;? ? ? ? ? ? ? ? ?%設定壓縮比率,不同數值壓縮比不同。 >>A_gray = double(A_gray);%轉為雙精度 >>[U,S,V] = svd(A_gray);? ?%奇異值分解 >>S= diag(S);? ? ? ? ? ? ?% 變成列向量 >>S(k:end)=0;? ? ? ? ? ? ?%保留前k個奇異值 3)對于長方形圖片進行截斷SVD分解并進行低秩逼近 >>if m>=n >>S = [diag(S);zeros(m-n,n)]; >>else S = [diag(S),zeros(m,n-m)]; >>end >>g = U*S*V'; % S的奇異值分解 >>g = uint8(g); 4)顯示壓縮率并讀取壓縮后的圖像 >>rho = n^2/(k*(2*n+1)); %壓縮率 >>subplot(2,2,2),imshow(mat2gray(g)),title('壓縮圖'); 3.3壓縮率和奇異值對比分析 在公式(5)中,[k]的取值對SVD分解的低秩逼近有直接影響,因為僅用前[k]個奇異值代替了全部的奇異值,一般情況下[k]的取值越小,參數的誤差較大,因此雖然壓縮率較高但清晰率較低。 在實例分析中,選取的圖像為690×464(對應數據矩陣[A]的大小為464行、690列),如圖5所示,基于SVD低秩逼近的壓縮方法能夠取得較好的壓縮效果,需要說明的是如果是超大圖片,一般的SVD方法壓縮效率較低,上述Matlab程序可以進一步優化。 參考文獻: [1] Riyajuddin,Reddy A P.Various image processing attacks for image watermarking in the wavelet domain using singular value decomposition and discrete cosine transform[J].Review of Computer Engineering Studies,2021,8(2):51-59. [2] 龍慶延,王正勇,潘建,等.基于奇異值分解和引導濾波的低照度圖像增強算法[J].科學技術與工程,2021,21(12):5018-5023. [3] 張賢達.矩陣分析與應用[M].北京:清華大學出版社,2008. [4] LIOYDN.TREFETHEN,陸金甫,關治,譯.數值線性代數——圖靈數學統計學叢書[M].北京:人民郵電出版社,2006. [5] 吳俊政.一種基于奇異值分解的圖像壓縮方法[J].計算機與數字工程,2009,37(5):136-138. [6] 沈丹萍.基于奇異值分解的多尺度變換域圖像細化算法[J].山東農業大學學報(自然科學版),2020,51(2):262-265. [7] 張曉鋒,賈曉強.基于奇異值分解的數字圖像壓縮技術研究[J].電子設計工程,2017,25(19):179-182,186. [8] 張帥,董亞芬.基于奇異值分解的數字圖像壓縮及重構研究[J].信息技術與信息化,2017(S1):112-115. 收稿日期:2022-02-25 基金項目:貴陽學院2020年大學生創新創業項目(項目編號:0203008002035,0203008002029),市科技局-李順利GYU-KYZ(2019-2020)PT06-04 (項目編號:K1930000701225) 作者簡介:李順利(1982—),男,山東濟寧人,博士研究生,副教授,主要研究方向為數值圖像處理。