1

我正在尝试使用 parfor 来估计需要超过 96 秒的时间,并且我有不止一个图像要处理,但我收到了这个错误:

parfor 中的变量 B 无法分类

这是我写的代码:

Io=im2double(imread('C:My path\0.1s.tif')); 
Io=double(Io);
In=Io;
sigma=[1.8 20];
[X,Y] = meshgrid(-3:3,-3:3);
G = exp(-(X.^2+Y.^2)/(2*1.8^2));
dim = size(In);
B = zeros(dim);
c = parcluster
  matlabpool(c)
parfor i = 1:dim(1)
    for  j = 1:dim(2)
         % Extract local region.
         iMin = max(i-3,1);
         iMax = min(i+3,dim(1));
         jMin = max(j-3,1);
         jMax = min(j+3,dim(2));
         I = In(iMin:iMax,jMin:jMax);
         % Compute Gaussian intensity weights.
         H = exp(-(I-In(i,j)).^2/(2*20^2));
         % Calculate bilateral filter response.
         F = H.*G((iMin:iMax)-i+3+1,(jMin:jMax)-j+3+1);
         B(i,j) = sum(F(:).*I(:))/sum(F(:));   
  end
   end
 matlabpool close

任何想法?

4

1 回答 1

2

不幸的是,在这种情况下,实际上dim这让 MATLAB 感到困惑。你可以通过这样做来修复它

[n, m] = size(In);
parfor i = 1:n
    for j = 1:m
        B(i, j) = ...
    end
end
于 2014-02-13T07:00:38.293 回答