Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Numpy创建图像修补程序_Python_Numpy - Fatal编程技术网

Python 使用Numpy创建图像修补程序

Python 使用Numpy创建图像修补程序,python,numpy,Python,Numpy,假设我输入了一幅4x4图像,其中有3个通道,像素值如下: 我想让它成为12 x 9矩阵的图像补丁,就像这样(在4x4图像上使用2x2内核): 如何使用numpy实现这一点? 谢谢您的帮助。假设输入为4x4x3,输出为12x9 来自scipy.signal导入卷积 将numpy作为np导入 #创建4x3输入图像 a=np.arange(1,16+1)。重塑(4,4) b=np.arange(17,32+1)。重塑(4,4) c=np.arange(33,48+1)。重塑(4,4) i_4x4x

假设我输入了一幅4x4图像,其中有3个通道,像素值如下:

我想让它成为12 x 9矩阵的图像补丁,就像这样(在4x4图像上使用2x2内核):

如何使用numpy实现这一点?
谢谢您的帮助。

假设输入为4x4x3,输出为12x9

来自scipy.signal导入卷积
将numpy作为np导入
#创建4x3输入图像
a=np.arange(1,16+1)。重塑(4,4)
b=np.arange(17,32+1)。重塑(4,4)
c=np.arange(33,48+1)。重塑(4,4)
i_4x4x3=np.dstack((a,b,c))
#创建四个2x2内核
mask_tl=np.数组([0,0,0,1])。重塑(2,2)
mask_tr=np.数组([0,0,1,0])。重塑(2,2)
mask_bl=np.数组([0,1,0,0])。重塑(2,2)
掩码br=np.数组([1,0,0,0])。重塑(2,2)
mask_tl=mask_tl[:,:,无]
mask_tr=mask_tr[:,:,无]
掩码\u bl=掩码\u bl[:,:,无]
掩码\u br=掩码\u br[:,:,无]
#将输入与所有四个内核进行卷积
tl=卷积(i_4x4x3,掩码_tl,模式为有效)
tr=卷积(i_4x4x3,掩码_tr,模式为有效)
bl=卷积(i_4x4x3,掩码_bl,模式为有效)
br=卷积(i_4x4x3,掩码\u br,模式为有效)
i=np.dstack((
tl.重塑(-1,3),
tr.重塑(-1,3),
bl.重塑(-1,3),
br.重塑(-1,3)))
i=i.shape(i.shape[0],-1).transpose()
显示器(a、b、c)
显示(一)
输出:

array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12],
       [13, 14, 15, 16]])
array([[17, 18, 19, 20],
       [21, 22, 23, 24],
       [25, 26, 27, 28],
       [29, 30, 31, 32]])
array([[33, 34, 35, 36],
       [37, 38, 39, 40],
       [41, 42, 43, 44],
       [45, 46, 47, 48]])
array([[ 1,  2,  3,  5,  6,  7,  9, 10, 11],
       [ 2,  3,  4,  6,  7,  8, 10, 11, 12],
       [ 5,  6,  7,  9, 10, 11, 13, 14, 15],
       [ 6,  7,  8, 10, 11, 12, 14, 15, 16],
       [17, 18, 19, 21, 22, 23, 25, 26, 27],
       [18, 19, 20, 22, 23, 24, 26, 27, 28],
       [21, 22, 23, 25, 26, 27, 29, 30, 31],
       [22, 23, 24, 26, 27, 28, 30, 31, 32],
       [33, 34, 35, 37, 38, 39, 41, 42, 43],
       [34, 35, 36, 38, 39, 40, 42, 43, 44],
       [37, 38, 39, 41, 42, 43, 45, 46, 47],
       [38, 39, 40, 42, 43, 44, 46, 47, 48]])

样本矩阵为x=np.random.random((3,4,4))。这与图像不同,但应按预期工作。您是否已尝试解决它?你能分享你的一些作品吗?请不要发布数据的图片!请单击问题下方的
edit
,并添加代码以生成您的数据,而不是将其放在评论中未格式化且难以查找和阅读的地方。谢谢。从你的示例图像中我可以看到,我假设复制时使用3x3的遮罩。2x2内核应该如何工作?