Here's the function I've been using without SPMD
function [mask] = bbox_analysis(bboxes, mask, blackwhiteframe, th, fractional_th) % Cycle through every bbox in the frame
bbox_dim = size(bboxes); for b = 1:bbox_dim(1) x_1 = bboxes(b, 1); y_1 = bboxes(b, 2); x_2 = x_1 + bboxes(b, 3); y_2 = y_1 + bboxes(b, 4); cropped_image = imcrop(blackwhiteframe, [x_1, y_1, bboxes(b, 3), bboxes(b, 4)]); % Section of frame captured in bbox
max_image = max(cropped_image); threshold = max(th/255, max_image*fractional_th); new_image = (cropped_image > threshold); for i = x_1:x_2-1 for j = y_1:y_2-1 mask(j, i) = new_image(j+1-y_1, i+1-x_1); end end end
I've implemented SPMD in the following manner.
function [mask] = bbox_analysis(bboxes, mask, blackwhiteframe, th, fractional_th) % Cycle through every bbox in the frame spmd(0,6) bbox_dim = size(bboxes); for b = labindex:numlabs:bbox_dim(1) x_1 = bboxes(b, 1); y_1 = bboxes(b, 2); x_2 = x_1 + bboxes(b, 3); y_2 = y_1 + bboxes(b, 4); cropped_image = imcrop(blackwhiteframe, [x_1, y_1, bboxes(b, 3), bboxes(b, 4)]); % Section of frame captured in bbox max_image = max(cropped_image); threshold = max(th/255, max_image*fractional_th); new_image = (cropped_image > threshold); for i = x_1:x_2-1 for j = y_1:y_2-1 mask(j, i) = new_image(j+1-y_1, i+1-x_1); end end end end end
But now mask is returned as a composite variable and I would like to return in to the state it was originally being outputted. I've been having trouble understanding how to process the composite variable back into the original form it was being outputted in before I implemented SPMD. Does anyone know how I might be able to process the composite variable to cause it to return to the same form it existed in before? I would greatly appreciate any help in this regard.
Best Answer