使用Matlab imwrite以JPEG格式保存灰色图像

时间:2011-10-29 21:11:48

标签: matlab image-processing jpeg

我是图像处理领域的新手,我想寻求一个我无法弄清楚的问题的帮助。问题如下:

我有一个灰色(黑白)图像'grayimage',我想使用JPEG格式在Matlab中使用imwrite函数保存。我使用以下语法:

imwrite(grayimage,cmap, 'imagename.jpg', 'jpeg');

现在,当我使用图像查看器打开图像文件imagename.jpg时,我看不到灰色图像。它的颜色和图像不同。

我可以在imwrite中找到我错误的选项/参数吗?

我想过将图像转换为RGB然后以jpeg格式保存。这会有帮助吗?

3 个答案:

答案 0 :(得分:3)

在我看来,你有一个带有关联色图的索引图像。您可以使用IND2GRAY函数将其转换为灰度图像,然后使用IMWRITE将其保存到磁盘:

I = ind2gray(grayimage,cmap);
imwrite(I,'imagename.jpg');

答案 1 :(得分:3)

你的cmap来自哪里?可能它是一个“彩色”色彩图。尝试使用灰色色图:

cmap = colormap('gray');
imwrite(grayimage,cmap, 'imagename.jpg', 'jpeg');

有关colormap的更多信息:http://www.mathworks.se/help/techdoc/ref/colormap.html

答案 2 :(得分:0)

欢迎来到lossy compression的世界。

如果您只是想要一个灰度jpeg,最简单的方法是安装jpegtrans程序并使用其-grayscale选项来摆弄图像的chrominance channel

colorful jpeg converted to grayscale using jpegtrans

更好的选择是使用lossless compression format输出,例如png

(感谢维基百科有关有损大小的彩色图像的有损压缩页面。)