Can this be vectorised? (Adding 3D pattern to 3D matrix at specific indices)
Show older comments
I currently have a problem which requires adding a 3D pattern (stored as a 3D matrix) to another 3D array at a particular X,Y point, specified in a different 2D matrix of 1s and 0s. At a '1' I need to add the pattern on top of whats there, and do nothing at a '0'.
Here is the code:
for i=1:sizei
for j=1:sizej
if edge_image(i,j)==1
range_i = i-shapesize/2:i+shapesize/2;
range_j = j-shapesize/2:j+shapesize/2 ;
voting_area(range_i,range_j,:)= voting_shape + voting_area(range_i,range_j,:) ;
end
end
end
Edge_image is the binary 2d array, voting_shape is the 3d pattern matrix and voting_area is the bigger 3d matrix. (This is a Hough transform loop looking for rotations of a square in an edge image).
Currently this is extremely slow, but the fact that the 2d image is just a binary matrix makes me suspect there could be a way to speed this loop up. Is this possible at all?
Cheers
Accepted Answer
More Answers (0)
Categories
Find more on Sparse Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!