MATLAB:parfor循环和for循环在相同的图像集上给出不同的结果

时间:2017-10-02 20:16:42

标签: matlab for-loop parallel-processing parfor

我正在尝试运行一个parfor循环来进行一些图像处理,但是当我将它作为parfor而不是当我将它作为for运行时,它会得到不同的结果。在代码的下面部分,我似乎总是得到第一个变量(refNUM,IMAGEfeatures {i}(1))的相同结果,但第二个变量略有不同(empNUM,IMAGEfeatures {i}(1))。我尝试过不同的图像加载等变化,无法解决问题。

imageset=uint8(load(imagefile));
[z,x,num_images]=size(imageset);
imageset2=cell();
for i:num_images
    imageset2{i}=imageset(:,:,i);
end

IMAGEfeatures=cell(1,2);

parfor i=1:num_images
    loadimage=imageset2{i};
    jpgsize=size(loadimage);
    [z,x]=size(loadimage);

    dc_est=imresize(loadimage,[z,floor(x/10)]);
    dc_est=imgaussfilt(dc_est,[1,111]);
    dc_est=imresize(dc_est,[z,x]);
    mask_ref=ones(size(loadimage,1),1)*(mean(loadimage-dc_est,1)>15);
    refNUM=sum(sum(mask_ref))/prod(jpgsize);
    IMAGEfeatures{i}{1}=refNUM;

    loadimageEMP=imageset2{i}-im2uint8(mask_ref);
    empNUM=median(mean(loadimageEMP(loadimageEMP>0)));
    IMAGEfeatures{i}{2}=empNUM;

end

0 个答案:

没有答案