在 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中如何将输出的figure中的图像保存在我的文档中