Из книги Джефа Проузиса "Как работает компьютерная графика"

Улучшение изображений и специальные эффекты

http://graphics.cs.msu.su/courses/cg99/notes/lect4/imenh&se.htm

        Истинная ценность компьютерной обработки изображений зависит от того, что можно сделать с изображением, как только оно оказалось в компьютере. Существует великое множество полезных манипуляций с фотографиями, введенными цифровым способом. Снимок сделан с передержкой? Нет проблем; выдержку можно сократить, уменьшив цветовые значения пикселов. При необходимости, красную, зеленую и синюю компоненты можно изменять раздельно, чтобы получить наилучший цветовой баланс. А если изображение снято не в фокусе? В расплывчатых изображениях можно увеличить резкость, и, наоборот, четкие, контрастные изображения можно размыть, имитируя эффект смягчающих фотофильтров.

        Если в вашем распоряжении хорошее программное обеспечение для обработки изображений, нет почти никаких пределов для чудес, которые вы можете творить. В этой главе мы рассмотрим четыре эффекта,которые дает обработка изображений: размывание, увеличение резкости, тиснение, и акварельный эффект. При размывании перераспределяются цвета в изображении и смягчаются резкие границы, в то время как при увеличении резкости подчеркиваются различия между цветами смежных пикселов и выделяются незаметные детали. Тиснение преобразует изображение так, что фигуры внутри изображения смотрятся так, как будто они выдавлены на металлической поверхности, подобно профилю Джоржа Вашингтона на лицевой стороне монеты достоинством в 25 центов. Акварельный эффект превращает фотографическое изображение в картинку, как будто бы написанную акварелью.

        С алгоритмической точки зрения, получение этих эффектов не представляет особого труда. Секрет каждого из них заключен в крошечной матрице чисел, которую называют ядром свертки. Матрица размером 3-на-3 содержит три строки по три числа в каждой. Чтобы преобразовать один пиксел в изображении, вы умножаете значение его цвета на число в центре ядра. Затем вы умножаете восемь значений цветов пикселов, окружающих центральный пиксел, на соответствующие им коэффициенты ядра, суммируете все девять значений, и получаете в результате новое значение цвета центрального пиксела. Этот процесс повторяется для каждого пиксела в изображении, тем самым изображение, как принято говорить, фильтруется. Коэффициенты ядра определяют результат процесса фильтрации. Ядро размывания, например, состоит из совокупности коэффициентов, каждый из которых меньше 1, а их сумма составляет 1. Это означает, что каждый пиксел поглотит что-то из цветов соседей, но полная яркость изображеня останется неизменной. (Если сумма коэффициентов больше чем 1, яркость увеличится; если меньше чем 1, яркость уменьшится.) В ядре резкости центральный коэффициент больше 1, а окружен он отрицательными числами, сумма которых на единицу меньше центрального коэффициента. Таким образом увеличивается любой существующий контраст между цветом пиксела и цветами его соседей. Это звучит немного мистически, но цифровое изображение, в конце концов, всего лишь связка чисел. Изменяя эти числа правильным способом, можно прийти к удивительными, возможно, очень полезным спецэффектам.

        Как работают размывание и увеличение резкости

        1. При подготовке к размыванию цифровое изображение считывается в память компьютера в виде красной, зеленой и синей компонент цвета каждого пиксела.

        2. Ядро размывания размером 3х3 применяется к красной, зеленой и синей компонентам цвета каждого пиксела в изображении. Значение цвета пиксела, который находится внизу под центром ядра, вычисляется умножением весовых коэффициентов ядра на соответствующие значения цвета в изображении и суммированием результатов.

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

        4. Увеличение резкости достигается точно так же, как и размывание, за исключением того, что используются другое ядро. Мы будем преобразовывать то же изображение что и прежде, но с иной целью увеличить, а не уменьшить четкость изображения.

        5. При обработке каждого пиксела в изображении используется ядро резкости размером 3х3. Как и прежде, красная, зеленая и синяя цветовые составляющие обработаываютя отдельно и позже объединяются, чтобы сформировать 24-битное значение цвета. Отрицательные веса вокруг центра ядра увеличивают контраст между центральным пикселом и соседями.

        6. Конечное изображение явно более четкое чем оригинал. Дополнительные детали не возникли из воздуха; процесс увеличения резкости просто повысил существующий контраст между пикселами. При повторной обработке изображения четкость может увеличиться еще больше.

        Как работает тиснение

        1. Тиснение делается почти также как размывание и увеличение резкости. Процесс начинается с обычным цветным изображением.

        2. Каждый пиксел в изображении обрабатывается ядром тиснения размером 3х3. В отличие от ядер размывания и резкости, в которых сумма коэффициентов равна 1, сумма весов в ядре тиснения равна 0. Это означает, что "фоновым" пикселам (пикселам, которые не находятся на границах перехода от одного цвета к другому) присваиваются нулевые значения, а нефоновым пикселам - значения, отличные от нуля.

        3. После того, как значение пиксела обработано ядром тиснения, к нему прибавляется 128. Таким образом значением фоновых пикселов станет средний серый цвет (красный = 128, зеленый = 128, синий = 128). Суммы, превышающие 255, можно округлить до 255 или взять остаток по модулю 255, чтобы значение оказалось между 0 и 255.

        4. В тисненом варианте изображения, контуры кажутся выдавленными над поверхностью. Направление подсветки изображения можно изменять, меняя позиции 1 и -1 в ядре. Если, например, поменять местами значения 1 и -1, то реверсируется направление подсветки.

        Как работает акварелизация

        1. Акварельный фильтр преобразует изображение, и после обработки оно выглядит так, как будто написано акварелью. Выше - цифровое изображение, просканированное с фотографии.

        2. Первый шаг в применении акварельного фильтра - сглаживание цветов в изображении. Одним из способов сглаживания является процесс медианнного осреднения цвета в каждой точке. Значение цвета каждого пиксела и его 24 соседей помещаются в список и сортируются от меньшего к большему. Медианное (тринадцатое) значение цвета в списке присваивается центральному пикселу.

        3. После сглаживания цветов, компьютер обрабатывают каждый пиксел в изображении ядром резкости, чтобы выделить границы переходов цветов.

        4. Результирующее изображение напоминает акварельную живопись. Это лишь один пример, который показывает, как можно объединять различные методы обработки изображений и добиваться необычных визуальных эффектов.