2014-12-09 287 views
-3

考虑两幅图像。这两个图像的大小可以是任何东西。将这两个图像的大小相同。开发一种算法来混合这两个图像,使得交替像素来自两个图像课程。它是两幅图像的融合。例如,像素1是图像1,像素2来自图像2,像素3来自图像1,依此类推......matlab中两幅图像的融合

+0

你为什么要这么做? – 2014-12-09 12:11:48

回答

1

我知道你更喜欢使用Matlab,但直到有人给你一个Matlab的答案,你可能会喜欢玩ImageMagick,它可以为你做到这一点,无论如何在大多数Linux发行版中,并且可以在Windows和Mac OSX上免费获得。

首先,让我们来创建不同大小的2个图像和颜色:

convert -size 300x300 xc:blue image1.png 
convert -size 200x400 xc:red image2.png 

enter image description here enter image description here

基本上,您可以通过指定后,方括号中的图像大小读他们可以将图像调整文件名,所以我任意选择将这两个图像的大小调整为256x256像素。然后,我使用极其强大fx操作者,所以检测如果我处理一个奇数或偶数编号的像素,并选择任一从第一或相应地第二图像:

convert image1.png[256x256] image2.png[256x256] -fx "i%2?u:v" out.png 

enter image description here

0

这里是一个用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) 

它看起来像这样:

enter image description here

%// 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) 

它输出这样的:

enter image description here

它看起来暗,但调整的数字会告诉你,它的工作原理确实!

希望有帮助!玩的开心。