【问题标题】:Matlab imwrite() qualityMatlab imwrite() 质量
【发布时间】:2013-06-20 10:14:23
【问题描述】:

我对 Matlab 很陌生,虽然我知道一些其他的编程语言,所以如果这很简单,请原谅我。我无法在 StackOverflow 或其他地方找到任何答案。

我使用以下代码生成一个图形:

 figure(6),imageplot(P); drawnow;

看起来像这样:

然后我使用以下命令将此图像保存到我的计算机:

imwrite(P, 'images/plot.png');

生成的图像很小,并且缺少一些颜色信息:

但是,如果我在打开的图(图像 #1)中使用保存功能并手动保存它,我得到的正是我想要的,即存储在我计算机上的精确图像。

我将如何编程?我认为 imwrite() 只会直接写入图像,但显然我做错了什么。有什么建议吗?也许它与 imageplot 命令有关?我似乎无法让它在 imwrite 中工作。

更新:根据下面的 cmets,我已经开始使用带有“最近”选项的“imresize”。这会正确缩放图像,但结果图像仍然比我点击图中的“保存”按钮时更暗(因此信息更少)。

从图中保存的图像:

使用“imresize”和“最近”选项的图像:

【问题讨论】:

    标签: matlab matlab-figure


    【解决方案1】:

    MATLAB imwrite 命令准确保存图像矩阵中指定的像素数。这是您计算的实际结果;输出是“小”的原因是因为它应该是。要使其更大,只需根据需要进行缩放/缩放。

    然而,保存图形选项的作用却完全不同:它将您在图形窗口中获得的输出栅格化,并为您提供将其保存为图像的选项。这一点很明显,当您这样做时,除了您的结果之外,您还获得了一个白色背景,这实际上只是您在保存之前看到的灰色背景;这可以通过在使用保存选项之前调整图形窗口的大小来调整。

    如果您只是想让输出数字变大,我建议您使用类似于imresize 命令的内容。

    说,如果您希望默认大小是实际结果大小的两倍,只需使用:

    imresize(P, 2.0);
    

    如需更多选项,请尝试help imresize

    【讨论】:

    • 这确实调整了图像的大小,但它似乎使用了以前的光栅化版本,只是让它变大了。因此,例如,运行 imwrite(imresize(P, 2.0), filename);只是将图像拉伸到两倍尺寸 - 它更大,但非常模糊,并且仍然缺少原始图形中的一些颜色信息。
    • 使用imresize'nearest' 选项来阻止插值(因此模糊)发生。
    • 请查看我的更新 - 使用最近的作品,但这仍然不是我想要的,因为虽然缩放现在有效,但它明显更暗。
    • @user774359: imwrite 在这里似乎更简单。它甚至不需要您创建一个图形。您需要将 1×1 像素的大小调整为 72 dpi 的屏幕分辨率,或者任何您想要的。我认为结果图像较暗的原因是由于灰度 PNG 的默认 8 位 'bitdepth'print 输出(真彩色)24 位(每通道 8 位)RGB PNG,无论输入是什么。查看文档以了解如何更改 imwrite 的输出。
    【解决方案2】:

    图形的“另存为...”功能所需的命令称为“打印”。我经常使用

    print(gcf, '-dpng', 'some_filename.png')
    

    print(gcf, '-depsc', 'some_filename.eps','-r0')
    

    保存屏幕上显示的图形。 png 格式提供较小的文件大小和出色的质量,大多数图像查看器和浏览器都可以理解。 eps 格式是一种矢量格式,我用于 printig。 '-r0' 选项为矢量格式属性指定“使用与屏幕分辨率相同的大小”。

    【讨论】:

    • 你建议我如何将我的代码与 print() 函数结合起来?如我的问题所述,我可以使用 imageplot(P) 查看我想要的图像。使用 print(P, '-dpng','filename.png') 会产生错误:“句柄输入必须是标量、向量或向量元胞数组。”我还尝试使用 print(imageplot(P),'-dpng','filename.png') 来尝试准确打印我显示的内容,但这会产生错误“输出参数过多”。
    • 您需要在图形句柄上使用 print - 绘制矩阵 P 后,gcf 返回当前图形句柄,如 Martin J.H.用途。你也可以使用f=figure; imageplot(P); print(f,...);
    • 好了。完美。非常感谢!
    猜你喜欢
    • 2015-05-10
    • 1970-01-01
    • 2020-10-18
    • 1970-01-01
    • 2019-08-23
    • 2018-11-16
    • 1970-01-01
    • 2012-01-07
    • 1970-01-01
    相关资源
    最近更新 更多