如何从混合图像中分离两个图像

时间:2010-06-13 20:13:49

标签: image matlab image-processing

我已经将2个图像img1和img2混合/合并到这个代码中,这很好。我想知道的是如何获得原始的两个图像img1和img2。混合的代码如下

img1=imread('C:\MATLAB7\Picture5.jpg');
img2=imread('C:\MATLAB7\Picture6.jpg');
for i=1:size(img1,1)
  for j=1:size(img1,2)
    for k=1:size(img1,3)
      output(i,j,k)=(img1(i,j,k)+img2(i,j,k))/2;
    end
   end
end
imshow(output,[0 255]);

2 个答案:

答案 0 :(得分:4)

如果您有一张原始图像加上混合图像,则可以恢复第二张图像。

如果您只有混合图像,则可以合并几乎无限数量的img1img2以创建两个图像,以便您无法恢复它们。

对于未来的matlab编程,请注意在matlab中你不需要你编写的循环,这与你给出的代码是等价的:

img1=imread('C:\MATLAB7\Picture5.jpg');
img2=imread('C:\MATLAB7\Picture6.jpg');
output = (img1 + img2) ./ 2;
imshow(output,[0 255]);

答案 1 :(得分:1)

如果你混合这样的图像:

img1=imread('C:\MATLAB7\Picture5.jpg');
img2=imread('C:\MATLAB7\Picture6.jpg');
blendedImg = (img1/2 + img2/2); % divide images before adding to avoid overflow

如果你有img2,你可以从混合图像中找回img1(可能有一些舍入错误)

img1recovered = 2*(blendedImg - img2/2);

figure,subplot(1,2,1)
imshow(img1,[0 255])
subplot(1,2,2)
imshow(img1recovered,[0 255])