李顺利 姚廷富 余萍 李丹
摘要:随着大数据技术的飞速发展,矩阵分解特别是矩阵的奇异值分解(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—),男,山东济宁人,博士研究生,副教授,主要研究方向为数值图像处理。