градиент оттенков серого с уменьшением изображения или numpy

Мне нужно создать линейный градиент оттенков серого с черным оттенком вверху и белым внизу. Мне нужно использовать skimage и numpy.

Я нашел в scikit код цветного линейного градиента, который идет горизонтально, а не вертикально здесь: http://scikit-image.org/docs/dev/auto_examples/plot_tinting_grayscale_images.html.

Я хотел бы получить объяснение этого кода и несколько советов о том, как разместить все в оттенках серого и по вертикали, а не по цвету и по горизонтали. Спасибо!


person giulia_dnt    schedule 02.10.2014    source источник


Ответы (1)


Полутоновое изображение можно представить в виде двухмерной матрицы. Допустим, мы хотели создать изображение с градиентом 100x100. Сначала мы используем np.linspace для создания значений градиента, 100 значений от 0 до 1. Затем мы повторяем этот вектор 100 раз в вертикальном направлении (используя np.tile), чтобы сформировать изображение градиента. На этом этапе изображение представляет собой градиент слева направо, поэтому мы используем транспонирование, чтобы перевернуть его, чтобы оно было ориентировано вверх-вниз.

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 1, 100)
image = np.tile(x, (100, 1)).T

plt.imshow(image, cmap='gray')
plt.show()
person Stefan van der Walt    schedule 02.10.2014
comment
Спасибо, это именно то, что я искал. - person giulia_dnt; 04.10.2014