Московский государственный университет имени М.В.Ломоносова
Опубликован: 23.04.2007 | Доступ: свободный | Студентов: 3308 / 461 | Оценка: 4.18 / 3.71 | Длительность: 17:54:00
ISBN: 978-5-9556-0098-7
Специальности: Программист
Лекция 10:

Выделение объекта на фоне

< Лекция 9 || Лекция 10: 123 || Лекция 11 >

10.4. Сегментация при помощи разрезов на графах

Третий способ выделения объекта на фоне также основан на теории графов. Из всех рассматриваемых способов он имеет наиболее естественный интерфейс: пользователь просто отмечает некоторое множество A пикселей, принадлежащих объекту, и некоторое множество B пикселей, принадлежащих фону (см. рис. 10.4). Поскольку эти пиксели не обязаны быть рядом с границей, такая разметка не требует от пользователя особых усилий. Результатом алгоритма служит сегментация, в которой все множество A отнесено к объекту, а множество B - к фону.

Если результат выделения с первого раза не удовлетворяет пользователя, он добавляет в исходные множества пиксели, доотмечая их на изображении. Например, если алгоритм ошибочно отнес кусок объекта к фону, пользователь отмечает часть пикселей этого куска как пиксели объекта (множество A ). Результатом перезапуска алгоритма служит уточненная сегментация.

Рассмотрим, как работает сам алгоритм. На этот раз построим граф на растре следующим образом. Вершины графа расположим в центре каждого пикселя. Далее под цветом вершины мы будем понимать цвет соответствующего пикселя. Будем также считать, что вершина принадлежит множеству A (или B ), если соответствующему множеству принадлежит соответствующий пиксель.

Интерфейс сегментации при помощи разрезов на графах. Белым помечены пиксели отнесенные к объекту (множество A). Серым помечены пиксели отнесенные к фону (множество B).

Рис. 10.4. Интерфейс сегментации при помощи разрезов на графах. Белым помечены пиксели отнесенные к объекту (множество A). Серым помечены пиксели отнесенные к фону (множество B).
Выделение объекта при помощи разреза на графе для одномерного растра. Исток и сток расположены сверху и снизу соответственно, пиксельные вершины - посередине. Толщина ребра соответствует весу. Веса ребер между пиксельными вершинами соответствуют схожести их цветов. Ребрам, соединяющим исток с вершинами множества A (помечены литерой A), и ребрам, соединяющим сток с вершинами множества B (помечены литерой B), приписаны бесконечные веса (максимальная толщина на рисунке). Прочим ребрам, соединяющим терминальные и пиксельные вершины, приписаны веса, соответствующие схожести цвета пиксельной вершины с цветами множеств A и B. Минимальный разрез (показан пунктиром) проходит так, чтобы суммарный вес (толщина) разрезанных ребер был минимальным.

Рис. 10.5. Выделение объекта при помощи разреза на графе для одномерного растра. Исток и сток расположены сверху и снизу соответственно, пиксельные вершины - посередине. Толщина ребра соответствует весу. Веса ребер между пиксельными вершинами соответствуют схожести их цветов. Ребрам, соединяющим исток с вершинами множества A (помечены литерой A), и ребрам, соединяющим сток с вершинами множества B (помечены литерой B), приписаны бесконечные веса (максимальная толщина на рисунке). Прочим ребрам, соединяющим терминальные и пиксельные вершины, приписаны веса, соответствующие схожести цвета пиксельной вершины с цветами множеств A и B. Минимальный разрез (показан пунктиром) проходит так, чтобы суммарный вес (толщина) разрезанных ребер был минимальным.

Каждую вершину соединим с соседними вершинами (т.е. вершинами, расположенными в центрах 8-связно соседних пикселей). Таким образом, получившиеся ребра соединяют центры соседних пикселей. Припишем каждому ребру вес

\lambda  \frac{1}{L} \exp ( - \sigma \rho (C_1,C_2)) , ( 10.1)

где L - геометрическая длина ребра, C1 и C2 - цвета вершин, соединяемых ребром, \lambda и \sigma - некоторые (положительные) параметры. Отметим, что данный вес тем меньше, чем больше разница между цветами вершин.

Добавим в граф две вершины, называемые истоком и стоком (граф с этими вершинами называется сетью ). Эти вершины будем называть терминальными. Прочие вершины будем называть пиксельными. Соединим сток и исток ребрами с каждой вершиной графа. Ребрам, соединяющим исток с вершинами множества A, и ребрам, соединяющим сток с вершинами множества B, припишем бесконечный вес.

Рассмотрим распределение цветов вершин множества A (как гистограмму или как набор кластеров, полученных методом K средних). Для всех пиксельных вершин не из множества A, припишем ребрам, соединяющим их с истоком, вес, пропорциональный согласованности их цвета с этим распределением цветов. Например, для гистограммного распределения согласованность соответствует мощности соответствующей корзины. Таким образом, вес ребра будет тем больше, чем больше "похож" цвет вершины на цвета вершин множества A. Аналогичную процедуру проделаем для множества B и ребер, соединяющих пиксельные вершины со стоком. В результате всем ребрам нашего расширенного графа будут приписаны веса (рис. 10.5).

Назовем разрезом на нашем графе разбиение всех его вершин на два непересекающихся множества - истоковое и стоковое, причем истоковое множество должно содержать исток, а стоковое множество, соответственно, сток. Будем называть ребра, соединяющие вершины из разных множеств, разрезанными. Разрез можно также представлять как разрезающую поверхность, пересекающую все разрезанные ребра и отделяющую исток от стока. Любой разрез задает сегментацию исходного изображения следующим образом: будем считать, что вершины, попавшие в истоковое множество (помимо самого истока), соответствуют пикселям объекта, а остальные, попавшие в стоковое множество (помимо самого стока), соответствуют пикселям фона.

Весом разреза назовем сумму весов всех разрезанных ребер. Минимальным разрезом назовем разрез с минимальным весом. Заметим, что всего разрезов 2P, где P - число пикселей (так как каждая пиксельная вершина может оказаться либо в истоковом, либо в стоковом множестве). Но при этом существует алгоритм поиска минимального разреза на графе (известный также как алгоритм поиска максимального потока в сети), позволяющий найти минимальный разрез за полиномиальное от P время, причем на практике для графов, похожих на описанный в данном разделе, он работает за линейное от P время. Этот широко использующийся в современной вычислительной дискретной математике алгоритм можно найти во многих учебниках (см. заключение в конце лекции).

Что дает нам найденный минимальный разрез на указанном графе? Минимальный разрез будет проходить так, что (рис. 10.5):

  • Пиксели множества A будут отнесены к объекту, пиксели множества B - к фону. Это гарантируется бесконечностью весов ребер, соединяющих соответствующие пиксельные вершины с соответствующими терминальными.
  • Граница между объектом и фоном будет проведена по возможности между пикселями с сильно отличающимися цветами. Это обеспечивается выбором весов для ребер, соединяющих пиксельные вершины (формула (10.1)).
  • Пиксели, похожие по цвету на пиксели множества A, будут по возможности отнесены к объекту, а пиксели, похожие по цвету на пиксели множества B, - к фону. Это гарантируется выбором весов ребер, соединяющих соответствующие пиксельные вершины с соответствующими терминальными.

Последние два пункта могут входить в противоречие друг с другом. Например, участок изображения может быть похож по цвету на фон (пиксели множества B ), но окружен вокруг по периметру пикселями множества A и при этом не отделен от них резкой границей. В таких случаях выбор параметра \lambda в формуле (10.1) устанавливает баланс между последними двумя пунктами. Увеличивая значение \lambda, мы увеличиваем важность того, чтобы граница между фоном и объектом проходила между пикселями с разными цветами, а уменьшая, мы увеличиваем важность того, чтобы пиксели, похожие по цвету на пиксели множества A (B), были отнесены к объекту (фону).

Результат сегментации при помощи разрезов на графах (входные данные показаны на рис. 10.4).

Рис. 10.6. Результат сегментации при помощи разрезов на графах (входные данные показаны на рис. 10.4).

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

10.5. Заключение

Алгоритм "умные ножницы" был впервые представлен в [41]. Сегментация при помощи разрезов на графах была впервые представлена в [15]. Алгоритмы поиска кратчайшего пути на графе и минимального разреза на графе могут быть найдены, например, в [4] и [6].

< Лекция 9 || Лекция 10: 123 || Лекция 11 >