Я пытаюсь сегментировать изображение (512 x 512) на 4 сегмента (128 x 128) изображений, имеющих верхнюю строку изображения orignal. Затем попытаемся запустить параллельный цикл parfor. Но не в силах это сделать. Вот мой код.Как использовать переменную FinalImage внутри parfor Loop?
FinalImage = ones(512,512);
%visiblity function initialization, see equation (4)
parfor imageSegment = 1:8;
img = double(imread([filename '.jpg']))./255;
img = im2bw(img);
if imageSegment == 1
img = img(1:128,1:128);
[nrow, ncol] = size(img);
elseif imageSegment == 2
img = img(1:128,129:256);
[nrow, ncol] = size(img);
elseif imageSegment == 3
img = img(1:128,257:384);
[nrow, ncol] = size(img);
elseif imageSegment == 4
img = img(1:128,385:512);
[nrow, ncol] = size(img);
for nMethod = 3:3;
//Some code
end
end
imwrite(FinalImage, gray(256), [filename '_FinalImage_' num2str(nMethod) '.bmp'], 'bmp');
fprintf('close');
Как использовать переменную FinalImage внутри петли parfor?
Я знаю, что вы хотите воспроизвести первую строку в каждом суб-изображении, но я не совсем уверен в размерах последних 4 изображений! Вы хотите нарезать 512 * 512 изображений на 4 суб-изображения 512 * 128? Кроме того, используйте 'imbinarize' вместо' im2bw', поскольку Matlab не рекомендует использовать его. – hmofrad
Мне нужна только верхняя строка изображения orignal..4 сегментов 128 x 128 –
Честно говоря, я думаю, вам не нужно использовать 'parfor' для этого. У меня есть процессор i5, а реализация 'for' кода ниже взята' 0.018'', тогда как 'parfor' взял' 0.12'', что намного медленнее. – hmofrad