Презентацию к лекции Вы можете скачать здесь.
Понятие цвета базируется на восприятии глазами человека электромагнитных волн в определенном диапазоне частот. Человеческий глаз воспринимает длины волн $$\lambda$$ от 400 нм (фиолетовый) до 700 нм (красный).
Формирование цифрового изображения в камере происходит следующим образом. Свет, отражённый от объектов сцены, проходит через линзу (или систему линз) объектива камеры и фокусируется на сенсоре, который состоит из фотоэлементов, покрытых светофильтрами. Таким образом, отдельные ячейки сенсора формируют разные цветовые каналы (рис.1.1) . Чаще всего используются RGB (red, green, blue) светофильтры.
(рис 1.1)
Следует отметить, что в процессе формирования изображения возникают различные искажения, такие как: радиальная дисторсия из-за геометрии линзы, блики из-за переотражений в оптической системе, смазанные участки изображения из-за ошибок фокусировки или выдержки, затемненные или пересвеченные части изображения. Львиную часть этих искажений можно компенсировать с помощью методов цифровой обработки изображений, которая будет описана ниже.
Для упрощения математического описания процесса формирования изображения часто применяют так называемую модель pinhole камеры, в которой считается, что световые лучи проходят через малое отверстие и попадают на сенсор (рис.1.2). При этом зависимость координат спроектированной точки и точки в мировой системе координат описывается уравнением перспективной проекции:
(рис 1.2)
$$x' = f'\frac{x}{z}$$
$$y' = f'\frac{y}{z}$$
где $$f'$$ — фокусное расстояние, $$P'(x',y',z')$$ – координаты точки в системе координат камеры, $$P(x,y,z)$$ – координаты точки в мировой системе координат.
Данные с элементов сенсора считываются в двухмерный массив, который называют растром.
Следует отметить, что компьютерное зрение используется не только для обработки и анализа изображений, сформированных цветными или черно-белыми камерами, но и устройствами, позволяющими видеть сцену в инфракрасном, миллиметровом и других диапазонах электромагнитного спектра.
Элементом растра является пиксель.
Каждый пиксель может содержать одно или несколько значений в зависимости от типа изображения.
Определение. Цифровое изображение – это двумерный массив $$I[r,c]$$ элементов (пикселей), которые представляют собой одно или нескольких дискретных значений
Определение. Бинарное изображение – это цифровое изображение $$B[r,c]$$, пиксели которого принимают значения 0 или 1.
Определение. Полутоновое (синонимы: серое, монохромное, черно-белое) изображение – это цифровое изображение $$I[r,c]$$, у которого каждому пикселю соответствует одно значение интенсивности (яркости).
Определение. Мультиспектральное изображение – это цифровое изображение $$M[r,c]$$ , у которого каждому пикселю соответствует вектор значений.
У цветных изображений размерность этого вектора равна трем
В процессе решения задачи компьютерного зрения из исходного цветного изображения могут быть получены вспомогательные полутоновые или бинарные изображения. Для каждого класса изображений существуют свои методы обработки. Далее рассмотрим методы обработки бинарных изображений.
В системах компьютерного зрения бинарные изображения часто используются для выделения/маскирования определ?нных областей изображения для последующего анализа. Например, выделение областей букв для их дальнейшего распознавания. При этом ненулевыми значениями пикселов выделяются интересующие области.
Рассмотрим сначала методы получения бинарных изображений. В некоторых случаях достаточно осуществить пороговую бинаризацию для выделения объектов. Пороговая бинаризация представляется фильтром
$$B(x,y)=1,\,\, если\A(x,y)>порог,иначе\,\,B(x,y)=0$$где A – исходное полутоновое изображение, B – выходное бинарное изображение.
В случае однотонных объектов порог бинаризации может быть выбран, анализируя гистограмму яркостей пикселов полутонового изображения. На изображении, представленном ниже, первый пик гистограммы соответствует наиболее популярному значению яркости фона, второй пик соответствует наиболее популярной яркости объекта. Порог следует выбирать между ними.
(рис 1.3)
В некоторых случаях для нахождения порога может быть использован метод Отсу [1], который находит порог, минимизирующий вариацию яркостей пикселов в объекте и фоне.
В ходе получения бинарного изображения часто появляются шумовые пикселы, которые надо отфильтровать. Для фильтрации бинарных изображений часто используется морфологическая фильтрация.
Рассмотрим частные случаи морфологической фильтрации – сужение (erode), расширение (dilate), открытие (open), замыкание (close).
Фильтрация сужением осуществляется применением оператора минимума в окрестности каждого пиксела бинарного изображения:
$$dst(x,y) = min src(x + x', y + y')$$ $$(x',y'):element (x',y') \neq 0$$где $$element$$ – структурный элемент морфологической операции, представляющий собой вспомогательное бинарное изображение, которое определяет окрестность, в которой действует оператор минимума.
Фильтрация расширением осуществляется применением оператора максимума в окрестности каждого пиксела бинарного изображения:
$$dst(x,y) = max src(x + x', y + y')$$ $$(x',y'):element (x',y') \neq 0$$Фильтрация открытием состоит в последовательном применении фильтрации сужением, а затем расширением с одинаковым структурным элементом.
Фильтрация замыканием состоит в последовательном применении фильтрации расширением, а затем сужением с одинаковым структурным элементом.
Следует отметить, что операцию открытие применяют для фильтрации мелкого шума, а операцию замыкания для заполнения пробелов в объекте.
После морфологической фильтрации дальнейший анализ бинарного изображения может быть произведен посредством выделения связанных компонент на изображении.
Два пиксела называются связанными, если они расположены в соседних ячейках растра. При этом вводится понятие 4ёх и 8ми связанности. Пикселы 4ёх связанны, если они соседствуют по вертикали и горизонтали и 8ми связанны если ещ? и по диагонали.
Так, например, на бинарном изображении представленном ниже присутствуют две 8ми связанные компоненты и четыре 4ёх связанные.
(рис 1.4)
Существуют различные методы поиска и подсчета связанных компонент (в [2] можно найти детали рекурсивного алгоритма).
Анализ выделенных связанных компонент может заключатся в вычислении значимых признаков, описывающих найденные объекты.
Перечислим некоторые из этих признаков: площадь S, периметр P, координаты описывающего
прямоугольника, центр тяжести, округлость $$= P*P/S$$ (отношение квадрата периметра к
площади), центральные и смешанные моменты.
Часто удобнее и значительно эффективнее анализировать связанные компоненты с помощью описывающего их контура. При этом не происходит потери информации, но значительно уменьшается её объём (пикселы, не принадлежащие границе объекта не несут информации).
Извлечение контуров объектов можно осуществить с помощью алгоритма [3], реализованного в библиотеке OpenCV.
Аппроксимация контура позволяет без существенной потери информации в разы уменьшить количество точек в контуре и значительно ускорить контурный анализ. Аппроксимация может быть осуществлена следующим алгоритмом:
Шаги 2 и 3 повторяются для всех участков пока выполняется условие 3.
(рис 1.5)
Процедуру можно проиллюстрировать следующим рисунком:
Контурное (векторное) представление позволяет, например, подсчитать количество дефектов выпуклости фигуры. Дефект выпуклости – это область не принадлежащая фигуре, но принадлежащая ее выпуклой оболочке. Пример дефектов выпуклости контура кисти изображен ниже.
(рис 1.6)
Так же как и в случае бинарных изображений, работу с полутоновыми изображениями можно разделить на задачи фильтрации (удаление шумов, повышение чeткости, осветление тeмных участков) и задачи анализа (расчeт градиентов, поиск особых точек и границ объектов).
В процессе создания систем компьютерного зрения фильтрация изображения обычно предшествует извлечению более высокоуровневой информации о сцене, поэтому рассмотрим сначала методы фильтрации.
Линейная фильтрация является, пожалуй, самым часто применяемым методом обработки изображения из-за простоты реализации и скорости работы. Линейная фильтрация осуществляется с помощью дискретной свeртки изображения с заданным фильтром (ядро свeртки). Эту операцию можно представить формулой:
$$I'(X,Y) = \sum_{i=-k}^K\sum_{j=-k}^K{F(i,j)I(X-i,Y-j)}$$где $$I $$ – исходное изображение, $$I'$$ – выходное изображение, $$F$$ – заданный фильтр, представленный изображением размером $$2k+1$$ на $$2k+1$$.
Рассмотрим различные фильтры:
1. Фильтр
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 0 | 0 | 0 |
не изменяет изображения.
2. Фильтр
$$ \frac{1}{9} \begin{array}{|c|c|c|} \hline \\ 1 1 1 \\ \hline \\ 1 1 1 \\ \hline \\ 1 1 1 \\ \hline \end{array} $$равномерно сглаживает изображение.
3. Фильтр
| 0.003 | 0.013 | 0.022 | 0.013 | 0.003 |
| 0.013 | 0.059 | 0.097 | 0.059 | 0.013 |
| 0.022 | 0.097 | 0.159 | 0.097 | 0.022 |
| 0.013 | 0.059 | 0.097 | 0.059 | 0.013 |
| 0.003 | 0.013 | 0.022 | 0.013 | 0.003 |
осуществляет фильтрацию по Гауссу.
Следует отметить, что для подсчета дискретной свертки на границе изображения можно, например, экстраполировать граничные пикселы за пределы изображения.
Фильтр
$$ \begin{array}{|c|c|c|} \hline \\ 0 0 0 \\ \hline \\ 0 2 0 \\ \hline \\ 0 0 0 \\ \hline \end{array} - \frac{1}{9} \begin{array}{|c|c|c|} \hline \\ 0 0 0 \\ \hline \\ 0 1 0 \\ \hline \\ 0 0 0 \\ \hline \end{array} $$в противоположность фильтрам 2 и 3 не размывает, а делает изображение более четким, потому что, как видно из конструкции фильтра, в однородных частях изображение не изменяется, а в местах изменения яркости это изменение усиливается.
Рассмотрим еще один пример фильтра, на этот раз нелинейного, который повышает четкость изображения, например, в случае неправильно выбранного фокуса при съемке. Фильтрация осуществляется следующим образом:
Шаг 1: Из исходного изображения вычитается отфильтрованное с помощью гауссовского фильтра
$$I1[i,j] = I[i,j] – (I * Gaussian)[i,j], I[i,j]$$ – пиксель исходного изображения, * - операция свертки, $$(I * Gaussian)[i,j]$$ – пиксель отфильтрованного изображения.
Шаг 2: Модуль изображения, полученного на шаге 1, сравнивается с некоторым порогом (параметр алгоритма) и, если он меньше порога (пиксель находится в однородной области), то изображение не изменяется, а если больше порога (это соответствует области изменения яркости), то изменение яркости усиливается путем добавления к значению яркости $$I1[i,j]*k$$, где $$k>0$$ – параметр алгоритма (чем он больше, тем контрастнее становятся границы объектов).
$$Result[i,j] = I[i,j] if | I1[i,j] | < = T,$$ $$Result[i,j] = I[i,j] + k * I1[i,j] if | I1[i,j] | > T$$Другой пример нелинейного фильтра – это медианная фильтрация. Медианой набора чисел является число из набора, не меньшее половины чисел набора и не большее другой половины чисел набора. Для каждого пиксела изображения рассматривается его окрестность и вычисляется медиана яркостей пикселов из этой окрестности, значение которой и сохраняется в выходном изображении. Размер окна фильтрации зада?тся пользователем (обычно это окна 3x3 или 5x5).
Следует отметить, что медианная фильтрация лучше сохраняет границы изображенных объектов, чем линейная фильтрация, но является более ресурсоемкой по сравнению с линейной фильтрацией из-за необходимости осуществления операции сортировки.
Линейные фильтры можно также применять для выделения границ объектов. Рассмотрим фильтр Собеля:
$$ \frac{1}{8} \begin{array}{|c|c|c|} \hline \\ -1 0 1 \\ \hline \\ -2 0 2 \\ \hline \\ -1 0 1 \\ \hline \end{array} $$Видим, что он даст максимальное значение, когда справа от текущего пиксела лежит светлый объект, а слева темный (в идеале черный с нулевой яркостью). То есть фильтр по сути является разностной схемой для вычисления производной функции интенсивности по x. При этом соседние строчки принимаются во внимание для того, чтобы уменьшить влияние шума при вычислении производной.
Фильтр Собеля размером 3x3 для вычисления производной по y имеет вид:
$$ \frac{1}{8} \begin{array}{|c|c|c|} \hline \\ 1 2 1 \\ \hline \\ 0 0 0 \\ \hline \\ -1 -2 -1 \\ \hline \end{array} $$Для вычисления Лапласиана используется следующий фильтр:
| 0 | 1 | 0 |
| 1 | -4 | 1 |
| 0 | 1 | 0 |
Зная градиенты функции интенсивности и лапласиан, мы можем найти границы объектов, определяя их как точки с высокой нормой градиента (интенсивность резко изменяется на границе объекта) и нулевой второй производной (лапласиан = 0).
(рис 1.7)
Пример нахождения границ объектов
(рис 1.8)
Существуют и другие методы нахождения границ объектов на изображении. Пожалуй, наиболее популярным является метод Канни [4], реализацию которого можно найти в библиотеке OpenCV.
Кроме границ объектов в системах компьютерного зрения часто используются так называемые угловые точки, которые особенно важны для решения задачи слежения за объектом поскольку обладают свойством уникальности в некоторой окрестности.
Угловая точка на изображении определяется как точка, некоторая окрестность которой не похожа на окрестности, полученные сдвигом этой точки в любом направлении. На рисунке ниже проиллюстрировано, что в однородной области нет изменений в окрестности точки в любом направлении, если точка на ребре, то нет изменений вдоль ребра, если точка угловая, то сдвиг окрестности точки в любом направлении повлечет изменение.
(рис 1.9)
Математически меру схожести окрестностей можно выразить формулой
$$S(x,y) = \sum_{u} \sum_{v}{(I(u,v) - I(u + x,v + y))^2$$где $$x,y$$ – сдвиг окрестности, $$u$$ и $$v$$ - координаты пиксела в окрестности.
Рассмотрим метод представленный в работе [5] для определения положения угловых точек, который реализован в библиотеке OpenCV.
Считая, что $$x$$ и $$y$$ малы можно записать
$$I(u + x,v + y) \approx I(u,v) + I_{x}(u,v)x + I_{y}(u,v)y$$Тогда
$$S(x,y) = \sum_{u} \sum_{v} {(I_{x}(u,v)x + I_{y}(u,v)y)^2}$$или $$S(x,y) \approx (x y)A(\frac{x}{y})$$
где $$A = \sum_{u} \sum_{v} {\begin{bmatrix} I_{x}^2 I_{x}I_{y} \\ I_{x}I_{y} I_{y}^2 \end{bmatrix}} = \begin{bmatrix} <I_{x}^2> <I_{x}I_{y}> \\ <I_{x}I_{y}> <I_{y}^2> \end{bmatrix}$$
в угловых скобках записаны суммы квадратов производных и произведение частных производных.
Известно, что если матрица $$А$$ имеет большие собственные числа, то квадратичная функция $$S$$ изменяется во всех направлениях, то есть удовлетворяет условию угловой точки.
Таким образом, алгоритм имеет следующий вид:
Для каждого пиксела вычисляется минимальное собственное число матрицы $$A$$
Находятся локальные максимумы в карте минимальных собственных чисел матрицы $$А$$, анализируя окрестность 3 на 3.
Если величина найденного локального максимума превышает заданный порог, то координата этой точки записывается в выходной массив угловых точек.
Часто из-за ошибок экспозиции или из-за погрешностей в освещении изображение получается малоконтрастным. Рассмотрим алгоритм улучшения контраста, основанный на нахождении минимального и максимального значений яркости на изображении. Пусть $$max$$ – максимальное значение яркости, а $$min$$ – минимальное. Тогда новое значение пиксела можно записать $$new = old * k + b, где k = 255/(max – min), b = -(min*255)/(max – min), old$$ – старое значение пиксела. Применяя данное преобразование ко всем пикселам изображения, контраст повысится, так как минимальная яркость будет 0, максимальная 255, а остальные значения линейно масштабируются. Ниже изображено исходное изображение и результирующее изображение с повышенным контрастом.
(рис 1.10)
Другой популярный алгоритм повышения контраста – это эквализация гистограммы. Он состоит из следующих шагов:
Если цветное изображение представить в виде трех одноканальных изображений, то для них применимы все рассмотренные методы обработки полутоновых изображений.
Следует отметить, что не все камеры формируют изображение в формате RGB, многие камеры
видеонаблюдения вещают в формате YUV.
В этом формате яркостная составляющая Y выделена в отдельном канале. Две другие U и V
несут цветовую информацию. Отметим, что человеческий глаз больше восприимчив к яркостной
компоненте, поэтому основная обработка осуществляется для Y канала.
Переход из RGB в YUV и обратно осуществляется линейным преобразованием.
Обратное преобразование:
$$R = Y + V\frac{1 - W_{r}}{V_{Max}}$$ $$G = Y - U\frac{W_{B}(1 - W_{B})}{U_{Max}W_{G}} - V\frac{W_{R}(1-W_{R})}{V_{Max}W_{G}}$$ $$B = Y + U\frac{1 - W_{b}}{U_{Max}}$$Существуют и другие удобные для анализа и обработки цветовые пространства, переход в
которые из RGB может быть нелинейным. Например, рассмотрим пространство HSV, которое удобно тем, что его каналы имеют ясное
семантическое значение: H – оттенок цвета (Hue), S – насыщенность цвета (Saturation), V –
интенсивность цвета (Value). Таким образом, модифицируя канал S, мы можем управлять
насыщенностью цветов на изображении.
Ниже представлены четыре изображения: первое – исходное RGB изображение, второе
изображение, у которого в каждом пикселе повышена насыщенность S, третье – увеличена
яркость (канал V), четвертое – модифицирован канал H, так что цвета поменяли оттенки.
(рис 1.11)
Презентацию к лекции Вы можете скачать здесь.
Понятие цвета базируется на восприятии глазами человека электромагнитных волн в определенном диапазоне частот. Человеческий глаз воспринимает длины волн $$\lambda$$ от 400 нм (фиолетовый) до 700 нм (красный).
Формирование цифрового изображения в камере происходит следующим образом. Свет, отражённый от объектов сцены, проходит через линзу (или систему линз) объектива камеры и фокусируется на сенсоре, который состоит из фотоэлементов, покрытых светофильтрами. Таким образом, отдельные ячейки сенсора формируют разные цветовые каналы (рис.1.1) . Чаще всего используются RGB (red, green, blue) светофильтры.
(рис 1.1)
Следует отметить, что в процессе формирования изображения возникают различные искажения, такие как: радиальная дисторсия из-за геометрии линзы, блики из-за переотражений в оптической системе, смазанные участки изображения из-за ошибок фокусировки или выдержки, затемненные или пересвеченные части изображения. Львиную часть этих искажений можно компенсировать с помощью методов цифровой обработки изображений, которая будет описана ниже.
Для упрощения математического описания процесса формирования изображения часто применяют так называемую модель pinhole камеры, в которой считается, что световые лучи проходят через малое отверстие и попадают на сенсор (рис.1.2). При этом зависимость координат спроектированной точки и точки в мировой системе координат описывается уравнением перспективной проекции:
(рис 1.2)
$$x' = f'\frac{x}{z}$$
$$y' = f'\frac{y}{z}$$
где $$f'$$ — фокусное расстояние, $$P'(x',y',z')$$ – координаты точки в системе координат камеры, $$P(x,y,z)$$ – координаты точки в мировой системе координат.
Данные с элементов сенсора считываются в двухмерный массив, который называют растром.
Следует отметить, что компьютерное зрение используется не только для обработки и анализа изображений, сформированных цветными или черно-белыми камерами, но и устройствами, позволяющими видеть сцену в инфракрасном, миллиметровом и других диапазонах электромагнитного спектра.
Элементом растра является пиксель.
Каждый пиксель может содержать одно или несколько значений в зависимости от типа изображения.
Определение. Цифровое изображение – это двумерный массив $$I[r,c]$$ элементов (пикселей), которые представляют собой одно или нескольких дискретных значений
Определение. Бинарное изображение – это цифровое изображение $$B[r,c]$$, пиксели которого принимают значения 0 или 1.
Определение. Полутоновое (синонимы: серое, монохромное, черно-белое) изображение – это цифровое изображение $$I[r,c]$$, у которого каждому пикселю соответствует одно значение интенсивности (яркости).
Определение. Мультиспектральное изображение – это цифровое изображение $$M[r,c]$$ , у которого каждому пикселю соответствует вектор значений.
У цветных изображений размерность этого вектора равна трем
В процессе решения задачи компьютерного зрения из исходного цветного изображения могут быть получены вспомогательные полутоновые или бинарные изображения. Для каждого класса изображений существуют свои методы обработки. Далее рассмотрим методы обработки бинарных изображений.
В системах компьютерного зрения бинарные изображения часто используются для выделения/маскирования определ?нных областей изображения для последующего анализа. Например, выделение областей букв для их дальнейшего распознавания. При этом ненулевыми значениями пикселов выделяются интересующие области.
Рассмотрим сначала методы получения бинарных изображений. В некоторых случаях достаточно осуществить пороговую бинаризацию для выделения объектов. Пороговая бинаризация представляется фильтром
$$B(x,y)=1,\,\, если\A(x,y)>порог,иначе\,\,B(x,y)=0$$где A – исходное полутоновое изображение, B – выходное бинарное изображение.
В случае однотонных объектов порог бинаризации может быть выбран, анализируя гистограмму яркостей пикселов полутонового изображения. На изображении, представленном ниже, первый пик гистограммы соответствует наиболее популярному значению яркости фона, второй пик соответствует наиболее популярной яркости объекта. Порог следует выбирать между ними.
(рис 1.3)
В некоторых случаях для нахождения порога может быть использован метод Отсу [1], который находит порог, минимизирующий вариацию яркостей пикселов в объекте и фоне.
В ходе получения бинарного изображения часто появляются шумовые пикселы, которые надо отфильтровать. Для фильтрации бинарных изображений часто используется морфологическая фильтрация.
Рассмотрим частные случаи морфологической фильтрации – сужение (erode), расширение (dilate), открытие (open), замыкание (close).
Фильтрация сужением осуществляется применением оператора минимума в окрестности каждого пиксела бинарного изображения:
$$dst(x,y) = min src(x + x', y + y')$$ $$(x',y'):element (x',y') \neq 0$$где $$element$$ – структурный элемент морфологической операции, представляющий собой вспомогательное бинарное изображение, которое определяет окрестность, в которой действует оператор минимума.
Фильтрация расширением осуществляется применением оператора максимума в окрестности каждого пиксела бинарного изображения:
$$dst(x,y) = max src(x + x', y + y')$$ $$(x',y'):element (x',y') \neq 0$$Фильтрация открытием состоит в последовательном применении фильтрации сужением, а затем расширением с одинаковым структурным элементом.
Фильтрация замыканием состоит в последовательном применении фильтрации расширением, а затем сужением с одинаковым структурным элементом.
Следует отметить, что операцию открытие применяют для фильтрации мелкого шума, а операцию замыкания для заполнения пробелов в объекте.
После морфологической фильтрации дальнейший анализ бинарного изображения может быть произведен посредством выделения связанных компонент на изображении.
Два пиксела называются связанными, если они расположены в соседних ячейках растра. При этом вводится понятие 4ёх и 8ми связанности. Пикселы 4ёх связанны, если они соседствуют по вертикали и горизонтали и 8ми связанны если ещ? и по диагонали.
Так, например, на бинарном изображении представленном ниже присутствуют две 8ми связанные компоненты и четыре 4ёх связанные.
(рис 1.4)
Существуют различные методы поиска и подсчета связанных компонент (в [2] можно найти детали рекурсивного алгоритма).
Анализ выделенных связанных компонент может заключатся в вычислении значимых признаков, описывающих найденные объекты.
Перечислим некоторые из этих признаков: площадь S, периметр P, координаты описывающего
прямоугольника, центр тяжести, округлость $$= P*P/S$$ (отношение квадрата периметра к
площади), центральные и смешанные моменты.
Часто удобнее и значительно эффективнее анализировать связанные компоненты с помощью описывающего их контура. При этом не происходит потери информации, но значительно уменьшается её объём (пикселы, не принадлежащие границе объекта не несут информации).
Извлечение контуров объектов можно осуществить с помощью алгоритма [3], реализованного в библиотеке OpenCV.
Аппроксимация контура позволяет без существенной потери информации в разы уменьшить количество точек в контуре и значительно ускорить контурный анализ. Аппроксимация может быть осуществлена следующим алгоритмом:
Шаги 2 и 3 повторяются для всех участков пока выполняется условие 3.
(рис 1.5)
Процедуру можно проиллюстрировать следующим рисунком:
Контурное (векторное) представление позволяет, например, подсчитать количество дефектов выпуклости фигуры. Дефект выпуклости – это область не принадлежащая фигуре, но принадлежащая ее выпуклой оболочке. Пример дефектов выпуклости контура кисти изображен ниже.
(рис 1.6)
Так же как и в случае бинарных изображений, работу с полутоновыми изображениями можно разделить на задачи фильтрации (удаление шумов, повышение чeткости, осветление тeмных участков) и задачи анализа (расчeт градиентов, поиск особых точек и границ объектов).
В процессе создания систем компьютерного зрения фильтрация изображения обычно предшествует извлечению более высокоуровневой информации о сцене, поэтому рассмотрим сначала методы фильтрации.
Линейная фильтрация является, пожалуй, самым часто применяемым методом обработки изображения из-за простоты реализации и скорости работы. Линейная фильтрация осуществляется с помощью дискретной свeртки изображения с заданным фильтром (ядро свeртки). Эту операцию можно представить формулой:
$$I'(X,Y) = \sum_{i=-k}^K\sum_{j=-k}^K{F(i,j)I(X-i,Y-j)}$$где $$I $$ – исходное изображение, $$I'$$ – выходное изображение, $$F$$ – заданный фильтр, представленный изображением размером $$2k+1$$ на $$2k+1$$.
Рассмотрим различные фильтры:
1. Фильтр
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 0 | 0 | 0 |
не изменяет изображения.
2. Фильтр
$$ \frac{1}{9} \begin{array}{|c|c|c|} \hline \\ 1 1 1 \\ \hline \\ 1 1 1 \\ \hline \\ 1 1 1 \\ \hline \end{array} $$равномерно сглаживает изображение.
3. Фильтр
| 0.003 | 0.013 | 0.022 | 0.013 | 0.003 |
| 0.013 | 0.059 | 0.097 | 0.059 | 0.013 |
| 0.022 | 0.097 | 0.159 | 0.097 | 0.022 |
| 0.013 | 0.059 | 0.097 | 0.059 | 0.013 |
| 0.003 | 0.013 | 0.022 | 0.013 | 0.003 |
осуществляет фильтрацию по Гауссу.
Следует отметить, что для подсчета дискретной свертки на границе изображения можно, например, экстраполировать граничные пикселы за пределы изображения.
Фильтр
$$ \begin{array}{|c|c|c|} \hline \\ 0 0 0 \\ \hline \\ 0 2 0 \\ \hline \\ 0 0 0 \\ \hline \end{array} - \frac{1}{9} \begin{array}{|c|c|c|} \hline \\ 0 0 0 \\ \hline \\ 0 1 0 \\ \hline \\ 0 0 0 \\ \hline \end{array} $$в противоположность фильтрам 2 и 3 не размывает, а делает изображение более четким, потому что, как видно из конструкции фильтра, в однородных частях изображение не изменяется, а в местах изменения яркости это изменение усиливается.
Рассмотрим еще один пример фильтра, на этот раз нелинейного, который повышает четкость изображения, например, в случае неправильно выбранного фокуса при съемке. Фильтрация осуществляется следующим образом:
Шаг 1: Из исходного изображения вычитается отфильтрованное с помощью гауссовского фильтра
$$I1[i,j] = I[i,j] – (I * Gaussian)[i,j], I[i,j]$$ – пиксель исходного изображения, * - операция свертки, $$(I * Gaussian)[i,j]$$ – пиксель отфильтрованного изображения.
Шаг 2: Модуль изображения, полученного на шаге 1, сравнивается с некоторым порогом (параметр алгоритма) и, если он меньше порога (пиксель находится в однородной области), то изображение не изменяется, а если больше порога (это соответствует области изменения яркости), то изменение яркости усиливается путем добавления к значению яркости $$I1[i,j]*k$$, где $$k>0$$ – параметр алгоритма (чем он больше, тем контрастнее становятся границы объектов).
$$Result[i,j] = I[i,j] if | I1[i,j] | < = T,$$ $$Result[i,j] = I[i,j] + k * I1[i,j] if | I1[i,j] | > T$$Другой пример нелинейного фильтра – это медианная фильтрация. Медианой набора чисел является число из набора, не меньшее половины чисел набора и не большее другой половины чисел набора. Для каждого пиксела изображения рассматривается его окрестность и вычисляется медиана яркостей пикселов из этой окрестности, значение которой и сохраняется в выходном изображении. Размер окна фильтрации зада?тся пользователем (обычно это окна 3x3 или 5x5).
Следует отметить, что медианная фильтрация лучше сохраняет границы изображенных объектов, чем линейная фильтрация, но является более ресурсоемкой по сравнению с линейной фильтрацией из-за необходимости осуществления операции сортировки.
Линейные фильтры можно также применять для выделения границ объектов. Рассмотрим фильтр Собеля:
$$ \frac{1}{8} \begin{array}{|c|c|c|} \hline \\ -1 0 1 \\ \hline \\ -2 0 2 \\ \hline \\ -1 0 1 \\ \hline \end{array} $$Видим, что он даст максимальное значение, когда справа от текущего пиксела лежит светлый объект, а слева темный (в идеале черный с нулевой яркостью). То есть фильтр по сути является разностной схемой для вычисления производной функции интенсивности по x. При этом соседние строчки принимаются во внимание для того, чтобы уменьшить влияние шума при вычислении производной.
Фильтр Собеля размером 3x3 для вычисления производной по y имеет вид:
$$ \frac{1}{8} \begin{array}{|c|c|c|} \hline \\ 1 2 1 \\ \hline \\ 0 0 0 \\ \hline \\ -1 -2 -1 \\ \hline \end{array} $$Для вычисления Лапласиана используется следующий фильтр:
| 0 | 1 | 0 |
| 1 | -4 | 1 |
| 0 | 1 | 0 |
Зная градиенты функции интенсивности и лапласиан, мы можем найти границы объектов, определяя их как точки с высокой нормой градиента (интенсивность резко изменяется на границе объекта) и нулевой второй производной (лапласиан = 0).
(рис 1.7)
Пример нахождения границ объектов
(рис 1.8)
Существуют и другие методы нахождения границ объектов на изображении. Пожалуй, наиболее популярным является метод Канни [4], реализацию которого можно найти в библиотеке OpenCV.
Кроме границ объектов в системах компьютерного зрения часто используются так называемые угловые точки, которые особенно важны для решения задачи слежения за объектом поскольку обладают свойством уникальности в некоторой окрестности.
Угловая точка на изображении определяется как точка, некоторая окрестность которой не похожа на окрестности, полученные сдвигом этой точки в любом направлении. На рисунке ниже проиллюстрировано, что в однородной области нет изменений в окрестности точки в любом направлении, если точка на ребре, то нет изменений вдоль ребра, если точка угловая, то сдвиг окрестности точки в любом направлении повлечет изменение.
(рис 1.9)
Математически меру схожести окрестностей можно выразить формулой
$$S(x,y) = \sum_{u} \sum_{v}{(I(u,v) - I(u + x,v + y))^2$$где $$x,y$$ – сдвиг окрестности, $$u$$ и $$v$$ - координаты пиксела в окрестности.
Рассмотрим метод представленный в работе [5] для определения положения угловых точек, который реализован в библиотеке OpenCV.
Считая, что $$x$$ и $$y$$ малы можно записать
$$I(u + x,v + y) \approx I(u,v) + I_{x}(u,v)x + I_{y}(u,v)y$$Тогда
$$S(x,y) = \sum_{u} \sum_{v} {(I_{x}(u,v)x + I_{y}(u,v)y)^2}$$или $$S(x,y) \approx (x y)A(\frac{x}{y})$$
где $$A = \sum_{u} \sum_{v} {\begin{bmatrix} I_{x}^2 I_{x}I_{y} \\ I_{x}I_{y} I_{y}^2 \end{bmatrix}} = \begin{bmatrix} <I_{x}^2> <I_{x}I_{y}> \\ <I_{x}I_{y}> <I_{y}^2> \end{bmatrix}$$
в угловых скобках записаны суммы квадратов производных и произведение частных производных.
Известно, что если матрица $$А$$ имеет большие собственные числа, то квадратичная функция $$S$$ изменяется во всех направлениях, то есть удовлетворяет условию угловой точки.
Таким образом, алгоритм имеет следующий вид:
Для каждого пиксела вычисляется минимальное собственное число матрицы $$A$$
Находятся локальные максимумы в карте минимальных собственных чисел матрицы $$А$$, анализируя окрестность 3 на 3.
Если величина найденного локального максимума превышает заданный порог, то координата этой точки записывается в выходной массив угловых точек.
Часто из-за ошибок экспозиции или из-за погрешностей в освещении изображение получается малоконтрастным. Рассмотрим алгоритм улучшения контраста, основанный на нахождении минимального и максимального значений яркости на изображении. Пусть $$max$$ – максимальное значение яркости, а $$min$$ – минимальное. Тогда новое значение пиксела можно записать $$new = old * k + b, где k = 255/(max – min), b = -(min*255)/(max – min), old$$ – старое значение пиксела. Применяя данное преобразование ко всем пикселам изображения, контраст повысится, так как минимальная яркость будет 0, максимальная 255, а остальные значения линейно масштабируются. Ниже изображено исходное изображение и результирующее изображение с повышенным контрастом.
(рис 1.10)
Другой популярный алгоритм повышения контраста – это эквализация гистограммы. Он состоит из следующих шагов:
Если цветное изображение представить в виде трех одноканальных изображений, то для них применимы все рассмотренные методы обработки полутоновых изображений.
Следует отметить, что не все камеры формируют изображение в формате RGB, многие камеры
видеонаблюдения вещают в формате YUV.
В этом формате яркостная составляющая Y выделена в отдельном канале. Две другие U и V
несут цветовую информацию. Отметим, что человеческий глаз больше восприимчив к яркостной
компоненте, поэтому основная обработка осуществляется для Y канала.
Переход из RGB в YUV и обратно осуществляется линейным преобразованием.
Обратное преобразование:
$$R = Y + V\frac{1 - W_{r}}{V_{Max}}$$ $$G = Y - U\frac{W_{B}(1 - W_{B})}{U_{Max}W_{G}} - V\frac{W_{R}(1-W_{R})}{V_{Max}W_{G}}$$ $$B = Y + U\frac{1 - W_{b}}{U_{Max}}$$Существуют и другие удобные для анализа и обработки цветовые пространства, переход в
которые из RGB может быть нелинейным. Например, рассмотрим пространство HSV, которое удобно тем, что его каналы имеют ясное
семантическое значение: H – оттенок цвета (Hue), S – насыщенность цвета (Saturation), V –
интенсивность цвета (Value). Таким образом, модифицируя канал S, мы можем управлять
насыщенностью цветов на изображении.
Ниже представлены четыре изображения: первое – исходное RGB изображение, второе
изображение, у которого в каждом пикселе повышена насыщенность S, третье – увеличена
яркость (канал V), четвертое – модифицирован канал H, так что цвета поменяли оттенки.
(рис 1.11)
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.