How to use 2D logical mask on an image without for loop?
2 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!