У меня есть квадратная матрица (изображение) с замаскированными значениями в области. Маска соответствует отсутствующим значениям в областях, близких к границе (всегда). Я хочу создать новое изображение, в котором замаскированные значения заменяются отражающими отступами значений, где существуют фактические значения изображения. Как я могу сделать это в Python?
В приведенном ниже примере я хочу заменить (левая панель) желтую область отраженным изображением средней панели, где существуют данные. В результате должно получиться что-то вроде изображения на правой панели (здесь отступы не соответствуют отражающим отступам, которые мне нужны, поскольку я только что использовал наивный рецепт right_image = np.where(temp.mask,middle_image[::-1,::-1],middle_image)
)
edit : я пытался поперечно перемещать изображение и использовать заполнение с помощью NUMPY, с приведенным ниже кодом, но это не работает:
# Row Reflect
# Here out_image is the original image, where -2 is no data value
xx = []
for i in range(6000): # Number of rows
temp1 = np.ma.array(out_image[0,i,:],mask= out_image[0,i,:]==-2) # Create mask per row, -2 is the masked value
edges = ma.flatnotmasked_edges(temp1) # Find edges
#if edges is not None:
xx += [np.expand_dims(np.pad(temp1.data[edges[0]:edges[1]],((edges[0],temp1.shape[0]-edges[1])),mode='reflect'),0)]
out = np.concatenate(xx)
#out = out.reshape(2000,2000)
Результат неверный.