Покрытие матриц и реконструкция изображения с использованием NumPy - PullRequest
0 голосов
/ 06 сентября 2018

Я не очень хорошо использую матрицы и довольно новый, используя numpy, но у меня есть изображение, нарезанное на участки с покрывающими концами, и я хотел бы восстановить его, суммируя покрывающие части следующим образом:

Covering matrices and summing

Я сейчас использую это для восстановления своего изображения:

new_im = Image.new('L', (576,576)) #creating a new image
y = (vqr // u)*stride #calculating the position of the patch to "glue"
x = i % u*stride
new_im.paste(img, (x, y, x + w, y + h)) #pasting the patch to the new image

Текущие результаты дают изображение, в котором части покрытия не суммируются. Я знаю, что матрицы суммирования не так просты, поэтому я прошу немного помощи

У вас есть идеи?

1 Ответ

0 голосов
/ 06 сентября 2018

Просто заполните матрицы соответствующими столбцами нулей, затем добавьте как обычно.

import numpy as np
# define inputs and desired output  
x = np.array([[1,1,1,1],[1,2,2,1],[1,2,2,1],[1,1,1,1]])
y = np.array([[7,7,7,7],[7,3,3,7],[7,3,3,7],[7,7,7,7]])  
f = np.array([[1,1,8,8,7,7],[1,2,9,4,3,7],[1,2,9,4,3,7],[1,1,8,8,7,7]]) 

shape = (x.shape[0],x.shape[1]+2) # the shape of the desired output
xpad = np.zeros(shape) # pad the x array on the left with two columns of 0
ypad = np.zeros(shape) # and pad the y array on the right with two columns
xpad[:,:-2]=x # like this 
ypad[:,2:]=y
f_ = xpad+ypad # and then do the addition to get f_ the actual output
np.alltrue(f_==f) #True -- it works

Комментарий: вы, вероятно, не хотите np.matrix. Я думаю, что они собираются обесценить это. Для большинства целей он ничего не делает np.array не может сделать в целом.

другой способ, который труднее читать, это

f_ = np.pad(x,((0,0),(0,2)),'constant')+np.pad(y,((0,0),(2,0)),'constant')

Вы можете легко распространить это на ваш случай. Дополните каждый массив нулями до нужной формы, а затем сложите его

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...