2013-08-29 70 views
1

我已经正被保存在轴MATLAB GUI保存图像使用imwrite MATLAB

file = 'C:\Documents and Settings\Home\Desktop\new.bmp'; 
     imwrite(handles.fname, file); 
     imfinfo(file) 

handles.fname了索引图像的索引图像。以上代码将图像以24位深度的BMP格式保存到桌面。但我需要保存在8位深度。我应该在代码中做些什么改变?

+1

要获得8位图像,是要减少颜色深度还是转换为灰度? –

回答

1

检查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,它适应不同的输入数据类型。

+0

是否可以将'bitdepth'应用于BMP格式? – Adiel

+0

@Adiel该文档指出'imwrite'支持“BMP 1位,8位和24位未压缩的图像”,但正确的选项不是“bitdepth”。 –

+0

@Chethan我无法访问你链接到的图像... –