如何在 Scikit-Image 中使用视图块?
How to use view as blocks in Scikit-Image?
我有一个形状为 (12,224,224)
的 numpy 数组。这是大小为 (244, 244)
的 12 张图像。当我只有一张图片时,这很简单。该图像的大小为 (x,y)
。例如,x
是大小为 (400,400)
的图像,我可以像这样使用 view_as_blocks
:
from skimage.util import view_as_blocks as vablks
xx = vablks(x, block_shape=(8,8))
这将导致形状为 (50,50,8,8)
的块。
现在我想知道当我有一个图像列表时如何应用它。要么我变形了,也就是说,我的 12 张图像被组合成一个 (224,224) 块,分解为 (28,28,8,8)
,或者我 运行 变成了一个 ValueError。这是我尝试用于迭代 12 张图像并查看 (224,224)
形状图像
的代码
xx = []
for item_ in x:
xx.append(blockSplitter(item_))
其中 x 是图像列表。
这里是错误:
ValueError: 'block_shape' is not compatible with 'arr_in'
总的来说,我想知道如何在不丢失图像的情况下以 8x8 块的形式查看图像。
请帮忙,谢谢。
您至少有两个选择:
1) 按照上面评论者的建议将列表转换为数组。然后使用 view_as_blocks
和正确的参数:
from skimage.util import view_as_blocks
images = [np.zeros((50, 50)) for i in range(10)]
images = np.array(images)
all_blocks = view_as_blocks(images, block_shape=(1, 10, 10)).squeeze()
2) 将列表中的每一项转换为窗口视图,然后将最终结果转换为数组:
from skimage.util import view_as_blocks
images = [np.zeros((50, 50)) for i in range(10)]
image_blocks = [view_as_blocks(image, block_shape=(10, 10)) for image in images]
all_blocks = np.array(image_blocks)
我有一个形状为 (12,224,224)
的 numpy 数组。这是大小为 (244, 244)
的 12 张图像。当我只有一张图片时,这很简单。该图像的大小为 (x,y)
。例如,x
是大小为 (400,400)
的图像,我可以像这样使用 view_as_blocks
:
from skimage.util import view_as_blocks as vablks
xx = vablks(x, block_shape=(8,8))
这将导致形状为 (50,50,8,8)
的块。
现在我想知道当我有一个图像列表时如何应用它。要么我变形了,也就是说,我的 12 张图像被组合成一个 (224,224) 块,分解为 (28,28,8,8)
,或者我 运行 变成了一个 ValueError。这是我尝试用于迭代 12 张图像并查看 (224,224)
形状图像
xx = []
for item_ in x:
xx.append(blockSplitter(item_))
其中 x 是图像列表。
这里是错误:
ValueError: 'block_shape' is not compatible with 'arr_in'
总的来说,我想知道如何在不丢失图像的情况下以 8x8 块的形式查看图像。 请帮忙,谢谢。
您至少有两个选择:
1) 按照上面评论者的建议将列表转换为数组。然后使用 view_as_blocks
和正确的参数:
from skimage.util import view_as_blocks
images = [np.zeros((50, 50)) for i in range(10)]
images = np.array(images)
all_blocks = view_as_blocks(images, block_shape=(1, 10, 10)).squeeze()
2) 将列表中的每一项转换为窗口视图,然后将最终结果转换为数组:
from skimage.util import view_as_blocks
images = [np.zeros((50, 50)) for i in range(10)]
image_blocks = [view_as_blocks(image, block_shape=(10, 10)) for image in images]
all_blocks = np.array(image_blocks)