<br />
## 对一幅图像随机采样(小块),每块转化为一个x的一列,ind是图像小块在<br />
## 原图的坐标,下面的函数就是将采样恢复为图像(平均叠加)<br />
rnd.merge<-function(x,w,h,ind){<br />
im<-array(0,dim=c(w,h,3))<br />
nc=ncol(x);m=sqrt(nrow(x)/3)<br />
x_i=ind[,1];y_i=ind[,2]<br />
for(i in 1:nc){<br />
im[x_i[i]:(x_i[i]+m-1),y_i[i]:(y_i[i]+m-1),]=<br />
(im[x_i[i]:(x_i[i]+m-1),y_i[i]:(y_i[i]+m-1),]+array(x[,i],dim=c(m,m,3)))/2<br />
}<br />
#im<-as.Image(im);colorMode(im)=2<br />
return(im)<br />
}<br />
</p>这段代码怎么并行化?
[s:12][s:12][s:12]
3 个月 后
不想改写现有代码可以直接转成 foreach 循环结合doXXX 后端并行,因为有对高维数组的直接操作。
想改写的话,把循环的内部封装成一个函数,然后套用 parallel 的 par*Apply()
系列。