- Гистограмма (фотография)
-
Гистогра́мма (в фотографии) — это график распределения полутонов изображения, в котором по горизонтальной оси представлена яркость, а по вертикали — относительное число пикселов с данным значением яркости.
Изучив гистограмму, можно получить общее представление о правильности экспозиции, контрасте и цветовом насыщении снимка, оценить требуемую коррекцию как при съёмке (изменение экспозиции, цветового баланса, освещения либо композиции снимка), так и при последующей обработке.
Обычно на экране цифрового фотоаппарата показывается лишь гистограмма светлоты (исключения составляют дорогостоящие зеркальные камеры), а гистограмма для всех цветовых каналов (см. Цветоделение) доступна уже на компьютере, в приложениях для обработки растровой графики.
Содержание
Основные сведения
Гистогра́мма изображе́ния (иногда: график уровней или просто уровни) — гистограмма уровней насыщенности изображения (суммарная, или разделённая по цветовым каналам).
Гистограмма изображения позволяет оценить количество и разнообразие оттенков изображения, а также общий уровень яркости изображения. Например, недоэкспонированное изображение будет иметь пик в области малых цветов и иметь спад (или полное отсутствие уровней) в области ярких цветов, переэкспонированное — наоборот. Изображение с недостаточным динамическим диапазоном будет иметь узкий всплеск яркостей. Считается, что идеальной формой гистограммы изображения является пологая гауссиана, в которой мало совсем тёмных и совсем ярких цветов, а по мере приближения к средним цветам, их количество увеличивается.
В общем случае гистограмма изображения не описывает художественных качеств изображения (например, съёмка силуэта в контровом свете будет на гистограмме выглядеть как недосвеченное (или пересвеченное) изображение), но в большинстве случаев позволяет ориентироваться в «направлении коррекции» изображения (если таковая коррекция требуется).
Редактирование уровней
Многие фоторедакторы (напр. Adobe Photoshop, GIMP) и программы проявки RAW-файлов (UFRAW, PhotoOne, CaptureNX) позволяют осуществлять редактирование уровней изображения. Оно может производиться следующими методами:
- Сопоставлением пяти параметров: начального и конечного диапазона начального и итоговых изображений и показателем гамма-кривой (в Photoshop — панель Levels).
- Заданием кривой функции соответствия точек начальной и конечной гистограмм изображения (функция задаётся чаще всего с помощью точек, через которых производится аппроксимация функции, обычно сплайнами) (в Photoshop — панель Curves).
- Заданием набора предустановок, осуществляющих ту или иную коррекцию.
- В автоматическом режиме (программа пытается добиться максимума по одному из параметров, например, по максимизации площади кривой)
Алгоритм построения
Строим массив, заполняем нулями. Обычно массив [0..255]
Цикл, для каждого пиксела:
- Выделяем нужный цветовой канал или находим яркость по формуле. Пиксел -> значение
- Полученное значение должно укладываться в диапазон индексов массива, например [0..255].
- Увеличиваем значение элемента массив[значение] на 1.
Конец цикла.
- Полученный массив и представляет собой гистограмму, элементы массива - означают высоты столбиков.
Реализация на Python:
#coding:utf """Пользователь вводит имя файла с изображением, гистограммы которого нужно построить. Строятся гистограммы по каждому из каналов, по яркости(Luminance), и RGB гистограмма. Программа строит гистограммы и сохраняет в текущей папке. Полученные гистограммы практически не отличаются от гистограмм, полученных в коммерческих программах Для работы программы необходим Python 2.7 с установленной PIL""" import Image, ImageDraw # модули из PIL def lum(c): #цвет пиксела RGB -> значение яркости #формула, которая обычно используется для определения яркости return int(0.3*c[0] + 0.59*c[1] + 0.11*c[2]) def r(c): #цвет пиксела RGB -> значение R return c[0] def g(c): #цвет пиксела RGB -> значение G return c[1] def b(c): #цвет пиксела RGB -> значение B return c[2] def drawhist(hname, H, harr): """ Рисуем диаграмму, сохраняем в файл в текущую папку hname - имя файла H - высота рисунка harr - массив с высотами столбиков в гистограмме """ W = len(harr) #кол-во элементов массива hist = Image.new("RGB", (W, H), "white") #создаем рисунок в памяти draw = ImageDraw.Draw(hist) #объект для рисования на рисунке maxx = float(max(harr)) #высота самого высокого столбика if maxx == 0: #столбики равны 0 draw.rectangle(((0, 0), (W, H)), fill="black") else: for i in range(W): draw.line(((i, H),(i, H-harr[i]/maxx*H)), fill="black") #рисуем столбики del draw #удаляем объект hist.save(hname) #сохраняем рисунок в файл #список с функциями и префиксами названий файлов fnlist = [(lum, "luminosity_"), (r, "r_channel_"), (g, "g_channel_"), (b, "b_channel_")] fname = raw_input("input file name: ") #Ввод имени файла, гистограмму кот. нужно построить im = Image.open(fname) #открываем файл #получаем список вида [(n1, c1), (n2, c2), ...], где #c - цвет пиксела в RGB #n - количество пикселов, имеющих данный цвет clrs = im.getcolors(im.size[0]*im.size[1]) #ширина, высота гистограммы. #Ширину менять не стоит, т.к. все ф-и отображаются в [0..255] W, H = 256, 100 for fn, hname in fnlist: #перебираем все функции harr = [0 for i in range(W)] #создаем массив [0, 0, 0, ...] длины W for n, c in clrs: #перебираем список созданный выше index = fn(c) #fn - отображение цвета в яркость или выделение цветового канала #индексы элементов массива показывают значения яркости и прочего. Диапазон [0..255] #значения элементов массива = количество пикселов с опред. значением яркости и т.д. harr[index] += n drawhist(hname + "hist.png", H, harr) #рисуем гистограмму #Нарисовали гистограммы по яркости и каналам, теперь #Рисуем гистограмму RGB rharr = [0 for i in range(W)] gharr = list(rharr) bharr = list(rharr) for n, c in clrs: rharr[r(c)] += n gharr[g(c)] += n bharr[b(c)] += n harr = [(rharr[i] + gharr[i] + bharr[i])/3 for i in range(W)] drawhist("RGB_hist.png", H, harr)
Использование в фототехнике
Часть фотоаппаратов позволяет просматривать гистограмму изображения для отснятых снимков (а некоторые модели с контрастной фокусировкой — и во время фокусировки).
Для улучшения этой статьи желательно?: - Проверить достоверность указанной в статье информации.
- Найти и оформить в виде сносок ссылки на авторитетные источники, подтверждающие написанное.
Ссылки
- Minolta Z10. Руководство пользователя. C.30 «Дисплей покадрового воспроизведения и гистограмма».
- статья «Гистограмма» на photoscape (рус.)
Экспонометрия в фотографии Экспонирование Экспонометрия в фотоаппаратах Through the lens Экспонометры «Ленинград» • «Свердловск» • Флешметр
Категория:- Фототермины
Wikimedia Foundation. 2010.