在 MATLAB 中保存连接的图像

Posted

技术标签:

【中文标题】在 MATLAB 中保存连接的图像【英文标题】:Save concatenated images in MATLAB 【发布时间】:2020-11-19 09:04:24 【问题描述】:

我正在尝试连接两个 256x256 图像并使用 imwrite 保存它们。保存的图像应该是 256x512,但是当我加载保存的图像时,大小显示为 343x434x3。我该如何解决?

我使用的代码是:

new_name3 = strcat(f_name_image, '\', kk, '_', num2str(ff), '_pair.png');
pair = [orig_im  noisy_image]; %concatenating two 256x256 images
imagesc(pair)
f = getframe(gca);  
im = frame2im(f);
imwrite(im, new_name3);

【问题讨论】:

【参考方案1】:

在不配置其他选项的情况下,从框架中保存图像可能是有损的。要保留像素信息,请直接从pair(此处为Image_Pair)数组中保存连接的图像。此外,343x434x3 中的第三个维度表示图像的 RGB 颜色通道。

%Grabbing the two images%
Image_1 = imread('Image_1.jpeg');
Image_2 = imread('Image_2.jpeg');

%The file name for the concantenated images%
New_File_Name = "Image_3.jpeg";

%Concatenating the images%
Image_Pair = [Image_1 Image_2];

%Displaying the image pair%
imshow(Image_Pair);

%Saving the image to the "New_File_Name"%
imwrite(Image_Pair, New_File_Name);

%Loading the saved image to see if dimensions are consistent%
Saved_Image = imread('Image_3.jpeg');

【讨论】:

感谢您的回复。我实际上尝试在不使用“getframe”的情况下保存图像。我得到了预期的 256x512 图像,但保存的图像与 matlab 图形窗口中显示的图像不同。我认为,在保存时,它会失去精度,这就是保存的图像混乱的原因。我试图找出 getframe 的其他选项,以便我可以保存图像而不会丢失,但找不到它。你能帮忙吗? 没问题,所以我猜你也需要图形窗口。我会继续的。图窗口中显示的图像和保存的图像在我测试时非常匹配。您可以发布您正在使用的图片吗? 我在帖子中添加了一张我正在使用的图片。所以这是我提到的代码中的“orig_im”。我只是给它添加了一些噪音,得到了一个“noisy_image”。我需要用串联的配对图像构建数据集来训练深度学习模型。我不需要图形窗口,只需要配对图像。我认为您的图像匹配,因为它们的两个像素值都在 uint8 中。但我试图将像素值保存为双倍,这可能是问题的根源。谢谢。 @shaurov2253:您永远不应该通过显示器来修改和保存图像数据。您可以应用 imagesc() 所做的相同转换:img = img-min(img(:)); img = double(img)*255/max(img(:)); img = uint8(img); @saurov2253 您不能将双值数组保存到 JPEG 文件中。 JPEG 始终是 8 位无符号整数。如果要保存浮点值,则需要使用 TIFF 之类的格式(但浮点 TIFF 文件不受广泛支持)或非图像文件格式进行保存。但是你的深度学习模型不需要高精度数据,8 位数据就绰绰有余了。无论如何,这些工具通常都会对图像文件中的数据进行规范化。

以上是关于在 MATLAB 中保存连接的图像的主要内容,如果未能解决你的问题,请参考以下文章

请问在MATLAB如何中保存大量的gif图像。

matlab如何让调整保存图像的大小

在 MATLAB 中保存非常大的图像

matlab中如何将输出的figure中的图像保存在我的文档中

Matlab中如何只把figure中的图像区域保存为图片文件

保存matlab中已分割的图像