Гистограмма (фотография)

Гистограмма (фотография)
Изображение и гистограмма на дисплее камеры.

Гистогра́ммафотографии) — это график распределения полутонов изображения, в котором по горизонтальной оси представлена яркость, а по вертикали — относительное число пикселов с данным значением яркости.

Изучив гистограмму, можно получить общее представление о правильности экспозиции, контрасте и цветовом насыщении снимка, оценить требуемую коррекцию как при съёмке (изменение экспозиции, цветового баланса, освещения либо композиции снимка), так и при последующей обработке.

Обычно на экране цифрового фотоаппарата показывается лишь гистограмма светлоты (исключения составляют дорогостоящие зеркальные камеры), а гистограмма для всех цветовых каналов (см. Цветоделение) доступна уже на компьютере, в приложениях для обработки растровой графики.

Содержание

Основные сведения

Гистогра́мма изображе́ния (иногда: график уровней или просто уровни) — гистограмма уровней насыщенности изображения (суммарная, или разделённая по цветовым каналам).

Гистограмма изображения позволяет оценить количество и разнообразие оттенков изображения, а также общий уровень яркости изображения. Например, недоэкспонированное изображение будет иметь пик в области малых цветов и иметь спад (или полное отсутствие уровней) в области ярких цветов, переэкспонированное — наоборот. Изображение с недостаточным динамическим диапазоном будет иметь узкий всплеск яркостей. Считается, что идеальной формой гистограммы изображения является пологая гауссиана, в которой мало совсем тёмных и совсем ярких цветов, а по мере приближения к средним цветам, их количество увеличивается.

В общем случае гистограмма изображения не описывает художественных качеств изображения (например, съёмка силуэта в контровом свете будет на гистограмме выглядеть как недосвеченное (или пересвеченное) изображение), но в большинстве случаев позволяет ориентироваться в «направлении коррекции» изображения (если таковая коррекция требуется).

Редактирование уровней

Многие фоторедакторы (напр. 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)

Использование в фототехнике

Часть фотоаппаратов позволяет просматривать гистограмму изображения для отснятых снимков (а некоторые модели с контрастной фокусировкой — и во время фокусировки).


Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Полезное


Смотреть что такое "Гистограмма (фотография)" в других словарях:

  • Гистограмма (значения) — Гистограмма: Гистограмма способ графического представления табличных данных. Гистограмма (статистика) это функция, приближающая плотность вероятности некоторого распределения, построенная на основе выборки из него. Гистограмма (фотография) это… …   Википедия

  • Гистограмма — Пример гистограммы У этого термина существуют и другие значения, см. Гистограмма (значения). Гистограмма (от др. греч …   Википедия

  • Технические характеристики цифровых фотоаппаратов — Эту статью следует викифицировать. Пожалуйста, оформите её согласно правилам оформления статей …   Википедия

  • Визуализация — Египетские иероглифы позволяли интуитивно наглядно описывать понятия …   Википедия

  • Фотографическая широта — В Википедии есть п …   Википедия

  • Автовилка — Брекетинг, или вилка  в фотографии автоматическая съёмка нескольких кадров с разным значением некоего параметра (выдержки, относительного отверстия диафрагмы и т. д.) Фотографы, даже профессиональные, часто теряют хорошие кадры из… …   Википедия

  • Экспозиция (фото) — У этого термина существуют и другие значения, см. Экспозиция. Экспозиция (в фотографии, кинематографе и телевидении)  количество актиничного излучения, получаемого светочувствительным элементом. Для видимого излучения может быть рассчитана… …   Википедия

  • Экспонометр — Фотоэкспонометр «Ленинград 4» (СССР, 1968) Экспонометр (лат. expono)  прибор, приспособление или таблица для вычисления параметров э …   Википедия

  • Режимы измерения экспозиции — Экспозамер (режимы измерения экспозиции)  термин, относящийся к тому, каким образом фотограф определяет необходимую для съёмки кадра экспозицию. Содержание 1 По измеряемому световому потоку 1.1 …   Википедия

  • Экспопара — Экспопары на шкалах калькулятора экспонометра …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»