将 2 个图像合并为一个平面图像
Combine 2 images as a single planar image
我有两个单独的灰度图像 im1
(图 1)和 im2
(图 2),每个大小为 50 x 50,在这里通过颜色编码显示。当我使用 cat()
命令将它们组合在一起,然后显示连接图像的结果时,它们并排显示(图 3)。但是,如果我通过复制第二张图片中的第一张来创建第三张图片,然后显示这三张图片的串联,我会得到一张图片(图 4)。我不明白 RGB(3 维)的合并是如何可能的,而对于转换为灰度,合并没有发生。如何使用两张图像 im1
和 im2
合并或叠加在合法可行的情况下而不是并排的情况下获得单张图像?我如何叠加 im1
和 im2
以获得单个图像并通过颜色编码显示它?
imgGray = cat(2,im1,im2);
imshow(imgGray)
imgGray = cat(2,im1,im2);
imshow(imgGray)
imagesc(imgGray)
im3=im1;
imgColor = cat(3,im1,im2,im3);
imagesc(imgColor)
你可以做到"manually":
- 使用
ind2rgb
使用 "color coding" 将每个灰度图像转换为 RGB。
- 计算两个 RGB 图像的平均值以获得 "fused image"。
这是一个代码示例:
% Use cameraman as first image, and resized moon for the second image (just for example).
I1 = imread('cameraman.tif'); % I1 is uint8 Grayscale
I2 = imresize(imread('moon.tif'), size(I1)); % I2 is uint8 Grayscale
% Convert images to RGB using parula color map (you may choose any color map).
J1 = ind2rgb(I1, parula(256)); % J1 is double RGB (three color planes in range [0, 1]).
J2 = ind2rgb(I2, parula(256)); % J2 is double RGB (three color planes in range [0, 1]).
% Fuse J1 and J2 "manually".
alpah = 0.5; % Using alpah=0.5, gives average of J1 and J2.
K = J1*alpah + J2*(1-alpah); %K is is double RGB.
K = im2uint8(K); % Convert K to uint8 (im2uint8 multiplies pixels by 255, and convert to uint8).
%Display result
figure;imshow(K);
结果:
您也可以将它们彼此相加(在标准化它们之后)并用一个颜色图来表示所有这些
imagesc(I1+I2);
或者如果你想根据颜色和强度设置透明度,你可以添加
alpha color
alpha scaled
我有两个单独的灰度图像 im1
(图 1)和 im2
(图 2),每个大小为 50 x 50,在这里通过颜色编码显示。当我使用 cat()
命令将它们组合在一起,然后显示连接图像的结果时,它们并排显示(图 3)。但是,如果我通过复制第二张图片中的第一张来创建第三张图片,然后显示这三张图片的串联,我会得到一张图片(图 4)。我不明白 RGB(3 维)的合并是如何可能的,而对于转换为灰度,合并没有发生。如何使用两张图像 im1
和 im2
合并或叠加在合法可行的情况下而不是并排的情况下获得单张图像?我如何叠加 im1
和 im2
以获得单个图像并通过颜色编码显示它?
imgGray = cat(2,im1,im2);
imshow(imgGray)
imgGray = cat(2,im1,im2);
imshow(imgGray)
imagesc(imgGray)
im3=im1;
imgColor = cat(3,im1,im2,im3);
imagesc(imgColor)
你可以做到"manually":
- 使用
ind2rgb
使用 "color coding" 将每个灰度图像转换为 RGB。 - 计算两个 RGB 图像的平均值以获得 "fused image"。
这是一个代码示例:
% Use cameraman as first image, and resized moon for the second image (just for example).
I1 = imread('cameraman.tif'); % I1 is uint8 Grayscale
I2 = imresize(imread('moon.tif'), size(I1)); % I2 is uint8 Grayscale
% Convert images to RGB using parula color map (you may choose any color map).
J1 = ind2rgb(I1, parula(256)); % J1 is double RGB (three color planes in range [0, 1]).
J2 = ind2rgb(I2, parula(256)); % J2 is double RGB (three color planes in range [0, 1]).
% Fuse J1 and J2 "manually".
alpah = 0.5; % Using alpah=0.5, gives average of J1 and J2.
K = J1*alpah + J2*(1-alpah); %K is is double RGB.
K = im2uint8(K); % Convert K to uint8 (im2uint8 multiplies pixels by 255, and convert to uint8).
%Display result
figure;imshow(K);
结果:
您也可以将它们彼此相加(在标准化它们之后)并用一个颜色图来表示所有这些
imagesc(I1+I2);
或者如果你想根据颜色和强度设置透明度,你可以添加
alpha color
alpha scaled