一、行程编码概述(RLE)
在图像压缩上,行程编码(RLE)通常用于压缩二值化图像,由于它是基于重复的压缩算法,好比:算法
二维图像降维后(压缩前):0 0 0 0 0 255 255 255 0 0 255
行程编码压缩后:5 0 3 255 2 0 1 255
(压缩格式为:数量+像素+数量+像素…)markdown
若是有大量的像素连续重复,那么压缩率会更高。
编码是方法创建在图像统计特性的基础上的。例如,在传真通讯中的文件大可能是二值图像,即每一个像素的灰度值只有0和1两种取值。将一行中颜色值相同的相邻象素用一个计数值和该颜色值来代替。例如aaabccccccddeee能够表示为3a1b6c2d3e,,即有3个a,1个b,6个c,2个d,3个e。若是一幅图象是由不少块颜色相同的大面积区域组成,那么采用行程编码的压缩效率是惊人的。然而,该算法也致使了一个致命弱点,若是图象中每两个相邻点的颜色都不一样,用这种算法不但不能压缩,反而数据量增长一倍。所以对有大面积色块的图像用行程编码效果比较好。
行程编码的可行性讨论:行程编码的压缩方法对于天然图片来讲是不太可行的,由于天然图片像素点错综复杂,同色像素连续性差,若是硬要用行程编码方法来编码就拔苗助长,图像体积不但没减小,反而加倍。鉴于计算机桌面图,图像的色块大,同色像素点连续较多,因此行程编码对于计算机桌面图像来讲是一种较好的编码方法。
2 图像压缩
2.1 图像压缩:图像压缩就是对图像数据按照必定的规则进行变换和组合,用尽量少的数据量来表示影像,形象的说,就是对影像数据的瘦身。网络
2.2 图像压缩的必要性:多媒体数据的显著特色就是数据量很是大。例如,一张彩色相片的数据量可达10MB;视频影像和声音因为连续播放,数据量更加庞大。这对计算机的存储以及网络传输都形成了极大的负担。ide
2.3 图像压缩的可行性:
1)原始图像数据是高度相关的,存在很大的冗余。数据冗余形成比特数浪费,消除这些冗余能够节约码字,也就是达到了数据压缩的目的。大多数图像内相邻像素之间有较大的相关性,这称为空间冗余。序列图像先后帧内相邻之间有较大的相关性,这称为时间冗余。编码
2)若用相同码长来表示不一样出现几率的符号也会形成比特数的浪费,这种浪费称为符号编码冗余。若是采用可变长编码技术,对出现几率高的符号用短码字表示,对出现几率低的符号用长码字表示,这样就可大大消除符号编码冗余。再次,有些图像信息(如色度信息、高频信息)在一般的视感受过程当中与另一些信息相比来讲不那么重要,这些信息能够认为是内心视觉冗余,去除这些信息并不会明显地下降人眼所感觉到的图像质量,所以在压缩的过程当中能够去除这些人眼不敏感的信息,从而实现数据压缩。atom
function yc %%行程编码算法 %例如aaabccccccddeee才能够表示为3a1b6c2d3e %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %读图 I=imread('Lena.jpg'); [m n l]=size(I); fid=fopen('yc.txt','w'); %yc.txt是行程编码算法的灰度级及其相应的编码表 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %行程编码算法 sum=0; for k=1:l for i=1:m num=0; J=[]; value=I(i,1,k); for j=2:n if I(i,j,k)==value num=num+1; %统计相邻像素灰度级相等的个数 if j==n J=[J,num,value]; end else J=[J,num,value]; %J的形式是先是灰度的个数及该灰度的值 value=I(i,j,k); num=1; end end col(i,k)=size(J,2); %记录Y中每行行程行程编码数 sum=sum+col(i,k); Y(i,1:col(i,k),k)=J; %将I中每一行的行程编码J存入Y的相应行中 end end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %输出相关数据 [m1,n1,l1]=size(Y); disp('原图像大小:') whos('I'); disp('压缩图像大小:') whos('Y'); disp('图像的压缩比:'); disp(m*n*l/sum);
版本:2014aspa