何为行程压缩呢?很简单:
例如:aaabccccccddeee 可以表示为 3a1b6c2d3e
行程压缩对二值图像的压缩非常有效
close all;clear all;clc;
% matlab 行程编解码 二值图像
I1 = imread('lena.jpg');
I2 = I1(:);
I2length = length(I2);
I3 = im2bw(I1,0.5); %将原图像转换为二值图像,阈值为0.5
X = I3(:);
L = length(X);
j = 1;
I4(1) = 1;
for z=1:1:(length(X)-1)
if X(z) == X(z+1)
I4(j) = I4(j) + 1;
else
data(j) = X(z);
j = j+1;
I4(j) = 1;
end
end
data(j) = X(length(X));
I4length = length(I4);
CR = I2length/I4length; %压缩前与压缩后的比值
% 行程编码解压
l = 1;
for m=1:I4length
for n=1:1:I4(m)
decode_image1(l) = data(m);
l = l+1;
end
end
decode_image = reshape(decode_image1,300,300);
figure,
x = 1:1:length(X);
subplot(131),plot(x,X(x));
y = 1:1:I4length;
subplot(132),plot(y,I4(y));
u = 1:1:length(decode_image1);
su