%
x=load('xxx');
% 对图像进行N层分解
[c,l] = wavedec2(x,N,'sym4) ;
c_size = size(x);
% 弱化不重要的分解系数,增强重要的分解系数,这里假设阈值选取为k
for i=1:c_size(2)
if (c(i)>k)
c(i)=2c(i); %这里假设增强两倍
else
c(i)=05c(i)
end
end
%重构图像
x1=waverec2(c,l,'sym4');
I=imread('lena_colorjpg'); nbc=size(I,1); X = im2double(I); % 产生噪声图像 x=imnoise(X,'gaussian',0,0005); % 使用 db2 执行图像的2层小波分解 wname='db2';lev=2; [c,l]=wavedec2(x,lev,wname); sigma_s=0054779; % 图像降噪时,使用wbmpe
1用matlab实现图像压缩时,如何将仿真
图像压缩是当今信息时代迫切需求的一门图像处理技术,它极大的减少了图像的数据量,为图像的存储,传输提供了方便。
小波变换,是一种广泛用于图像压缩的方法。它能让图像按不同的分辨率分析。
根据Mallat算法的思想,图像能分解成一个轮廓信号(低频子图)和水平,垂直,对角线三个方向上的细节信号(高频子图)。而轮廓信号又可以进一步分解。
而图像的主要能量部分是低频部分,而且人眼视觉系统对低频部分更为敏感,所以可以对低频部分采用较低压缩比;对高频部分采用较大压缩比来进行压缩。 本文提出的是一种结合小波变换,DCT变换和矢量量化的压缩方法。
根据人眼的视觉特性,首先对图像进行小波分解,然后,对低频分量进行压缩比不大的DCT变换;对不同方向不同分辨率的高频分量进行不同码字大小的矢量量化编码,然后对反变换和解码后的系数进行小波重构。矢量量化过程中的码书设计采用的是LBG算法。
这样,根据对图像质量的不同要求,我们可以改变小波分解的层数,来得到不同压缩比的图像。本篇论文只对小波分解一层和两层后压缩进行了仿真和分析,表明该方案结合了各种压缩方法的优点,在满足图像质量的同时能得到较大的压缩比。
目前,在包装装潢设计中常用的图形处理软件有Pho-toshop,CorelDraw,AutoCAD等。但是这些软件中很少涉及到对图像进行压缩处理,以满足图像进行传输和储存的需要。
基于这一点考虑,在此尝试着用MATLAB编程来处理包装装潢图像的压缩,实现包装与计算机的紧密结合。 1 MATLAB MATLAB是MathWorks公司推出的一套高性能的数值计算和可视化软件,它集数值分析、矩阵运算、信号处理和图像显示于一体,它附带的小波分析工具箱功能强大,可以完成小波分析的绝大部分工作。
MATLAB工具箱的出现避免了程序设计中的重复性劳动,缩短了开发周期,降低了成本,因而受到工科院校师生和研究人员的青睐。 在介绍利用MATLAB小波工具压缩图像的文献中,总是将真彩色RGB图像转换为灰度级索引图像进行处理经过这种处理以后,图像的存储数据能得到一定的压缩,但由压缩后的数据难以恢复成理想的彩色图像。
文中用MATLAB中有关函数处理图像压缩,而且由压缩后的数据可以还原出图像实验结果表明,还原出的图像效果是理想的。文中主要以lena图像的处理为例,对它进行二进小波多层分解后,将低频和高频近似的系数矩阵作相应的处理,来研究用MATLAB中的小波工具箱压缩图像的方法。
2 图像压缩方法 在实际应用中,首先需要从图像文件中读取图像数据MATLAB使用imreed()函数完这一任务例如,在电脑D盘中有一彩色图像文件picljps,则可由下述语句读取: X=imread(′D:\picl′); MATLAB图像处理工具箱支持4种基本图像类型:索引图像、灰度图像、二进制图像和RGB图像MATLAB直接从图像文件中读取的图像为RGB图像它存储在三维数组中。这个三维数组有3个面,依次对应子红(Red)、绿(Green)、蓝(Blue)3种颜色,而面中的数据则分别是这3种颜色的强度值,面中的元素对应于图像中的像素点。
索引图像数据包括图像矩阵X与颜色图数组map,其中颜色图map是按图像中颜色值进行排序后的数组。对于每个像素,图像矩阵X包含一个值,这个值就是颜色图数组map中的索引。
颜色图map为m3双精度矩阵,各行分别指定红、绿、蓝(R、G、B)单色值,map=〔RGB〕,R、C、B为值域为〔0,1〕的实数值,m为索引图像包含的像素个数然后可根据情况采用不同的小波函数,进行索引图像的分解压缩。这里对上面产生的索引图像X用dbl小波进行2层分解。
〔c,l〕=wavedec2(X,2,′dbl′)。 在这里,一个索引图像作小波分解后,可得到一系列不同分辨率的子图像,不同分辨率的子图像对应的频率是不相同的高分辨率(即高频细节)子图像上大部分点的数值接近于0,越是高频这种现象越明显对一个图像来说,表现一个图像最主要的部分是低频(即近似)部分。
多层小波分解的所有成分系数均保存在向量c中,低频近似与高频细节的系数需从向量C中提取。MATLAB分别使用appcoet2()和detcoef2()函数来完成这一工作。
这种方法是对低频和高频部分进行处理,因而提取低频和高频近似系数。 cAl=appcoef2(c,1,′dbl,′1);cH1=detcoef2(′h′,c,1,1); cDl=detcoef2(′d′,c,l,1);cVl=detcoef2(′v′,c,l,1)。
matlab实现离散余弦变换压缩(JPEG压缩原理) JPEG图像压缩算法: 输入图像被分成88或1616的小块,然后对每一小块进行二维DCT(离散余弦变换)变换,变换后的系数量化、编码并传输; JPEG文件解码量化了的DCT系数,对每一块计算二维逆DCT变换,最后把结果块拼接成一个完整的图像。在DCT变换后舍弃那些不严重影响图像重构的接近0的系数。
DCT变换的特点是变换后图像大部分能量集中在左上角,因为左上放映原图像低频部分数据,右下反映原图像高频部分数据。而图像的能量通常集中在低频部分。
实例程序: function Jpeg I=imread('D:\MATLAB7\toolbox\images\imdemos\cameramantif'); %该在安装matlab的目录中找,原图为灰度图象 。
2使用MATLAB图像压缩怎么做
I = imread('cameramantif'); % 输入图像
I = im2double(I); % 数据类型转换
T = dctmtx(8); % 计算二维离散DCT矩阵
dct = @(x)T x T'; % 设置函数句柄
B = blkproc(I,[8 8],dct); % 图像块处理
mask = [1 1 1 1 0 0 0 0 % 掩膜
1 1 1 0 0 0 0 0
1 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0];
B2 = blkproc(B,[8 8],@(x)mask x); % 图像块处理
invdct = @(x)T' x T; % 设置函数句柄
I2 = blkproc(B2,[8 8],invdct); % 图像块处理
imshow(I), figure, imshow(I2) % 显示原始图像和压缩重构图像
3用matlab把11张tif做成一个连续动画
使用如下代码方式可以达到你想要的效果。
clear;
clc;
for i=2:50
c=strcat('a',num2str(i));%这里可以根据自己名字儿作相应的修改
c=strcat(c,'bmp');
I=imread(c);
% I=rgb2gray(I)
figure(1);
imshow(I);
end
的保存方式如:a21bmp,这样可以实现你的汽车动画。如果想要使用你的汽车做的话,请把汽车发给我,我帮你看看。
MATLAB 信号处理常用函数
一、 波形产生
函数名 功能
sawtooth 产生锯齿波或三角波Sinc 产生sinc或函数sin(pit)/(pit)
Square 产生方波
Diric 产生Dirichlet或周期sinc函数
二、 滤波器分析和实现
函数名 功能
Abs 求绝对值(幅值)Freqs 模拟滤波器频率响应
Angle 求相角
Freqspace 频率响应中的频率间隔
Conv 求卷积
Freqz 数字滤波器频率响应
Fftfilt 重叠相加法FFT滤波器实现
Grpdelay 平均滤波器延迟(群延迟)
Filter 直接滤波器实现
Impz 数字滤波器的冲激响应
Filtfilt 零相位数字滤波
Zplane 离散系统零极点图
Filtie Filter 函数初始条件选择
三、 线性系统变换
函数名 功能
Convmtx 卷积矩阵Ss2tf 变系统状态空间形式为传递函数形式
Ploy2rc 从多项式系数中计算反射系数
Ss2zp 变系统状态空间形式为零极点增益形式
Rc2ploy 从反射系数中计算多项式系数
Tf2ss 变系统传递函数形式为状态空间形式
Residuez Z变换部分分式展开或留数计算
Tf2zp 变系统传递函数形式为零极点增益形式
Sos2ss 变系统二阶分割形式为状态空间形式
Zp2sos 变系统零极点形式为二阶分割形式
Sos2zp 变系统二阶分割形式为零极点增益形式
Zp2tf 变系统零极点增益形式为传递函数形式
Ss2sos 变系统状态空间形式为二阶分割形式
四、 IIR滤波器设计
Besself Bessel(贝塞尔)模拟滤波器设计Cheby2 Chebyshev(切比雪夫)II型模拟滤波器设计
Butter Butterworth(巴特沃思)模拟滤波器设计
Ellip 椭圆模拟滤波器设计
Cheby1 Chebyshev(切比雪夫)I 型模拟滤波器设计
Yulewalk 递归数字滤波器设计
五、 IIR滤波器阶选择
Buttord Butterworth(巴特沃思)滤波器阶的选择Cheb2ord Chebyshev(切比雪夫)II型滤波器阶的选择
Ehebord Chebyshev(切比雪夫)I 型滤波器阶的选择
Clipord 椭圆滤波器设计阶的选择 模拟原型滤波器设计
Besselap Bessel模拟低通滤波器原型
Cheb2ap Chebyshev(切比雪夫)II型低通滤波器原型
Buttap Butterworth(巴特沃思)模拟低通滤波器原型
Ellipap 椭圆模拟低通滤波器原型
Cheb1ap Chebyshev(切比雪夫)I 型低通滤波器原型
六、 频率变换
Lp2bp 低通到带通模拟滤波器转换Lp2bs 低通到带阻模拟滤波器变换
Lp2hp 低通到高通模拟滤波器变换
Lp2lp 低通到低通模拟滤波器转换
七、 滤波器离散化
Blinear 双线性变换Impinvar 冲激响应不变法
八、 FIR滤波器设计
Fir1 基于窗函数的 FIR 滤波器设计—标准响应Intfilt 内插FIR滤波器设计
Fir2 基于窗函数的 FIR 滤波器设计—任意响应
Remez Firls 最小二乘FIR滤波器设计
Remezord Parks-McCellan 最优 FIR 滤波器 j阶估计
九、 窗函数
Boxcar 矩形窗Hanning Hanning(汉宁)窗
Triang 三角窗
Blackman Blackman(布莱克曼)窗
Bartlett Bartlett(巴特得特)窗
Chebwin Chebyshev(切比雪夫)窗
Hamming Hamming(汉明)窗
Kaiser Kaiser(凯泽)窗
十、 变换
Ctz 线性调频Z变换Fft 一维快速傅里叶变换
Dct 离散余弦变换
Ifft 一维快速傅里叶逆变换
Idct 逆离散余弦变换
Fftshift 重新排列 fft的输出
Dftmtx 离散傅里叶变换矩阵
Hilbert Hilbert(希尔伯特)变换
十一、 统计信号处理
Cov 协方差矩阵Psd 信号功率谱密度(PSD)估计
Xcov 互协方差函数估计
Tfe 从输入输出中估计传递函数
Corrcoef 相关系数矩阵
Periodogram 采用周期图法估计功率谱密度
Xcoor 互相关系数估计
Pwelch 采用 Welch方法估计功率谱密度
Cohere 相关函数平方幅值估计
Rand 生成均匀分布的随机数
Csd 互谱密度估计
Randn 生成正态分布的随机数
十二、 自适应滤波器部分
Adaptfiltlms 最小均方(LMS)自适应算法Adaptfiltrls 递推最小二乘(RLS)自适应算法
Adaptfiltnlms 归一化最小均方(NLMS)自适应算法
十三、 时频分析与小波变换部分
Spectrogram 短时傅里叶变换Idwt 单级离散一维小波逆变换
Waveinfo 介绍小波工具箱中所有小波的信息
Wavedec 多级离散一维小波分解
Cwt 连续一维小波变换
Appcoef 一维小波变换近似系数
Dwt 单级离散一维小波变换
Detcoef 一维小波变换细节系数
十四、 二维信号处理
Conv2 二维卷积Xcorr2 二维互相关参数
Fft2 二维快读傅里叶变换
Dwt2 单级离散二维小波变换
Ifft2 二维逆快速傅里叶变换
Idwt2 单级离散二维小波逆变换
Filter2 二维数字滤波器
Waverec2 多级离散二维小波分解
二维离散小波变换的matlab公式是这样编写的,可以直接拷贝到MATLAB上运行:
clear;clc;
%%%%%%%%%%测试图像只能是方形图像,长宽像素一样。
f=imread('Lenabmp');%%读取图像数据,图像只能保存在m文件所在的路径下
d=size(f);
if length(d)>2
f=rgb2gray((f));%%%%%%%%如果是彩色图像则转化为灰度图
end
T=d(1);
SUB_T=T/2;
% 2进行二维小波分解
l=wfilters('db10','l'); % db10(消失矩为10)低通分解滤波器冲击响应(长度为20)
L=T-length(l);
l_zeros=[l,zeros(1,L)]; % 矩阵行数与输入图像一致,为2的整数幂
h=wfilters('db10','h'); % db10(消失矩为10)高通分解滤波器冲击响应(长度为20)
h_zeros=[h,zeros(1,L)]; % 矩阵行数与输入图像一致,为2的整数幂
for i=1:T; % 列变换
row(1:SUB_T,i)=dyaddown( ifft( fft(l_zeros)fft(f(:,i)') ) )'; % 圆周卷积<->FFT
row(SUB_T+1:T,i)=dyaddown( ifft( fft(h_zeros)fft(f(:,i)') ) )'; % 圆周卷积<->FFT
end;
for j=1:T; % 行变换
line(j,1:SUB_T)=dyaddown( ifft( fft(l_zeros)fft(row(j,:)) ) ); % 圆周卷积<->FFT
line(j,SUB_T+1:T)=dyaddown( ifft( fft(h_zeros)fft(row(j,:)) ) ); % 圆周卷积<->FFT
end;
decompose_pic=line; % 分解矩阵
% 图像分为四块
lt_pic=decompose_pic(1:SUB_T,1:SUB_T); % 在矩阵左上方为低频分量--fi(x)fi(y)
rt_pic=decompose_pic(1:SUB_T,SUB_T+1:T); % 矩阵右上为--fi(x)psi(y)
lb_pic=decompose_pic(SUB_T+1:T,1:SUB_T); % 矩阵左下为--psi(x)fi(y)
rb_pic=decompose_pic(SUB_T+1:T,SUB_T+1:T); % 右下方为高频分量--psi(x)psi(y)
% 3分解结果显示
figure(1);
subplot(2,1,1);
imshow(f,[]); % 原始图像
title('original pic');
subplot(2,1,2);
image(abs(decompose_pic)); % 分解后图像
title('decomposed pic');
figure(2);
% colormap(map);
subplot(2,2,1);
imshow(abs(lt_pic),[]); % 左上方为低频分量--fi(x)fi(y)
title('\Phi(x)\Phi(y)');
subplot(2,2,2);
imshow(abs(rt_pic),[]); % 矩阵右上为--fi(x)psi(y)
title('\Phi(x)\Psi(y)');
subplot(2,2,3);
imshow(abs(lb_pic),[]); % 矩阵左下为--psi(x)fi(y)
title('\Psi(x)\Phi(y)');
subplot(2,2,4);
imshow(abs(rb_pic),[]); % 右下方为高频分量--psi(x)psi(y)
title('\Psi(x)\Psi(y)');
% 5重构源图像及结果显示
% construct_pic=decompose_matrix'decompose_picdecompose_matrix;
l_re=l_zeros(end:-1:1); % 重构低通滤波
l_r=circshift(l_re',1)'; % 位置调整
h_re=h_zeros(end:-1:1); % 重构高通滤波
h_r=circshift(h_re',1)'; % 位置调整
top_pic=[lt_pic,rt_pic]; % 图像上半部分
t=0;
for i=1:T; % 行插值低频
if (mod(i,2)==0)
topll(i,:)=top_pic(t,:); % 偶数行保持
else
t=t+1;
topll(i,:)=zeros(1,T); % 奇数行为零
end
end;
for i=1:T; % 列变换
topcl_re(:,i)=ifft( fft(l_r)fft(topll(:,i)') )'; % 圆周卷积<->FFT
end;
bottom_pic=[lb_pic,rb_pic]; % 图像下半部分
t=0;
for i=1:T; % 行插值高频
if (mod(i,2)==0)
bottomlh(i,:)=bottom_pic(t,:); % 偶数行保持
else
bottomlh(i,:)=zeros(1,T); % 奇数行为零
t=t+1;
end
end
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)