How to use 2D logical mask on an image without for loop?
    5 views (last 30 days)
  
       Show older comments
    
I have two image matrices A and B with size 512 x 512 x 3, and a logical mask of size 512 x 512. For each position with true value in the mask, I want to set A's value to B's. Currently I only know the for loop solution:
for y = 1 : height
    for x = 1 : width
        if mask(y,x)
            A(y,x,:) = B(y,x,:)
        end
    end
end
Is there a way to avoid the for loop?
0 Comments
Answers (1)
  KSSV
      
      
 on 28 Apr 2020
        B = zeros(512,512,3) ; 
for i = 1:3
    T1 = B(:,:,1) ; 
    T2 = A(:,:,i) ; 
    T1(idx) = T2(idx) ; 
    B(:,:,i) = T1 ; 
end
2 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
