Variable distribution for a parallel image acquisition
2 次查看(过去 30 天)
显示 更早的评论
I want to parallelize my code by distributing/splitting variables among available workers, run a parallel image acquisition using a defined function 'myWatershedFun' which returns a segmented binary image, and gather the output results from each worker. Here, I have two images of the same size, a grayscale image 'img' and a corresponding binary image 'bw', and a structure array 'param'. I have split each image into vertical stripes, but how can I distribute each part to respective worker? I also want to distribute the structure 'param' to all workers in order to compute 'myWatershedFun'.
Essentially, the serial acquisition that I am trying to parallelize is
bw_seg = myWatershedFun(img, bw, param); % img, bw and bw_seg have the same size
Attempt
[n_rows n_cols] = size(img);
% Set up parallel environment
poolobj = gcp;
n_workers = poolobj.NumWorkers;
% Split images into equal verticale stripes
for k = 1:n_workers
img_temp{k} = img(:, floor((k-1)*(n_cols/n_workers) + 1): ...
floor(k*(n_cols/n_workers)));
bw_temp{k} = bw(:, floor((k-1)*(n_cols/n_workers) + 1): ...
floor(k*(n_cols/n_workers)));
end
spmd
% Distribute img_temp{k} and bw_temp{k} to worker k, along with param
...???
% Each worker segments the assigned vertical area of the image
bw_seg_worker = myWatershedFun(img_temp{k}, bw_temp{k}, param)
end
% Merge the 'n_workers' binary outputs bw_seg_worker into a single binary image
bw_seg = ...
% Delete pool
delete(gcp)
Could someone help me? Thanks so much in advance for any input!
0 个评论
采纳的回答
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Parallel for-Loops (parfor) 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!