matlab中两幅图像的融合
问题描述:
考虑两幅图像。这两个图像的大小可以是任何东西。将这两个图像的大小相同。开发一种算法来混合这两个图像,使得交替像素来自两个图像课程。它是两幅图像的融合。例如,像素1是图像1,像素2来自图像2,像素3来自图像1,依此类推......matlab中两幅图像的融合
答
我知道你更喜欢使用Matlab,但直到有人给你一个Matlab的答案,你可能会喜欢玩ImageMagick,它可以为你做到这一点,无论如何在大多数Linux发行版中,并且可以在Windows和Mac OSX上免费获得。
首先,让我们来创建不同大小的2个图像和颜色:
convert -size 300x300 xc:blue image1.png
convert -size 200x400 xc:red image2.png
基本上,您可以通过指定后,方括号中的图像大小读他们可以将图像调整文件名,所以我任意选择将这两个图像的大小调整为256x256像素。然后,我使用极其强大fx
操作者,所以检测如果我处理一个奇数或偶数编号的像素,并选择任一从第一或相应地第二图像:
convert image1.png[256x256] image2.png[256x256] -fx "i%2?u:v" out.png
答
这里是一个用MATLAB来做到这一点。
clear
clc
%// Initialize red and blueimages
RedImage = zeros(300,300,3,'uint8');
BlueImage = zeros(200,400,3,'uint8');
%// Color them
RedImage(:,:,1) = 255;
BlueImage(:,:,3) = 255;
figure('Color',[1 1 1]);
%// Show them
subplot(1,2,1)
imshow(RedImage)
subplot(1,2,2)
imshow(BlueImage)
它看起来像这样:
%// Resize them to same size
RedImage = imresize(RedImage,[256 256]);
BlueImage = imresize(BlueImage,[256 256]);
%// Initialize new image
NewImage = zeros(256,256,3,'uint8');
%// Assign alternate pixels to new images
NewImage(1:2:end,1:2:end,:) = RedImage(1:2:end,1:2:end,:);
NewImage(2:2:end,2:2:end,:) = BlueImage(2:2:end,2:2:end,:);
figure
imshow(NewImage)
它输出这样的:
它看起来暗,但调整的数字会告诉你,它的工作原理确实!
希望有帮助!玩的开心。
你为什么要这么做? – 2014-12-09 12:11:48