Выделение связных компонент в штриховых бинарных изображениях

УДК 515.142.33

ВЫДЕЛЕНИЕ СВЯЗНЫХ КОМПОНЕНТ В ШТРИХОВЫХ БИНАРНЫХ ИЗОБРАЖЕНИЯХ

© М.В. Стержанов

Ключевые слова: binary raster; connected component; line image.

Рассматривается задача выделения связных компонент штриховых бинарных изображений.

Производится классификация и описание алгоритмов. Осуществляется сравнительный анализ методов, оценивается их производительность.

1. ВВЕДЕНИЕ

Под выделением связных компонент понимают присвоение уникальной метки каждому объекту изображения [1]. При последующем анализе данные метки служат в качестве идентификаторов при обращении к объектам. Это делает операцию выделения связных компонент неотъемлемой частью почти всех приложений распознавания образов и компьютерного зрения. Например, перед тем как компьютер может определить или классифицировать любой объект изображения (автомобиль, человека, внутренний орган), группы смежных пикселей должны быть идентифицированы и промаркированы. Каждая выделенная группа пикселей соответствует объекту на изображении. Такая группировка смежных пикселей позволяет исследователю получить необходимые для последующего анализа свойства объектов, такие как высота, ширина, периметр, площадь. Очевидно, что задача выделения связных компонент является фундаментальной задачей обработки изображений. Следует отметить, что для многих приложений данная операция является наиболее времязатратной, т. е. критической. По этим причинам выделение связных компонент до сих пор остается активной областью исследований. Некоторые недавние работы по данной тематике представлены в [2-3]. В настоящей работе проводится классификация и сравнительный анализ алгоритмов выделения связных компонент с целью определения алгоритма, имеющего наилучшую производительность при работе со штриховыми изображениями.

2. НЕКОТОРЫЕ ОПРЕДЕЛЕНИЯ

Дадим некоторые определения. Два пикселя (B или W) называются связными, если они являются соседями (расстояние между ними равно 1) в выбранной метрике. Связная компонента (connected component) изображения (СК) - это связное множество пикселей в соответствии с выбранным типом метрики [4]. Мы будем использовать 8-связную метрику. На рис. 1 показано бинарное изображение с пятью связными компонентами. СК можно считать единственной структурной единицей растрового изображения.

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

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

1934

1 1 0 0 1 0 1 0 0

0 1 0 0 1 0 1 0 0

0 1 1 1 1 0 1 1 1

0 0 0 0 0 0 0 0 1

1 1 1 0 0 0 0 0 0

0 0 1 1 1 0 1 0 0

1 1 1 0 1 0 0 0 0

0 0 0 0 0 0 0 1 1

1 1 0 0 1 0 3 0 0

0 1 0 0 1 0 3 0 0

0 1 1 1 1 0 3 3 3

0 0 0 0 0 0 0 0 3

2 2 2 0 0 0 0 0 0

0 0 2 2 2 0 4 0 0

2 2 2 0 2 0 0 0 0

0 0 0 0 0 0 0 5 5

а) б)

Рис. 1. Маркировка связных компонент: а) исходное изображение; б) маркированное изображение

Алгоритмы выделения СК могут быть разделены на следующие пять групп [5]: многопроходные, двухпроходные, однопроходные, алгоритмы с использованием иерархических структур представления изображения, параллельные алгоритмы. В данной работе рассматриваются алгоритмы, принадлежащие первой, второй и третьей группам.

Обозначим через I матрицу изображения. Если I(i,j) = 0, то пиксель является фоновым. Если I(i,j) = 1, то пиксель принадлежит объекту. Через L обозначим двумерную матрицу, которая используется для хранения информации о метках и имеющую размеры, равные размерам изображения.

3. МНОГОПРОХОДНЫЕ АЛГОРИТМЫ

Алгоритмы данного семейства последовательно сканируют изображение. При первом, начальном проходе каждый объектный пиксель получает временную метку. На каждой итерации значения меток уточняются. Алгоритм заканчивает свою работу тогда, когда не может быть сделано ни одного изменения значения метки [6]. Метки, которые назначаются пикселям объектов до финальной маркировки, называются промежуточными. Скан-проходы осуществляются в противополжных направлениях и чередуются. При прямом проходе изображение сканируется слева направо и сверху вниз. При обратном проходе изображение сканируется справа налево и снизу вверх. Каждый раз при обнаружении черного пикселя его соседи, принадлежащие скан-маске (рис. 2), исследуются для определения метки, которая будет присвоена рассматриваемому пикселю. Если в скан-маске содержатся только фоновые пиксели, то рассматриваемый пиксель получает новую промежуточную метку. Если скан-маска содержит только один пиксель интереса, то рассматриваемый пиксель получает метку соседа. Если скан-маска содержит несколько точек интереса, то их промежуточные метки являются эквивалентными, среди них выбирается метка, представляющая все эквивалентные метки (метка-представитель). В данном случае пикселю присваивается значение выбранной метки-представителя. В простейшем случае в качестве метки представителя выбирается метка с наименьшим значением. Назовем данный алгоритм MPS (Multi-Pass Simple).

а) б) в)

Рис. 2. Используемая нотация: а) 8 соседей пикселя; б) скан-маска прямого прохода;

б) скан-маска обратного прохода

Обозначим пиксели скан-маски через а, Ь, с, с1, е и будем использовать эти обозначения вместо их (/, у) координат в дальнейшей нотации. Тогда Ь\е] будет обозначать метку текущего пикселя. Через I обозначим целое число, инициализированное значением 1. Присвоение промежуточных меток в течение первого скан-прохода может быть представлено в виде:

1935

L[e] =

0, если I[e] = 0

1,

min(L[i]) (i е (a, b, c, d) | I[i] = 1), в противном случае

При последующих скан-проходах метки пикселей получают значение, выраженное следующей формулой:

L[e] = min(L[i]), i е (a, b, c, d) 11[i] = 1,

если I[e] = 1 и 3i е (a, b, c, d) такое, что I[i] = 1.

Недостатком алгоритма MPS является большое количество скан-проходов, необходимое для конвертации промежуточных меток.

Алгоритм может быть улучшен при помощи использования таблицы связности (connection table), хранящей информацию об эквивалентных метках. Таблица связности, предложенная в работе Сузуки [7], является одномерным массивом, имеющим число элементов, равное числу промежуточных меток. Назовем данный алгоритм MPS_CT. Обозначим через T таблицу связности. При первом проходе значения массивов L и Т принимают следующие значения:

0; если I[e] = 0 l,T[l] = l, l = l + 1; если L[e] = <jVi е

min(T[L[i]]),T[L[i]] = L[e]; если Vi е (a,b,c, d) | I[i] = 1.

При последующих проходах происходит изменение меток пикселей объектов, которые содержат смежные черные пиксели, принадлежащие скан-маске. Значения меток определяются при помощи следующей формулы:

Де]=/е(а,Ь,с,ё )|/\/ ]=1т1П(Г \ Ц/]]Х

V/ е (а, Ь, с, ё) 11\,] = 1, Т\Щ]] = Це].

Использование таблицы связности способствует более быстрому распространению меток по сравнению с аналогичными алгоритмами. Проведенные нами эксперименты показывают, что в большинстве случаев данному алгоритму требуется не более 4 скан-проходов.

4. ДВУХПРОХОДНЫЕ АЛГОРИТМЫ

Алгоритм, описанный в статье \8], часто называется классическим, т. к. он основан на классическом алгоритме поиска связных компонент на графах. Существуют различные модификации алгоритма, его общая структура заключается в следующем. Изображение последовательно сканируется сверху вниз и слева направо. Новые метки СК присваиваются первому пикселю обнаруженной СК, затем присвоенная метка распространяется на смежные пиксели. Рассмотрим пример на рис. 3.

В первой строке имеется два черных пикселя, разделенные двумя белыми. Первый из них получает метку со значением 1, второй - метку со значением 2. Во второй строке первый пиксель получает метку со значением 1, т. к. его сосед сверху уже помечен. Второй пиксель во второй строке также получает метку со значением 1, т. к. его сосед слева помечен. Аналогичные действия выполняются и для третьей строки матрицы изображения. Рассмотрим пиксель А

1936

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

1. Какая метка должна быть присвоена пикселю А?

2. Каким образом хранится информация об эквивалентных метках?

3. Каким образом информация об эквивалентности преобразуется при окончательной разметке?

а) б)

Рис. 3. Пример маркировки: а) исходное изображение; б) маркированное изображение

Классический алгоритм [8] требует большой глобальной таблицы для хранения информации об эквивалентности меток. На первом проходе, называемом фазой сканирования, все объектные пиксели изображения получают временные метки. Если одному пикселю может быть присвоено несколько меток, то выбирается метка с минимальным значением, а информация об эквивалентности меток заносится в таблицу эквивалентностей. В классическом алгоритме каждая запись в этой таблице представляет собой упорядоченную пару значений, соответствующих эквивалентным меткам. Затем при помощи построения транзитивного замыкания множества эквивалентностей, обнаруженных на первом шаге, выделяются классы эквивалентности. Данная процедура является фазой анализа. Каждому классу эквивалентности присваивается уникальная метка, обычно значение минимальной метки в классе. На втором проходе, называемом фазой окончательной разметки, каждая промежуточная метка заменяется меткой соответствующего класса эквивалентности.

Серьезной проблемой при использовании классического алгоритма является размер таблицы эквивалентностей, которая может иметь очень большой размер при обработке широкоформатных изображений. В предлагаемой нами реализации классического алгоритма таблица эквивалентностей представляет собой хэш-таблицу, реализованную методом цепочек. Данный алгоритм будем называть TPC (Two pass classic).

Одно из решений проблемы неконтролируемого роста размера глобальной таблицы эквивалентностей заключается в использовании небольшой локальной таблицы эквивалентностей, хранящей информацию о метках, принадлежащих двум скан-строкам изображения - текущей и предыдущей. Следовательно, максимальное число отношений эквивалентности равно числу столбцов матрицы изображения. Каждая строка матрицы изображения последовательно сканируется в течение двух итераций. На первой итерации происходит заполнение локальной таблицы эквивалентностей. Затем производится анализ таблицы эквивалентностей, определяются метки-представители, которые будут присвоены пикселям текущей строки при повторном скан-проходе (вторая итерация). Следовательно, в дальнейшем анализе будут использоваться обновленные значения меток. Следует отметить, что второй скан-проход осуществляется в направлении, противоположном первому. Данный алгоритм будем называть TPLTM (Two pass local table method).

Эффективным методом, позволяющим осуществить компактное хранение информации об эквивалентности и быстрый поиск, является использование структуры данных для объединения-поиска [9] (union-find). Алгоритм объединения-поиска, который динамически строит классы эквивалентности после обнаружения связанных отношением эквивалентности объектов, стал широко использоваться в различных прикладных задачах. Структура данных, ориентированная на объединение и поиск, позволяет эффективно формировать классы эквивалентности,

1937

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

Опишем структуру данных для объединения-поиска. Каждое непересекающееся множество хранится в форме древовидной структуры, в каждом узле которой хранится метка и ссылка на один родительский узел. Как правило, метка, присвоенная корневому элементу дерева, выбирается в качестве окончательной метки для всех промежуточных меток, входящих в дерево. Процедура поиска принимает в качестве параметра метку X, прослеживает родительские узлы вверх к корню дерева и находит метку корневого узла дерева, которому принадлежит X. Процедуре объединения передаются две метки - X и У. Для этих меток находятся корневые узлы. Если корневые узлы не совпадают, то узел одной из меток назначается родительским узлом для узла второй метки.

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

Если глубина дерева является большой, то поиск корня для листов будет медленным. Поэтому может применяться компрессия пути, т. е. при добавлении узла T, имеющего корень S, к новому корню C для всех узлов, принадлежащих пути от T до S, устанавливается корень C. Реализацию классического алгоритма с применением структуры данных для объединения поиска назовем CUF, реализацию с применением компрессии назовем CUF_PC.

5. ОДНОПРОХОДНЫЕ АЛГОРИТМЫ

Наиболее простыми методами маркировки связных компонент являются рекурсивные алгоритмы поиска. Процесс поиска сводится к следующим операциям. Находится непомеченный черный пиксель. Ему присваевается новая метка и вызывается процедура поиска search всех черных необработанных соседей. Для каждого из найденных соседей производится рекурсивный вызов search. Очевидно, что для избежания множественных рекурсивных вызовов поиск в ширину реализуется с помощью структуры данных «очередь». Изначально в очередь заносятся координаты исходного черного пикселя. Затем из очереди извлекается элемент, он помечается текущей меткой СК, находятся все непомеченные соседи и помещаются в очередь. Обработка продолжается до тех пор, пока очередь не опустеет. Данная стратегия носит название «поиск в ширину» (Breadth-first search, BFS). В качестве структуры данных для хранения информации о подлежащих обработке пикселях может использоваться стек. В таком случае будет осуществляться поиск в глубину (Depth-first search, DFS).

Наиболее эффективным алгоритмом данного семейства является алгоритм обхода контуров (CT), предложенный в работе [10]. Алгоритм осуществляет проход по изображению, при встрече непомеченного объектного пикселя проверяется его принадлежность внутренней либо внешней границе объекта. Если пиксель является граничным, то создается новая метка и осуществляется прослеживание контура. Все контурные точки получают значение созданной метки. В противном случае соседний слева пиксель является уже помеченным, текущий пиксель получает его метку.

6. РЕАЛИЗАЦИЯ НА СЖАТОМ РАСТРЕ

Эффективным методом представления изображения является кодирование длин серий (RLE). Многие алгоритмы нахождения СК могут быть реализованы на сжатом растре [11]. Каждая серия получает дополнительное поле для хранения метки СК. При работе на сжатом растре количество обращений к объектам изображения значительно уменьшается, т. к. каждая серия является группой пикселей, и нет необходимости обрабатывать каждый объектный пиксель в отдельности. Более того, фоновые пиксели вообще не участвуют в обработке. Количество

1938

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

В работе [2] авторы утверждают, что их алгоритм является эффективным при обработке штриховых изображений. На первом проходе анализируется смежность серий в i и /-1 скан-строке. Если серия не имеет смежных, ей присваивается новая метка k, которая заносится в позицию k массива R меток-представителей. Пусть две метки A и B принадлежат одной СК, т. е. являются эквивалентными. Тогда всем ячейкам массива R, имеющим значение B, присваивается значение A. На втором проходе каждая серия получает значение метки из массива R. Данный алгоритм назовем по именам авторов - НС8*^

7. ЭКСПЕРИМЕНТАЛЬНАЯ ЧАСТЬ

Тестирование производительности осуществлялось пакетным способом. Обрабатывались типовые штриховые изображения (схемы электрические принципиальные, функциональные, различные чертежи).

В табл. 1 приведем результаты работы алгоритмов, описанных в пунктах 3-5.

Как видно из приведенных данных, многопроходные алгоритмы являются самыми неэффективными. Классический двухпроходный алгоритм также является медленным из-за операций с глобальной таблицей эквивалентностей большого размера. Применение структуры данных для объединения-поиска позволяет значительно ускорить двухпроходные алгоритмы. Наилучшим среди однопроходных алгоритмов является метод обхода контуров.

В табл. 2 приведены результаты работы алгоритмов, использующих сжатое представление.

Таблица 1

Производительность алгоритмов

Метод Min, мс Max, мс Avg, мс Disp, мс

MPS 1367 130596 21689 33662

MPS CT 876 13054 3815 3746

TPC 1234 175868 26204 45954

CUF 244 5312 1070 1308

CUF PC 147 624 302 138

DFS 159 663 318 147

BFS 170 686 325 154

CT 127 340 192 62

Примечание. Время выделения СК: min - минимальное, max - максимальное, avg - среднее выборочное, Disp - квадратный корень среднеквадратичного отклонения.

Таблица 2

Производительность алгоритмов на сжатом растре

Метод Min, мс Max, мс Avg, мс Disp, мс

MP 12 1050 300 410

MP CT 29 187 74 48

OUF 10 489 119 126

OUF_PC 6 23 12 5

HCSW 6 33 15 7

Примечание. Время выделения СК: min - минимальное, max - максимальное, avg - среднее выборочное, Disp - квадратный корень среднеквадратичного отклонения.

1939

Из проведенного эксперимента видно, что применение сжатого растра позволяет значительно увеличить производительность алгоритмов выделения СК. Наиболее эффективными алгоритмами являются двухпроходный алгоритм с применением структуры данных для объединения-поиска и алгоритм He [2].

8. ЗАКЛЮЧЕНИЕ

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

ЛИТЕРАТУРА

1. Шапиро Л., Стокман Дж. Компьютерное зрение. М.: Бином. Лаборатория знаний, 2006.

2. He L., Chao Y., Suzuki K., Wu K. Fast connected-component labeling. Pattern Recognition. 2009. V. 42. № 9. Р. 1977-1987.

3. Hedberg H., Kristensen F. and Owall V. Implementation of a labeling algorithm based on contour tracing with feature extraction // IEEE International Symposium on Circuits and Systems (ISCAS). 2007. Р. 11011104.

4. Абламейко С.В., Лагуновский Д.М. Обработка изображений: технология, методы, применения. Минск: Амалфея, 2000.

5. Wu K., Otoo E. and Suzuki K. Optimizing two-pass connected-component labeling algorithms // Pattern Analysis & Applications. 2009. V. 12. № 2. Р. 206-220.

6. HaralickR.M. Some Neighborhood Operations. N. Y.: Plenum Press, 1981.

7. Suzuki K., Horiba I., Sugie N. Linear-time connected-component labeling based on sequential local operations // Comput. Vis. Image Underst. 2003. V. 89. № 1.

8. RosenfeldA., Pfaltz P. Sequential Operations in Digital Picture Processing // J. of the Association for Computing Machinery. 1966. V. 12.

9. Fiorio C., Gustedt J. Two linear time union-find strategies for image processing // Theor. Comput. Sci. 1996. V. 154. № 2.

10. Shapiro L. Connected Component Labeling and Adjacency Graph Construction // Topological algorithms for digital image processing / T. Kong [et al.]. Amsterdam, 1996. Р. 1-31.

11. Chang F., Chen C.-J. and Lu C.-J. A linear-time component-labeling algorithm using contour tracing technique // Comput. Vis. Image Underst. 2004. V. 93. № 2. Р. 206-220.

Поступила в редакцию 20 августа 2010 г.

Sterzhanov M.V. Connected component labeling for line binary images

The problem of connected component labeling of line binary images is scrutinized. both The classification and description of the algorithms is provided. Comparative analysis of methods is given, the productivity is estimated.

Key words: binary image; connected component; line image.

1940