如何在一个窗口matlab上组合两个图像?

che*_*hee 2 matlab

我有两个大小的图像让我们说image1 = 250x250和image2 = 250x550.我希望有一个图像显示这两个图像组合.像image3 = image1 + image2表示image3 = 250x800.

gno*_*ice 12

使用串联可以轻松地组合图像:

image3 = [image1 image2];  %# Concatenate horizontally
Run Code Online (Sandbox Code Playgroud)

然后,您可以image3使用IMAGE,IMAGESCIMSHOW中的任何功能进行可视化:

image(image3);  %# Display the image in a figure window
Run Code Online (Sandbox Code Playgroud)


注意:

您没有提到您正在处理的图像类型,只是它们是像素数据的二维矩阵.这意味着它们可以是二进制图像(像素值为0或1),灰度图像(具有表示从黑到白的范围的像素值)或索引颜色图像(具有表示颜色图中的索引的像素值).

对于二进制和灰度图像,上述解决方案应该可以正常工作.但是,如果每个图像都有自己独特的色彩映射,则索引的彩色图像可能更难以组合.如果使用IMREAD函数从文件加载图像,则可以像这样获取颜色贴图:

[image1,map1] = imread('image1.png');  %# Image and colormap for image file 1
[image2,map2] = imread('image2.png');  %# Image and colormap for image file 2
Run Code Online (Sandbox Code Playgroud)

现在,如果map1并且map2包含不同的颜色排列,则两个图像不能如此容易地组合.一种解决方案是首先使用IND2RGB函数将图像转换为三维真彩色图像,然后使用CAT函数将它们组合:

image1 = ind2rgb(image1,map1);  %# Convert image 1 to RGB
image2 = ind2rgb(image2,map2);  %# Convert image 2 to RGB
image3 = cat(2,image1,image2);  %# Concatenate the images along dimension 2
Run Code Online (Sandbox Code Playgroud)

现在您可以image3按上述方式查看.