Евгений Борисов
понедельник, 17 ноября 2014 г.
В этой статье мы поговорим о базовых методах обработки изображений.
Области применения и цели для применения методов обработки изображений могут быть самые разные.
Для многих задач обработки изображений цвет не играет важной роли. Cамый простой способ кодирования точки изображения это бинарный (0,1), т.е. точка может находиться в двух состояниях чёрная или белая.
Более сложный способ кодирования это градации серого (grayscale), состояние точки определяется параметром яркости, который принимает значения от 0 до 255, таким образом одна точка может кодироваться одним байтом.
|
|
Преобразовать картинку из градации серого в бинарную можно простым пороговым преобразованием.
Этот способ годиться для равномерно освещённых сцен, в противном случае выбрать удачный порог яркости T для всей картинки может оказаться затруднительно. Для решения этой задачи можно использовать адаптивный порог. Для каждой точки рассматривается её окрестность и порог выбирается только для этой окрестности, например как среднюю яркость окрестности.
|
|
|
Результат порогового преобразования может содержать шум. Для борьбы с этими проблемами применяют операции математической морфологии. Каждая точка исходного изображения рассматривается с некоторой окрестностью. Форма и размер этой окрестности задаются т.н. структурным элементом, в простейшем случае это квадрат размера 3x3 точки. Для обработки изображений применяют две основные операции сужение и расширение, а также их комбинации.
|
|
|
|
|
Применение фильтра к изображению это изменение значения каждого пикселя в зависимости от его окрестности, размер окрестности это параметр, который называют размером фильтра.
Cвёрточный фильтр или свёртка это следующее преобразование.
где f - изображение, g - ядро.
Т.е. берём точку с окрестностью, поэлементно умножаем эту матрицу на ядро, результат суммируется и записывается как новое значение данной точки. Процедура повторяется для всех точек изображения.
Фильтры обладают рядом полезных свойств, например комбинации фильтров, применяемых к изображению, коммутативны и ассоциативны[1].
Далее приведены примеры фильтров
|
|
Для анализа изображений можно применять методы работы с контурами. Выделив края и найдя контуры изображения мы сразу отбрасываем лишнюю информацию. Этот подход имеет свои недостатки, например он чувствителен к шуму, но иногда с его помощью можно получить хороший результат.
Края на картинке это области резкого изменения яркости. Для выделения краёв обычно используется метод Canny[1]. Этот метод выполняет свертку изображения с ядром [1 -1] (производная от фильтра Гаусса), определяет градиент яркости, утоньшает и связывает получившиеся края.
|
|
В отличии от чёрно-белых изображений, точка цветного изображения обычно кодируется тремя параметрами (трихроматическая теория), таким образом картинка представляется как три однотипные матрицы.
Параметры, которые называют каналами изображения, можно выбирать разными способами. наиболее известный - RGB (красный, зелёный, синий), каждый из трёх параметров RGB кодируется одним байтом, т.е. от 0 до 255.
Помимо RGB существуют и другие способы кодирования, например HSV (Hue, Saturation, Value) — тон, насыщенность, яркость.
Цветовая модель HSV может оказаться более удобной для обработки чем RGB.
Для улучшения изображения существуют следующие простые методы.
Autolevels позволяет улучшить контрастность, этот метод не работает если на картинке одновременно присутствуют белые (255) и чёрные (0) пиксели, в этом случае можно применять нелинейную (gamma) коррекцию.
|
|
где n = 3 - количество каналов изображения, mj - среднее значение канала j, m - среднее значение по всем каналам
|
|
|
|
Очищенное изображение восстанавливается по следующей формуле.
|
|
Исходные тексты программ [ здесь ].
[1] Антон Конушин Введение в компьютерное зрение – http://www.lektorium.tv/course/22847