clear I1=imread('D:\桌面\untitled1.png'); J=rgb2gray(I1); I2=J(:); I2length=length(I2); figure,imshow(J); for i=1:1:I2length if I2(i)>=127 I2(i)=255; else I2(i)=0; end end I3=reshape(I2,512,512); %重建二维数组图像 figure,imshow(I3); %% 对二值化后的图像进行行程编码 X=I3(:); %令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); %data(j)代表相应的像素数据 j=j+1; I4(j)=1; end end data(j)=X(length(X)); %最后一个像素数据赋值给data I4length=length(I4); %计算行程编码后的所占字节数对这个这么计算压缩率
时间: 2024-01-19 20:02:55 浏览: 126
这段MATLAB代码实现了对图像的二值化和行程编码,并计算了压缩率。具体实现过程如下:
1. 读取彩色图像 'D:\桌面\untitled1.png',并将其转换为灰度图像 J。
2. 将灰度图像 J 转化为一维数组 I2,方便后续处理。
3. 遍历一维数组 I2,将像素值大于等于 127 的像素点设为 255,否则设为 0,实现二值化操作。
4. 将一维数组 I2 重构为二维数组 I3,以便进行后续操作。
5. 对二值化后的图像 I3 进行行程编码。首先将二维数组 I3 转化为一维数组 X,然后遍历一维数组 X,对相邻像素值相等的像素点进行计数操作,并将像素值和计数值存储到行程编码数组 I4 和像素数据数组 data 中。
6. 计算行程编码后的所占字节数 I4length,并计算压缩率 compression_ratio = I4length / (512 * 512),其中 512 * 512 为原始图像的像素数。
以下是完整的MATLAB代码:
```matlab
clear;
% 读取彩色图像并转换为灰度图像
I1 = imread('D:\桌面\untitled1.png');
J = rgb2gray(I1);
% 将灰度图像转化为一维数组
I2 = J(:);
I2length = length(I2);
% 二值化
for i = 1:1:I2length
if I2(i) >= 127
I2(i) = 255;
else
I2(i) = 0;
end
end
% 重构为二维数组
I3 = reshape(I2, 512, 512);
% 行程编码
X = I3(:);
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);
% 计算压缩率
compression_ratio = I4length / (512 * 512);
% 显示图像和压缩率
I3 = uint8(I3); % 转换数据类型为uint8
figure, imshow(J);
figure, imshow(I3);
disp(['Compression ratio: ' num2str(compression_ratio)]);
```
阅读全文