首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在带矩阵的图像处理中使用parfor

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

Stack Overflow用户
提问于 2018-06-11 05:39:04
回答 1查看 111关注 0票数 0

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

经常使用直接迭代像素索引的方法。而且,即使图像的大小固定为1024*768像素,这也可能是一项消耗CPU的操作,例如,为我们需要的二值化像素分配某些值。

代码语言:javascript
复制
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维的多维矩阵)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-11 06:27:04

切片变量是一个变量,它有一个从parfor循环引用出来的变量,并且它的每个元素只被一个worker访问(在parfor paralle worker中)

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

代码语言:javascript
复制
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 (指this)中的循环那么好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50788294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档