下面的代码计算整个图片的局部对比度。我的版本真的很慢。我从“multiprocessing”模块尝试使用“pool”进行多线程处理,但只提高了10%。
你能帮我加快速度吗?你知道吗
#pic: gray value picture (large 2d-array)
#xvar,yvar: scalar values, e.g. 200
contrast=[np.std(pic[stepx-xvar:xvar+stepx:,stepy-yvar:yvar+stepy:])*2 \
for ystep in np.arange(yvar,np.int(pic.shape[1]-yvar),1)] \
for stepx in np.arange(xvar,np.int(pic.shape[0]-xvar),1)]
最直接的方法是:
这会将图片放大到一个包含所有窗口的数组,但不会产生额外的内存开销。这样做的好处是省去了Python循环/函数调用的开销。它基于Numpy的“跨步技巧”,请参见实现here(或者scikit-learn variant)。你知道吗
有一种方法的伸缩性更好,请看这里的答案:improving code efficiency: standard deviation on sliding windows
相关问题 更多 >
编程相关推荐