на главную ] 

Базовые методы обработки изображений.

Евгений Борисов

понедельник, 17 ноября 2014 г.

В этой статье мы поговорим о базовых методах обработки изображений.

1 Введение

Области применения и цели для применения методов обработки изображений могут быть самые разные.

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

Мы будем работать с растровым форматом, это просто матрица из точек, точку можно кодировать разными способами. Далее мы поговорим о простых, базовых методах представления и обработки изображений.

2 Чёрно-белое изображение

Для многих задач обработки изображений цвет не играет важной роли. Cамый простой способ кодирования точки изображения это бинарный (0,1), т.е. точка может находиться в двух состояниях чёрная или белая.

Более сложный способ кодирования это градации серого (grayscale), состояние точки определяется параметром яркости, который принимает значения от 0 до 255, таким образом одна точка может кодироваться одним байтом.


Рис.1: чёрно-белая картинка

Рис.2: картинка в градациях серого

Преобразовать картинку из градации серого в бинарную можно простым пороговым преобразованием.

    {
       1 : I > T
I :=   0 : I ≤ T

Этот способ годиться для равномерно освещённых сцен, в противном случае выбрать удачный порог яркости T для всей картинки может оказаться затруднительно. Для решения этой задачи можно использовать адаптивный порог. Для каждой точки рассматривается её окрестность и порог выбирается только для этой окрестности, например как среднюю яркость окрестности.


Рис.3: неравномерно освещённая картинка

Рис.4: простое пороговое преобразование неравномерно освещённой картинки

Рис.5: адаптивное пороговое преобразование неравномерно освещённой картинки

3 Операции математической морфологии

Результат порогового преобразования может содержать шум. Для борьбы с этими проблемами применяют операции математической морфологии. Каждая точка исходного изображения рассматривается с некоторой окрестностью. Форма и размер этой окрестности задаются т.н. структурным элементом, в простейшем случае это квадрат размера 3x3 точки. Для обработки изображений применяют две основные операции сужение и расширение, а также их комбинации.


Рис.6: исходная картинка

Рис.7: расширение

Рис.8: сужение

Рис.9: закрытие

Рис.10: раскрытие

4 Фильтры

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

Cвёрточный фильтр или свёртка это следующее преобразование.

               ∑
(f ⋅ g)[m, n] =   f[m −  k,n − l] ⋅ g[k,l]
               k,l

где f - изображение, g - ядро.

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

Фильтры обладают рядом полезных свойств, например комбинации фильтров, применяемых к изображению, коммутативны и ассоциативны[1].

Далее приведены примеры фильтров

5 Выделение краёв

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

Края на картинке это области резкого изменения яркости. Для выделения краёв обычно используется метод Canny[1]. Этот метод выполняет свертку изображения с ядром [1 -1] (производная от фильтра Гаусса), определяет градиент яркости, утоньшает и связывает получившиеся края.


Рис.13: исходная картинка

Рис.14: результат применения Canny

6 Цветовые пространства

В отличии от чёрно-белых изображений, точка цветного изображения обычно кодируется тремя параметрами (трихроматическая теория), таким образом картинка представляется как три однотипные матрицы.

Параметры, которые называют каналами изображения, можно выбирать разными способами. наиболее известный - RGB (красный, зелёный, синий), каждый из трёх параметров RGB кодируется одним байтом, т.е. от 0 до 255.

Помимо RGB существуют и другие способы кодирования, например HSV (Hue, Saturation, Value) — тон, насыщенность, яркость.


Рис.15: цветовая модель HSV [3]

Цветовая модель HSV может оказаться более удобной для обработки чем RGB.

7 Методы коррекции яркости и контрастности изображения

Для улучшения изображения существуют следующие простые методы.

7.1 Линейная коррекция

Линейная коррекция (autolevels) – растяжение значений яркости точек на весь диапазон [0,255].

                   ------255--------
I := (I − min (I)) ⋅ max (I) − min(I)

Autolevels позволяет улучшить контрастность, этот метод не работает если на картинке одновременно присутствуют белые (255) и чёрные (0) пиксели, в этом случае можно применять нелинейную (gamma) коррекцию.


Рис.16: исходная картинка

Рис.17: результат Autolevels

7.2 grayworld - выравнивание средних

Метод grayworld – выравнивание средних значений по всем каналам цветного изображения.

         -m-
Ij := Ij ⋅m  ; j = 1,...n
           j

где n = 3 - количество каналов изображения, mj - среднее значение канала j, m - среднее значение по всем каналам


Рис.18: исходная картинка

Рис.19: результат grayworld

7.3 gamma-коррекция

Метод gamma-коррекции это нелинейное изменение яркости по следующей формуле.
I := c ⋅ Iγ


Рис.20: исходная картинка

Рис.21: результат gamma-коррекции

7.3 retinex - компенсация неравномерного освещения

Метод retinex -- компенсация неравномерного освещения, представим картинку как следующую комбинацию.

I = R ⋅ L

где R - исходное изображение, L - освещение.

Получить карту (приближенную) освещения можно применив фильтр Гаусса (низкочастотную фильтрацию).

L' = I * G

Очищенное изображение восстанавливается по следующей формуле.

log(R') = log(I) - log(L')


Рис.22: исходная картинка

Рис.23: результат retinex

Исходные тексты программ [ здесь ].

 

Список литературы

[1]   Антон Конушин Введение в компьютерное зрение – http://www.lektorium.tv/course/22847

[2]    OpenCV – http://opencv.org

[3]    Wikipedia: HSV – http://ru.wikipedia.org

При использовании материалов этого сайта, пожалуйста вставляйте в свой текст ссылку на мою статью.