0

假设我有 2 个大小相同的图像,并且这 2 个图像具有相似的像素值,例如

img1 = [1 5 1 5,7 2 7 2, 3 9 3 9,8 4 8 4]; 
img2 = [5 1 5 1,2 7 2 7, 9 3 9 3,4 8 4 8];

img1我只需要从和中选择最大值img2。我想要新的形象

img3 = [5 5 5 5,7 7 7 7, 9 9 9 9,8 8 8 8]; 

简而言之,我想比较 and 中的所有像素,img1img2创建包含来自andimg3的最大值的新像素。img1img2

我怎样才能做到这一点?

4

3 回答 3

8

我肯定错过了什么。只是有什么问题:

  img3 = max(img1, img2);

根据文档:

 MAX(X,Y) returns an array the same size as X and Y with the
    largest elements taken from X or Y. Either one can be a scalar.

所以它应该按预期工作。

好吧,由于每个人都想出了这些复杂的解决方案,所以我不得不自己尝试看看。

    >> img1 = [1 5 1 5,7 2 7 2, 3 9 3 9,8 4 8 4];
    >> img2 = [5 1 5 1,2 7 2 7, 9 3 9 3,4 8 4 8];
    >> img3 = max(img1,img2);
    >> img3

    img3 =

 5     5     5     5     7     7     7     7     9     9     9     9     8     8     8     8

编辑:必须自己检查下面的评论(;而不是,):

    >> img1 = [1 5 1 5;7 2 7 2; 3 9 3 9;8 4 8 4];
    >> img2 = [5 1 5 1;2 7 2 7; 9 3 9 3;4 8 4 8];
    >> img3 = max(img1,img2);
    >> img3

    img3 =

         5     5     5     5
         7     7     7     7
         9     9     9     9
         8     8     8     8
于 2013-02-01T04:55:52.797 回答
4

img3 = img1 .* (img1 > img2) + img2 .* (img2 > img1);

于 2013-02-01T04:44:43.743 回答
1

您可以在两个 2D 数组中创建一个 3D 矩阵:

a(:,:,1)=img1;
a(:,:,2)=img2;

然后

ans=max(a,[],3);
于 2013-02-01T04:30:07.653 回答