logo资料库

用游程编码对二值图像图像进行压缩.docx

第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
资料共6页,全文预览结束
成绩 机 器 视 觉 课 程 设 计 题目: 用游程编码对二值图像进行压缩及解压 学生姓名 梁冬梅 学 号 2006116165 指导教师 王 宾 院 专 年 系 业 级 信息学院 通信工程 06 级 教务处制
用游程编码对二值图像进行压缩及解压 1. 代码 % 载入原图像并转换为二值图像 load trees; image1=im2bw(X,map,0.4); figure,imshow(X,map); %显示原图像 title('载入 matlab 原有图像 tree'); figure,imshow(image1); title('转换得到的二值图像'); X=image1(:); x=1:1:length(X); figure,plot(x,X(x)); title('编码之前的图像数据'); % 游程编码程序段 %令 X 为新建的二值图像的一维数据组 % 编码之前的图像数据 j=1; image4(1)=1; for z=1:1:(length(X)-1) if (X(z)==X(z+1)) image4(j)=image4(j)+1; else data(j)=X(z); j=j+1; image4(j)=1; end end data(j)=X(length(X)); image1length=length(image1); image4length=length(image4); y=1:1:image4length ; figure,plot(y,image4(y)); title('编码后的图像数据'); CR=image4length/image1length; % 游程编码解压 i=1; for m=1:image4length for n=1:1:image4(m); rec_image(i)=data(m); i=i+1; end end % 计算游程编码后的所占字节数 % 编码后数据信息 % 压缩比 u=1:1:length(rec_image); figure,plot(u,rec_image(u)); title('解压后的图像数据'); % 解压后的图像数据
rec2_image=reshape(rec_image,258,350); % 重建二维二维图像数组 figure,imshow(rec2_image); title('解压恢复后的图像数据'); % 解压恢复后的图像 2. 实验结果 2.1 实验得到的图
2.2 实验得到的数据及分析 2.2.1 压缩比 CR=16.7229 原图像数据是 90300*1 的矩阵 2.2.2
image1:压缩前的数据 image4:压缩后的数据 2.2.3 rev2_image:复原后的图像 rec_image:复原后的数据 3. 遇到的问题和解决方案 在使用reshape(A,m,n)恢复原图像时,选用m和n的数值不一样会用不同的结果: 1.当m*n不等于90030,即图像数据的个数时,系统出错,无解压结果 2.当 m*n=90030,但与原图像的矩阵行数列数不一致时,恢复出来的图像失真 如 m=300,n=301(m*n=90030)时 解决方法:发现可在 workspace 中查看实验所使用到的数据,压缩的二值图像 image1 是 258*350 的矩阵,将 m 和 n 设置为相应值,便得到几乎无失真的原图像
分享到:
收藏