張繼龍 曹石
摘要:隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,矩陣分解尤其是矩陣奇異值分解在圖像處理、信號處理以及神經(jīng)網(wǎng)絡(luò)等領(lǐng)域有著廣泛應(yīng)用。針對圖像處理問題,文章首先給出了奇異值分解的基本理論,隨后分別介紹了奇異值分解應(yīng)用于圖像壓縮及數(shù)字水印技術(shù)的基本原理并進(jìn)行Matlab應(yīng)用實現(xiàn),最后構(gòu)建了數(shù)據(jù)分析模型并進(jìn)行了數(shù)值實驗綜合分析,將圖像處理的幾類應(yīng)用結(jié)合實現(xiàn)了綜合性的圖像處理程序。
關(guān)鍵詞:矩陣分解;奇異值分解;圖像壓縮;低秩逼近;數(shù)字水印
中圖分類號:TP18? ? ? ? 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2023)31-0001-04
開放科學(xué)(資源服務(wù))標(biāo)識碼(OSID) :
0 引言
奇異值分解是特征分解在任意矩陣上的推廣,在互聯(lián)網(wǎng)技術(shù)發(fā)展后廣泛運用于解決各類實際問題,其中圖像處理問題是奇異值分解最具有代表性的應(yīng)用場景之一。目前使用的圖像都是以數(shù)據(jù)形式進(jìn)行存儲,對數(shù)據(jù)存儲的高要求使得在盡可能保持圖像清晰度的前提下減少圖像存儲空間,具有一定應(yīng)用價值,而使用低秩逼近的方法進(jìn)行圖像壓縮是一種在獲得相同壓縮比的前提下誤差較小的方法,能夠取得不錯的效果。
然而本方法在實際應(yīng)用中依舊需要進(jìn)一步獲取更多信息來平衡圖像清晰度和數(shù)據(jù)大小,數(shù)字水印是一種在圖像中嵌入信息的算法,同樣可以使用奇異值分解來進(jìn)行處理。添加數(shù)字水印后進(jìn)行圖像壓縮,之后再將水印提取,通過對比壓縮前后水印的相似度可以用于評估壓縮圖像后圖像信息的損失程度,以此來得到代表圖像清晰度的數(shù)據(jù)。在此基礎(chǔ)上,通過壓縮比以及圖像清晰度構(gòu)建模型評估壓縮質(zhì)量,以此在低秩逼近圖像壓縮算法的基礎(chǔ)上,進(jìn)一步得到更具備實用性的圖像壓縮結(jié)果。
綜上所述,文章在利用奇異值分解低秩逼近圖像壓縮的基礎(chǔ)上,進(jìn)一步結(jié)合數(shù)字水印技術(shù)來構(gòu)建評估模型進(jìn)行數(shù)據(jù)分析論證,得到了一種更具有實用價值的圖像壓縮處理方法,細(xì)化了圖像壓縮程序的應(yīng)用實現(xiàn),對該方法的應(yīng)用進(jìn)行了進(jìn)一步的深入研究。
1 奇異值分解基本理論
1.1 奇異值分解定義[1-2]
定義矩陣的奇異值,對[A∈Cm×nr],記[AAH]的特征值為[λi],[AHA]的特征值為[μi],可以通過直接計算得到[δi=λi=μi],[δi]稱為[A]的奇異值。
對[A]進(jìn)行奇異值分解:記[δ1≥δ2≥…≥δr>0]是[A]的r個正奇異值,則存在使得[A=UDVH=UΔ000VH]成立的m階酉矩陣[U]和n階酉矩陣[V],式子中的[Δ=diagδ1,δ2,...,δr]為正奇異值為對角元的對角陣。
1.2 奇異值分解求解步驟
1) 通過求矩陣[AAH]的特征值[λi],計算對應(yīng)的奇異值[δi],得到[Δ=diagδ1,δ2,...,δr],計算[AAH]的特征值及特征向量,標(biāo)準(zhǔn)正交化后得左奇異矩陣[U]。
2) 由[A=UDVH]得[VH=D-1UHA],此即[V=AHUD-H]。
3) 奇異值分解的形式為[A=UDVH]。
2 基于奇異值分解的圖像壓縮原理
2.1 利用低秩逼近的圖像壓縮方法
設(shè)[A∈Cm×nr],[A]的奇異值分解形式為[A=UDVH],可以將分解形式改寫為:[A=UD1+D2+...+DrVH],其中[Dk=Δk000,Δk=diag(0,...,δk,...0)],這樣就將[A]分解為了r個秩為一的矩陣之和,設(shè)[Ak=UD1+...+DkVH],則[Ak]是矩陣[A]的低秩逼近,對于圖像來說,只需要將其圖像信息讀取為數(shù)據(jù)矩陣就可以通過低秩逼近來進(jìn)行壓縮。
由矩陣[A]的Frobenius范數(shù)(F-范數(shù))的酉不變性,[A]的F-范數(shù)[||A||F=||UDVH||F=||D||F=δ21+δ22+...+δ2r],因此該方法可以表示為如下最小二乘問題:[minrankB=k||A-B||F=||A-Ak||F=δ2k+1+...+δ2r],由于矩陣奇異值[δ1≥δ2≥...≥δr>0],而往往其中前10%甚至更少的奇異值之和就能達(dá)到總和的90%以上[3],少量奇異值就可保存較多信息,因此使用該方法進(jìn)行圖像壓縮可以取得較良好的效果。
2.2 通過Matlab實現(xiàn)的算法實例
1) 讀入圖像數(shù)據(jù),對于彩色圖像需要進(jìn)行灰度化處理使其變成矩陣的形式。
將該圖片命名為test.jpg,分辨率為4 160×3 120,首先讀取圖像信息:
A = imread('D:\examset\test.jpg');%將圖像信息存儲為數(shù)據(jù)矩陣A,A為3 120×4 160×3,3代表為彩色圖像
對A進(jìn)行灰度化處理:
A_gray=rgb2gray(A);%經(jīng)過灰度化處理后的A_gray為3 120×4 160的灰度矩陣
[m,n]=size(A_gray);%m為行數(shù),n為列數(shù)
2) 設(shè)置壓縮比[ρ=mnkm+n+1][4],[k]為保留的奇異值個數(shù),[k]越小壓縮比越大,壓縮后占空間大小越小,清晰度也越低。
k1=20;k2=40;k3=60;k4=80;%設(shè)置k值間隔
rho1=m*n/(k1*(m+n+1));rho2=m*n/(k2*(m+n+1));
rho3=m*n/(k3*(m+n+1));rho4=m*n/(k4*(m+n+1));%計算壓縮比
根據(jù)本例設(shè)置的k值以及選取的圖像大小,計算得到的壓縮比分別為rho1=89.130 6,rho2=44.565 3,rho3=29.710 2,rho4=22.282 7。
3) 將灰度化矩陣作奇異值分解,低秩逼近后對灰度矩陣進(jìn)行重構(gòu),讀取壓縮圖像。
A_gray1=double(A_gray);%將灰度矩陣轉(zhuǎn)換為double型
[U,S,V]=svd(A_gray1);%奇異值分解
S1=diag(S);S2=diag(S);S3=diag(S);S4=diag(S);%將奇異值矩陣轉(zhuǎn)化為列向量
S1(k1:end)=0;S2(k2:end)=0;S3(k3:end)=0;S4(k4:end)=0;%截取前k個奇異值
if m >=n%對奇異值矩陣進(jìn)行低秩逼近
S1=[diag(S1);zeros(m-n,n)];S2=[diag(S2);zeros(m-n,n)];
S3=[diag(S3);zeros(m-n,n)];S4=[diag(S4);zeros(m-n,n)];
else
S1=[diag(S1),zeros(m,n-m)];S2=[diag(S2),zeros(m,n-m)];
S3=[diag(S3),zeros(m,n-m)];S4=[diag(S4),zeros(m,n-m)];
end
g1=U*S1*V';g2=U*S2*V';g3=U*S3*V';g4=U*S4*V';%重構(gòu)得到壓縮后的灰度矩陣
g1=uint8(g1);g2=uint8(g2);g3=uint8(g3);g4=uint8(g4);%將矩陣轉(zhuǎn)為可顯示的格式
這樣就完成了對樣例圖像的壓縮實現(xiàn),然而僅憑借主觀判斷是很難對[k]值進(jìn)行取舍的,若[k]值選取較低,雖然壓縮比足夠大,然而壓縮圖像清晰度就可能不足,反之亦然,因此文章將繼續(xù)介紹一種通過添加數(shù)字水印并提取的方法對圖像壓縮質(zhì)量進(jìn)行評估,以完善該算法應(yīng)用的實用性。
3 基于奇異值分解的數(shù)字水印
隨著數(shù)字產(chǎn)品普及、版權(quán)保護(hù)以及加密的要求,奇異值分解被應(yīng)用于向圖片中添加數(shù)字水印[5-6],例如通過提取水印檢查圖像是否因為某些攻擊受損,標(biāo)識圖片信息等,且通過此方法添加的數(shù)字水印不會將圖片原本的信息過多改變,具有很好的隱蔽性。
3.1 數(shù)字水印添加的基本原理
設(shè)[A∈Cm×nr],[A]的奇異值分解形式為:[A=UDVH],添加數(shù)字水印矩陣[B],可以進(jìn)行如下處理:記[Q=B+D],將矩陣[Q]作奇異值分解得:[Q=U1D1VH1],取出奇異值矩陣[D1],重新構(gòu)建添加完數(shù)字水印后的新矩陣[H]:[H=UD1VH][7]。
得到的矩陣[H]就是需要的新矩陣,[H]能保存足夠多的圖像信息是因為對于圖像的數(shù)據(jù)矩陣而言,不僅矩陣[D]保存了圖像信息,左右奇異矩陣[U]和[VH]同樣保存了圖像信息。
3.2 利用Matlab進(jìn)行數(shù)字水印添加實例
以圖像壓縮例子中所使用的圖像做例子,使用圖4作為數(shù)字水印圖像:
B = imread('D:\examset\watermark.jpg');%讀取水印圖像信息
B_gray=rgb2gray(B);%灰度化處理
B_gray=double(B_gray);%轉(zhuǎn)換為可計算格式
Q=S+B_gray;
[U1,W,V1]=svd(Q);
H=U*W*V';%將數(shù)字水印添加入圖2的灰度圖像中
這樣添加的數(shù)字水印可以通過對添加過程取逆的方法重新提取出來,若按照文章介紹的圖像壓縮方法將添加數(shù)字水印后的矩陣進(jìn)行壓縮,則按照下列方法提取出的數(shù)字水印矩陣會與原水印矩陣有一些差異,這個差異與壓縮比是正相關(guān)的:
Q1=U1*W1*V1';Q2=U1*W2*V1';Q3=U1*W3*V1';Q4=U1*W4*V1';
B1=Q1-S;B2=Q2-S;B3=Q3-S;B4=Q4-S;%這些矩陣是根據(jù)上節(jié)介紹的算法進(jìn)行壓縮的
因此,可以通過計算壓縮后提取的B1、B2、B3、B4等矩陣與原水印矩陣B的相似度來評估壓縮后圖像與原圖像的相似程度。
4 圖像壓縮質(zhì)量評估數(shù)值實驗
4.1 評估模型
圖像質(zhì)量評估的方法可以通過許多途徑實現(xiàn)[8],文章通過數(shù)字水印將構(gòu)建一個評估模型來評價圖像壓縮效果,模型由以下幾部分組成:
1) 相似度[NC=trB1BHtrBBH],壓縮后提取的數(shù)字水印矩陣為[B1],原數(shù)字水印矩陣為[B]。
2) 壓縮比[ρ=mnkm+n+1]。
3) 評估分?jǐn)?shù)[final_score=ρ×NCweight_NC],在本評估模型中取[weight_NC=60]時所得到的數(shù)據(jù)進(jìn)行分析。
如圖6所示,根據(jù)本模型構(gòu)造得到的評分變化曲線具有良好的性質(zhì),在最佳壓縮比附近區(qū)域變化較緩,因此可以通過平均值法得到對絕大多數(shù)相同像素大小圖像都較優(yōu)秀的壓縮比選取結(jié)果。
4.2 評估數(shù)值結(jié)果
本節(jié)匯總了所使用的圖像所得的所有數(shù)據(jù),采用如下方法進(jìn)行數(shù)據(jù)分析:
1) 通過統(tǒng)計相同[k]值時的平均評分及其相似度數(shù)據(jù)作為分析依據(jù),選取普遍更適用的結(jié)果。
2) 由于所采用數(shù)據(jù)均在同一相似度權(quán)重進(jìn)行采集,因此根據(jù)數(shù)據(jù)分析結(jié)果,本節(jié)將就其應(yīng)用需求不同進(jìn)行分支討論。
表1為根據(jù)總共8組數(shù)據(jù)得到的綜合性結(jié)果,數(shù)據(jù)變化曲線將由折線圖展示,根據(jù)綜合統(tǒng)計,最佳[k]值選取在80可以取得綜合最優(yōu)的效果。
若改變權(quán)重,對于相同大小的圖像所取到的最佳[k]值也會發(fā)生相應(yīng)改變,文章分析得到的最佳[k]值可參考圖3的壓縮結(jié)果,若采取更高的清晰度權(quán)重,則最佳[k]值會相應(yīng)變大,若需要更高的壓縮比,最佳[k]值就相應(yīng)變小??梢愿鶕?jù)實際應(yīng)用需求進(jìn)行適當(dāng)調(diào)整,對于固定大小的圖像進(jìn)行處理時,可以通過在最佳[k]值附近進(jìn)行評估,對于文章所使用的圖像數(shù)據(jù)庫,可以進(jìn)行如下細(xì)化,在[k=80]附近進(jìn)行進(jìn)一步評估,平均數(shù)據(jù)如表2所示,可以在此基礎(chǔ)上再進(jìn)行細(xì)化,本文不再展示。
最終結(jié)果應(yīng)該取在[k=85]和[k=70]附近,可以根據(jù)對于圖像清晰度以及壓縮空間的具體應(yīng)用傾向進(jìn)行選擇,而對于不同像素大小的圖像,繼續(xù)擴(kuò)大分析圖像壓縮數(shù)據(jù)的數(shù)據(jù)庫都可以按本方法得到一個能夠普遍應(yīng)用的最佳[k]值,只需要在程序中優(yōu)先對圖像大小進(jìn)行判斷與分類即可,因此本程序具有良好的可拓展性,已經(jīng)初步具備可實際應(yīng)用的條件。
5 結(jié)論與展望
文章系統(tǒng)性地介紹了適用矩陣奇異值的圖像壓縮及數(shù)字水印算法原理并將其結(jié)合,通過Matlab作為工具予以實現(xiàn),創(chuàng)新性地使用了數(shù)字水印提取作為相似度標(biāo)準(zhǔn),利用評估模型得到了所使用圖像同等像素大小適用壓縮比并進(jìn)行細(xì)化研究,最終完成了具有初步實用性的圖像壓縮工具。
該方法還可以進(jìn)行擴(kuò)展,通過應(yīng)用于更多大小的圖像數(shù)據(jù)庫來豐富各種處理情況下的最佳壓縮比選取,也可以通過進(jìn)一步縮小壓縮比取值間隔來得到更精確的結(jié)果,對于相關(guān)內(nèi)容的學(xué)習(xí)者來說,通過文章獲取有關(guān)矩陣奇異值分解應(yīng)用實現(xiàn)的思路應(yīng)當(dāng)是有一些幫助的。
參考文獻(xiàn):
[1] 張紹飛,趙迪.矩陣論教程[M].2版.北京:機(jī)械工業(yè)出版社,2012.
[2] 史榮昌,魏豐.矩陣分析[M].3版.北京:北京理工大學(xué)出版社,2010.
[3] 李順利,姚廷富,余萍,等.矩陣的奇異值分解在圖像壓縮中應(yīng)用[J].電腦知識與技術(shù),2022,18(19):1-2,8.
[4] 張帥,董亞芬.基于奇異值分解的數(shù)字圖像壓縮及重構(gòu)研究[J].信息技術(shù)與信息化,2017(S1):112-115.
[5] BARNI M,BARTOLINI F,CAPPELLINI V,et al.A DCT-domain system for robust image watermarking[J].Signal Processing,1998,66(3):357-372.
[6] YEN J C.Watermark embedded in permuted domain[J].Electronics Letters,2001,37(2):80.
[7] 雷超陽,鐘一青.奇異值分解算法在數(shù)字水印技術(shù)中的應(yīng)用[J].長沙交通學(xué)院學(xué)報,2008,24(4):78-82.
[8] 王冠軍,幸濤,沈靜.基于奇異值分解與自然圖像統(tǒng)計的無參考圖像質(zhì)量評價方法[J].信息技術(shù)與信息化,2022(1):122-125.
【通聯(lián)編輯:唐一東】