matlab实现读取和写入PPM和PGM图像的功能
时间: 2024-02-25 19:51:34 浏览: 159
读取PPM和PGM图像:
```matlab
function [img, type] = read_image(filename)
% 打开文件
fid = fopen(filename, 'r');
% 读取文件头
fgetl(fid); % P5 或 P6
type = fgetl(fid); % 宽度和高度
fgetl(fid); % 最大灰度值
% 根据类型读取图像
if strcmp(type, 'P5') % PGM
img = fread(fid, [str2double(type(2:end)), Inf], 'uint8');
elseif strcmp(type, 'P6') % PPM
img = fread(fid, [str2double(type(2:end)), Inf, 3], 'uint8');
else
error('Unsupported image format!');
end
% 关闭文件
fclose(fid);
end
```
写入PPM和PGM图像:
```matlab
function write_image(filename, img, type)
% 打开文件
fid = fopen(filename, 'w');
% 写入文件头
fprintf(fid, '%s\n', type);
fprintf(fid, '%d %d\n', size(img, 2), size(img, 1));
fprintf(fid, '255\n');
% 根据类型写入图像
if strcmp(type, 'P5') % PGM
fwrite(fid, img', 'uint8');
elseif strcmp(type, 'P6') % PPM
fwrite(fid, permute(img, [2, 1, 3]), 'uint8');
else
error('Unsupported image format!');
end
% 关闭文件
fclose(fid);
end
```
其中,`filename` 是图像文件名,`img` 是图像矩阵,`type` 是图像类型,可以是 `'P5'` 表示 PGM 灰度图像,或者是 `'P6'` 表示 PPM 彩色图像。函数返回值中,`img` 是读取的图像矩阵,`type` 是读取的图像类型。
阅读全文