多媒体实验报告Word文档下载推荐.docx
《多媒体实验报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《多媒体实验报告Word文档下载推荐.docx(22页珍藏版)》请在冰豆网上搜索。
![多媒体实验报告Word文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2022-10/11/b4e79269-bf8e-4a16-9982-25a0dde1b915/b4e79269-bf8e-4a16-9982-25a0dde1b9151.gif)
2、放大一倍代码
I=imread('
J=imresize(I1,1.25);
%利用Imresize函数将图片放大
imshow(I1),title('
原图像'
)
figure,imshow(J),title('
放大后的图像'
3、放大两倍的代码
只要将J=imresize(I1,1.25);
中的1换成2
五、调试过程
.m文件名以数字开头导致运行失败,出现下图,重命名后可以运行。
六、实验结果
原图
(1)显示灰度图
(2)放大一倍后的灰度图
(3)放大两倍后的灰度图
七、总结
此次上机让我基本熟悉了MATLAB集成环境、编程以及图像处理工具箱、MATLAB语言的基本用法;
为以后进一步探索MATLAB奠定了基础。
英文文本的Huffman编码压缩
了解Huffman编码的特点,掌握Huffman编码基本原理及编码算法的设计与程序实现。
以任意选择一个纯英文文本为数据,设计出Huffman编码的压缩和解压缩算法,并写出程序予以实现。
霍夫曼(Huffman)编码是一种统计编码,属于无损压缩编码。
霍夫曼编码的码长是变化的,对于出现频率高的信息,编码的长度较短;
而对于出现频率低的信息,编码长度较长。
这样,处理全部信息的总码长一定小于实际信息的符号长度。
程序调用到的函数:
1、Huffmandict函数
该函数的调用形式是[dict,avglen]=huffmandict(c,d)其实现的功能是:
使用数组C及其概率数组d进行Huffman编码,编码后产生一个编码词典dict,以及平均码长avglen。
2、huffmanenco函数
该函数的调用形式是sing_encoded=huffmanenco(x,dict)其实现的功能是:
利用上面Huffmandict函数中产生的编码词典dict对x来编码,其结果存放在sing_encoded中.
3、huffmandeco函数
该函数的调用形式是dsing=huffmandeco(sing_encoded,dict)其实现的功能是:
利用上面Huffmandict函数中产生的编码词典dict对sing_encoded来解码,其结果存放在dsing中
在“sing_encoded=huffmanenco(x,dict)dsing=huffmandeco(sing_encoded,dict)”这2句语句后加了分号以至于结果没有全显示出来,去掉分号后问题解决。
通过此次试验,本人了解了Huffman编码的特点,能够运用Huffman编码的基本原理及编码算法的来设计与实现程序。
收获颇多,为以后更进一步学习奠定了基础。
附录:
(代码)
clear;
x=input('
输入一串字符串'
'
s'
k=length(x);
t1=1;
a(t1:
k)=0;
b(t1:
fori=1:
k
kk=findstr(a,x(i));
ifisempty(kk)
a(t1)=x(i);
b(t1)=b(t1)+1;
t1=t1+1;
else
t2=kk
(1);
b(t2)=b(t2)+1;
end
end
fori=1:
t1-1
c(i)=a(i);
d(i)=b(i)/k;
[dict,avglen]=huffmandict(c,d)
sing_encoded=huffmanenco(x,dict)
dsing=huffmandeco(sing_encoded,dict)
x=char(dsing)
声音信号的获取与分析
熟悉MATLAB集成环境、编程以及声音处理函数、MATLAB语言的基本用法,了解声音信号的获取手段;
掌握语音信号的傅立叶变换。
利用Windows下的录音机,录制一段自己的话音,时间在1s内。
或者网上下载一段格式为.wav的音乐。
在MATLAB编程环境软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。
并对声音信号FFT变换、波形显示等操作来进行频谱分析,以及回放该声音文件。
1、函数wavread对语音信号进行采样
[y,fs,nbits]=wavread('
insert.wav'
fsnbits
2、对声音信号FFT变换、波形显示进行频谱分析
I1=double(y);
fftI=fft(I1);
%离散傅立叶变换
subplot(2,1,1)
plot(y);
subplot(2,1,2);
plot(fftI)
sfftI=fftshift(fftI);
%直流分量移到频谱中心
RR=real(sfftI);
%取傅立叶变换的实部
II=imag(sfftI);
%取傅立叶变换的虚部
A=sqrt(RR.^2+II.^2);
%计算频谱幅值
A=(A-min(min(A)))/(max(max(A))-min(min(A)))*255;
%归一化
figure
plot(A);
%显示原音频的频谱
xp=angle(sfftI);
%arctag(II/RR)
3、回放该声音文件
plot(xp);
sound(fftI)
%surf(x,y,A)%或者surf
调试无误,程序正常运行。
图1声音波形和信号变换
图2原图像的频谱
图3傅利叶变换相位角频谱
采样频率采样点数
经过此次实验,我对于MATLAB集成环境、编程以及声音处理函数、MATLAB语言的基本用法有了一定的了解,懂得了声音信号的获取手段;
掌握了语音信号的傅立叶变换。
收获了不少经验和知识,让我更熟悉了MATLAB的构建。
附录代码:
%读入原音频文件
fs
nbits
图像压缩编码程序设计
本实验为设计性实验,其目的是理解有损压缩的概念,特别是通过K-L变换或DCT变换,掌握压缩编码的基本原理、算法,并通过编程给予实现,对原始图像数据和解压后的图像数据进行失真估计,了解压缩性能及其重建效果的影响、作用,给出适当的理论分析。
本实验是在根据图像压缩基本原理的基础上,独立设计图像的有损压缩编码算法,并在MATLAB编程环境中编程实现。
其要求是:
1)选择一种有损压缩编码算法(K-L变换或DCT变换)对一幅数字图像进行压缩编码,计算出压缩率,并显示编码前图像。
2)对编码后的数据进行解压,并显示解压后图像。
3)改变算法参数对原始图像数据和解压后的图像数据进行失真估计。
4)通过改变算法参数(比如改变图像编码的子图像小块的尺度等)进行算法比较和讨论。
1、读入图像:
clear
lena256rgb.png'
%读入原图像;
R=I(:
:
1);
R1=im2double(R);
%将原图像转为双精度数据类型;
2、进行DCT矩阵变换(重复三次),并显示原图像大小、压缩图像大小、压缩比:
T=dctmtx(8);
%产生二维DCT变换矩阵
L=blkproc(R1,[88],'
P1*x*P2'
T,T'
%计算二维DCT,矩阵T及其转置T’是DCT函数P1*x*P2的参数
Mask=[11100000
11000000
10000000
00000000
00000000];
%二值掩膜,用来压缩DCT系数,只留下DCT系数中左上角的10个
L2=blkproc(L,[88],'
P1.*x'
Mask);
%只保留DCT变换的10个系数
[mn]=size(L2);
J=[mn];
fori=1:
m
value=L2(i,1);
num=1;
forj=2:
n
ifL2(i,j)==value
num=num+1;
J=[Jnumvalue];
value=L2(i,j);
J=[Jnumvalue];
disp('
原图像大小'
whos('
L2'
压缩图像大小:
'
J'
图像的压缩比:
disp(m*n/length(J))
%解压缩
t1=J
(1);
t2=J
(2);
K(1:
t1,1:
t2)=0;
i1=1;
j1=1;
fori=3:
2:
length(J)
c1=J(i);
c2=J(i+1);
forj=1:
c1
K(i1,j1)=c2;
j1=j1+1;
ifj1>
t2
i1=i1+1;
j1=1;
R2=blkproc(K,[8,8],'
T'
T);
%逆DCT,重构图像
G=I(:
2);