我正在尝试运行一个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