Search code examples
imagematlabmatrixgeotiff

Matlab: replace values in one matrix with another matrix according to their referenced locations


I have two geotiff images (saying "A" and "B") imported in Matlab as matrices with Geotiffread. One has different values, while the second has only 0 and 255s. What I'd like to do is replacing all the 255s with the values inside the other image (or matrix), according to their positions. A and B differs in size, but they have the same projections.

I tried this:

A (A== 255)= B;

the output is the error:

??? In an assignment  A(:) = B, the number of elements in A and B must be the same.

Else, I also tried with the logical approach:

if A== 255
    A= B;
end

and nothing happens.

Is there a way to replace the values of A with values of B according to a specific value and the position in the referenced space?


Solution

  • It seems to me that you are trying to mask an image with a binary mask. You can do this:

    BW = im2bw(B,0.5);
    A=A.*BW;
    

    hope it helps