Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции Максимова.doc
Скачиваний:
11
Добавлен:
01.04.2025
Размер:
20.86 Mб
Скачать

6.1.6. Раскраска изображений

Методы порогового отсечения и наращивания областей позволяют в ряде случаев только выделить область объектов Dоб и фона, т. е. получить бинарное изображение (яркость 1 соответствует точкам из области объектов, яркость 0 – точкам фона). Для получения окончательной сегментации остается выполнить раскраску полученного бинарного изображения или, что то же самое, раскраску множества Dоб. При этом понятие объект формализуется в терминах бинарного изображения, так что для раскраски существуют алгоритмы, не содержащие элементов эвристики.

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

Напомним, что алгоритмы центроидного связывания определяются в первую очередь критерием однородности области, а также правилом просмотра точек. Для бинарных изображений критерий однородности очевиден: однородная область вся состоит из точек с яркостью 1 либо из точек с яркостью 0. Поэтому применительно к бинарным изображениям определяющим для алгоритмов центроидного связывания будет порядок просмотра точек.

Одним из возможных порядков просмотра точек является просмотр путем «распространения волны» (см. выше). Реализующие его алгоритмы раскраски можно назвать волновыми. Они требуют больших затрат машинного времени, поскольку каждая точка рассматривается много раз. Кроме того, для аппаратной реализации неудобно то, что порядок просмотра точек никак не связан со способом развертки изображения, а определяется только свойствами самого изображения.

Рис. 6.11. Пример непосредственной раскраски:

а, б – входные изображения; в – результат обработки изображения б; г, д, е – результаты неоднократных проходов (двух, трех. четырех соответственно)

В связи с этим в последние годы получили распространение алгоритмы, основанные на естественном порядке просмотра точек растра – по строкам. Самый простой способ состоит в следующем: точке (m, n) сопоставляется метка (цвет) с номером, минимальным из номеров меток уже размеченных соседних точек. Если же таких соседей нет, точке (m, n) сопоставляется новая, еще не использованная метка.

Простота реализации такого алгоритма компенсируется весьма ограниченной областью его применения – лишь для простейших изображений, например тех, края которых параллельны строкам растра или для несколько более сложных изображений (рис. 6.11. а). Для ряда простых изображений (рис. 6.11. б) указанный способ неприменим вместо одного цвета получаем пять цветов (цвет с номером 1 появляется при раскраске верхней строки, цвет с номером 2 – при раскраске следующей строки и т. д.; при раскраске очередной строки появляется новый цвет). Распределение цветов, которое будет соответствовать бинарному изображению на рис. 6.11. б при указанной «непосредственной» раскраске, приведено на рис. 6.11. в.

Чтобы подобный алгоритм непосредственной раскраски был применим к любым изображениям, его необходимо дополнить определенными этапами. Для этого можно использовать две возможности. Первая возможность – построение графа, указывающего связи между номерами цветов. Пусть на некотором шаге алгоритма рассматриваемая точка имеет двух соседей, которым уже сопоставлены различные цвета р и q. Тогда цвета р и q должны «слиться», т. е. представлять один цвет. Запоминание таких «связей» между цветами удобно выполнить в терминах матрицы смежности графа, число вершин которого равно числу цветов непосредственной раскраски. После окончания непосредственной раскраски полученный граф анализируется (выделяются максимально связные подграфы, а затем осуществляется перекраска). Этот способ удобен тем, что не требует многократных просмотров точек растра. Однако даже для не очень сложных объектов граф связей может состоять из большого числа вершин и выделение его максимальных связных подграфов требует немалых временных и аппаратурных затрат.

Другая возможность – повторные просмотры точек растра, причем в результате каждого просмотра часть точек перекрашивается. Особенностью повторного просмотра является учет всех цветов соседей текущего элемента при определении его цвета. Рассмотрим для примера результат повторной раскраски бинарного изображения, представленного в растре 5х5 (см. рис. 6.11, в). Произойдет следующее изменение распределения цветов в отдельных точках (i, j) растра:

  • цвет точки (2, 4) поменяется с 2 на 1, поскольку соседняя точка (2, 5) имеет цвет 1;

  • цвет точки (З, З) поменяется с 3 на 2, поскольку при раскраске первых двух строк цвет 2 теперь уже не используется;

  • цвет точки (3, 4) поменяется с 2 на 1, так как новый цвет соседней точки (2, 4) есть 1;

  • аналогичным образом изменятся цвета остальных точек.

Окончательное распределение цветов после второго прохода представлено на рис. 6.11. г. Число цветов уменьшилось, но правильная раскраска не получена. Правильную раскраску можно получить для бинарного изображения, показанного на рис. 6.11. б, только за четыре процедуры повторного просмотра точек изображения. Результаты последовательного применения этих процедур представлены на рис. 6.11. г, д, е.

Вообще, для любого бинарного изображения В существует число l = l (В) такое, что за l процедур просмотров точек изображение раскрашивается правильно. Трудность состоит в том, что число l в общем случае заранее неизвестно и, кроме того, для некоторых (даже не очень сложных) изображений оно может быть весьма велико.

Следует заметить, что после каждого просмотра целесообразно менять направление сканирования (порядок просмотра точек). Например, если второй просмотр изображения, представленного на рис. 6.11. б, осуществлять в порядке справа налево, снизу вверх, то после него сразу же получается правильная раскраска в один цвет.

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

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

1. Вводится порядок точек растра D: D = {А1, А2,..., А} где и – число строк и столбцов растра.

2. Фиксируется отображение 0: N N, 0(i) = i ; N – множество натуральных чисел.

3. Для очередной точки Аk указывается целочисленное значение функции 1 k ) на основании информации о значениях 1 i ) при i < k, а также о значении В(Аk) – яркости исходного изображения в точке Аk.

4. Для очередной точки Аk строится отображение k: N N на основе информации о k-1.

5. После просмотра всех точек растра и построения отображения 1: D N осуществляется перекраска точек растра только на основании информации об отображении , полученном на последнем шаге просмотра всех точек.

Эффективность алгоритмов такого класса определяется высоким быстродействием, а также тем, что при совпадении порядка просмотра точек со способом развертки изображения построение отображения осуществляется параллельно с разверткой в реальном масштабе времени и заканчивается в момент окончания развертки: перекраска же вообще не связана со свойствами изображения. В связи с этим среди эффективных алгоритмов следует искать такие, для которых правило построения 1: D N реализуется как можно проще, а отображение k отличается от k-1 как можно реже.

Рассмотрим теперь эффективный в смысле приведенного определения алгоритм раскраски, обладающий еще одним важным достоинством – он применим к произвольному порядку просмотра точек растра.

Введем несколько дополнительных обозначений и определений. Пусть выбран порядок точек растра: D = 1, А2,..., А}. Через Uk) обозначим подмножество множества 1, А2,..., Аk-1} состоящее из соседних с Аk точек (оно состоит не более чем из четырех элементов, а при построчном сканировании – не более чем из двух).

Отображение : N N назовем сжимающим, если для любого i N выполнено (i) i . С каждым сжимающим отображением : N N свяжем отображение = N N, построенное следующим образом. Для каждого i N построим последовательность а0= i, a1 = (i),…, ak = (ak-1). Поскольку – сжимающее отображение, последовательность аk стабилизуется, т. е. существует такое а, что начиная с некоторого номера все члены последовательности равны а. Определим значение (i) . Например, для отображения

(т.е. (1) = 1, (2) = 1, (3) = 2, …) отображение имеет вид

Алгоритм раскраски состоит в следующем.

1. Если B(A1) = 0, то 11) = 0, иначе 11) = 1. Отображение 1 определим как тождественное.

2. Пусть найдены значения 1 для точек А1,… Аk-1 и определено отображение k-1. Если B(Ak) = 0, то 1 (Ak) = 0. Если B(Ak 0), но U(Ak) =  (или ), то .

Рис. 6.12. Пример применения алгоритма раскраски:

а – бинарное изображение; б, в – предварительная и окончательная раскраска

Если B(Ak) 0, U(Ak) 0, , то .

Если при этом среди точек U(Ak) есть две точки А’, А” такие, что В(А’) 0, В(А”) 0, то изменяется отображение k-1 (т. е. k ), а именно:

если р  { (1 (A)), A U(Ak) }, то k (р) = k-1 (р);

если же р { (1 (A)), A U(Ak) }, то k (р) = .

3. После того как построено отображение 1 для всех точек А1,..., А строится отображение : D N по правилу (Ak) = (1 (Ak)).

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

Отображение дает точную раскра­ску любого бинарного изображения при любом порядке про­смотра точек.