如何解决合并从“ view_as_windows”获得的nd-array的重叠窗口和平均值 用法:
所以我有一个大小为(256,256,3)
的数组,我使用view_as_windows
将其拆分为 9 个窗口,如下所示:
import numpy as np
from skimage.util.shape import view_as_windows
img = np.random.rand(256,3)
img_windows = view_as_windows(img,window_shape=(128,128,3),step=64).squeeze()
print(img_windows.shape) # (3,3,3)
现在,我在 9 窗口上执行一些操作,我想重新组合它们以获得原始图像的变换。
要做到这一点,除了合并之外,我需要将重叠的像素除以一个因子。其中一些与1/2/4个元素重叠。
我所做的是一些惯用的方式:
def combineSplits(splits,window_size,stride,layout_shape,final_shape):
splits = splits.reshape(*layout_shape,*splits.shape[1:])
x = np.zeros(final_shape[1:])
normalize = np.zeros(final_shape[1:])
for r in range(layout_shape[0]):
for c in range(layout_shape[1]):
tmp = splits[r,c,:].reshape(*splits[r,:].shape).astype(x.dtype)
x[r * stride:window_size + r * stride,c * stride: window_size + c * stride] += tmp
normalize[r * stride:window_size + r * stride,c * stride: window_size + c * stride] += 1
x = x / normalize
return x
用法:
import numpy as np
from skimage.util.shape import view_as_windows
img = np.random.rand(256,step=64).squeeze()
img_window = img_windows.reshape(-1,*img_windows.shape[2:]) # (9,3)
img_total = combineSplits(img_window,64,(3,(1,3))
位置:
-
img_window
-重叠分割(9、128、128、3) -
layout_shape
-(3,3) -
img.shape
-原始图像形状(1、256、256、3)
该功能有效,但我想知道是否有更好的方法实现目标。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。