Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 7.doc
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
32 Мб
Скачать
☆

Морфологическая реконструкция

Реконструкция является морфологическим преобразованием, в котором участвуют два изображения и один структурообразующий элемент (вместо одного изображения и одного структурообразующего элемента, как это было в предыдущих параграфах). Одно изображение, которое называется маркером, является исходной точкой преобразования. Другое изображение, маска, накладывает определенные ограничения (связи) на отображение. Используемый структурообразующий элемент определяет связность. В этом параграфе мы используем 8-связность (задаваемую по умолчанию), которая означает, что матрица В1 используемая далее, есть 3×3 матрица из одних единиц, центр которой находится в точке с координатами (2, 2).

Если g – это маска, а ƒ – маркер, то реконструкция g по ƒ, которая обозначается Rg(ƒ), определяется следующей итеративной процедурой.

1. Инициализация: присвоить h1 маркерное изображение ƒ.

2. Построить структурообразующий элемент В = ones ( 3 ).

3. Повторять:

hk+1 = (hk В) ∩ g

до тех пор, пока не станет hk+1 = hk.

Маркер ƒ должен быть подмножеством g1 т.е.

ƒ g.

Рис. 21 иллюстрирует эту итеративную процедуру. Заметим, что, несмотря на простоту и удобство итеративной формулировки процесса реконструкции, существуют другие, более быстрые вычислительные алгоритмы, реализующие это преобразование. Функция imreconstruct из пакета IPT выполняет «быструю гибридную реконструкцию». Эта функция имеет следующий синтаксис:

out = imreconstruct ( marker , mask ) ,

где marker и mask – это изображения, определенные в начале параграфа.

Рисунок 21 – Морфологическая реконструкция. а) Исходное изображение (маска). б) Маркерное изображение, в) – д) Промежуточные результаты после 100, 200 и 300 итераций, соответственно. е) Окончательный результат. [Выделенные объекты маски наложены на рис. б) – д) для сравнения]

Размыкание реконструкцией

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

Пример 8. Размыкание реконструкцией.

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

>> f = imread ( ‘book_text_bw. tif’ ) ;

>> fe = imerode ( f , ones ( 51, 1 ) ) ;

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

На рис. 22б) приведен результат. Размыкание, показанное на рис. 22в), было выполнено функцией imopen:

>> fo = imopen ( f , ones( 51 , 1 ) ) ;

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

>> fobr = imreconstruct (fe, f) ;

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

Заполнение отверстий

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

Тогда операция g=[Rfc(ƒm)]c имеет эффект заполнения отверстий в ƒ, как это проиллюстрировано на рис. 22д). Функция imfill выполняет эти действия автоматически при задании необязательного аргумента ‘ holes ’ в команде

g= imfill ( f , ‘ holes ’ ).

Очистка от пограничных объектов

Другое полезное приложение реконструкции заключается в очистке изображений от объектов, которые соприкасаются с границей. Опять ключевой момент состоит в выборе подходящих маркера и маски для достижения желаемого результата. В данном случае в качестве маски используется исходное изображение, а маркерное изображение ƒm задается формулой

Рис. 22е) показывает результат реконструкции Rƒ(ƒm), на котором остались лишь объекты, касающиеся границы. Разность множеств ƒ\Rƒ(ƒm), приведенная на рис. 22ж), состоит из объектов исходного изображения, которые не касаются границы. Функция IPT imclearborder автоматически совершает эту процедуру. Она имеет форму вызова

g = imclearborder ( f , conn ) ,

где f – это входное изображение, а g – результат. Параметр conn может быть равным 4 или 8 (по умолчанию). Эта функция «гасит» структуры, которые ярче своих окрестностей и которые примыкают к границам изображения. Изображение f может быть полутоновым или двоичным. Выходом служит или полутоновое, или двоичное изображение соответственно.

Полутоновая морфология

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

Дилатация и эрозия

Полутоновая дилатация изображения ƒ по структурообразующему элементу b обозначается ƒ b и определяется формулой

(ƒ b)(х, у) = max {ƒ (x – x’, y – y’) + b (x’, y’) | (x’, y’) Db}.

где Db обозначает область определения b, и предполагается, что ƒ(х, у) равно - ∞ вие области определения ƒ. Это уравнение реализует процесс, аналогичный процедуре нахождения пространственной свертки. Для наглядности можно мысленно повернуть структурообразующий элемент на 180° вокруг его центра и разнести по всем точкам (х, у) изображения. В каждом положении нужно сложить соответствующие пикселы изображения с пикселами повернутого и перемещенного элемента, а затем вычислить максимум всех этих величин. Получится значение дилатации в точке (х, у).

Важное отличие полутоновой дилатации от пространственной свертки состоит в том, что двоичная матрица Db определяет, какие точки из окрестности использовать в операции взятия максимума. Другими словами, для любой пары координат (х0, у0) из области Db сумма величин ƒ(х –х0, у- у0)+b(х0, у0) участвует в вычислении максимума только в случае, если значение матрицы Db в ячейке (х0, у0) равно 1. В противном случае, т.е. когда этот элемент матрицы равен нулю, соответствующая сумма не участвует в операции взятия максимума. Это действие повторяется для всех координат (х’, у’) Db, каждый раз, как только меняется координата (х, у). Построение графика величины b(x’, y’), как функции координат х’ и у’, будет выглядеть как цифровая «поверхность», высота которой в каждой точке задается значением изображения b в этой точке.

На практике полутоновая дилатация обычно выполняется с использованием плоских структурообразующих элементов (см. табл. 2), для которых величина (высота) b равна 0 в каждой точке, принадлежащей Db.То есть

b(x’, y’) = 0 при (x’, y’) Db.

В этом случае операция взятия максимума полностью определяется конфигурацией 0 и 1 двоичной матрица Db, а уравнения для полутоновой дилатации принимают более простой вид

(ƒ b) (x, y) = max {ƒ(x - x’, y - y’) | (x’, y’) Db }.

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

Неплоские структурообразующие элементы можно строить с помощью функции strel, предавая ей две матрицы:

(1) одну матрицу из 0 и 1, которые обозначают область структурообразующего элемента Db и

(2) другую матрицу, в корой записаны значения высот b(x’, y’).

Например, команд

>> b = strel ( [1 1 1] , [1 2 1] )

b =

Nonflat STREL object containing 3 neighbors.

Neighborhood:

1 1 1

Neight:

1 2 1

создает структурообразующий элемент 1×3, значения высот которого равны b(0, -1) = 1, b(0, 0) = b(0, 1) = 1.

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

>> se = strel ( ‘ sguare ’ , 3 ) ;

>> gd = imdilate ( f , se ) ;

На рис. 23б) показан результат. Как и следовало ожидать, изображение получилось слегка размытым. Остальные части рис. 22 обсуждаются далее.

Полутоновая эрозия ƒ по структурообразующему элементу b обозначается

ƒ b и определяется формулой

(ƒ b) (x, y) = min {ƒ(x + x’, y + y’) - b(x’, y’) | (x’, y’) Db},

где Db обозначает область определения b и предполагается, что ƒ (x, y) равно +∞ вне области определения ƒ. Опять эту процедуру можно мысленно представлять в виде перемещения центра структурообразующего элемента во все точки изображения. В каждой точке изображения значения структурообразующего элемента вычитаются из соответствующих значений пикселов изображения и берется минимум по всем таким разностям.

Рисунок 23 – Дилатация и эрозия. а) Исходное изображение. б) Изображение после дилатации. в) Изображение после эрозии. г) Морфологический градиент

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

(ƒ b) (x, y) = min {ƒ(x + x’, y + y’) | (x’, y’) Db}.

Значит, полутоновая эрозия является операцией локального минимума, в которой минимум берется по множеству пикселов окрестности, форма которой задается по Db. Рис. 23в) изображает результат применения функции imerode с тем же структурообразующим элементом, что и на рис. 23б):

>> ge = imerode ( f , se ) ;

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

>> morph_grad = imsubtract ( gd, ge ) ;

получаем изображение на рис. 23а). На этом изображении подчеркнуто выделены граничные характеристики, подобно тому, как это делается операцией взятия градиента.