Python 扩展图像的函数(NumPy 数组)
Python function to expand image (NumPy array)
假设我有一张 3x3
的灰度图像,由下面的 numpy
数组表示。
我想增加图像的大小和分辨率,类似于普通图片编辑软件中的缩放功能,但我不希望它改变任何像素值,只是扩大它们.
是否有 Python 函数可以进行以下转换?
[0,0,0]
[0,1,0]
[0,0,0]
---->
[0,0,0,0,0,0]
[0,0,0,0,0,0]
[0,0,1,1,0,0]
[0,0,1,1,0,0]
[0,0,0,0,0,0]
[0,0,0,0,0,0]
您可以沿 3x3 img
数组的两个轴使用 np.repeat
:
>>> img.repeat(2, axis=0).repeat(2, axis=1)
array([[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0],
[0, 0, 1, 1, 0, 0],
[0, 0, 1, 1, 0, 0],
[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0]])
另一种方法是计算 img
的 Kronecker product 和一个由适当形状填充的数组:
>>> np.kron(img, np.ones((2,2)))
array([[ 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0.],
[ 0., 0., 1., 1., 0., 0.],
[ 0., 0., 1., 1., 0., 0.],
[ 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0.]])
这是 np.kron
文档的 link:
所以在上面的示例中,img
中的每个值 x
都乘以一个 2x2 的数组,以创建一个 2x2 的 x
值数组。这些新的 2x2 数组构成了返回的数组。
但是,这种乘法可能比简单的重复要慢。
假设我有一张 3x3
的灰度图像,由下面的 numpy
数组表示。
我想增加图像的大小和分辨率,类似于普通图片编辑软件中的缩放功能,但我不希望它改变任何像素值,只是扩大它们.
是否有 Python 函数可以进行以下转换?
[0,0,0]
[0,1,0]
[0,0,0]
---->
[0,0,0,0,0,0]
[0,0,0,0,0,0]
[0,0,1,1,0,0]
[0,0,1,1,0,0]
[0,0,0,0,0,0]
[0,0,0,0,0,0]
您可以沿 3x3 img
数组的两个轴使用 np.repeat
:
>>> img.repeat(2, axis=0).repeat(2, axis=1)
array([[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0],
[0, 0, 1, 1, 0, 0],
[0, 0, 1, 1, 0, 0],
[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0]])
另一种方法是计算 img
的 Kronecker product 和一个由适当形状填充的数组:
>>> np.kron(img, np.ones((2,2)))
array([[ 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0.],
[ 0., 0., 1., 1., 0., 0.],
[ 0., 0., 1., 1., 0., 0.],
[ 0., 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0., 0.]])
这是 np.kron
文档的 link:
所以在上面的示例中,img
中的每个值 x
都乘以一个 2x2 的数组,以创建一个 2x2 的 x
值数组。这些新的 2x2 数组构成了返回的数组。
但是,这种乘法可能比简单的重复要慢。