我是图像处理领域的新手,我想寻求一个我无法弄清楚的问题的帮助。问题如下:
我有一个灰色(黑白)图像'grayimage',我想使用JPEG格式在Matlab中使用imwrite
函数保存。我使用以下语法:
imwrite(grayimage,cmap, 'imagename.jpg', 'jpeg');
现在,当我使用图像查看器打开图像文件imagename.jpg时,我看不到灰色图像。它的颜色和图像不同。
我可以在imwrite
中找到我错误的选项/参数吗?
我想过将图像转换为RGB然后以jpeg格式保存。这会有帮助吗?
答案 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:
更好的选择是使用lossless compression format输出,例如png。
(感谢维基百科有关有损大小的彩色图像的有损压缩页面。)