多媒体技术实验报告
- 格式:doc
- 大小:1.72 MB
- 文档页数:24
福建农林大学实验报告课程名称:多媒体技术姓名:系:专业:年级:学号:指导教师:职称:2012年5 月26 日实验项目列表福建农林大学计算机与信息学院实验报告系:专业:年级:姓名:学号:实验室号__ 计算机号实验时间:指导教师签字:成绩:报告退发(订正、重做)实验名称:灰度图像的像素插值一、实验目的和要求进一步熟悉MATLAB集成环境、编程以及图像处理工具箱、MATLAB语言的基本用法;MATLAB语言中图像数据的读取、显示方法和灰度图像的像素插值的方法。
二、实验内容和原理MATLAB平台上编程,调用MATLAB函数读入灰度位图图像,并通过像素插值将该图像放大1倍、2倍,调用MATLAB函数显示这幅图像。
三、实验环境硬件:计算机软件:Windows 2000和MATLAB编程环境。
四、算法描述及实验步骤1.将JPG文件“1.jpg”拷贝入虚拟机中。
2.在虚拟机中打开图片1.jpg。
3.在Matlab中输入代码读入图片。
4.将JPG文件以I=rgb2gray(D);改为灰度图。
5.通过B=imresize(I,1,'bicubic');将文件放大1倍;C=imresize(I,2,'bicubic'); 将文件放大2倍。
五、调试过程1.打开MATLAB;2.输入代码载入图片并放大;3.在调试过程中出现:图片无法读入,经过路径修改已正确。
图片没有放大,修改错误代码后已修正。
六、实验结果放大结果,没有出错。
七、总结在这次实验中我们通过调用MATLAB函数读入灰度位图图像,将像素插值将该图像放大1倍、2倍,调用MATLAB函数显示这幅图像。
进一步熟悉了MATLAB集成环境、编程以及图像处理工具箱、MATLAB语言的基本用法;MATLAB语言中图像数据的读取、显示方法和灰度图像的像素插值的方法。
附录:源代码:clear;D=imread('1.jpg');I=rgb2gray(D);B=imresize(I,1,'bicubic');C=imresize(I,2,'bicubic'); imshow(I),title('原图像') figure;imshow(B),title('放大1倍的图像') figure;imshow(C),title('放大2倍的图像') figure;福建农林大学计算机与信息学院实验报告系:专业:年级:姓名:学号:实验室号__ 计算机号实验时间:指导教师签字:成绩:报告退发(订正、重做)实验名称:英文文本的Huffman编码压缩一、实验目的和要求了解Huffman编码的特点,掌握Huffman编码基本原理及编码算法的设计与程序实现。
二、实验内容和原理以任意选择一个纯英文文本为数据,设计出Huffman编码的压缩和解压缩算法,并写出程序予以实现。
霍夫曼(Huffman)编码是一种统计编码,属于无损压缩编码。
霍夫曼编码的码长是变化的,对于出现频率高的信息,编码的长度较短;而对于出现频率低的信息,编码长度较长。
这样,处理全部信息的总码长一定小于实际信息的符号长度。
三、实验环境硬件:计算机软件:Windows 2000和MATLAB编程环境。
四、算法描述及实验步骤1.调用U5中的代码输入字符串。
2.利用哈弗曼函数编码输入的字符串。
3.编译输入结果。
4.显示输出结果。
五、调试过程调用U5中的代码输入字符串。
输入字符串:lifeisgood编码程序:出现错误如下:修改错误;输出正确结果。
六、实验结果运行结果没有出错:七、总结通过本次实验我了解Huffman编码的特点,基本掌握了Huffman编码基本原理及编码算法的设计与程序实现。
但是在实现过程中仍然有错误,在老师的指导下已经顺利改正并完成实验。
附录:源代码:clear;x=input('输入一串字符串','s');k=length(x);t1=1;A(t1:k)=0;B(t1:k)=0;for i=1 :kkk=findstr(A,x(i));if isempty(kk)A(t1)=x(i);B(t1)=1;t1=t1+1;elset2=kk(1);B(t2)=B(t2)+1;endendfor i=1:t1-1c(i)=A(i);d(i)=B(i)/k;end[dict,avglen]=huffmandict(c,d);sing_encoded=huffmanenco(x,dict) dsig=huffmandeco(sing_encoded,dict) di=char(dsig)福建农林大学计算机与信息学院实验报告系:专业:年级:姓名:学号:实验室号__ 计算机号实验时间:指导教师签字:成绩:报告退发(订正、重做)实验名称:行程编码一、实验目的和要求熟悉MATLAB语言的基本用法,掌握一维和二维的行程编码的原理。
二、实验内容和原理在MATLAB编程环境软件平台下读入一幅彩色图转化为黑白图像,使用行程编程对该黑白图像进行压缩,算出压缩比并还原该黑白图像。
三、实验环境硬件:计算机软件:Windows 2000和MATLAB编程环境。
四、算法描述及实验步骤1.读入一张彩色图“1.jpg”;2.用imgray = rgb2gray(x);将其转化为灰度图;3.用x1 = im2bw(imgray, 0.7 );将灰度图变成黑白图,0.7为阈值,可以自己调整。
4.使用行程编程对该黑白图像进行压缩;5.算出压缩比并还原该黑白图像。
五、调试过程1.在Matlab中编写程序代码:2.调试运行并输出压缩比等参数:3.调试过程中没有出现错误:输出图像压缩比为:六、实验结果彩色图转换成为黑白图:(原彩色图)算出的压缩比:七、总结通过本次实验我们熟悉了MATLAB语言的基本用法,基本掌握了一维和二维的行程编码的原理。
附录:程序代码:clear;x=imread('1.jpg');imshow(x)imgray = rgb2gray(x); %转化为灰度;x1 = im2bw(imgray, 0.7 );%灰度图变成黑白图,0.7为阈值,可以自己调整figure;imshow(x1);[a b]=size(x1);J=[a b];value=x1(1,1);num=0;for i=1:afor j=1:bif x1(i,j)==valuenum=num+1;elseJ=[J num value];num=1;value=x1(i,j);endendendJ=[J num value ];disp('图像的压缩比:') disp(a*b/length(J))% 解压缩t1=J(1);t2=J(2);K(1:t1,1:t2)=0;i1=1;j1=1;for i=3:2:length(J)c1=J(i);c2=J(i+1);for j=1:c1K(i1,j1)=c2;j1=j1+1;if j1>t2i1=i1+1;j1=1;endendendfigure;imshow(K);福建农林大学计算机与信息学院实验报告系:专业:年级:姓名:学号:实验室号__ 计算机号实验时间:指导教师签字:成绩:报告退发(订正、重做)实验名称:图像压缩编码程序设计一、实验目的和要求本实验为设计性实验,其目的是理解有损压缩的概念,特别是通过K-L变换或DCT变换,掌握压缩编码的基本原理、算法,并通过编程给予实现,对原始图像数据和解压后的图像数据进行失真估计,了解压缩性能及其重建效果的影响、作用,给出适当的理论分析。
二、实验内容和原理本实验是在根据图像压缩基本原理的基础上,独立设计图像的有损压缩编码算法,并在MATLAB编程环境中编程实现。
其要求是:1)选择一种有损压缩编码算法(K-L变换或DCT变换)对一幅数字图像进行压缩编码,计算出压缩率,并显示编码前图像。
2)对编码后的数据进行解压,并显示解压后图像。
3)改变算法参数对原始图像数据和解压后的图像数据进行失真估计。
4),通过改变算法参数(比如改变图像编码的子图像小块的尺度等)进行算法比较和讨论。
三、实验环境硬件:计算机软件:Windows 2000和MATLAB编程环境。
四、算法描述及实验步骤1.读入一副彩色图,格式为jpg。
2.分别提取出彩色图的红、绿、蓝三种图像。
3.对三种图像进行行程编码,并分别计算其压缩比。
4.输出三种图像的原图像和压缩后的图像进行对比。
5.代码如下:clear;I=imread('4.jpg'); %读入原图像;r=I(:,:,1);b=I(:,:,2);g=I(:,:,3);subplot(1,3,1);imshow(r);title('原红色图像');subplot(1,3,2);imshow(b);title('原蓝色图像');subplot(1,3,3);imshow(g);title('原绿色图像');figure();I1=im2double(r); %将原图像转为双精度数据类型;I2=im2double(b);I3=im2double(g);T=dctmtx(8); %产生二维DCT变换矩阵Br=blkproc(I1,[8 8],'P1*x*P2',T,T'); %计算二维DCT,矩阵T及其转置T’是DCT函数P1*x*P2的参数Bb=blkproc(I2,[8 8],'P1*x*P2',T,T');Bg=blkproc(I3,[8 8],'P1*x*P2',T,T');Mask=[1 1 0 0 0 0 0 01 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 00 0 0 0 0 0 0 0]; %二值掩膜,用来压缩DCT系数,只留下DCT系数中左上角的3个B1=blkproc(Br,[8 8],'P1.*x',Mask); %只保留DCT变换的3个系数[m n]=size(B1);J1=[m n];value=B1(1,1);num=0;for i=1:mfor j=1:nif B1(i,j)==valuenum=num+1;elseJ1=[J1 num value];num=1;value=B1(i,j);endendendJ1=[J1 num value ];disp('原红色图像大小')whos('B1');disp('压缩红色图像大小:')whos('J1');disp('红色图像的压缩比:')disp(m*n/length(J1))t1=J1(1);t2=J1(2);K1(1:t1,1:t2)=0;i1=1;j1=1;for i=3:2:length(J1)c1=J1(i);c2=J1(i+1);for j=1:c1K1(i1,j1)=c2;j1=j1+1;if j1>t2i1=i1+1;j1=1;endendendr= blkproc(K1,[8,8],'P1*x*P2',T',T); %逆DCT,重构图像subplot(1,2,1);imshow(r);title('原红色图像'); %显示原图像subplot(1,2,2);imshow(r);title('压缩红色图像');%显示压缩后的图像。