第一篇:实验一图像增强
《数字图像处理》实验报告
实验一 图像增强
班级: 姓名: 学号:
实验目的
一、熟悉MATLAB中的图像处理工具箱。
二、熟悉MATLAB中常用的图像处理函数。
三、掌握图像增强的基本原理与实现方法,掌握基本的空间域操作。
四、了解imread、imshow、imhist、imwrite、rgb2gray、mat2gray、imresize、imrotate、imtransform等函数的使用方法。
五、实验内容
1. 熟悉MATLAB图像处理工具箱的功能及常用的图像处理函数。
2.实现“DIPUM2E_PROJECT_STATEMENTS”中的PROJECT 2.1、2.2、2.3、2.5、3.1、3.5、3.6
六、实验结果
第一题
function I = isinteger(A)if ~isnumeric(A)error('A must be a numeric array.');end
A = double(A);I = A == floor(A);A=[6.1 2.1;0.1 2] isinteger(A)结果ans = 0 0 0 1 2.2代码
function E = iseven(A)if ~isnumeric(A)error('A must be a numeric array.');end A = double(A);E = floor(A/2)==(A/2);A=[3 5;0.1 6] iseven(A)结果ans =
《数字图像处理》实验报告
0 0 0 1 2.3代码
function D = isodd(A)if ~isnumeric(A)error('A must be a numeric array.');end
A = double(A);D = floor((A + 1)/2)==((A + 1)/2);A=[2 3;6 1] isodd(A)结果 ans = 0 1 0 1 2.5代码
function [I, map] = imagein1(path)if nargin < 1 path = pwd;end
original_directory = pwd;[file, pathname] = uigetfile('*.*', 'Image Open');if isequal(file, 0)| isequal(pathname, 0)disp('Image input canceled.');I = [];map = [];else
[I, map] = imread(file);end 结果
>>imagein1 Image input canceled.ans = []
3.1、代码
《数字图像处理》实验报告
function z = intxform(s, map)classin = class(s);[s, revertclass] = tofloat(s);x = linspace(0, 1, numel(map))';y = map(:);z = interp1(x, y, s, 'linear');z = revertclass(z);A=imread('Fig0210(a).tif');subplot(2,1,1);imshow(A);t = linspace(0, 1, 256);map = t.^2;z = intxform(A, map);subplot(2,1,2);imshow(z);结果:
3.5、代码
function w = genlaplacian(n)if ~isinteger1(n)| n <= 0 | iseven(n)error('n must be a positive, odd integer')end
center =(n^2)imfilter(fd, genlaplacian(3), 'replicate');g5 = fdimfilter(fd, genlaplacian(9), 'replicate');g15 = fdimfilter(fd, genlaplacian(25), 'replicate');subplot(2,3,1);imshow(fd);title('a');subplot(2,3,2);imshow(g3);title('b');subplot(2,3,3);imshow(g5);title('c');subplot(2,3,4);imshow(g9);title('d');subplot(2,3,5);imshow(g15);title('e');subplot(2,3,6);imshow(g25);title('f');结果:
《数字图像处理》实验报告
3.6 代码:
w = fspecial('unsharp', 0);f = imread('Fig0217(a).tif');imshow(f)g = imfilter(f, w, 'replicate');figure, imshow(g)
结果
七、本实验的心得体会
通过本实验的学习与实践,我学到了很多图像处理的技巧,掌握图像增强的基本原理与实现方法,掌握基本的空间域操作,也对学习图像处理产生了更多的兴趣。
第二篇:实验一-信息熵与图像熵计算-正确
实验一信息熵与图像熵计算(2 学时)
一、实验目的
1.复习MATLAB的基本命令,熟悉MATLAB下的基本函数; 2.复习信息熵基本定义,能够自学图像熵定义和基本概念。
二、实验内容
1.能够写出MATLAB源代码,求信源的信息熵;
2.根据图像熵基本知识,综合设计出MATLAB程序,求出给定图像的图像熵。
三、实验仪器、设备
1.计算机-系统最低配置256M内存、P4 CPU; 2.MATLAB编程软件。四 实验流程图
五 实验数据及结果分析
四、实验原理
1.MATLAB中数据类型、矩阵运算、图像文件输入与输出知识复习。
2.利用信息论中信息熵概念,求出任意一个离散信源的熵(平均自信息量)。自信息是一个随机变量,它是指某一信源发出某一消息所含有的信息量。所发出的消息不同,它们所含有的信息量也就不同。任何一个消息的自信息量都代表不了信源所包含的平均自信息量。不能作为整个信源的信息测度,因此定义自信息量的数学期望为信源的平均自信息量:
1()1()[log ]()log()i n i i p a i H E p a p a X 信息熵的意义:信源的信息熵H是从整个信源的统计特性来考虑的。它是从平均意义上来表征信源的总体特性的。对于某特定的信源,其信息熵只有一个。不同的信源因统计特性不同,其熵也不同。
3.学习图像熵基本概念,能够求出图像一维熵和二维熵。
图像熵是一种特征的统计形式,它反映了图像中平均信息量的多少。图像的一维熵表示图像中灰度分布的聚集特征所包含的信息量,令Pi表示图像中灰度值为i的像素所占的比例,则定义灰度图像的一元灰度熵为: 2550 log i ii p p H 图像的一维熵可以表示图像灰度分布的聚集特征,却不能反映图像灰度分布的空间特征,为了表征这种空间特征,可以在一维熵的基础上引入能够反映灰度分布空间特征的特征量来组成图像的二维熵。选择图像的邻域灰度均值作为灰度2 分布的空间特征量,与图像的像素灰度组成特征二元组,记为(i,j),其中i表示像素的灰度值(0<=i<=255),j表示邻域灰度(0<=j<=255), 2(,)/ ij p f i j N
上式能反应某像素位置上的灰度值与其周围像素灰度分布的综合特征,其中f(i,j)为特征二元组(i,j)出现的频数,N为图像的尺度,定义离散的图像二维熵为: 2550 logijij i p p H 构造的图像二维熵可以在图像所包含信息量的前提下,突出反映图像中像素位置的灰度信息和像素邻域内灰度分布的综合特征。
五、实验步骤
1.求解信息熵过程:
(1)输入一个离散信源,并检查该信源是否是完备集;(2)去除信源中符号分布概率为零的元素;(3)根据平均信息量公式,求出离散信源的熵。2.图像熵计算过程:
(1)输入一幅图像,并将其转换成灰度图像;(2)统计出图像中每个灰度阶象素概率;
(3)统计出图像中相邻两象素的灰度阶联合分布矩阵;(4)根据图像熵和二阶熵公式,计算出一幅图像的熵。
六、实验报告要求
1.按照本节内容后实验报告形式书写;
2.实验总结和心得要详细,可以根据自己实验情况,写出建议。
七、实验注意事项
1.MATLAB语言课下多复习,尽量采用模块化编程方法,通过函数调用形式运行程序。
2.仔细理解、体会图像熵的概念,能够将其联合熵的概念理解透彻。
八、思考题
举例说明图像熵、信息熵在现实中有何实践指导意义? 附录1:实验报告样式: 实验报告
班级:姓名:学号:组别:同组人: 课程名称:实验室:实验时间:
(使用实验报告纸的,以上内容可按照实验报告纸格式填写)实验一信息熵与图像熵计算3
一、实验目的:
二、实验内容与原理:
三、实验器材(设备、元器件、软件工具、平台):
四、实验步骤:
五、程序流程图:
六、实验数据及结果分析:
七、实验结论:
八、思考题:
九、编程、调试过程中遇到的问题及解决方法:
十、其他:实验总结、心得体会及对本实验方法、手段及过程的改进建议等。附录2:图像一维二维熵程序:
close all;clc;I=imread('11.bmp');img=rgb2gray(I);imview(I),imview(img);[ix,iy]=size(img);P1=imhist(img)/(ix*iy);temp=double(img);temp=[temp,temp(:,1)];CoefficientMat=zeros(256,256);for x=1:ix for y=1:iy i=temp(x,y);j=temp(x,y+1);CoefficientMat(i+1,j+1)=CoefficientMat(i+1,j+1)+1;end end P2 = CoefficientMat./(ix*iy);H1=0;H2=0;for i=1:256 if P1(i)~=0 H1=H1-P1(i)*log2(P1(i));end for j=1:256 if P2(i,j)~=0 H2=H2-P2(i,j)*log2(P2(i,j));end end end H2=H2/2;sprintf('1 ord image entropy is:%d',H1)sprintf('2 ord image entropy is:%d',H2)
实验二香农编码(2 个学时)
一、实验目的
1.了解香农编码的基本原理及其特点; 2.熟悉掌握香农编码的方法和步骤; 3.掌握MATLAB 编写香农编码的程序。
二、实验内容
1.根据香农编码的方法和步骤,用香农编码编写程序; 2.用编写的源程序验证书中例题的正确性。
三、实验仪器、设备
1.计算机-系统最低配置256M 内存、P4 CPU; 2.MATLAB 编程软件。
四、实验原理 1.香农编码原理:
香农第一定理指出了平均码长与信源之间的关系,同时也指出了可以通过编 码使平均码长达到极限值,这是一个很重要的极限定理。香农第一定理指出,选 择每个码字的长度i K 满足下式: I(Xi)K I(Xi)1,i 就可以得到这种码,这种编码方法就是香农编码。2.香农编码算法:
1.将信源消息符号按其出现的概率大小依次排列: 1 2 n P(X)P(X), ,P(X)2.确定满足下列不等式整数码长i K ; log2p()log2()1 i iix K p x
3.为了编成唯一可译码,计算第i 个消息的累加概率; 1 1()i i k k pp x
4.将累加概率i P变成二进制数; 5.取i P 二进制数的小数点后i K 位即为该消息符号的二进制码字。
五、实验步骤
1.根据实验原理,设计香农编码程序;
2.输入一组信源消息符号概率,可以求香农编码、平均码长和编码效率。
六、实验报告要求 5 1.按照本节内容后实验报告形式书写;
2.实验总结和心得要详细,可以根据自己情况写出建议。
七、实验注意事项
1.香农编码是符号概率大的用短表示,小长程序中 香农编码是符号概率大的用短表示,小长程序中 香农编码是符号概率大的用短表示,小长程序中 需要对概率进行排序,此我们调用 MATLAB MATLABMATLABMATLABMATLAB的库函数; 2.最后需要注意的是,求得码字依次与排序符号概率对应 ; 3.向无穷方取最小正整数位 ceilceilceil 函数。
八、思考题
举例说明香农编码在现实中有际作用,列一个子并简要说明? 附录 1:实验报告样式: 实验报告
班级:姓名:学号:组别:同组人: 课程名称:实验室:实验时间:
(使用实验报告纸的,以上内容可按照实验报告纸格式填写)
实验二香农编码
一、实验目的:
二、实验内容与原理:
三、实验器材(设备、元器件、软件工具、平台):
四、实验步骤:
五、程序流程图:
六、实验数据及结果分析:
七、实验结论:
八、思考题:
九、编程、调试过程中遇到的问题及解决方法:
十、其他:实验总结、心得体会及对本实验方法、手段及过程的改进建议等。附录 2:香农编码 程序 : close all;clc;n=input('输入信源符号个数:');p=zeros(1,n);for i=1:n p(1,i)=input('输入信源符号概率:');end if sum(p)<1||sum(p)>1 error('输入概率不符合概率分布')end 6 y=fliplr(sort(p));D=zeros(n,4);D(:,1)=y';for i=2:n D(1,2)=0;D(i,2)=D(i-1,1)+D(i-1,2);end for i=1:n D(i,3)=-log2(D(i,1));D(i,4)=ceil(D(i,3));end D A=D(:,2)';B=D(:,4)';Code_length=0;for j=1:n Code_length=Code_length+p(j)*D(j,4);end H=0;for j=1:n H=H+p(j)*log2(1/p(j));end for j=1:n fprintf('输入信源符号概率为%f的码字为:',p(1,j));C=deczbin(A(j),B(j));disp(C)end Efficiency=H/(Code_length)fprintf('平均码长:n');disp(Code_length)fprintf('n 香农编码效率:n');disp(Efficiency)A:累加概率; B:码子长度。:码子长度。function [C]=deczbin(A,B)C=zeros(1,B);temp=A;for i=1:B temp=temp*2;if temp>1 temp=temp-1;C(1,i)=1;else C(1,i)=0;end end 7 实验三费诺编码(2 学时)
一、实验目的
掌握费诺编码方法的基本步骤及优缺点。
二、实验内容
对于给定的信源的概率分布,按照费诺编码的方法进行计算机实现。
三、实验仪器、设备
1.计算机-系统最低配置256M 内存、P4 CPU; 2.MATLAB 编程软件。
四、实验原理 1.费诺编码原理:
费诺编码就是通过使编码中各个句号出现的概率大致相等,实现概率均匀化,从而减少冗余度,提高编码效率。凡是能载荷一定的信息量,且码字的平均长度 最短,可分离的变长码的码字集合称为最佳变长码。在编N 进制码时首先将信 源消息符号按其出现的额概率一次又小到大排列开来,并将排列好的心愿符号按 概率值分N 大组,使N 组的概率之和近似相同,并对各组赋予一个N 进制码元 0、1...N-1。之后再针对每一个大组内的心愿符号做如上处理,即再分为概率相 同的N 组,赋予N 进制码元。如此重复,直到每组只剩下一个心愿符号为止。此时每个信源符号所对应的码字即为费诺码。针对同一个心愿,费诺码比香农码平均码长小,消息出书速率大,编码效率高。费诺编码是一种信源编码,它编码 后的费诺码要比香农码的平均码长小,消息传输速率大,编码效率高。但它属于 概率匹配编码它不是最佳的编码方法。2.费诺编码算法:
(1)将信源消息符号按其出现的概率大小依次排列: 1 2()()...()n P X P X P X(2)将依次排列的信源符号按概率值分为两大组,使两个组的概率之和近似相同,并对各组赋予一个二进制码元“0”和“1”;
(3)将每一大组的信源符号再分成两组,使划分后的两个组的概率之和近似相同,并对各组赋予一个二进制符号“0”和“1”;(4)如此重复,直至每个组只剩下一个信源符号为止;(5)信源符号所对应的码子即为费诺码。
五、实验步骤
1.根据实验原理,设计费诺编码程序;
2.输入一组信源消息符号概率,可以求费诺编码,平均码长和编码效率。8
六、实验报告要求
1.按照本节内容后实验报告形式书写;
2.实验总结和心得要详细,可以根据自己情况写出建议。
七、实验注意事项 1.MATLAB 1.MATLAB1.MATLAB1.MATLAB1.MATLAB语言课下多复习,尽量采用模块化编程方法通过函数调形式 语言课下多复习,尽量采用模块化编程方法通过函数调形式 语言课下多复习,尽量采用模块化编程方法通过函数调形式 语言课下多复习,尽量采用模块化编程方法通过函数调形式 运行程序; 2.仔细理解、体会费诺编码。
八、思考题
举例说明 费诺编码 在现实中际应用,列举一个例子并简要说明? 附录 1:实验报告样式: 实验报告
班级:姓名:学号:组别:同组人: 课程名称:实验室:实验时间:
(使用实验报告纸的,以上内容可按照实验报告纸格式填写)实验三费诺编码
一、实验目的:
二、实验内容与原理:
三、实验器材(设备、元器件、软件工具、平台):
四、实验步骤:
五、程序流程图:
六、实验数据及结果分析:
七、实验结论:
八、思考题:
九、编程、调试过程中遇到的问题及解决方法:
十、其他:实验总结、心得体会及对本实验方法、手段及过程的改进建议等。附录2:费诺编程程序: clc;clear all;N=input('输入信源符号的个数:');s=0;l=0;H=0;for i=1:N fprintf('第%d个',i);p(i)=input('p=');if(p(i)<=0)||(p(i)>=1)error('不符合分布概率');end s=s+p(i);9 H=H+(-p(i)*log2(p(i)));end if(s<=0.999999||s>=1.000001)error('不符合分布概率')end for i=1:N-1 for j=i+1:N if p(i)
一、实验目的
1.掌握哈夫曼编码原理;
2.熟练掌握哈夫曼树的生成方法;
3.学会利用 MATLAB MATLABMATLABMATLABMATLAB实现 哈夫曼 编码 ; 4.提高独立进行算法编程的能力。
二、实验内容
1.用 MATLAB MATLABMATLABMATLABMATLAB实现 哈夫曼 哈夫曼 编码算法程序; 2.要求程序输出显示所有的码字以及编效率;
3.设计简单的输入界面(可以是文字提示信息),程序运行时用 设计简单的输入界面(可以是文字提示信息),程序运行时用 设计简单的输入界面(可以是文字提示信息),程序运行时用 设计简单的输入界面(可以是文字提示信息),程序运行时用 设计简单的输入界面(可以是文字提示信息),程序运行时用 户输入代表信源符号概率的向量;要对用进行合法性检查 户输入代表信源符号概率的向量;要对用进行合法性检查 ;
4.(选做)随机生成一幅图像,随机生成一幅图像,实现 哈夫曼 图像编码,比较前后 图像编码,比较前后 图片 大小。
三、实验仪器设备
1.计算机-系统最低配置 256M 内存、P4 CPUCPUCPU;
2.MATLAB MATLABMATLABMATLABMATLAB编程软件。编程软件。
四、实验原理
1.二进制 哈夫曼 编码的基本原理及算法
(1)把信源符号集中的所有按概率从大到小排队 把信源符号集中的所有按概率从大到小排队 ;
(2)取概率最小的两个符号作为片叶子合并(缩减)到一节点 取概率最小的两个符号作为片叶子合并(缩减)到一节点 ;
(3)视此节点为新符号,其概率等于被合并(缩减)的两个之和参 视此节点为新符号,其概率等于被合并(缩减)的两个之和参 与概率排队 ;
(4)重复(2)(3)(2)(3)两步骤,直至全部符号都被合并(缩减)到根 两步骤,直至全部符号都被合并(缩减)到根 ;(5)从根出发,对各分枝标记 从根出发,对各分枝标记 从根出发,对各分枝标记 0和 1。从根到叶的 路径就给出了各个码字。从根到叶的 路径就给出了各个码字编码和长。
2.哈夫曼 树的编码原理
(1)程序的输入:以一维数组形式要进行 程序的输入:以一维数组形式要进行 程序的输入:以一维数组形式要进行 程序的输入:以一维数组形式要进行 程序的输入:以一维数组形式要进行 程序的输入:以一维数组形式要进行 程序的输入:以一维数组形式要进行 程序的输入:以一维数组形式要进行 程序的输入:以一维数组形式要进行 程序的输入:以一维数组形式要进行 程序的输入:以一维数组形式要进行 程序的输入:以一维数组形式要进行 程序的输入:以一维数组形式要进行 程序的输入:以一维数组形式要进行 程序的输入:以一维数组形式要进行 程序的输入:以一维数组形式要进行 程序的输入:以一维数组形式要进行 程序的输入:以一维数组形式要进行 程序的输入:以一维数组形式要进行 哈夫曼 哈夫曼 哈夫曼 编码的 信源符号编码的 信源符号编码的 信源符号编码的 信源符号编码的 信源符号编码的 信源符号编码的 信源符号编码的 信源符号概率,在运行该程序前显示文字提信息所要输入的矢量; 概率,在运行该程序前显示文字提信息所要输入的矢量; 概率,在运行该程序前显示文字提信息所要输入的矢量; 概率,在运行该程序前显示文字提信息所要输入的矢量; 然后对输入的概率矢量进行合法性判断,原则为:如果中存在 然后对输入的概率矢量进行合法性判断,原则为:如果中存在 然后对输入的概率矢量进行合法性判断,原则为:如果中存在 然后对输入的概率矢量进行合法性判断,原则为:如果中存在 然后对输入的概率矢量进行合法性判断,原则为:如果中存在 然后对输入的概率矢量进行合法性判断,原则为:如果中存在 然后对输入的概率矢量进行合法性判断,原则为:如果中存在 然后对输入的概率矢量进行合法性判断,原则为:如果中存在 然后对输入的概率矢量进行合法性判断,原则为:如果中存在 然后对输入的概率矢量进行合法性判断,原则为:如果中存在 然后对输入的概率矢量进行合法性判断,原则为:如果中存在 然后对输入的概率矢量进行合法性判断,原则为:如果中存在 然后对输入的概率矢量进行合法性判断,原则为:如果中存在 小于 0的项,则输入不合法提示重新;如果概率矢量求和大于 1,则输入也不合法,提示重新。
(2)在输入的概率矩阵 p正确的前提条件下 ,对 p进行排序,并用矩阵 L记 录 p排序之前各元素的顺,然后将概率数组 p的前两项,即 概率最小的两个数加和,得到新一组序列重复以上过程后 概率最小的两个数加和,得到新一组序列重复以上过程后 概率最小的两个数加和,得到新一组序列重复以上过程后 概率最小的两个数加和,得到新一组序列重复以上过程后 概率最小的两个数加和,得到新一组序列重复以上过程后 概率最小的两个数加和,得到新一组序列重复以上过程后 概率最小的两个数加和,得到新一组序列重复以上过程后 概率最小的两个数加和,得到新一组序列重复以上过程后 概率最小的两个数加和,得到新一组序列重复以上过程后 概率最小的两个数加和,得到新一组序列重复以上过程后 概率最小的两个数加和,得到新一组序列重复以上过程后 概率最小的两个数加和,得到新一组序列重复以上过程后 概率最小的两个数加和,得到新一组序列重复以上过程后 得到一个记录概率加和过程的矩阵 p以及每次排序之前概率顺的矩阵 ; 12(3)新生成一个 n-1行 n列,并且每个元素含有 n个字符的空白矩阵,然后 进行 哈夫曼 编码。
五、实验步骤
1.输入一个离散信源,并检查该是否完备集;
2.使用 哈夫曼 编码原理进行 哈夫曼 程序编写 ;
3.输出离散信源中每个符号的 哈夫曼 编码 及平均码长 和编码效率,并与手工,并与手工 运算的结果进行比较。
六、实验报告要求
1.按照本节内容后实验报告形式书写;
2.实验总结和心得要详细,可以根据自己情况写出建议。
七、实验注意事项 1.比较大小 在 MATLAB MATLABMATLABMATLABMATLAB中,调用的是 sort 函数 ; 2.仔细理解、体会 哈夫曼 编码思想。
八、思考题
比较香农编码、费诺哈夫曼并说出他们的优缺点? 附录 1:实验报告样式: 实 验 报 告
班级: 姓名: 学号: 组别: 同组人: 课程名称: 实验室: 实验时间:
(使用实验报告纸的,以上内容可按照实验报告纸格式填写)实验四 哈夫曼编码
一、实验目的:
二、实验内容与原理:
三、实验器材(设备、元器件、软件工具、平台):
四、实验步骤:
五、程序流程图:
六、实验数据及结果分析:
七、实验结论:
八、思考题:
九、编程、调试过程中遇到的问题及解决方法:
十、其他:实验总结、心得体会及对本实验方法、手段及过程的改进建议等。附录 2:哈夫曼编码程序 : clear all;close all;clc;13 n=input('输入信源符号数:');p=zeros(1,n);for i=1:n p(1,i)=input('输入信源符号概率:');end q=p;if sum(p)<1||sum(p)>1 error('输入概率不符合概率分布')end a=zeros(n-1,n);n=length(p);for i=1:n-1 [q,l]=sort(q);a(i,:)=[l(1:n-i+1),zeros(1,i-1)];q=[q(1)+q(2),q(3:n),1];end for i=1:n-1 c(i,1:n*n)=blanks(n*n);end c(n-1,n)='1';c(n-1,2*n)='0';for i=2:n-1 c(n-i,1:n-1)=c(n-i+1,n*(find(a(n-i+1,:)==1))-(n-2):n*(find(a(n-i+1,:)==1)));c(n-i,n)='1';c(n-i,n+1:2*n-1)=c(n-i,1:n-1);c(n-i,2*n)='0';for j=1:i-1 c(n-i,(j+1)*n+1:(j+2)*n)=c(n-i+1,n*(find(a(n-i+1,:)==j+1)-1)+1:n*find(a(n-i+1,:)==j+1));end end for i=1:n h(i,1:n)=c(1,n*(find(a(1,:)==i)-1)+1:find(a(1,:)==i)*n);ll(i)=length(find(abs(h(i,:))~=32));end Code_length=0;for i=1:n Code_length=Code_length+p(1,i)*ll(i);End Efficiency=H/(Code_length);fprintf('n 哈夫曼编码:n');disp(h)fprintf('n平均码长:n');disp(Code_length)fprintf('n 哈夫曼编码效率:n');disp(Efficiency)14 实验五 算术编码(2学时)
一、实验目的
1.掌握算数编码原理;
2.学习算术编码基本流程 ,学会调试算术编码程序 ; 3.根据给出资料,自学适应 0阶算术编码 方法。
二、实验内容
1.利用 MATLAB MATLABMATLABMATLABMATLAB编写程序实现算数码; 编写程序实现算数码;
2.对文件符号进行概率统计,生成编码表; 3.对文件进行压缩编码;
3.(选做)对文件进行解压缩,比较原始数据和后的之间是否有损(选做)对文件进行解压缩,比较原始数据和后的之间是否有损(选做)对文件进行解压缩,比较原始数据和后的之间是否有损(选做)对文件进行解压缩,比较原始数据和后的之间是否有损 耗。三实验仪器、设备
1.计算机-系统最低配置 256M 内存、P4 CPUP4 CPU P4 CPUP4 CPU; 2.MATLAB MATLABMATLABMATLABMATLAB编程软件。
四、实验原理 算术编码的编码对象是一则消息或一个字符序列,其编码思路是将该消息或字符序列表示成0和1之间的一个间隔(Interval)上的一个浮点小数。在进行算术编码之前,需要对字符序列中每个字符的出现概率进行统计,根据各字符出现概率的大小,将每个字符映射到[0,1]区间上的某个子区间中。然后,再利用递归算法,将整个字符序列映射到[0,1]区间上的某个Interval中。在进行编码时,只需从该Interval中任选一个小数,将其转化为二进制数。
符号序列越长,编码表示它的Interval的间隔就越小,表示这一间隔所需的二进制位数就越多,编码输出的码字就越长。
五、实验步骤
项目文件建立步骤同实验二,下面列出对给定序的算术编码:
1.编码器在开始时将“当前间隔”[L,H)设置为 设置为 [0,1); 2.对每一事件,编码器按步骤(a)和(b)进行处理 ;(a)编码器将“当前间隔”分为子,每一个事件;
(b)一个子间隔的大小与下将出现事件概率成比例,编码器选择 子间 隔对应于下一个确切发生的事件相,并使它成为新“当前子间 隔对应于下一个确切发生的事件相,并使它成为新“当前子间 隔对应于下一个确切发生的事件相,并使它成为新“当前隔”。隔”。
3.最后输出的“当前间隔”下边界就是该给定事件序列算术编码。
六、实验报告要求
1.按照本节内容后实验报告形式书写; 15 2.算术编码学习心得,特别是根据自适应模型 算术编码学习心得,特别是根据自适应模型 0阶编码,调整概率分布方法。阶编码,调整概率分布方法。根据自己实验情况,写出的做中遇到具体问题对本提建 根据自己实验情况,写出的做中遇到具体问题对本提建 根据自己实验情况,写出的做中遇到具体问题对本提建 议。
七、实验注意事项
1.编码概论累加分布;
2.编码区间上限和下迭代算法; 3.自适应模型 0阶的编码原理。
八、思考题
算术编码的优缺点? 附录 1:实验报告样式: 实验报告
班级:姓名:学号:组别:同组人: 课程名称:实验室:实验时间:
(使用实验报告纸的,以上内容可按照实验报告纸格式填写)实验五算术编码
一、实验目的:
二、实验内容与原理:
三、实验器材(设备、元器件、软件工具、平台):
四、实验步骤:
五、程序流程图:
六、实验数据及结果分析:
七、实验结论:
八、思考题:
九、编程、调试过程中遇到的问题及解决方法:
十、其他:实验总结、心得体会及对本实验方法、手段及过程的改进建议等。附录二:算术编码程序
disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%start%%%%%%%%%%%%%%%%%%%%%%%')disp('程序限定字符为:a b c d e');str=input('请输入编码的字符串:');[j,k]=size(str);l=0;r=1;d=1;p=[0.2 0.3 0.1 0.15 0.25];pa=0.2;pb=0.3;16 pc=0.1;pd=0.15;pe=0.25;n=length(str);disp('a b c d e')disp(num2str(p))for i=1:k if i==1 switchstr(i)case 'a' m=1;a1=0;a2=pa;case 'b' m=2;a1=pa;a2=pa+pb;case 'c' m=3;a1=pa+pb;a2=pa+pb+pc;case 'd' m=4;a1=pa+pb+pc;a2=pa+pb+pc+pd;case 'e' m=5;a1=pa+pb+pc+pd;a2=pa+pb+pc+pd+pe;end l=a2-a1;end if(i>=2)&(i<=k)switchstr(i)case 'a' aa=a1;ab=a1+l*pa;a1=aa;a2=ab;case 'b' aa=a1+l*pa;ab=a1+l*(pa+pb);a1=aa;a2=ab;case 'c' 17 aa=a1+l*(pa+pb);ab=a1+l*(pa+pb+pc);a1=aa;a2=ab;case 'd' aa=a1+l*(pa+pb+pc);ab=a1+l*(pa+pb+pc+pd);a1=aa;a2=ab;case 'e' aa=a1+l*(pa+pb+pc+pd);ab=a1+l*(pa+pb+pc+pc+pd+pe);a1=aa;a2=ab;end l=a2-a1;end strl=strcat('input',int2str(i),' 编码区间起始值为:');disp(strl);disp(a1)strl=strcat('input',int2str(i),' 编码区间的终止值为:');disp(strl);disp(a2)strl=strcat('input',int2str(i),' 本程序选择区间中点作为编码是:');disp(strl);disp((a1+a2)/2)end disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%code_finish%%%%%%%%%%%%%%%%%')disp('是否要译码,请选择')disp('
1、译码')disp('
2、不译码?')disp('说明:输入相应的数字进行选择')disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%choice%%%%%%%%%%%%%%%%%%%%%%')YN=input('您选择的是:');if YN==1 bm=(a1+a2)/2;SuansuJiema(bm,k)end if YN==2 disp('你选择了不译码。')disp('%%%%%%%%%%%%%%%%%%%%%%%%%%%%end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%')end 解码函数:
functionSuansuJiema(bm,num)18 format long pa=0.2;pb=0.3;pc=0.1;pd=0.15;pe=0.25;i=1;ym={};ym{1}(1)=YM(bm);bm0=bm;while i>=1&i functionym=YM(A)pa=0.2;pb=0.3;pc=0.1;pd=0.15;pe=0.25;switch 1 case 0<=A&A =1|A<0 disp('该码子为错误编码')end 19 实验六线性分组码的信道编码和译码(2 学时) 一、实验目的 1.熟悉MATLAB 工作环境及工具箱; 2.掌握线性分组码的编码、译码原理以及纠错原理。 二、实验内容 用MATLAB 软件编程实现线性分组码的信道编码和译码。 三、实验仪器、设备 1.计算机-系统最低配置256M 内存、P4 CPU; 2.MATLAB 编程软件。 四、实验原理 1.线性分组码基本原理 首先,将信息序列分成K 个符号一组,然后,在信息组中加入一些校验码 元,组成N 长码字,由此得到(N,K)分组码。(N,K)分组码中任一码字的 码长为N,所含的信息位数目为K,校验位数目为r=N-K,且码中任意两个码 字的和仍为码字。例如,对于(5,2)分组码,N=5,K=2,其编码函数f 为: 1 1 C M 2 2 C M 3 1 2 1 2 C M M C C 4 1 1 C M C 5 1 2 1 2 C M M C C 编码函数可知:c(码字)=m(信息矩阵)G(生成矩阵)其中,生成矩阵为: 1 0 1 1 1 0 1 1 0 1 G 当生成矩阵G 确定后,编码的问题就解决了。又由编码函数的后3 个方程 可以确定校验方程,对应的矩阵形式为0 T CH 或0 T GH ,式中,H 称为一致 性校验矩阵,一致性校验矩阵如下: 1 1 1 0 0 1 0 0 1 0 1 1 0 0 1 H H 和G 的关系为:K*K K*r G I A,K*r r*r H A I。 纠错译码时,若发送码字为C,则接收序列为y,校正子* * T T s y H e H,因此,可以得到译码c ye(模2 和)。其中,e 称为差错图样。S 是传输 是否出错的标志,称为伴随式。(5,2)线性分组码的最小汉明距离为dmin=3,20 能够检出2 位错误或纠正1 位错误。2.线性分组编码、译码算法:(1)线性分组码信道编码:(a)输入生成矩阵G 和原序列;(b)由矩阵G 得到n,k 和H;(c)根据公式生成编码。(2)线性分组码信道译码: (a)输入生成矩阵G 和接收序列;(b)由矩阵G 得到n,k 和H;(c)根据公式生得到校正S;(d)求错误图样e;(e)译码c y e。 五、实验步骤 1.根据实验原理能设计出线性分组编码、译码程序; 2.输入矩阵G 和原序列验证编码程序是否正确; 3.输入矩阵G 和接收序列验证译码程序是否正确。 六、实验报告要求 1.按照本节内容后实验报告形式书写; 2.实验总结和心得要详细,可以根据自己实验情况,写出建议。 七、实验注意事项 1.线性分组码中生成矩阵、校验矩阵、伴随式之间的关系。2.在计算矩阵时,注意位操作运算。 八、思考题 优化程序,提高运算速度? 附录1:实验报告样式: 实验报告 班级:姓名:学号:组别:同组人: 课程名称:实验室:实验时间: (使用实验报告纸的,以上内容可按照实验报告纸格式填写)实验六线性分组码的信道编码和译码 一、实验目的: 二、实验内容与原理: 三、实验器材(设备、元器件、软件工具、平台): 四、实验步骤: 21 五、程序流程图: 六、实验数据及结果分析: 七、实验结论: 八、思考题: 九、编程、调试过程中遇到的问题及解决方法: 十、其他:实验总结、心得体会及对本实验方法、手段及过程的改进建议等。附录二: 附录二: 线性分组码的信道编码和译码 close all;clc;G=input('请输入生产矩阵G,例如:G=[1 0 1 1 1;0 1 1 0 1]n G=');G;[k,n]=size(G);r=n-k;m=input('请输入需传送消息m,如m=[0 0 0 1 1 0 1 1]n m=');l=length(m);if(mod(l,k))disp('输入消息有误');else ge=l/k;temp1=[];for i=1:ge temp1(i,:)=m(k*(i-1)+1:i*k);end m=temp1;c=mod(m*G,2);A=G(:,k+1:n);H=[A',eye(r)];disp('校验矩阵');H disp('编码矩阵');c end disp('敲回车键继续');pause y=input('输入接收序列y,如:y=[0 0 0 0 0 0 1 1 0 1 1 0 1 1 1 1 0 0 1 0]n y=');temp2=[];for i=1:ge temp2(i,:)=y(1,n*(i-1)+1:i*n);end y=temp2 s=mod(y*H',2);e=s*pinv(H');22 for i=1:ge for j=1:n if(e(i,j)>0.5-eps)e(i,j)=1;else e(i,j)=0;end end end cc=mod(y+e,2);sc=cc(:,1:2);disp('差错图样);e disp('估计值');cc disp('译码序列');sc__ clear all;close all;clc;13 n=input('ÊäÈëÐÅÔ´·ûºÅÊý:');p=zeros(1,n);for i=1:n p(1,i)=input('ÊäÈëÐÅÔ´·ûºÅ¸ÅÂÊ:');end q=p;if sum(p)<1||sum(p)>1 error('ÊäÈë¸ÅÂʲ»·ûºÏ¸ÅÂÊ·Ö²¼')end a=zeros(n-1,n);n=length(p);for i=1:n-1 [q,l]=sort(q);a(i,:)=[l(1:n-i+1),zeros(1,i-1)];q=[q(1)+q(2),q(3:n),1];end for i=1:n-1 c(i,1:n*n)=blanks(n*n);end c(n-1,n)='1';c(n-1,2*n)='0';for i=2:n-1 c(n-i,1:n-1)=c(n-i+1,n*(find(a(n-i+1,:)==1))-(n-2):n*(find(a(n-i+1,:)==1)));c(n-i,n)='1';c(n-i,n+1:2*n-1)=c(n-i,1:n-1);c(n-i,2*n)='0';for j=1:i-1 c(n-i,(j+1)*n+1:(j+2)*n)=c(n-i+1,n*(find(a(n-i+1,:)==j+1)-1)+1:n*find(a(n-i+1,:)==j+1));end end for i=1:n h(i,1:n)=c(1,n*(find(a(1,:)==i)-1)+1:find(a(1,:)==i)*n);ll(i)=length(find(abs(h(i,:))~=32));end Code_length=0;for i=1:n Code_length=Code_length+p(1,i)*ll(i);end Efficiency=h/(Code_length);fprintf('n ¹þ·òÂü±àÂë:n');disp(h)fprintf('n ƽ¾ùÂ볤:n');disp(Code_length)fprintf('n ¹þ·òÂü±àÂëЧÂÊ£ºn');disp(Efficiency) close all;clc;G=input('ÇëÊäÈëÉú²ú¾ØÕóG,ÀýÈç:G=[1 0 1 1 1;0 1 1 0 1]n G=');G;[k,n]=size(G);r=n-k;m=input('ÇëÊäÈëÐè´«ËÍÏûÏ¢m,Èçm=[0 0 0 1 1 0 1 1]n m=');l=length(m);if(mod(l,k))disp('ÊäÈëÏûÏ¢ÓÐÎó');else ge=l/k;temp1=[];for i=1:ge temp1(i,:)=m(k*(i-1)+1:i*k);end m=temp1;c=mod(m*G,2);A=G(:,k+1:n);H=[A',eye(r)];disp('УÑé¾ØÕó');H disp('±àÂë¾ØÕó');c end disp('Çûسµ¼ü¼ÌÐø');pause y=input('ÊäÈë½ÓÊÕÐòÁÐy,Èç:y=[0 0 0 0 0 0 1 1 0 1 1 0 1 1 1 1 0 0 1 0]n y=');temp2=[];for i=1:ge temp2(i,:)=y(1,n*(i-1)+1:i*n);end y=temp2 s=mod(y*H',2);e=s*pinv(H');22 for i=1:ge for j=1:n if(e(i,j)>0.5-eps)e(i,j)=1;else e(i,j)=0;end end end cc=mod(y+e,2);sc=cc(:,1:2);disp('²î´íͼÑù');e disp('¹À¼ÆÖµ');cc disp('ÒëÂëÐòÁÐ');sc 三 四 哈夫曼编码 五算术编码 六线性分组码的信道编码和译码 实验二图像拼接心得体会 图像拼接的含义:将多幅在不同时刻、从不同视角或者由不同传感器获得的图像经过对齐然后无缝地融合在一起,从而得到一幅大视场、高分辨率图像的处理过程。图像拼接有两种类型,一种是传统全景图,没有或只有轻微的运动视差,另一种是多重投影拼接图,但存在较大的运动视差 利用MATLAB进行图像拼接时,要注意以下几点: 第一方面:在图像格式上,由于图像格式包括索引色和真彩色这两大类不同的类型,所以需要统一转换一下才能拼接。这两类图像的判断根据是读入的数据是二维还是三维,对于二维的数据,如果调色板为空,则按照灰度图像处理。 第二方面:在数据格式上,由于具体的图像文件格式不同,读入的数据可能是logical、uint8、uint16、uint32、single、uint64、double等各种不同的格式,要想进行拼接,需要转换为同一种数据类型,这样在拼接的时候才不会出现错误。 在图像拼接过程中,要特别注意找出两幅图像之间最优的空间位置和色彩之间的变换关系,使一幅图像中的点最优地映射到另一幅图像中,也就是要让图像对齐好,这关系到图像的处理效果。 图像拼接的步骤如下:1选取拍摄位置以及图像获取方式;2获取图像;3图像预处理;4图像对齐;5图像合成;6输出拼接图像。 实验一创业项目的选择LED照明 1.1产品介绍 LED(Light Emitting Diode),发光二极管,是一种固态的半导体器件,它可以直接把电转化为光。LED的心脏是一个半导体的晶片,晶片的一端附在一个支架上,一端是负极,另一端连接电源的正极,使整个晶片被环氧树脂封装起来。半导体晶片由两部分组成,一部分是P型半导体,在它里面空穴占主导地位,另一端是N型半导体,在这边主要是电子。但这两种半导体连接起来的时候,它们之间就形成一个“P-N结”。当电流通过导线作用于这个晶片的时候,电子就会被推向P区,在P区里电子跟空穴复合,然后就会以光子的形式发出能量,这就是LED发光的原理。而光的波长决定光的颜色,是由形成P-N结材料的禁带宽度决定的。自20世纪60年代世界第一个半导体发光二极管诞生以来,LED照明由于具有寿命长、节能、色彩丰富、安全、环保的特性,被誉为人类照明的第三次革命。 1.2市场现状 据统计,地球上每天使用的电量是相当惊人的,所以,这些年我们都致力于寻找节约、环保的新能源,而本公司的LED灯顺应时代,应运而生。白光LED的光电转化率高达95%以上,节能性十倍于普通白炽灯,两倍于荧光灯。众所周知,白炽灯的使用会引起惰性气体的污染,荧光灯的使用会引起汞的污染,而白光LED灯在使用时不会放出任何有害气体损害生态环境,是新的环保光源,因此,LED节能灯有很大的发展潜力。 当前,照明约占世界总能耗的20%左右。中国从2003年开始,就已经频频遭遇电力短缺的危机,由此也引发了社会对替代能源和新能源的思考。有统计数据显示,仅LED路灯节能一项,每年就能为中国节省约一座三峡大坝所发的电力。在全球能源危机紧张的今天,LED照明产品的节能优势则预示了其不可撼动的未来行业龙头地位:据业内人士以1支11瓦优质节能灯为例,用数字证明了产品的绝对优势:这样一支节能灯在6000小时的寿命期内,将比具有相同效果的60瓦白炽灯少耗电294千瓦时,节约支出160多元。 根据中国光学电子协会光电分会的统计,我国的LED照明产品自2003年起,正以每年25%以上的速度增长,其中超高亮照明LED更以每年50%的速度飞跃发展。到2013年,阅读灯、橱窗灯、户外照明、投光灯、家用照明、家用电器光源等传统灯具将逐步被LED取代。业内专家直言,仅中国民用照明市场来讲,存在的商机就达400亿元人民币。 2011年2月底,国家相关部门在中国半导体照明市场产业现状及未来发展机会暨“Green Lighting China 2011 展会暨论坛”的新闻发布会上透露,将于近期出台传统白炽灯的退出时间表,这一信息预示着LED照明市场的繁荣期即将到来。目前,我国农村地区和部分小城市大多数照明都是以传统灯泡为主。 1.3竞争优势 1.4企业未来的发展 1.5总结 实验一 实验1 安装操作系统一.实验目的通过对OS的安装操作,了解操作系统应用环境建立的初步过程。 1.掌握操作系统的基本系统设置。 2.熟练掌握操作系统的安装步骤。 二.实验属性 验证 三.实验内容 安装OS 四.实验步骤 1.把系统盘安装到本地计算机。 2.安装步骤 第一步:插入OS安装光盘,重新启动计算机 第二步:对硬盘创建分区,留出交换空间和文件系统的空间。按屏幕提示选择第三步:按提示分阶段装入系统。 第四步:配置系统。 五.实验报告 1.根据提示,写出OS的安装思路。 2.写出OS在计算机硬件上的加载过程。 3.总结体会OS各部分功能的实现。第三篇:图像处理实验二心得
第四篇:实验一
第五篇:实验一