基于自适应滤波器和小波分析的奇异值分解图像压缩
摘要
根据奇异值分解的数学原理和矩阵特点,设计基于奇异值分解的图像压缩算法,探索算法的图像压缩效果。同时针对设计出来的奇异值分解的图像压缩算法进行性能分析与研究,发现可以通过自适应中值滤波进行图像优化,增强图像的视觉清晰度;还可以在对图像进行小波变换,从而进行图像频域提取,达到小波分解的效果。利用小波分解后的图像数据再进行基于奇异值分解的图像压缩,大大改善了图像的压缩性能。
自适应滤波、小波分解、奇异值分解的原理
自适应滤波器:
由于滤波器开发者的设计思路不同,可在自适应滤波器中运用的算法有很多种,目前使用较多的算法有最小均方误差法和递推最小二乘法。本次实验中主要使用递推最小二乘法。
递推最小二乘法的基本原理是尽可能每时每刻都对输入有用的数据重估所得到的平法误差的加权总和尽可能的小,取得最优化的最小值。这一点就使得递推最小二乘法在数字图像处理的精确程度上要优于最小均方误差算法,其收敛性得到了大幅度的提升,最终图像质量也得到了显著提升。但是,递推最小二乘法也同样存在一些不足之处,优于递推最小二乘法的运算较为繁琐,使得其运算量大幅度的增加,数字图像的处理速度降低,处理所需要的时间大大增加,这就在一定程度上降低了自适应滤波器的数字图像处理效率,且滤波器阶数较大时,递推最小二乘法的运算难以得到期望结果。递推最小二乘法的运算过程以来数据总体的样本数,样本数越多,计算结果约为精确,但是,当样本数不足时,将难以得到最优化的结果。
小波分解:
小波变换具有多尺度分析能力,可以将图像分解到不同分辨率上进行处理。图像经小波变换后,每一分辨率的小波系数均由一个低频子代(LL)和水平(LH)、垂直(HL)和对角(HH)3个方向的高频子代组成。小波分解只对低频子代进行再分解而保持高频子代不变,因此图像经过J层小波分解后,会产生3J+1个子代,不同子代表示图像不同频率信息,如下图所示:
奇异值分解
奇异值分解(SVD)是线性代数中一种重要的矩阵分解,奇异值分解则是特征分解在任意矩阵的推广。矩阵的奇异值分解变换是一种正交变换,它可以将矩阵对角化。
MATLAB代码实现
RAMF函数(自适应中值滤波函数):
function f = RAMF(img) %RAMF函数(自适应中值滤波函数):
[Im,In] = size(img);
nmin = 3;
nmax = 9;
Imf = img;
I_ex = [zeros((nmax-1)/2,In+(nmax-1));zeros(Im,(nmax-1)/2),img,zeros(Im,(nmax-1)/2);zeros((nmax-1)/2,In+(nmax-1))];
for x = 1:Im
for y = 1:In
for n = nmin:2:nmax
Sxy = I_ex(x+(nmax-1)/2-(n-1)/2:x+(nmax-1)/2+(n-1)/2,y+(nmax-1)/2-(n-1)/2:y+(nmax-1)/2+(n-1)/2);
Smax = max(max(Sxy));%求出窗口内像素的最大值
Smin = min(min(Sxy));%求出窗口内像素的最小值
Smed = median(median(Sxy));%求出窗口内像素的中值
%判断中值是否是噪声点
if Smed > Smin && Smed < Smax
%若中值既大于最小值又小于最大值,则不是
%是,则退出该if语句,增大窗口尺寸,再次判断
%不是,则判断该点的原值是不是噪声点
if Imf(x,y) <= Smin || Imf(x,y)