ПОИСК ВПАДИН В ЗАМКНУТОМ НЕВЫПУКЛОМ КОНТУРЕ
Р. В. Хмелев
Институт систем обработки изображений РАН Самарский государственный аэрокосмический университет
Введение
Как известно, структурные методы распознавания объектов основаны на поиске элементарных составляющих объекта и анализе их взаимного расположения [3]. Однако поиск этих элементарных составляющих представляет трудности, отчасти из-за сложности формализации, отчасти из-за их многообразия. Видимо, для того, чтобы создать методы распознавания, сравнимые по надежности с человеком, необходимо формализовать все понятия, свойства и определения Евклидовой геометрии, поскольку все это когда-то заметил и выделил человек.
Далее речь пойдет о структурных элементах, которым до сих пор уделялось мало внимания. Большинство объектов реального мира представляет собой невыпуклые многогранники, проекции контура которых на плоскость обычно являются невыпуклыми многоугольниками (рис. 1).
Рис. 1. Примеры невыпуклых многогранников реального мира. а) Автомобиль ВАЗ-2110.
б) Истребитель-бомбардировщик Су-30 В данной статье описывается алгоритм поиска впадин в замкнутом невыпуклом контуре, представленном восьмисвязной цепью переходов (код Фри-мена) [4].
1. Основная идея Чтобы проиллюстрировать принцип поиска впадин, приведем несколько примеров, переходя от простых к более сложным.
Прежде всего, для каждого невыпуклого многоугольника можно построить минимальный по площади объемлющий его выпуклый многоугольник и найти, таким образом, впадины (рис. 2а). Однако этим способом далеко не всегда удается найти все впадины, которые выделил бы человек (рис. 2б).
V-' у V,,,
А. ..
V В, I
В,УХ / /-
V« V,, V,
Рис. 2. Поиск впадин с помощью построения минимального объемлющего многоугольника. а) Пример удачного поиска. б) Впадину А1 хотелось бы разделить на две
Введем предварительно несколько определений и обозначений.
Вершины выпуклого многоугольника для данного контура будем обозначать как множество
V = { V }}=01, множество впадин - А = {А; }}А'о 1. Договоримся, что впадина (А;) ограничивается с одной стороны контуром объекта, а с другой - отрезком прямой, концы которого принадлежат контуру. Концы отрезка называются краями впадины (обозначаются Б; и Б;). Весь замкнутый контур будем обозначать Г , а часть его, принадлежащую впадине А; - ГА . Ограничивающий отрезок впадины Б;Б; не пересекает ГА нигде, кроме своих концов (условие несамопересечения границы впадины). Будем считать, что концами ограничивающего отрезка могут являться не любые, а только некоторые особенные точки контура, при этом впадина должна иметь максимально возможные размеры и иметь как можно более близкую к выпуклому многоугольнику форму.
Дадим определение максимального отклонения множества точек от отрезка. Это не то же самое, что максимальное отклонение от прямой, и зависит от трех величин - максимального прямоугольного и двух максимальных тупоугольных отклонений от отрезка.
Максимальным прямоугольным отклонением множества 8 от отрезка АВ называется максимум расстояния от точек множества до прямой, проходящей через отрезок:
с_ (8,АВ) = тах {с1 (8,АВ)}. (1)
Областью тупых углов ФВ для конца В отрезка АВ будем называть множество таких точек Т, для которых угол ТВА - тупой:
ЦАВ ={Т:-р ^ТВА <р} . (2)
Тупоугольным отклонением точки М от конца В отрезка АВ будем называть следующую величину:
с((М,ВА) = (3)
= Гс (М,В), если М е ЦАВ "[о, если М г ЦАВ
Следует обратить внимание, что в формуле конец отрезка, относительно которого считается отклонение, записывается первым.
Максимальным тупоугольным отклонением множества точек 8 от конца А отрезка АВ называется максимум из тупоугольных отклонений точек 8 от конца отрезка А:
с_ (,АБ) = тах {с<(8,ЛБ)}.
(4)
Максимальным отклонением множества 8 от отрезка АВ называется максимум из прямоугольного отклонения и тупоугольных отклонений от обоих его концов (рис. 3):
с тах (Л^) =
= тах {с тах (,ЛВ),с (,АВ), с тах (,ВА)}.
(5)
Глубиной впадины А; будем называть максимальное отклонение фрагмента контура впадины ГА от ограничивающего ее отрезка Е|Е; :
Ь = с тах (Ж )
(6)
а точку контура, в которой достигается этот максимум, назовем донной точкой и будем обозначать В;.
Рис. 3. Максимальное прямоугольное и тупоугольное отклонения фрагмента контура от отрезка Вернемся к примерам впадин. На рис. 2б с помощью максимального объемлющего выпуклого многоугольника было найдено разделение контура на впадины, которое не совсем соответствует человеческому представлению о том, как оно должно выглядеть. Впадину А1 хотелось бы поделить на две, как это сделать? Наиболее очевидным представляется использовать как точку разделения вершину самой заметной выпуклости внутри впадины. Рассмотрим впадину А! как невыпуклый контур, состоящий из фрагмента контура ГА] и ограничивающего впадину отрезка УУ+!. Построим для данного невыпуклого контура выпуклый многоугольник, точнее, выпуклую ломаную (поскольку одна сторона многоугольника уже известна - это ограничивающий отрезок) (рис. 4а).
Рис. 4. Разделение впадины Д0 рис. 2б. а) Поиск впадин первого порядка. б) Найденные впадины Л0 и А1 с краями, удовлетворяющими условию несамопересечения
Выпуклой ломаной будем называть ломаную, которая достраивается до выпуклого многоугольника соединением крайних концов. Выпуклая ломаная является минимальной для данного фрагмента контура, если получаемый из нее выпуклый многоугольник имеет наименьшую площадь. Выпуклые ломаные можно строить с двух сторон фрагмента, при достраивании до многоугольника они не обязательно должны содержать фрагмент целиком (рис. 5).
Лд^ПД^
Рис. 5. Выпуклые ломаные для фрагмента контура ЛВ можно построить с двух сторон
Границу выпуклого многоугольника для всего контура будем обозначать О, а границу выпуклой ломаной для впадины А, ограниченной отрезком Е'Е" - или ОБ,Бп.
Прежде чем рассматривать, что у нас получилось после построения выпуклой ломаной для впадины, введем понятие порядка для многоугольников и ломаных, их вершин, впадин и донных точек. Нулевой порядок присваивается выпуклому многоугольнику, построенному для исходного замкнутого контура, а также его вершинам, впадинам и их донным точкам. Первый порядок присваивается выпуклым ломаным, построенным для впадин нулевого порядка, а также их вершинам, впадинам и их донным точкам. И так далее, аналогично определяются более высокие порядки. Порядок объекта будем обозначать верхним индексом.
Таким образом, выпуклости внутри впадины нулевого порядка превращаются во впадины первого порядка. На рис. 4а у нас получилось три впадины и три донные точки первого порядка, причем только одна из впадин (А!) имеет заметную глубину. Донную точку этой впадины В11 можно использовать для разделения исходной впадины А0 на две, а донные точки В0 и В2 можно проигнорировать. Тем не менее, может потребоваться коррекция краев впадины, чтобы выполнялось условие несамопересечения (рис. 4б).
Покажем, как производится коррекция несамопересечения. Пусть есть фрагмент контура, между крайними точками (V; и у которого есть впадина, для которой известно положение донной точки В (рис. 6). Построим минимальную выпуклую ломаную, ограничивающую фрагмент с внешней стороны. Находим тот отрезок ломаной (Е'Е"), который ограничивает впадину, содержащую заданную точку В. Концы этого отрезка и будут скорректированными краями впадины.
Рассмотрим более сложную впадину нулевого порядка, внутри которой несколько впадин первого порядка (рис. 7). Очевидно, их донные точки можно использовать для разделения впадины нулевого порядка. Таким образом, впадина нулевого порядка
делится на впадины, число которых не превышает число ее впадин первого порядка плюс одна.
Рис. 6. Коррекция несамопересечения. В - заданная донная точка, - первое приближение краев впадины, Е', Е" - края впадины после коррекции
V0,
Чл/
Рис. 7. Разделение впадины нулевого уровня с помощью трех донных точек первого уровня. Граничные отрезки конечных впадин обозначены пунктиром
Однако что будет, если впадина первого порядка имеет более сложный вид и в ней самой можно выделить впадины (рис. 8а, 8б)?
Рис. 8. Разделение впадины нулевого порядка (а) с помощью сложной впадины первого порядка (б). Предварительно впадина первого порядка делится с помощью донных точек впадин второго порядка (в).
Впадина нулевого порядка делится донными точками получившихся впадин первого порядка (г)
Разделим данную впадину на две. Для этого построим для нее минимальную выпуклую ломаную и найдем впадины второго порядка (рис. 8в). Как и в случае на рис. 4, используем донную точку впадины А12 для разделения. Донные точки двух получив-
шихся впадин первого порядка можно использовать для разделения исходной впадины нулевого порядка на три (рис. 8г).
Таким образом, основная идея алгоритма поиска впадин следующая. После построения для невыпуклого контура минимального выпуклого многоугольника находится некоторое число впадин нулевого порядка. Для каждой из этих впадин выясняется, не является ли она невыпуклым контуром с впадинами первого порядка. Для найденных впадин первого порядка, в свою очередь, проверяется, не являются ли они сами невыпуклыми контурами с впадинами второго порядка, и т.д., рекурсивно анализируем впадины все более высоких порядков, пока очередная впадина не окажется выпуклым и, следовательно, неделимым контуром. Затем происходит обратный процесс - с помощью донных точек впадин глубоких порядков пытаемся разделить впадины предыдущих порядков, пока не вернемся на нулевой уровень.
3. Поиск минимальных выпуклых многоугольников и ломаных
По определению, выпуклым называется такой многоугольник, который целиком лежит в одной полуплоскости относительно прямой, проведенной через любую из его сторон. Воспользуемся этим определением при построении выпуклого многоугольника для данного невыпуклого многоугольника.
Граничной прямой многоугольника будем называть такую прямую, которая проходит минимум через две его вершины так, что весь многоугольник лежит по одну сторону от прямой. Часть прямой, лежащая между этими двумя вершинами, называется граничным отрезком. В каждом невыпуклом многоугольнике есть выпуклые (меньше п) и вогнутые (больше п) углы. Очевидно, что граничная прямая должна проходить через вершины, углы в которых выпуклые (рис. 9).
Рис. 9. Невыпуклый многоугольник и одна из его граничных прямых а Рассмотрим контур, представляемый восьми-связной цепью, как невыпуклый многоугольник. Каждая точка цепи является либо выпуклой или вогнутой вершиной многоугольника, либо лежит на прямой, соединяющей вершины (в данном случае прямыми считаются только строго горизонтальные, вертикальные и диагональные участки). Точки цепи будем называть выпуклыми (множество Р={Р;}), вогнутыми (множество С={С;}) или прямыми, в зависимости от того, соответствуют ли они какому-то углу или лежат на прямом участке (рис. 10).
□□ □ □ □ □
□ □ □□ □□
Рис. 10. а) Исходный растровый объект. б) Контур объекта, всего 74 точки, из них 23 (31%) - выпуклые (темно серые), 18 (24%) - вогнутые (белые), остальные 33 (45%) - прямые (светло серые) Переберем все пары выпуклых точек и найдем такие из пар, через которые можно провести граничную прямую. При этом для каждой пары составляем уравнение прямой вида
ах + Ьу + с = 0
и проверяем, все ли выпуклые точки лежат по одну сторону от прямой. Это выполняется, если при подстановке в уравнение всех точек Р1 невязки ах1+Ьу1+с получаются одного знака либо равными нулю. Пусть уравнение нормализованное, т.е. а2+Ь2=1, тогда модули невязок равны расстоянию от точек до прямой. Если смотреть по ходу направляющего вектора (-Ь,а), то полуплоскость неотрицательных невязок лежит справа от прямой. Всегда можно построить уравнение так, что если прямая является граничной, то невязки всех точек контура неотрицательные (рис. 11): ах + Ьу + с > 0.
положительные невязки
отрицательные невязки
Рис. 11. Деление плоскости граничной прямой на область положительных и отрицательных невязок.
Стрелкой показан направляющий вектор прямой
При вычислении на ЭВМ из-за ошибок округления реальные невязки могут получиться отрицательными даже в тех двух точках, через которые проводилась прямая, таким образом, граничные прямые вообще могут не найтись. Поэтому невязки сравниваются не с нулем, а с близкой к нулю отрицательной константой:
ах+Ьу + с > -е , 0 < е и 0,
идеально использовалось е = 0.0001.
То, что при поиске граничных прямых проверяются не все пары, а только пары выпуклых точек, дает существенную экономию вычислений. Однако можно добавить дополнительную проверку, отсекающую заведомо плохие пары. Найдем среди выпуклых точек экстремумы по восьми направлениям (рис. 12а):
0: тах (Рх), 1=0,|Р|-Л 1 ' -Ъ : 4 ' тах 1=°,|Р|-1 (Р1х + Р1У
£ : 2 ' тах (Р;у), 1=0,|Р|-Л 1 ' 3£ : 4 тах 1=°,|Р|-1 (Р1У - Р1х
р: т1п (Рх), 1=0,|Р|-Л 1 ' 5р : 4 т1п 1=°,|Р|-1 (Р1У + Р1х
3£ : 2 ' т1п (Ру), 1=0,|Р|-Л 1 ' 7£ : 4 ' т1п 1=°,|Р|-1 (Р1У - Р1х
где Рх, Р;у - координаты выпуклой точки Р1.
Для того, чтобы при поиске граничных прямых сразу отсечь много заведомо неподходящих пар, достаточно подставить в уравнение прямой одну из экстремальных выпуклых точек, а именно ту, направление экстремума которой наиболее близко к нормали прямой, направленной в отрицательную полуплоскость. Если невязка этого экстремума отрицательная, значит прямая не является граничной (рис. 126).
□□ □ □ □ □
□ □ □ □ □
□
□
□ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ - - □ □
полуплоскость отрицательных невязок
Рис. 12. а) Экстремальные выпуклые точки контура по восьми направлениям. б) Экстремальный одноточечный тест для прямой. РР] -экстремальная точка с наиболее близким к нормали прямой направлением лежит в отрицательной полуплоскости Первый граничный отрезок ищется последовательным перебором пар выпуклых точек. Как только он найден, каждый следующий граничный отрезок строится с использованием одной из вершин предыдущего, и так до тех пор, пока не будут найдены все граничные отрезки. Для замкнутого контура получается выпуклый многоугольник, для фрагмента -выпуклая ломаная (рис. 13).
Рис. 13. Найденный минимальный выпуклый многоугольник
4. Поиск донных точек во впадинах
Теперь перейдем к поиску донных точек внутри впадин. Наиболее простой способ - перебрать все точки внутри впадин, вычисляя для каждой прямо-
угольное и тупоугольное отклонения, однако попробуем выяснить, в каких точках поиск максимума отклонения является заведомо бесперспективным. Сначала докажем несколько вспомогательных утверждений. Модулем отрезка будем обозначать его длину.
Утверждение 1. В части плоскости, ограниченной произвольным треугольником ABC? наиболее удаленной от точки A точкой является одна из двух других вершин B и C, но не внутренняя точка треугольника и не точка, лежащая на одной из сторон.
Доказательство.
Докажем сначала, что любая внутренняя точка P ближе к A, чем одна из двух других вершин (рис. 14а).
Рис. 14. В любом треугольнике для любой его вершины наиболее удаленной точкой является одна
из двух других его вершин (иллюстрации к доказательству)
С помощью точки Р и вершин А, В, С можно построить три треугольника. Сумма углов а, в, у равна 2п, каждый из этих углов меньше п, поскольку принадлежит вершине треугольника. Докажем, что хотя бы один из углов в, у обязательно неострый, т.е. прямой или тупой. В треугольнике самая длинная сторона противолежит самому большому углу, а неострый угол в треугольнике может быть только один. Это будет означать, что АР короче, чем одна из сторон АВ или АС.
а<п ^ п-а>0
в+у = 2п-а = п+п-а > п ^ в+У>п
Если в неострый, то |АР|<|АС|, что и требовалось, но предположим противное.
Если в< |, то р -в>0, тогда у > п-в = | +1 -в > 1 ^ У>| ^
|АР|<|АВ|. Аналогично, если у<|, то в>| ^
|АР|<АС|.
Докажем теперь, что наиболее удаленная от А точка не может лежать на одной из сторон треугольника. То, что она не лежит на АВ или АС, очевидно. Докажем что она не лежит и на ВС (рис. 14б).
в+у = п. Докажем, что хотя бы один из углов в, у неострый. Если в неострый, то АР короче, чем АС, что и требовалось, но предположим противное.
Если в<|, то у = п-в = р +1-в > 1 ^ У>| ^ |АР|<|АВ|. Аналогично, если у< то в> 1 ^
|АР|<|АС|.
Утверждение 2. В любой области р, ограниченной выпуклым многоугольником, наиболее удаленной от произвольной точки Аер является одна из вершин этого многоугольника.
Доказательство.
Поскольку многоугольник выпуклый, точку А можно соединить со всеми вершинами многоугольника отрезками, которые целиком лежат внутри многоугольника, образующиеся при этом треугольники так же лежат внутри многоугольника и покрывают его целиком (рис. 15). Поиск наиболее удаленной от А точки сводится к поиску наиболее удаленной точки в каждом треугольнике, а затем к выбору максимума по всем треугольникам. По доказанному утверждению 1 в каждом треугольнике наиболее удаленной от А является одна из двух других его вершин, которая в то же время является вершиной многоугольника, что и требовалось доказать.
Рис. 15. Где бы ни была взята точка Л, принадлежащая области, ограниченной выпуклым многоугольником - внутри, на стороне, в одной из вершин, эту область всегда можно разделить на треугольники, одной из вершин которых будет Л
Утверждение 3. В любой области р, ограниченной выпуклым многоугольником, максимум расстояния до произвольной прямой АВ достигается в одной из вершин этого многоугольника или в целой стороне, которая параллельна прямой АВ (доказательство пропущено).
Из двух последних утверждений следует, что донную точку впадины по формуле (6) нужно искать среди вершин минимальной ограничивающей впадину выпуклой ломаной. Докажем это. Пусть есть впадина, ограниченная отрезком АВ, построим для нее выпуклую ломаную ОАВ со множеством вершин У={У;}, которая вместе с отрезком АВ ограничивает выпуклую область и (рис. 16а). Все точки, образующие контур впадины ГАВ и не лежащие на являются внутренними точками И, из утверждения 3 следует, что расстояния до ограничивающей прямой в них не могут быть больше, чем расстояние от прямой до одной из вершин V.
Как ведет себя тупоугольное отклонение? Выделим подмножество точек WcИ, которые образуют тупой угол с вершиной В ограничивающего отрезка: WcФБ (напомним, что ФВ - область тупых углов для конца В отрезка АВ, определяемая формулой (2) (рис. 16б). W так же ограничивается выпуклым многоугольником О^ в нем есть вершина Р, лежащая на перпендикуляре к отрезку АВ, эта вершина мо-
жет совпадать с одной из вершин ОАВ или делить ее сторону, отрезок ВР не принадлежит ФВ, поскольку лежит на перпендикуляре к точке В.
А В А В
Рис. 16. а) Для впадины, ограниченной отрезком AB, построен минимальный объемлющий выпуклый многоугольник U. б) Серым обозначены области поиска максимального тупоугольного отклонения от отрезка, стрелками показано направление обхода вершин U для обоих концов отрезка AB. в) Точка максимального прямоугольного отклонения
H делит фрагмент контура ГАВ и соответствующую ему выпуклую ломаную QAB на две части, в части ГАН не может достигаться максимум тупоугольного отклонения от точки B, а в части ГАН- максимум тупоугольного отклонения от точки А. г) Даже если часть ломаной Q4H принадлежит области <1в, в ней и соответствующем ей фрагменте контура ГАН не может достигаться максимум тупоугольного отклонения от точки B
Согласно утверждению 2, наиболее удаленной от точки B внутри W является одна из вершин QW, если это P, то
сiaxCn^BA) < с1 (P,AB), с1 (P,AB) < с,AB) = с _ (V,AB). То есть, если P не совпадает ни с одной из вершин Qab, нет необходимости искать ее специально, поскольку прямоугольное отклонение в ней не превысит максимальное прямоугольное отклонение ломаной Qab от отрезка AB.
Таким образом, если для впадины известен выпуклый многоугольник, то для поиска донной точки по формуле (6) нужно проверить лишь значения отклонений в его вершинах. Кроме того, при поиске тупоугольных отклонений от каждого конца отрезка нет необходимости проверять все вершины многоугольника. Для каждого конца нужно начать проверку с ближайших по циклу вершин ломаной QAb, и как только окажется, что очередная проверяемая вершина не составляет с отрезком тупой
угол, проверку следует прекратить, поскольку выпуклая ломаная уже не возвращается в область тупых углов данного конца отрезка (рис. 16б, направления обхода для каждого конца отрезка при поиске максимального тупоугольного отклонения показаны стрелками).
Когда найдены максимальные тупоугольные отклонения от обоих концов и первые выходящие из областей тупых углов вершины ломаной ОАВ (у и Ук для концов А и В соответственно), то можно сэкономить вычисления при поиске максимального прямоугольного отклонения. В области тупых углов для любой вершины ОW прямоугольное отклонение меньше тупоугольного, поэтому там прямоугольное отклонение вычислять не следует, необходимо проверить лишь вершины многоугольника от у до У включительно.
Если же для впадины неизвестен выпуклый многоугольник, то поиск максимального отклонения не следует проводить в таких точках ее контура, которые не могут являться вершинами выпуклого многоугольника, а именно, в тех, которые для контура впадины являются вогнутыми или прямыми. Это дает существенную экономию вычислений, однако число операций можно еще уменьшить.
Пусть найдена точка максимального прямоугольного отклонения Н, по утверждению 3 она лежит на выпуклой ломаной ОАВ фрагмента контура впадины ГАВ и делит его на участки ГАН и ГНВ (рис. 16в-г). Хотя ломаная ОАВ и считается неизвестной, будем помнить, что максимум прямоугольного отклонения достигается в одной из ее точек или в целом отрезке, параллельном АВ, и будем использовать свойства выпуклой ломаной. Обратим внимание, что часть ломаной ОАН не может содержать точек из фрагмента контура ГНВ, поскольку это означало бы самопересечение контура ГАВ. Аналогично, часть ломаной ОНВ не может содержать точек из фрагмента контура ГАН.
Докажем, что максимум тупоугольного отклонения для концов отрезка А и В не нужно искать во фрагменте контура ГНВ и ГАН соответственно. Если точка Н лежит вне ФА и ФВ (рис. 16в), то это очевидно: при вычисления тупоугольного отклонения от точки В часть ломаной ОАН полностью лежит вне ФВ. Даже если часть точек фрагмента ГАН и попадает в ФВ (например, точка 2), то, поскольку эти точки не могут лежать на выпуклой ломаной, максимум тупоугольного отклонения в них достигаться не может. Аналогично для тупоугольного отклонения от точки А внутри фрагмента ГНВ.
Допустим, что точка Н лежит в одной из областей тупых углов, например в ФВ (рис. 16г). Рассмотрим ОРВ - фрагмент выпуклой ломаной, лежащий в ФВ. Точка Н делит ОЕВ на две части - ОНВ и ОРНсОАН. Рассмотрим произвольную точку ОеОш (О/Н). Поскольку Н - точка максимального прямоугольного отклонения, в лежит не дальше от прямой АВ, чем точка Н:
р1(в,ЛВ) < р1(Н,АВ).
Кроме того, в ближе, чем Н, к перпендикулярной АВ прямой ВР: р^^ВР) < р1Н,ВР).
Расстояние от в до В меньше расстояния от Н
до В:
р2(в,В) = [р1(0,АВ)]2 + [р1(0,ВР)]2 < < р2(Н,В) = [р1(Н,АВ)]2 + [р^(Н,ВР)]2. Таким образом, внутри ^рн не может находиться максимум тупоугольного отклонения от точки В, внутри тупоугольное отклонение от точки В равно нулю, следовательно, и внутри части контура впадины ГАН, ограниченного частью ломаной 0АН, не следует проверять максимальное тупоугольное отклонение от точки В.
Таким образом, поскольку вычисление прямоугольного отклонения от прямой проще вычисления тупоугольного отклонения от конца отрезка, сначала следует найти точку максимального прямоугольного отклонения Н, а затем проверить для каждой вершины максимальное тупоугольное отклонение в двух фрагментах ГАН и Гнв, причем только в выпуклых точках.
В описываемом далее алгоритме используются оба способа поиска - в одних случаях для впадины выпуклый многоугольник известен, в других - нет.
5. Рекурсивный поиск впадин
Как говорилось ранее, впадины ищутся путем деления впадин нижних порядков с помощью донных точек впадин верхних порядков. Для этого предварительно находятся все впадины, вплоть до самых высоких неделимых порядков. При этом получается иерархический буфер ломаных (рис. 17). При поиске выпуклые и вогнутые точки меняются ролями в зависимости от номера порядка: для четных порядков вершины ломаных ищутся среди выпуклых точек, а донные точки - среди вогнутых; для нечетных: вершины ломаных - среди вогнутых, а донные - среди выпуклых.
Уроки ■ ■ Мшны&л NN11 ни'ч.^иимниИ ыгагоу гопьнн! .14 контура
I £ 1 I Ей I
Рис. 17. Структура иерархического буфера ломаных. На рисунке каждый ограничивающий отрезок нумеруется числом индексов, равным его порядку, увеличенному на 1
Введем положение: впадина называется заметной, если она удовлетворяет некоторым требованиям, например, ее глубина не меньше некоторой минимальной константы, которая может зависеть от размера контура, или площадь, не меньше некоторой минимальной площади, которая может зависеть от площади минимального объемлющего выпуклого многоугольника, или она заметно отличается от прямой (при этом глубина не является пренебрежи-
мо малой по сравнению с длиной отрезка, ограничивающего впадину. Чтобы реализовать такое условие, требуется коррекция пологих склонов, об этом будет сказано далее, или какое-нибудь другое условие.
Донные точки заметных впадин самого высокого неделимого уровня переходят на предыдущий и с их помощью делается попытка разделить впадину предпоследнего уровня, как это описывалось в пункте 2. Если это удается, то донные точки получившихся при разделении впадин переходят на предыдущий уровень. Если впадину не удалось разделить, то проверяется, является ли она сама заметной, и если да, то ее донная точка переходит на предыдущий уровень. Поскольку для всех впадин известны объемлющие их выпуклые многоугольники, в этом случае донные точки ищутся только среди вершин этих многоугольников.
Опишем процесс деления подробнее. Путь в данной впадине А есть несколько донных точек более высокого уровня В1, 1=0,...,М-1; и кроме них еще две точки ограничивающего отрезка Б' и Б". Делим часть контура Г(А) на фрагменты Б'В0, В0ВЬ..., Вм-
2ВЫ-1, В№1Б".
Края фрагментов являются первым приближением краев впадин. Поскольку нет гарантии, что эти края удовлетворяют условию несамопересечения, для каждого фрагмента строим выпуклую ломаную, которая ограничивает его с внешней стороны (рис. 18а), в этой ломаной нас интересуют лишь отрезки, ограничивающие заметные впадины.
Рис. 18. Иллюстрации к алгоритму поиска впадин с
помощью иерархического буфера ломаных. а) Поиск заметной впадины (А) с помощью выпуклой ломаной между двумя донными точками Bl и B11. б) Объединение фрагментов контура B0B1, B1B2 и В2В3 в один после того, как внутри них не было найдено заметных впадин. В результате в объединенном
фрагменте найдена впадина А. в) Коррекция края впадины на нулевом уровне. На фрагменте В0В1 найдена впадина А (граница обозначена пунктиром), а на фрагменте В1Е" заметных впадин нет. После коррекции в объединенном фрагменте В0Е" найдена впадина А' с краями В0Е
Как правило, их не больше одной либо нет совсем, но нет гарантий, что нельзя придумать такой критерий заметности впадины, при котором их может получиться больше одной. Если в критерий за-метности входит глубина впадины, то в данном случае, поскольку выпуклый многоугольник неизвестен, донная точка ищется среди выпуклых точек впадины.
Может случиться, что для нескольких подряд идущих фрагментов не будет найдено ни одной заметной впадины, но их можно объединить в один и попробовать найти в нем хотя бы одну заметную (рис. 18б).
Бывает, что при делении впадины донными точками предыдущего уровня остаются фрагменты, в которых не удалось найти заметных впадин (в том числе после объединения). Поскольку на всех уровнях выше нулевого нас интересуют лишь донные точки впадин, а не их края, это не имеет значения на всех уровнях, кроме нулевого, когда края впадин определяются окончательно (рис. 18в). В связи с этим проводится следующая коррекция.
Пусть впадина нулевого уровня разделена донными точками первого уровня так, что внутри хотя бы одного из крайних фрагментов (пусть это будет В^Е") нет впадины. Тогда ближайшую к этому краю найденную заметную впадину (впадина А, фрагмент, содержащий ее - В^^) можно переопределить. Для этого объединим в один фрагмент все точки между В1 и Е" и попробуем найти внутри него заметные впадины. Если это не удастся, то впадина А остается без изменений, иначе на ее месте возникает впадина с другими краями.
Главным недостатком алгоритма является то, что границы впадин не всегда получаются такими, какими их представляет себе человек. Иногда получаются впадины с пологими склонами, переходящими в резкие (рис. 19), и если на склоне есть точка резкого разделения пологого и крутого участка, например, разрыв первой или второй производной направления контура - угол (рис. 19а) или точка изменения характера кривизны (рис. 19б), соответственно, то границу впадины хотелось бы определить в ней. В будущем предполагается добавить к алгоритму коррекцию пологих склонов с использованием особенных точек контура (алгоритмы поиска углов описаны в [2]). В отсутствие точки разделения (рис. 19в) коррекция производиться не будет. Также коррекция не будет производится, если особенная точка разделяет не пологую и крутую часть склона, а крутую и еще более крутую (рис. 19г).
6. Область применения алгоритма
Наиболее очевидными характеристиками впадин являются площадь, координаты геометрического центра и донной точки, ориентация нормали ограничивающего отрезка. Впадины, наряду с внутренними замкнутыми областями и углами, являются характерными структурными элементами рукописных символов (рис. 20а). С помощью анализа вза-
имного расположения впадин можно классифицировать объекты.
Рис. 19. а) Коррекция пологого склона впадины ЕЕ" по угловой точке Л. б) Коррекция пологого склона впадины Е'Е" по точке изменения характера кривизны В. в) Коррекция пологого склона не производится, поскольку на нем нет особенных точек. г) Переход крутого склона в еще более крутой; несмотря на то, что есть угловая точка С, коррекция не производится
В [1] описывается алгоритм совмещения точек на стереопарах с помощью поиска углов, впадины могут служить дополнительным структурным элементом при совмещении, поскольку поиск углов не всегда работает успешно [2], кроме того впадины можно найти даже там, где ярко выраженных углов нет.
Поиск впадин можно также использовать как альтернативу методам скелетизации, главным недостатком которой, как известно, является то, что небольшие шероховатости контура могут превращаться в длинные ветви. Соединяя донные точки друг с другом или с ближайшей точкой на противолежащей стороне контура, можно найти разделение объекта на составляющие (рис. 20б, 20в).
адш
/у т/
Рис. 20. Примеры приложений алгоритма поиска впадин. а) Впадины в рукописных цифрах. б), в) Сегментация с помощью донных точек впадин.
Соединяя донные точки друг с другом или с ближайшей точкой на противолежащей стороне
контура, можно найти разделение объекта на составляющие. б) Выделение лучей морской звезды. в) Выделение конечностей человека
Впадины контура двумерной проекции трехмерного объекта обладают некоторой инвариантностью к повороту, а их относительная площадь (в сравнении с площадью объекта или его минимального
объемлющего многоугольника) - к изменению размеров объекта (рис. 21).
Рис. 21. Истребитель-бомбардировщик ¥-16.
Внешние отрезки ограничивают впадины, найденным с помощью минимального выпуклого многоугольника, внутренние отрезки - впадины, найденные с помощью рекурсивного поиска. Взаимное расположение впадин и их относительная площадь обладают некоторой инвариантностью к повороту объекта
Вспомогательный алгоритм поиска
минимального объемлющего выпуклого
многоугольника так же может использоваться самостоятельно, поскольку в некоторых классах объекты имеют схожий вид не самой границы, а именно границы выпуклого многоугольника (рис. 22).
Рис. 22. Выпуклые многоугольники для видов
самолетов сверху часто похожи на ромбы
Литература
1. Mikhlyaev S. V. Relaxation technique for stereo images matching // Proceedings of the IASTED international conference ACIT 2002, p. 376-381.
2. Chetverikov D., Szabo Z. Detection of High Curvature Points in Planar Curves // http://visual.ipan.sztaki.hu/corner/
3. Ту Дж., Гонсалес Р. Принципы распознавания образов. - М.: Мир, 1978. - 412 с.
4. Введение в контурный анализ // под ред. Фурмана Я.А. - М.: ФИЗМАТЛИТ, 2002. - 592 с.