行程编码的M语言实现
在MATLAB中输入下面代码
I=imread(‘pears.png’);%读入图像并进行灰度转换
imshow(I);
IGRAY=rgb2gray(I);
[m n]=size(IGRAY);
c=I(1,1);RLEcode(1,1:3)=[1 1 c];%建立数组RLEcode,其中元素排列形式为[行程起始行坐标、行程列坐标、灰度值]
t=2;
for k=1:m %进行行程编码
for j=1:n
if(not(and(k==1,j==1)))
if(not(I(k,j)==c))
RLEcode(t,1:3)=[k j I(k,j)];
c=I(k,j);
t=t+1;
end
end
end
end
结果为
将上述编码稍作修改,使得待压缩编码的图像为二值图像,编码如下
I=imread(‘pears.png’);%读入图像并转换成二值图像
imshow(I);
IBW=im2bw(I);
[m n]=size(IBW);
c=I(1,1);RLEcode(1,1:3)=[1 1 c];%建立数组RLEcode,其中元素排列形式为[行程起始行坐标、行程列坐标、灰度值]
t=2;
for k=1:m %进行行程编码
for j=1:n
if(not(and(k==1,j==1)))
if(not(IBW(k,j)==c))
RLEcode(t,1:3)=[k j IBW(k,j)];
c=IBW(k,j);
t=t+1;
end
end
end
end
结果如下