СРАВНЕНИЕ АЛГОРИТМОВ ВЫДЕЛЕНИЯ КОНТУРОВ НА ЦИФРОВОМ ИЗОБРАЖЕНИИ И ВЫБОР НАИЛУЧШЕГО АЛГОРИТМА ДЛЯ РЕАЛИЗАЦИИ НА ПЛИС Маврин Е.М.
Маврин Евгений Михайлович - студент магистратуры,
кафедра информационных систем и телекоммуникаций, факультет информатики и систем управления, Московский государственный технический университет им.
Н.Э. Баумана, г. Москва
Аннотация: в данной статье проводится обзор и сравнение алгоритмов выделения границ на цифровых изображениях, а именно: оператор Собеля, оператор Щарра, алгоритм Кэнни. Производится разбор оператора Кэнни и рассматриваются возможные упрощения для повышения скорости работы алгоритма при реализации его на программируемой интегральной логической схеме. Ключевые слова: ЦОИ, детектор границ, оператор Собеля, оператор Щарра, детектор границ Кэнни, Sobel, Sharr, Canny, edge detection.
Введение
Процедура выделения границ основывается на алгоритмах, которые выделяют точки цифрового изображения, в которых резко изменяется яркость или есть другие виды неоднородностей. Большинство алгоритмов, которые выполняют данную операцию, основаны на вычислении градиента функции. Градиент - векторная величина, которая показывает направление наискорейшее возрастание некоторой величины. Функцией в данном случае является двумерная функция яркости изображения. Расчет градиента для функции f производится по формуле 1:
д
V =
дхf д
(1)
Так как изображение дискретно и в классическом смысле производной в данном случае не существует, используют вычисление приближенного значения производной [1].
Помимо алгоритмов, основанных на вычислении градиента, существуют алгоритмы, основанные на вычислении корней оператора Лапласа (например, оператор Марра-Хилдрета), на использовании дифференциального подхода к обнаружению нулей второй производной по направлению вектора градиента, на основе статистических методов и многие другие. Ввиду их узконаправленного применения обзор и подробный анализ данных алгоритмов в данной статье не будет произведен.
Алгоритмы выделения границ на цифровом изображении первого порядка отличаются друг от друга разными методами нахождения вектора градиента для каждой точки. Реализация некоторых методов, например, оператора Кэнни, помимо поиска параметров градиента (направления и величины вектора), подразумевает первичную обработку изображения и фильтрацию полученных контуров, убирая «лишние» границы. Под первичной обработкой изображения подразумевается наложение фильтра Гаусса или иных фильтров, удаляющих шум на цифровом изображении.
При описании алгоритмов детектирования границ на изображении будет приведен пример работы рассматриваемого алгоритма. Оригинал обрабатываемого изображения приведен на рисунке 1.
Рис. 1. Оригинал обрабатываемого изображения
12
Оператор Собеля
Оператор Собеля (Sobel operator) - дискретный дифференциальный оператор, который вычисляет приближенное значение градиента яркости изображения. Результатом применения оператора Собеля является вектор градиента яркости в этой точке. Оператор Собеля основывается на понятии центральной разницы [1]:
5 г , _/(х + 1,у)-/(х-1,у) (2)
дх1Ух>У) ~ 2 '
d_f( л _/(*, у+ !)-/(*, у-1) дуПХ'У)~ 2 '
Результат работы показывает, насколько «резко» или «плавно» меняется яркость изображения в каждой точке, а также ориентацию границы. На практике вычисление величины измерения яркости надежнее и проще в интерпретации, чем расчет направления.
Математически градиент функции двух переменных для каждой точки изображения (которой и является функция яркости) — двумерный вектор, компонентами которого являются производные яркости изображения по горизонтали и вертикали. В каждой точке изображения градиентный вектор ориентирован в направлении наибольшего увеличения яркости, а его длина соответствует величине изменения яркости. Это означает, что результатом оператора Собеля в точке, лежащей в области постоянной яркости, будет нулевой вектор, а в точке, лежащей на границе областей различной яркости, — вектор, пересекающий границу в направлении увеличения яркости.
Алгоритм выполняется сверткой исходного изображения с ядром 3x3 для вычисления приближенных значений производных по горизонтали и вертикали. Пусть А - это исходное изображение, а Gx и Gy - два изображения, на которых точка содержит приближенные производные по х и по у. Они вычисляются следующим образом:
с* —
Су -
-1
-2
-1 -1
0
1
О
О
О -2
О
2
1
2
1 -1
0
1
* Л;
* А,
где * обозначает двумерную операцию свертки. Координата х здесь возрастает «направо», а у — «вниз». В каждой точке изображения приближённое значение величины градиента (7 можно вычислить путём поэлементного использования полученных приближенных значений производных:
(4)
£ = /£/ + С
градиента, используя
(5)
Также допускается вычисление следующее упрощение [3]:
£ = |6Х1 + \Gy\-
Используя эту информацию, мы также можем вычислить направление градиента :
л , (СЛ (6)
0 = атсЬд ^
где, к примеру, угол равен нулю для вертикальной границы, у которой тёмная сторона слева.
Результатом применения оператора Собеля является двумерная карта градиента для каждой точки. Её можно обработать и показать как картинку, на которой участки с большой величиной градиента (в основном, грани) будут видны как белые линии. Минусом оператора Собеля является отсутствие вращательной симметрии у матриц для вычисления значений приближенных производных по вертикальному и горизонтальному направлениям, что приводи к «потере» некоторых контуров. На рисунке 4 представлен пример работы оператора Собеля.
Оператор Щарра
Одним из главных недостатков оператора Собеля является то, что он не обладает полной вращательной симметрией. Существенно снизить отрицательные эффекты оператора
Собеля удалось Ганно Щарру [1] Он рассмотрел эту проблему и предложил использование измененных ядер свертки. Использование оператор Щарра (Scharr operator) подразумевает вычисление изображений, которые содержат произвольные по вертикали и горизонтали, по следующим формулам:
С* —
-3 -10 L —3
0 о о
3 10 3 J
* А;
(7)
Gу -
-3 -10 -3 ООО 3 10 3 J
* А,
В остальном же, оператор Щарра не отличается от оператора Собеля и вычисление границ изображение выполняется аналогично [3]. Результат обработки изображения оператором Щарра представлен на рисунке 4.
Оператор Кэнни
Оператор Кэнни - многоступенчатый алгоритм для детектирования границ на цифровом изображении, разработанный Джоном Кэнни (John Canny) в 1986 году. Джон Кэнни изучил математическую проблему получению фильтрации, оптимизировав критерии выделения границ. Также он рассмотрел проблему определения и минимизации откликов одной границы.
Кэнни ввел такое понятие как подавление «немаксимумов» (non-maximum suppression) [4], которое означает, что пикселями границ являются только те пиксели, в которых достигается локальный максимум градиента в направлении вектора градиента. Остальные же значения обнуляются. Данный шаг многоступенчатого оператора приводит к более четкому результату.
Хотя работа Джона Кэнни «A Computational Approach to Edge Detection» [4] была проведена в самом начале развития систем компьютерного «зрения», детектор границ Кэнни является одним из лучших детекторов в настоящее время.
Кроме частных случаев трудно найти детектор границ, который работал бы существенно лучше, чем детектор Кэнни.
Задачей Кэнни была разработка оптимального алгоритма детектирования границ, который бы удовлетворял следующим требованиям:
- Хорошее обнаружение границ (повышение отношения сигнал/шум);
- Хорошая локализация (точное определение положение границы);
- Единственный отклик на одну границу.
Из этих требований строилась целевая функция стоимости ошибок, минимизацией которой находится оптимальный линейный оператор для свертки с изображением.
Алгоритм детектора границ Кэнни выполняет не только вычисление градиента сглаженного фильтром Гаусса (11) изображения. В контуре границы удаляются локально не максимальные точки, лежащие рядом с границей. Здесь также используется информация о направлении границы для того, чтобы удалять точки именно рядом с границей и не разрывать саму границу вблизи локальных максимумов градиента. Затем с использованием пороговой фильтрации удаляются слабые границы. Фрагмент границы при этом обрабатывается как целое. Если значение градиента где-нибудь на прослеживаемом фрагменте превысит верхний порог, то этот фрагмент остается также «допустимой» границей и в тех местах, где значение градиента падает ниже этого порога, до тех пор, пока она не станет ниже нижнего порога. Если же на всем фрагменте нет ни одной точки со значением большим верхнего порога, то он удаляется. Такой гистерезис позволяет снизить число разрывов в выходных границах. Включение в алгоритм Кэнни шумоподавления с одной стороны повышает устойчивость результатов, а с другой — увеличивает вычислительные затраты и приводит к искажению и даже потере подробностей границ. Так, например, таким алгоритмом скругляются углы объектов и разрушаются границы в точках соединений. Иллюстрация
пороговой фильтрации с гистерезисом представлена на рисунке 2.
Рис. 2. Пороговая фильтрация значения градиента
159
Алгоритм Кэнни разделим на следующие основные пункты:
1. Перевод цветного изображения в полутоновое.
2. Сглаживание изображения. Сглаживание изображения производится путем наложения фильтра Гаусса на полутоновое изображение. Наложение фильтра производится сверткой. Матрица Гаусса представлена ниже:
г 2 4 5 4 21 (8)
4 9 12 9 4 512 15 12 5 4 9 12 9 4
Ь 4 5 4 23. Поиск градиентов. Границы на изображении могут находиться в различных направлениях, поэтому алгоритм Кэнни использует четыре фильтра для выявления горизонтальных, вертикальных и диагональных границ. Воспользовавшись оператором обнаружения границ (например, оператором Собеля или Щарра) получается значение для первой производной в горизонтальном направлении и вертикальном направлении. Из полученных значений можно получить угол направления границы, использовав формулу 9. Угол направления границы округляется до одного из четырех углов, представляющих
вертикаль, горизонталь и две диагонали. На рисунке 3 представлено изображение, поясняющее алгоритм округления угла.
_р|/2 "67,5 ,'-2,4142;
Рис. 3. Округление угла градиента
4. Подавление немаксимумов. Главной задачей этого шага является перевод из «сглаженных» граней изображения величин градиента в «четкие» грани. Проще говоря, это реализуется посредством сохранения всех локальных максимумов градиента изображения, все остальные значения «зануляются» Шаги алгоритма для каждого пикселя изображения градиента следующие:
- сравнить силу грани текущего пикселя с силой грани пикселей как в положительном, так и отрицательном направлении градиента;
- если сила грани текущего пикселя больше сил границ соседних пикселей, тогда оставляем значение, иначе делаем значение пикселя равное нулю [2].
5. Двойная пороговая фильтрация. Потенциальные границы определяются порогами. После выполнения предыдущего шага «подавления немаксимумов», граничные пиксели и их силы граней будут идентифицированы. Среди них большинство будет является реальными гранями изображения, но некоторые не будут являться таковыми. Простейший способ различить два типа пикселей — использование порога. Алгоритм поиска граней Кэнни
18
использует двойную пороговую фильтрацию, в которой граничные пиксели со значением силы большим высокого порога идентифицируется как «сильные», граничные пиксели слабее низкого порога удаляются; пиксели, находящиеся между двумя порогами, помечаются как «слабые» [2].
На рисунке 4 приведен результат применения алгоритма Кэнни. В качестве матрицы для нахождения вертикальных и горизонтальных значений производных функции яркости были использованы матрицы Щарра.
Выбор алгоритма для реализации
При выборе алгоритма для реализации в первую очередь необходимо сравнить результаты применения операторов выделения границ на изображении. Лучший результат по визуальной составляющей показал оператор Кэнни. Следующими по качеству полученного изображения являются операторы Щарра и Собеля. Для лучшего сравнения результаты выполнения данных операторов вынесены на отдельный рисунок 4.
Рис. 4. Наилучшие результаты применения операторов выделения контуров на изображении. Слева - оператор Кэнни, по центру - оператор Щарра, справа - оператор
Собеля
Рассмотрим возможность реализации данных алгоритмов на ПЛИС
Оператор Собеля является наилучшим оператором для реализации на ПЛИС. Изучив архитектуру программируемых
интегральных логических схем, описанную в текущей части настоящей расчетно-пояснительной записки, опишем преимущества оператора Собеля:
- Выполнение свертки возможно за наименьшее количество тактов, так как коэффициенты матрицы свертки являются числами степени 2. Из-за этой особенности возможно заменить операцию умножения рассматриваемого значения пикселя обрабатываемого изображения с коэффициентом матрицы свертки для нахождения частных приближенных значений производных на операцию побитового сдвига влево.
- Выполнение оператора Собеля не требует сохранение полученных значений градиента для последующей обработки после прохождения нескольких тактов, что существенно уменьшает количество требуемой памяти.
- Вычисление градиента возможно по формуле (5), что также не является проблемой для реализации данного шага на ПЛИС.
Оператор Щарра имеет недостаток в реализации на ПЛИС по сравнению с оператором Собеля в том, что для получения значений вертикального и горизонтального значения производных функции яркости изображения необходимо произвести свертку с матрицей, коэффициенты которой не являются числами степени 2. Выполнение данной операции требует больше тактов, что несомненно скажется на времени выполнении алгоритма, но, если учесть тактовую частоту работы современных ПЛИС, получаемая задержка будет незначительной. Остальные преимущества, относящиеся к реализации оператора Собеля на ПЛИС, также присущи и к реализации оператора Щарра.
Оператор Кэнни, показывающий объективно лучший результат работы, требует существенной оптимизации для реализации на ПЛИС. Рассмотрим ключевые проблемы оператора и способы их решения.
Вычисление значения угла градиента и его округление.
Согласно алгоритму, представленному в описании оператора Кэнни, для вычисления угла направления
градиента необходимо найти значение арктангенса отношения двух целых чисел. Возможно решить эту проблему без оптимизации, например, воспользовавшись алгоритмом SRT-division для нахождения отношения двух чисел, а аппроксимированное значение арктангенса вычислять методом Ньютона. Но стоит учитывать, что для выполнения данной задачи необходимо найти округленное значение угла. Для этого целесообразно поступить следующим образом:
- Операцию округления заменить на несколько блоков сравнения ^ else);
- Операцию вычисления арктангенса исключить, вычислив значение тангенса угла на этапе программирования, с которым будет производится сравнение для реализации операции округления;
- Операцию деления двух целых чисел заменить на умножение, умножая знаменатель на тангенс угла сравнения;
- Операцию умножения заменить на операцию побитового сдвига.
Для наглядности ниже продемонстрированы пример пошаговой оптимизации, которая описана выше. Пример выполняет одинаковое действие, последнее из которых оптимизировано под работу на ПЛИС:
/ /а 180\ \ if \arctg (- X ——) < 64 ) х := 0;
¿/(£< 2)х:=0;
if (а < Ъ X 2) х := 0; ¿/ (а < Ь « 1) х := 0;
где а и Ь - целые знаковые числа, х - переменная, ¿/ ( . . .) -условный оператор, « - знак побитового сдвига направо, : = - знак присваивания.
Организация конвейера
Так как оператор Кэнни, в отличие от оператора Собеля, является многоступенчатым алгоритмом, необходимо оптимизировать его работу так, чтобы не было «простоев» по
отправке обработанных данных. Просмотрев алгоритм работы, логичным является сделать следующие действия:
- получить полное изображение и сохранить его в памяти устройства,
- в цикле наложить на сохраненное изображение фильтр Гаусса,
- в следующем цикле вычислить приближенное значение градиента и его направление для каждого пикселя изображения,
- в следующем цикле произвести подавление «немаксимумов»,
- в следующем цикле произвести пороговую фильтрацию,
- отправить обработанное изображение основной машине системы компьютерного «зрения».
При такой реализации возникнут простои системы, так как ПЛИС способна работать на более высоких частотах, чем частота формирования кадра камерой, а также может возникнуть задержка, которая в некоторых случаях может быть критичной для систем компьютерного «зрения». Также возникает проблема организации хранения в памяти всех данных. Для устранения данной проблемы необходимо организовать цикл работы таким образом, чтобы обработка начиналась до получения устройством всего изображения, а отправка данных производилась по мере готовности. Эта задача вполне решаема, но требует большего времени на реализацию, в отличие от задачи реализации на ПЛИС оператора Собеля или Щарра.
Пороговая фильтрация
Значения максимального и минимального порога фильтрации определяют качество конечного результата. На рисунке 5 представлены примеры выполнения оператора Кэнни с разными значениями верхнего порога фильтрации. Для реальной системы при изменении параметров внешнего мира необходимо или динамически изменять значение верхнего и нижнего порога фильтрации для получения оптимального результата, или реализовать интерфейс для изменения этих параметров в реальном времени.
Рис. 5. Результат выполнения оператора Кэнни с разными значениями верхнего порога фильтрации
Результаты
В данной статье проведены обзор существующих алгоритмов детектирования контуров на изображении, подробное рассмотрение и изучение алгоритмов для выявления оптимальных для реализации с учетом архитектуры ПЛИС.
По результату анализа различных операторов детектирования границ на цифровом изображении были выделены три оператора, имеющие лучший результат: оператор Собеля, оператор Щарра, оператор Кэнни. Оператор Собеля, по итогу анализа, является лучшим по скорости реализации и прогнозируемому времени обработки изображения среди данных трех операторов. Но стоит отметить, что измененный оператор Кэнни способен показать наилучший результат работы с сопоставимым временем работы.
Список литературы
1. Хрящев Д.В. Об одном методе выделения контуров на цифровых изображениях. Вестник АРГУ. Сер.: Управление, вычислительная техника и информатика. № 2, 2010. [Электронный ресурс]. Режим доступа:
http://cyberleшnka.ra/artide/n/ob-odmm-metode-vydelemya-konturov-na-tsifrovyh-izobrazheniyah/ (дата обращения: 30.04.2019).
2. Азиф Фуат А. [Asif Fuad A.]. Hardware Software Co-Simulation of Canny Edge Detection Algorithm. International Journal of Computer Applications (0975 - 8887). Volume 122. № 19. July, 2015. [Электронный ресурс]. Режим доступа: http: //research.ijcaonline. org/volume122/number19/pxc3905124. pdf/ (дата обращения 27.04.2019).
3. Крун Д. [Kroon D.]. Numerical optimization of kernel based image derivatives. University of Twente, Enschede. December, 2009. [Электронный ресурс]. Режим доступа: http://www.k-zone.nl/Kroon_DerivativePaper.pdf/ (дата обращения 27.04.2019).
4. Кэнни Дж. [Canny J.]. A Computational Approach to Edge Detection. IEEE Transactions on pattern analysis and machine intelligence, vol. pami-8, no. 6, November, 1986. [Электронный ресурс]. Режим доступа: https://pdfs.semanticscholar.org/55e6/%206333402df1a75664260 501522800cf3d26b9.pdf/ (дата обращения: 27.04.2019).