Python 简化图像的numpy数组表示

Python 简化图像的numpy数组表示,python,arrays,image,numpy,image-processing,Python,Arrays,Image,Numpy,Image Processing,我有一个图像,由PIL读入np.array。 在我的例子中,它是一个(10001500)np.array 为了直观起见,我想简化它。 通过简化,我将从该矩阵进行以下变换 1 1 1 1 0 0 1 0 1 0 0 0 到 因此,本质上,看看每个2*2样本,如果它满足某些标准,比如超过50%的1->将其计为1,如果不满足,则计为0 我不知道如何正确地调用它,但我相信应该有一些众所周知的数学过程来这样做。使用np.reformate()和np.sum(array)与axis参数的组合: impo

我有一个图像,由PIL读入
np.array
。 在我的例子中,它是一个
(10001500)
np.array

为了直观起见,我想简化它。 通过简化,我将从该矩阵进行以下变换

1 1 1 1 0 0
1 0 1 0 0 0 

因此,本质上,看看每个
2*2
样本,如果它满足某些标准,比如超过50%的1->将其计为1,如果不满足,则计为0


我不知道如何正确地调用它,但我相信应该有一些众所周知的数学过程来这样做。

使用
np.reformate()
np.sum(array)
axis
参数的组合:

import numpy as np
a = np.array([[1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 0, 0]])
a = np.reshape(a, (a.shape[0]/2, 2, a.shape[1]/2, 2))
a = np.sum(a, axis=(1, 3)) >= 2
重塑将数组分组为小2x2块(原始轴长度必须是2的倍数),然后我使用沿创建轴求和来检查组中至少4个值为1


有关类似问题,请参见。

使用
np.reformate()
np.sum(数组)
参数的组合:

import numpy as np
a = np.array([[1, 1, 1, 1, 0, 0], [1, 0, 1, 0, 0, 0]])
a = np.reshape(a, (a.shape[0]/2, 2, a.shape[1]/2, 2))
a = np.sum(a, axis=(1, 3)) >= 2
重塑将数组分组为小2x2块(原始轴长度必须是2的倍数),然后我使用沿创建轴求和来检查组中至少4个值为1

类似问题请参见。

您可以使用将图像转换为PIL,然后或将该图像转换为所需大小的图像。一个好处是,可以轻松地将其保存到文件、绘制到画布或显示以进行调试。只需注意数字类型和图像模式(我经常陷入的陷阱)

通过以下方式创建图像:

from PIL import Image
image = Image.fromarray(arr).astype(np.uint8) #unsigned bytes for 8-bit grayscale
smallerImage = image.resize(desired_size, resample=Image.BILINEAR) #resize returns a copy thumbnail modifies in place
将图像返回到numpy数组非常简单:
np.array(image.getdata())。重塑(image.size)

您可以使用它将图像转换为PIL,然后将该图像转换为所需大小的图像。一个好处是,可以轻松地将其保存到文件、绘制到画布或显示以进行调试。只需注意数字类型和图像模式(我经常陷入的陷阱)

通过以下方式创建图像:

from PIL import Image
image = Image.fromarray(arr).astype(np.uint8) #unsigned bytes for 8-bit grayscale
smallerImage = image.resize(desired_size, resample=Image.BILINEAR) #resize returns a copy thumbnail modifies in place

将图像返回到numpy数组非常简单:
np.array(image.getdata()).resforme(image.size)

这不应该是
>2
吗?这不应该是
>2
吗?我想你正在谈论的数学过程通常被称为“下采样”有一个小页面,上面有几种常用方法的视觉比较我想你所说的数学过程通常被称为“下采样”,有一个小页面,上面有几种常用方法的视觉比较