数字图像处理图像编码(15页).doc
《数字图像处理图像编码(15页).doc》由会员分享,可在线阅读,更多相关《数字图像处理图像编码(15页).doc(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-数字图像处理图像编码-第 12 页数字图像处理上机实习报告(DIP4-DIP7)学生姓名: 杜坤 班 级: 071123 学 号: 20121003699 指导老师: 傅 华 明 DIP-4 图像编码一题目要求对图实施费诺-香农编码和解码,计算图像熵,平均码长和冗余度。二算法设计1.测试脚本的程序框图2.编码程序框图读入图像的直方图,将图像的灰度值按照概率大小排序,按照香农编码的规则编码。香农编码将概率由大到小,由上到下排成一排,然后分为两组。是将大的一组概率赋值为0,概率小的一组赋值为1,这是赋值的原则。然后依次的重复,直到每组只有一种输入元素为止。3.解码程序框图三实现代码1.脚本文件c
2、lear allload matp = impr(a); %统计概率code = FanoCodeInit(p); %Fano编码初始化code = FanoEncoder(code);%Fano编码outstream = FanoCodeStream(a,code); %输出data = FanoDecoder(outstream,code);%解码data = reshape(data,8,8); %恢复8*8的形状data = data; %转置I = abs(p.*log2(p); disp(图像的熵为:);H = sum(I(:) %计算熵disp(图像的平局码长为:)B = Fan
3、oCodeLength(code); %求平均长度disp(编码冗余度为:);r = B/H - 1 %求冗余disp(编码效率为:)e = H/B %求编码效率if isequal(a,data) msgbox(解码后的数据和输入的数据完全吻合);end2. 统计灰度的概率function p= impr(f)%概率统计m,n = size(f);graymax = max(f(:); %找出灰度最大值,划定统计范围p = zeros(1,graymax + 1);for i = 1:m for j = 1:n x = f(i,j) + 1; p(x) = p(x) + 1; endendp
4、 = p/(m*n);End3.码字的初始化function code = FanoCodeInit(p)%FanoShano码字初始化m,n = size(p);for i = 1:n code(i).gray = i - 1; code(i).p = p(i); code(i).str = ;end%冒泡法排序for i = 1:n for j = 1:n-i if code(j).p code(j+1).p temp = code(j); code(j) = code(j+1); code(j+1) = temp; end endendend4. 编码 function pin = Fa
5、noEncoder(pin)%FanoShano编码m,n = size(pin);flag = 1;while (flag) start = 1; stop = 1; temp = pin(1); for i = 1:n-1 if isequal(temp.str,pin(i+1).str) stop = stop + 1; elseif stop = start start = i + 1; stop = start; temp = pin(i+1); else break; end end if stop = start pin = FanoCodeCat(pin,start,stop)
6、; else if i = n-1 flag = 0; %退出while(flag)的循环 end end endend5.输出码流function outstream = FanoCodeStream(data,code)m,n = size(data);len = length(code);outstream = ;for i = 1:m for j = 1:n for k = 1:len if code(k).gray = data(i,j); outstream = outstream,code(k).str; break; end end endendend6.解码function
7、data = FanoDecoder(instream,code)len = length(instream);str = ;gray = 0;flag = 0;data = 0;for i = 1:len gray,flag = LookUp(code,str,instream(i); if flag dlen = length(data); data(dlen+1) = gray; str = ; else str = str,instream(i); end enddlen = length(data);data = data(2:dlen);end7.搜索码字function data
8、,flag = LookUp(code,str)len = length(code);flag = 0;data = 0;for i = 1:len if isequal(str,code(i).str) data = code(i).gray; flag = 1; break; endendend8. 获得平均码长function len_ave = FanoCodeLength(code)len = length(code);len_ave = 0;for i = 1:len len_ave = len_ave + code(i).p*length(code(i).str);endend四
9、结果分析 经过检验之后可以看出,将图像数据进行编码,然后再解码得到的数据和原图像数据完全一致,说明此程序成功编码解码,达到了题目的要求。算法改进:在编码的时候可以直接将灰度值作为码字的下标,提高编码的效率。DIP-5 图像分割一 题目要求对下图施加高斯噪声,采用LoG算子对含噪声的图象实施边缘分割,找出该图象的最佳边缘。二算法设计在对图像处理的研究和应用中,人们往往仅对图像中的某些部分感兴趣,这些感兴趣的部分常称为目标或对象,它们一般对应图像中特定的、具有独特性质的区域。图像分割是指根据灰度、彩色、空间纹理、几何形状等特征把图像划分成若干个互不相交的区域,使得这些特征在同一区域内表现出一致性或
10、相似性,而在不同区域间表现出明显的不同,即在一幅图像中把目标从背景中分离出来,以便于进一步处理。图像分割就是指把图像分成互不重叠的区域并提取出感兴趣目标的技术。像的分割有很多种类,边缘分割也有很多种类,LoG算子是其中一类。由于在成像时,一个给定像素所对应的场景点,它的周围点对该点的贡献的光强大小呈正态分布,所以平滑函数应能反映不同远近的周围点对给定像素具有不同的平滑作用,因此,平滑函数采用正态分布的高斯函数,即式中,s是方差。 用h(x,y)对图像f(x,y)的平滑可表示为 g(x,y)h(x,y)*f(x,y)如果令r是离原点的径向距离,即r2x2y2,转换,然后对图像g(x,y)采用拉普
11、拉斯算子进行边缘检测,可得上式中的称为高斯拉普拉斯滤波(Laplacian of Gaussian,LoG)算子,也称为“墨西哥草帽”。它是一个轴对称函数,各向同性,它的一个轴截面如图所示。由图可见,这个函数在rs处有过零点,在|r|s时为负;可以证明这个算子定义域内的平均值为零,因此将它与图像卷积并不会改变图像的整体动态范围。但由于它相当光滑,因此将它与图像卷积会模糊图像,并且其模糊程度是正比于s的。正因为的平滑性质能减少噪声的影响,所以当边缘模糊或噪声较大时,利用检测过零点能提供较可靠的边缘位置。在该算子中,s的选择很重要,s小时边缘位置精度高,但边缘细节变化多;s大时平滑作用大,但细节损
12、失大,边缘点定位精度低。应根据噪声水平和边缘点定位精度要求适当选取s。 LoG算子用到的卷积模板一般较大,不过这些模板可以分解为一维卷积来快速计算。通过判断零交叉点及其两侧像素符号的变化来确定边缘点。边缘点两侧的二阶微分是异号的,且正号对应边像点的暗侧,负号对应边像点的亮侧,两侧的符号指示着边缘的起伏走向。三 实现代码clc;i = imread(D:matlab2011workp5-03.tif);subplot(121);imshow(i);title(原图像);b=log_edge(i);subplot(122);imshow(b);title(原图像);2.LoG算子提取边缘点函数%下
13、面的代码可以实现LoG算子提取边缘点的功能function e=log_edge(a)%该函数实现LoG算子提取边缘点%输入为图像a,输出为边缘图像em,n=size(a);e=repmat(logical(uint8(0),m,n);sigma=2;%产生同样大小的边缘图像e,初始化为0rr=2:m-1;cc=2:n-1;fsize=ceil(sigma*3)*2+1;%选择点数为奇数的滤波器的尺寸fsize6*sigma;op=fspecial(log,fsize,sigma);%产生LoG滤波器op=op-sum(op(:)/prod(size(op);%将LoG滤波器的均值变为0b=f
14、ilter2(op,a);%利用LoG算子对图像滤波thresh=.75*mean2(abs(b(rr,cc);%设置过零检测的门限%寻找滤波后的过零点:+ -和- +表示水平方向从左到右和从右到左过零%+ -和- +表示垂直方向从上到下和从下到上过零%这里我们选择边缘点为值为负的点rx,cx=find(b(rr,cc)0 &abs(b(rr,cc)-b(rr,cc+1)thresh); %- +的情况e(rx+1)+cx*m)=1;rx,cx=find(b(rr,cc-1)0&b(rr,cc)thresh); %+ -的情况e(rx+1)+cx*m)=1;rx,cx=find(b(rr,cc
15、)0&abs(b(rr,cc)-b(rr+1,cc)thresh); %- +的情况e(rx+1)+cx*m)=1;rx,cx=find(b(rr-1,cc)0&b(rr,cc)thresh); %+ -的情况e(rx+1)+cx*m)=1;%某些情况下LoG滤波结果可能正好为0,下面考虑这种情况:rz,cz=find(b(rr,cc)=0);ifisempty(rz) %寻找滤波后的过零%+0-和-0+表示水平方向从左到右和从右到左过零%+0-和-0+表示垂直方向从上到下和从下到上过零 %边缘正好位于滤波值为零点上 zero=(rz+1)+cz*m; %零点的线性坐标 zz=find(b(z
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字图像 处理 图像 编码 15
限制150内