我已经将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]);
答案 0 :(得分:4)
如果您有一张原始图像加上混合图像,则可以恢复第二张图像。
如果您只有混合图像,则可以合并几乎无限数量的img1
和img2
以创建两个图像,以便您无法恢复它们。
对于未来的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])