Выравнивание гистограммы таблиц цветов matplotlib - PullRequest
1 голос
/ 02 мая 2011

Я новичок в python и matplotlib, и мне было интересно, знает ли кто-нибудь, есть ли какие-нибудь утилиты для выполнения эквивалента выравнивания гистограммы, кроме таблицы цветов matplotlib? Существует функция с именем matplotlib.colors.Normalize, которая, если получить массив изображений, автоматически установит нижний и верхний уровни, но я хочу что-то более интеллектуальное, чем это. Я всегда мог просто применить выравнивание гистограммы к самим данным, но я бы не стал их трогать. Какие-нибудь мысли?

Ответы [ 2 ]

3 голосов
/ 02 мая 2011

Вы должны создать свою собственную цветовую карту для конкретного изображения, но это не так сложно:

import pylab
import matplotlib.colors
import numpy

im = pylab.imread('lena.png').sum(axis=2) # make grayscale
pylab.imshow(im, cmap=pylab.cm.gray)
pylab.title('orig')
imvals = numpy.sort(im.flatten())
lo = imvals[0]
hi = imvals[-1]
steps = (imvals[::len(imvals)/256] - lo) / (hi - lo)
num_steps = float(len(steps))
interps = [(s, idx/num_steps, idx/num_steps) for idx, s in enumerate(steps)]
interps.append((1, 1, 1))
cdict = {'red' : interps,
         'green' : interps,
         'blue' : interps}
histeq_cmap = matplotlib.colors.LinearSegmentedColormap('HistEq', cdict)
pylab.figure()
pylab.imshow(im, cmap=histeq_cmap)
pylab.title('histeq')
pylab.show()
0 голосов
/ 02 мая 2011

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

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

Вам следует начать с описанияалгоритм статья в Википедии .

Вы также можете обратиться за помощью в списки matplotlib.

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