我已经正被保存在轴MATLAB GUI保存图像使用imwrite MATLAB
file = 'C:\Documents and Settings\Home\Desktop\new.bmp';
imwrite(handles.fname, file);
imfinfo(file)
handles.fname
了索引图像的索引图像。以上代码将图像以24位深度的BMP格式保存到桌面。但我需要保存在8位深度。我应该在代码中做些什么改变?
我已经正被保存在轴MATLAB GUI保存图像使用imwrite MATLAB
file = 'C:\Documents and Settings\Home\Desktop\new.bmp';
imwrite(handles.fname, file);
imfinfo(file)
handles.fname
了索引图像的索引图像。以上代码将图像以24位深度的BMP格式保存到桌面。但我需要保存在8位深度。我应该在代码中做些什么改变?
检查imwrite
后更仔细地发现BMP选项不支持写入选项'bitdepth'。
,为了转换为8位单色(例如见here),你可以尝试
imwrite(rgb2gray(im2uint8(handles.fname)), file)
有转换比rgb2gray
至单色等,其中使用了亮度通道的other方式。
如果你想减少颜色深度有一个环节here解释如何可以实现与
new_4bit=uint8(16*(round((double(original)+1)/16)-1));
new_3bit=uint8(32*(round((double(original)+1)/32)-1));
这是假定原来是一种UINT8图像。
编辑
我删除uint8
转换语句。在执行此类操作之前,应检查图像是否为double或uint8,并根据需要缩放值。我添加了im2uint8
,它适应不同的输入数据类型。
是否可以将'bitdepth'应用于BMP格式? – Adiel
@Adiel该文档指出'imwrite'支持“BMP 1位,8位和24位未压缩的图像”,但正确的选项不是“bitdepth”。 –
@Chethan我无法访问你链接到的图像... –
要获得8位图像,是要减少颜色深度还是转换为灰度? –