用于扩展图像的 Python 函数(NumPy 数组)

标签 python arrays numpy image-processing

假设我有一个 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]

最佳答案

你可以使用 np.repeat沿 3x3 img 数组的两个轴:

>>> 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]])

另一种方法是计算Kronecker product img 和一个由适当形状填充的数组:

>>> 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 文档的链接:

因此在上面的示例中,img 中的每个值 x 都乘以一个 2x2 的数组,以创建一个 2x2 的 x 数组值。这些新的 2x2 数组构成了返回的数组。

但是,这种乘法可能比简单的重复要慢。

关于用于扩展图像的 Python 函数(NumPy 数组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27769014/

相关文章:

python - 在 python 中使用正则表达式捕获所有连续的全大写单词?

python - 如何高效查找源代码文件中的小错别字?

python - 有效过滤掉两个二维 numpy 数组之间的匹配行

python - 比较运算符之间没有隐含关系

python - 从手写文本中去除周围的线条和背景图形噪音

javascript - 如何在 JavaScript 中将字符串转换为数组?

c++ - 将 unsigned char(BYTE) 数组转换为 const t_wchar* (LPCWSTR)

arrays - Bash:无法在管道右侧构建数组

python - 如何从结构化 numpy 数组中删除列?

python - NumPy - 向量化涉及范围迭代器的循环