Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Учебное пособие 1649

.pdf
Скачиваний:
4
Добавлен:
30.04.2022
Размер:
1.61 Mб
Скачать

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

Тогда при обработке элемента А мы знаем, что левый элемент В, так же как и верхний С, уже помечен. Далее, элемент D, расположенный над В, считается связанным с Л и потому также должен быть принят во внимание.

Для простоты предположим на время, что мы размечаем лишь компоненты объекта. Тогда если А содержит нуль, то можно идти дальше. Если А содержит единицу, a D уже помечен, то достаточно просто скопировать эту метку и продолжить работу. То же самое необходимо сделать, если помечен один из элементов В или С. Если же ни В, ни С не помечены, то мы должны выбрать новую метку для А. Тем самым здесь мы впервые вводим в рассмотрение новую компоненту. Оставшаяся возможность: как В, так и С имеют метки. Проблем не возникает, когда эти метки одинаковые; но поскольку по нашей схеме они не являются соседями, их метки могут быть различными. В этом случае мы как раз обнаружили, что две различные метки использовались для различных частей одной компоненты изображения (рис. 2.14). Они соединяются через точку А. В этот момент необходимо указать, что две метки эквивалентны, и использовать одну из них для А. Такова цена, которую приходится платить за последовательный характер алгоритма.

Рис. 2.14. Последовательная разметка.

Может так случиться, что две области, считавшиеся ранее различными, на самом деле оказываются связанными. Необходимо108 указать на эквивалентность соответствующих меток. (Воспроизводится с разрешения из работы [35].)

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

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

2.6. Локальные вычисления и итеративная модификация

До сих пор основное внимание уделялось последовательной обработке информации,

109

содержащейся в бинарном изображении. Чтобы повысить скорость обработки и использовать возможности больших интегральных схем (БИС), необходимо также рассмотреть, какие результаты можно получить с помощью параллельно выполняемых

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

Имеются два типа вычислений, выполнимых таким образом. Мы можем скомбинировать (сложить) результаты всех локальных операций и завершить тем самым работу в один шаг (рис. 2.15) или создать новое изображение на основе этих результатов.

Рис. 2.15. Методы локальных вычислений.

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

2.6.1. Локальные вычисления Рассмотрим очень простой случай. Каждый из локальных операторов обращается к

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

Какие другие характеристики представимы в виде суммы результатов локальных операций? Например, периметр: достаточно просто подсчитать количество участков на изображении, где рядом с нулями стоят единицы. Имеются два типа локальных операторов (рис. 2.16):

Рис. 2.16. Возможность использования операции ИСКЛЮЧАЮЩЕЕ ИЛИ к двум соседним элементам изображения для выделения участков, находящихся на границе областей.

Операторы одного типа просматривают два соседних элемента, расположенных в одной строке, а операторы другого типа — два соседних элемента, расположенных в одном столбце. В обоих случаях результат есть ИСКЛЮЧАЮЩЕЕ ИЛИ (а b) двух значений на входе. Сумма всех получаемых выходов представляет собой оценку периметра.

Каждый из двух типов операторов реагирует на два типа шаблонных ситуаций. Здесь показаны два случая, включающие горизонтальный и вертикальный детекторы.

111

Вычисленный

периметр

представляет

собой

лишь приблизительную оценку,

поскольку, как

правило,

дискретное

бинарное

изображение строится на основе

непрерывного, и при этом границы объектов становятся более изрезанными. Например, оценка длины диагональной прямой в 2 раз больше «истинной»:

Усреднение по всем углам наклона дает среднее значение коэффициента, показывающего, во сколько раз увеличено полученное значение. Оно составляет 4/π = 1,273... . Разделив на это число, можно улучшить оценку периметра.

Кроме площади и периметра с помощью локальных методов можно вычислить число Эйлера, которое определяется как разность между количеством объектов и количеством отверстий. Например, число Эйлера заглавной буквы «В» равно — 1, поскольку она представляет собой один объект с двумя отверстиями (рис. 2.17). Число Эйлера буквы «i» равно 2, а буквы «n» равно 1 и т. д. Может показаться странным, что число Эйлера рассчитывается с помощью суммирования результатов локальных операций. Например, ни числа объектов, ни числа отверстий таким путем рассчитать нельзя. А их разность, т. е. число Эйлера, можно!

112

Рис. 2.17. Число Эйлера как разность между числом объектов и числом отверстий.

Для этого бинарного изображения число Эйлера равно 4, поскольку на нем 7 объектов и 3 отверстия.

2.6.2. Свойство аддитивности Мы можем комбинировать бинарные изображения различными путями. Можно

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

одновременно обработать все эти части и затем объединить результаты.

Если обозначить исходные изображения через X и Y (рис. 2.18), то логические операции ИЛИ (\/) и И (/\) над X и У обозначаются соответственно X Y и X Y. Площади удовлетворяют соотношению А(X) + A(Y) = А(X Y) + А(Х Y), поскольку сумма площадей X и У равна площади их объединения плюс площадь тех частей, где они перекрываются. О любой числовой характеристике бинарного изображения,

удовлетворяющей этому условию, говорят, что она обладает свойством аддитивности.

113

Рис. 2.18. Бинарные изображения, рассматриваемые как множества. Мы можем скомбинировать два бинарных изображения, объединяя или пересекая их как множества. Площадь объединения X Y двух изображений плюс площадь их пересечения X Y равна сумме площадей исходных изображений X и Y.

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

Периметр также удовлетворяет этому свойству, так как сумма периметров объектов X и У равна сумме периметров их объединения и пересечения. Оказывается, что число Эйлера также обладает этим свойством. Именно поэтому все три указанные характеристики представимы в виде суммы результатов локальных операций. Свойство аддитивности позволяет нам разбить изображение на небольшие части и получить окончательный ответ путем суммирования результатов114операций, выполненных над этими частями. Продемонстрируем эту процедуру на примере числа Эйлера.

Рассмотрим непрерывное бинарное изображение. Выберем направление на нем и назовем его направлением смещения (рис. 2.19).

Рис. 2.19. Возможность разбиения изображения на полосы, каждую из которых анализировать просто.

Теперь разобъем изображение на полосы прямыми, ортогональными этому направлению. Любую характеристику, удовлетворяющую свойству аддитивности, можно вычислить пошагово путем добавления на каждом шаге приращения, соответствующего очередной полосе. Если текущую полосу обозначить через ∆I, а уже пройденную часть изображения - через I, то из свойства аддитивности получим для числа Эйлера E(I ∆I) – E(I) = E(∆I) – Е(I ∆I). Теперь обратимся к вопросу, который мы еще не задавали: какова должна быть ширина полос? Полосы, для которых E(∆I) = Е(I ∆I), интереса не представляют. Нам важны «особенные» места, в которых E(∆I) ≠ Е(I ∆I). В случае числа Эйлера они находятся там, где полоса ∆I содержит115 начало нового объекта или конец отверстия. Такие части изображения мы будем называть выпуклостями и вогнутостями в направлении смещения соответственно (рис. 2.20).

Рис. 2.20. Выпуклости (X) и вогнутости (V) в направлении смещения как существенные части областей изображения при вычислении числа Эйлера.

В первом случае число Эйлера изменяется на величину ∆E = E(∆I) – Е(I ∆I) = 1 - 0 = +1, во втором - на величину ∆E = E(∆I) – Е(I ∆I) = 1 - 2 = - 1. (Обратите внимание, что I и ∆I лишь касаются друг друга, и, следовательно, их пересечение будет состоять из отрезков прямых.) Число Эйлера - это просто разность между числом X выпуклостей и числом Y вогнутостей в направлении смещения.

Заманчиво использовать аналогию между этой разностью и той, которая фигурирует в определении числа Эйлера. Но число объектов В необязательно равно числу X, а число отверстий Я - числу V.

116

Рис. 2.21. Число Эйлера как разность между числами выпуклостей и вогнутостей в направлении смещения.

Однако это не означает, что они должны совпадать с количеством объектов и

отверстий, как иллюстрирует данный пример.

Это легко увидеть на примере объекта, сильно изрезанного в направлении смещения (рис. 2.21). Как X, так и V велики (причем X = V + 1), в то время как В = 1 и H = 0. Иначе и не может быть, поскольку В и Н по отдельности не удовлетворяют свойству аддитивности и, значит, невычислимы путем суммирования результатов локальных операций.

Наконец, мы должны найти аналогичный метод, который применим к дискретным изображениям. Допустим, что смещение выбрано в направлении с NW на SE ( ). Тогда необходимо сосчитать число следующих ситуаций:

Например, если изображение состоит из квадрата с квадратным отверстием, то X = 1 и V = 1, так что Е = X - V = 0, как оно и должно быть (рис. 2.22). При выборе другого

направления смещения берутся иные маски, однако, естественно, число Эйлера не

117

изменяется (хотя сами значения X и V могут изменяться).

Рис. 2.22. Число Эйлера для данной квадратной области с квадратным отверстием равно нулю (в направлении смещения имеются одна выпуклость и одна вогнутость).

2.6.3 Итеративная модификация Вместо сложения результатов локальных операций из них можно образовать новое

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

118

Рис. 2.23. Построение нового бинарного изображения на основе большого числа вычислительных элементов, каждый из которых связан с небольшим числом соседних элементов изображения.

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

Такой способ позволяет, например, оставить от объекта лишь один остов и тем самым избавиться от его границы. Остов — это то, что остается от фигуры после отбрасывания максимально возможного числа элементов, при котором еще не изменяется ее связность. Важно не уничтожить оставшиеся элементы остова. Чтобы разобраться в этом вопросе, необходимо проследить за изменениями числа Эйлера при изменении содержимого одного элемента. Операции, не меняющие119 числа Эйлера, называются консервативными.

Рис. 2.24. Замена нулевого значения элемента, окруженного нулями, на единицу. Возникает новый объект, и тем самым число Эйлера увеличивается на единицу.

К счастью, число Эйлера удовлетворяет свойству аддитивности; поэтому его изменение зависит лишь от соседей конкретного элемента. Если поменять нулевое значение элемента с нулевыми соседями на единицу (рис. 2.24), то независимо от значений остальных элементов число Эйлера увеличится на единицу. Аналогично если все соседи (кроме одного) — нули или единицы, то число Эйлера остается неизменным при инвертировании значения в центральном элементе; в этом случае мы просто расширяем объект или сокращаем отверстие.

Согласно нашей схеме, любой элемент изображения имеет шесть соседей. Каждый из них может принимать значение «нуль» или «единица». Следовательно, существует 26 = 64 возможных вариантов окружения. Для каждого из вариантов можно вычислить дифференциал числа Эйлера E*, т. е. изменение числа Эйлера при замене в центральном элементе нуля на единицу.

120

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

Его можно получить, определяя изменение числа Эйлера при замене в центральном элементе нуля на единицу.

В случае противоположной замены в центральном элементе (единицы на нуль) число Эйлера изменится на — E*. Нас особенно интересуют такие случаи, когда Е* = 0, поскольку мы можем произвольно варьировать изображение, не меняя числа Эйлера. Существует пять принципиально различных случаев (рис. 2.25):

а) E* = +1, если все соседи — нули, возникает новый объект; б) Е* = +1, если все соседи — единицы заполняется отверстие;

в) Е* = 0, если шесть соседей, рассматриваемые в виде циклической последовательности, можно разбить на одну последовательную группу нулей и одну последовательную группу единиц; г) Е* = - 1, если имеются две группы единиц, чередующиеся с двумя группами нулей:

здесь объединяются два объекта или перегораживается отверстие; д) Е* = - 2, если три единицы чередуются с тремя нулями.

Этим исчерпываются все возможности121 , поскольку соседних элементов только шесть. В зависимости от дифференциала Эйлера обозначим указанные случаи символами N+1, N0,

N-1 и N2

Остается еще одна трудность. Если мы будем обрабатывать все элементы изображения параллельно, то в итоге невольно можем изменить число Эйлера. Объясняется это тем, что мы можем испортить содержимое соседей какого-либо элемента изображения и тем самым исказить для него значение дифференциала Эйлера. Например, оба примыкающих друг к другу элемента со значением «единица», окруженные нулевым фоном, имеют дифференциал Эйлера, равный нулю:

В результате параллельной обработки окажется, что мы избавились от них обоих!

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

1, 2, 3, 1, 2, 3,...

Строка под ней нумеруется аналогично, только начинается с числа 2, а следующая строка

— с числа 3:

Согласно принятому нами определению соседства, никакие два соседа не имеют одной и той же метки. Описанная схема возникла из очевидного способа раскрашивания гексагональной решетки тремя цветами.

Она решает проблему взаимного влияния изменений в соседних элементах при параллельной обработке. Все же для описания алгоритма итеративной модификации изображения мы нуждаемся в более четких обозначениях. Во-первых, обозначим через S подмножество введенного выше множества стандартных случаев маркировки соседей. Положим величину aij равной единице, если случай маркировки соседей элемента изображения с координатами (i,j) принадлежит S. Через bij обозначим значение самого элемента. Для каждого элемента, подразделенного на поля изображения, мы вычисляем его новое бинарное значение, которое является результатом работы итеративного алгоритма модификации над этим элементом. Нам остается указать способ вычисления нового значения сij на основе величин аij и bij.

Здесь а, b и с — булевы переменные, они могут принимать значения лишь «нуль» и «единица». Вычисление с на основе а и b эквивалентно заданию булевой функции двух переменных. Всего имеется 24 = 16 таких функций, приведенных ниже:

Здесь каждый столбец представляет одну из булевых функции, а каждая строка — одну из возможных комбинаций значений для двух входов а и b. Значение, находящееся на пересечении произвольно выбранных строки и столбца, есть выход соответствующей булевой функции для указанного слева входа. Функции можно пронумеровать, как показано на верхней строке.

Некоторые из этих функций не представляют большого интереса. Номер 0, например, всегда выдает нуль, а номер 15 - единицу. Четыре других (с номерами 3, 5, 10 и 12)

воспроизводят значения a, b и их дополнения a,b . Более интересны логическое И (/\ —

номер 1) и логическое ИЛИ (\/ — номер 7). Их записывают также в виде а ∙ b и а + b соответственно. Эти операции обладают важным свойством монотонности. Применение первой может привести лишь к удалению единиц из изображения, поскольку а ∙ b ≤b, тогда как применение второй — к удалению нулей, поскольку а+b≥b. Следовательно, итеративные действия на основе этих функций обязательно завершатся, потому что наступит момент, когда либо изменения в изображении прекратятся, либо все поле заполнится нулями или единицами соответственно. Некоторые из оставшихся булевых

операций, такие, как а∙ b и а + b, представляют мало интереса из-за того, что тот же самый эффект достигается операциями а∙b и а + b над дополнением к S. Поэтому у нас остается

лишь ИСКЛЮЧАЮЩЕЕ ИЛИ (номер 6), обозначаемое а

b. Эта операция не монотонна.

В результате из шестнадцати функций потенциально пригодны лишь четыре:

а) Сij= аij,

отмечает части изображения с указанными

случаями маркировки

соседей;

 

 

б) Cij = aijbij, приводит к срезанию краев объектов;

 

в)Сij = аij + bij, приводит к наращиванию объектов;

 

г)Сij = aij

bij, порождает волны, распространяющиеся по изображению.

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

Моргана, a b a b . Таким образом, мы можем сосредоточить свое внимание на операции одного вида, называемой прореживанием или стягиванием. При S = N0 она приводит к выделению остова изображения с сохранением значения числа Эйлера, поскольку N0 — множество случаев с нулевым дифференциалом Эйлера. В результате односвязная простая компонента превратится в точку, объект с отверстием — в кольцо и т. д. Изменив множество S, можно остановить процесс преобразований еще до того, как простой односвязный объект превратится в точку. Этим путем мы сохраним больше информации о его первоначальной форме.

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

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