【问题标题】:Python function to expand image (NumPy array)扩展图像的 Python 函数(NumPy 数组)
【发布时间】:2015-01-04 18:43:01
【问题描述】:

假设我有一个灰度图像,它是 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]

【问题讨论】:

标签: python arrays numpy image-processing


【解决方案1】:

您可以在 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]])

另一种方法是计算imgKronecker 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 的文档链接:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-26
    • 2016-07-23
    • 2014-03-17
    • 2020-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多