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 endend
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
Best Answer