gpt4 book ai didi

image - 将矩阵保存为图像

转载 作者:太空宇宙 更新时间:2023-11-03 20:01:33 26 4
gpt4 key购买 nike

我有一个数据类型为 double 的矩阵 finalMat,其值在 0 到 255 的范围内。它实际上对应于一些图像。我显示如下:

imshow(finalMat, []);

但是当我尝试使用下面的代码保存它时,保存的图像是全白的。

imwrite(finalMat,'myImage.jpeg','JPEG');

我想将图像保存在磁盘上而不更改 finalMat 矩阵中的值。当我读取保存的图像时,即 myImage.jpeg,我必须获得与 finalMat 中相同的值。有人可以帮忙保存图像吗?

最佳答案

imwrite在写入文件之前首先检查数据类型以确定如何处理输入中的值。如果输入为 double,则假定范围为 0 到 1。如果输入为 uint8,则假定为 [0, 255]。

您的两个选择是将数据转换为 uint8 或在 0 和 1 之间将其归一化并保持为 double

转换为 uint8

对于您的特定示例,您已经拥有 0 到 255 之间的数据并且可能不希望缩放该数据,因此您可能想要使用 uint8施法路线。

imwrite(uint8(finalMat), 'file.jpg');

请记住,由于您有一个 double 图像矩阵,这将强制所有数字为整数值,因此当您加载它时它可能不会完全相等回到 MATLAB。

标准化图像数据

更一般地说,您通常希望使用 mat2gray 的规范化方法。为您进行标准化,让您可以利用完整的 8 位范围。

imwrite(mat2gray(finalMat), 'file.jpg')

NOTE: You mention that you want the resulting image to be exactly equal to the matrix that you're passing into it. Unfortunately, your input data is a double which requires 64 bits per pixel. None of the imaging formats supported by MATLAB can actually store all 64 bits so you're going to end up with some differences regardless of how you do this. If you want to minimize this effect, look for an image format that supports 16 or 32-bit data (the JPEG you're currently creating is 8-bit). Also, I would recommend against using JPEG as this is potentially a lossy type of compression. If you want lossless compression, go with a TIFF or PNG.

关于image - 将矩阵保存为图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35802515/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com