二值图像游程编码算法的Matlab实现

更新时间:2023-10-03 05:18:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

二值图像游程编码算法的Matlab实现

实验源程序以及相关结果如下:

>> image1=imread('C:\\Program Files\\MATLAB71\\work\\1\\girl.jpg'); %读入图像 >> imshow(image1); %显示原图像

>> % 以下程序是将原图像转换为二值图像

>> image2=image1(:); %将原始图像写成一维的数据并设为 image2 >> image2length=length(image2); % 计算image2的长度

>> for i=1:1:image2length % for 循环,目的在于转换为二值图像

If image2(i)>=127

image2(i)=255;

else image2(i)=0; end end

>> image3=reshape(image2,146,122); % 重建二维数组图像,并设为image3 >> figure,imshow(image3);

>> % 以下程序为对原图像进行游程编码,压缩 >> X=image3(:); %令X为新建的二值图像的一维数据组 >> x=1:1:length(X); % 显示游程编码之前的图像数据 >> figure,plot(x,X(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); % data(j)代表相应的像素数据 j=j+1;

image4(j)=1; end end

>> data(j)=X(length(X)); % 最后一个像素数据赋给data

>> image4length=length(image4); % 计算游程编码后的所占字节数,记为image4length >> y=1:1:image4length ; % 显示编码后数据信息 >> figure,plot(y,image4(y));

>> CR=image2length/image4length; % 比较压缩前于压缩后的大小

>> % 下面程序是游程编码解压 >> l=1;

>> for m=1:image4length for n=1:1:image4(m);

rec_image(l)=data(m); l=l+1; end end

>> u=1:1:length(rec_image); % 查看解压后的图像数据 >> figure,plot(u,rec_image(u));

>> rec2_image=reshape(rec_image,146,122); % 重建二维二维图像数组 >> figure,imshow(rec2_image); % 显示解压恢复后的图像

通过matlab可以看出,程序运行过程中各个变量的值 如下图:

CR= 12.084 ,说明该游程编码,压缩率为 12.084

本文来源:https://www.bwwdw.com/article/xhod.html

Top