在矩阵的图像处理中使用parfor



我们正在开发一个处理眼睛视网膜医学图像的应用程序。

通常使用直接遍历像素索引。即使图像的大小固定为 1024*768 像素,也可能是消耗 CPU 的操作,例如为我们需要的二值化像素分配某些值。

lowlayers2 = zeros(img_y_size, img_x_size);
for i=1:numel(lowlayers)
y = rem(lowlayers(i),img_y_size);
x = fix(lowlayers(i)/img_y_size)+1;
lowlayers2(y,x) = 1;
end;

尝试在调试器类型上方的简单循环中使用parfor时,循环中的所有变量都必须显示为切片变量。我想这是为了在循环中更原始地划分迭代。

如何修改循环或变量以能够使用 parfor?每个变量都可以表示为切片变量(表示具有 2 或 3 个维度的更多多维矩阵(吗?

切片变量是一个变量,它有一个引用在parfor循环之外,其每个元素只能由单个worker访问(在parfor paralle worker中(

有时 MATLAB 无法将 Parfor 循环中的变量识别为"切片变量" 因此,您可以使用临时变量并在 parfor 循环后收集结果,

lowlayers2 = zeros(img_y_size, img_x_size);
parfor i=1:numel(lowlayers)
y = rem(lowlayers(i),img_y_size);
x = fix(lowlayers(i)/img_y_size)+1;
t(i)= sub2ind(size(lowlayers2),y,x);
end
lowlayers2(t)=1;

注意 1:最好在旧版本中对代码进行矢量化处理,因为循环过去不像现在在 R2017 中引用的那样好(这个(。

相关内容

  • 没有找到相关文章

最新更新