【发布时间】:2015-02-19 03:29:28
【问题描述】:
编辑:这是一张图片,所以建议的 (How can I efficiently process a numpy array in blocks similar to Matlab's blkproc (blockproc) function) 对我来说并不适用
我有以下matlab代码
fun = @(block_struct) ...
std2(block_struct.data) * ones(size(block_struct.data));
B=blockproc(im2double(Icorrected), [4 4], fun);
我想重新编写我的代码,但这次是在 Python 中。我已经安装了 Scikit,我正在尝试像这样解决它
b = np.std(a, axis = 2)
问题当然是我没有对多个块应用标准,就像上面一样。
我怎么能做这样的事情?开始一个循环并尝试为每个 X*X 块调用函数?那我就不会保持原来的大小了。
还有其他更有效的方法吗?
【问题讨论】:
-
stackoverflow.com/questions/5073767/… 的重复项? (这有帮助吗?)
-
@AndyHayden 这是我检查过的东西,但考虑到所要求的时间以及如何引入像 Scikit 这样的库,我希望有更清楚的东西。
-
@AndyHayden 指出的
as_strided解决方案是您最好的选择。这是另一个使用as_strided:stackoverflow.com/a/26848312/2823755 -
@wwii 我的列表已经采用 B[:, :] 部分之前显示的格式。尽管我无法理解其余的解决方案,但还是选择了我自己的平庸之作。
标签: python matlab image-processing