2014-10-15 5 views
0

Как указано в заголовке, мне нужно сгенерировать градиент от самого низкого значения до самого высокого значения данного изображения с плавающей точкой. Это будет служить легендой для изображения.Создание градиента от экстремумов поплавка Изображение

моя идея - создать изображение, а затем заполнить каждый пиксель его значением в пределах диапазона экстремумов. Я все еще не Pro в Python, поэтому любая помощь будет приятной. Что я получил до сих пор:

im = Image.open('path_to.tiff') 
extrw=im.getextrema() 
grad = Image.new('F', (10, 100)) 
pix = grad.load() 
for i in range(grad.size[0]): # for every pixel: 
    for j in range(grad.size[1]): 
     pixels[i,j] = (some_float) 

Как вы можете видеть, что мне нужно каким-то образом использовать экстремумы для получения значений с плавающей точкой, соответственно, в пиксели, чтобы создать градиент. было бы хорошо, если бы я мог остаться в библиотеке PIL.

Спасибо!

+0

Какой градиент? Линейный? Радиальная? Какая ось? Пожалуйста, уточните. – simonzack

+0

Ах да. Линейный, вертикальный – user3759978

ответ

0

После некоторого исследования я обнаружил, что это может быть линейная функция. все, что я должен был сделать, чтобы положить в эту математическую форму минимум, максимум и длину: y = m * x + b

с помощью коллеги мы вычислили: y (значение пикселя) = ((minvalue- maxvalue)/h (высота изображения)) * index_of_pixel + maxvalue. в кодовой форме:

extw=im.getextrema() 
grad_b = 10 
grad = Image.new('F', (grad_b, im_h)) 
pix = grad.load() 
for i in range(grad.size[0]): # for every pixel: 
    for j in range(grad.size[1]): 
     pix[i,j] = (extw[0]-extw[1]/im_h)*j+extw[1]