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

Двоичные изображения, множества и логические операции

Язык и теория математической морфологии позволяют взглянуть на двоичные изображения как бы с двух сторон. С одной стороны, двоичное изображение (как часто в этой книге) можно себе представлять в виде функции с двумя возможными значениями координат х и у. Теория морфологии рассматривает двоичное изображение в виде множества его пикселов переднего плана (со значениями 1), которое лежит в пространстве . Введенные выше операции над множествами типа объединение и пересечение можно напрямую применять к двоичным изображениям. Например, если А и В – двоичные изображения, то С = А В – также двоичное изображение, причем пикселы на изображении С являются пикселами переднего плана, если соответствующие пикселы на А, на В или на обоих этих изображениях принадлежат переднему плану. При первом, функциональном подходе, изображение С задается формулой

А, с точки зрения теории множеств, изображение С определяется выражением

С = { (х, у) | (х, у) А, или (х, у) В, или (х, у) (А и В)}.

Операции над множествами, приведенные на рисунке 1, можно совершать над двоичными изображениями с помощью следующих логических операций MATLAB: OR(|) (логическое сложение), AND (&) (логическое умножение) и NOT ( ̃) (отрицание), как показано в таблице 1.

Таблица 1. Использование логических операций MATLAB для совершения операций над двоичными изображениями

В качестве простой иллюстрации рассмотрим рисунок 3, на котором показаны результаты применения ряда логических операций к двум двоичным изображениям элементов текста. (Мы следуем правилу IPT, по которому пикселы переднего плана (со значением 1) отображаются белым цветом.) Изображение на рисунке 3г является объединением изображений «UTK» и «GT»; на нем присутствуют пикселы переднего плана обоих изображений. Наоборот, пересечение этих двух изображений, показанное на рисунке 3д, состоит из пикселов, которые принадлежат перекрытию букв «UTK» и «GT». Наконец, разность изображений, приведенная на рисунке 3е, показывает части букв «UTK», из которых удалены пикселы букв «GT».

Рисунок 3 – а) Двоичное изображение А. б) Двоичное изображение В. в) Дополнение ~А. г) Объединение А | В. д) Пересечение А & В. е) Разность множеств А & ~В.

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

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

Дилатация

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

Рисунок 4 – Иллюстрация применения дилатации. а) Исходное изображение с прямоугольником. б) структурообразующий элемент из пяти пикселов по диагонали. Его центр обведен квадратиком. в) Структурообразующий элемент разнесен по нескольким положениям на изображении. г) Обработанное изображение.

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

А В={z׀(B^)zAØ},

где Ø обозначает пустое множество, а В – это структурообразующий элемент. Другими словами, дилатация А относительно В является множеством, которое состоит из всехположений центров структурообразующего элемента, который, будучи центрально отраженным и сдвинутым, имеет частичное перекрытие с множеством А. Заметим, что процесс сдвига структурообразующего элемента похож на механизм построения свертки. На рис. 4 не видно действие центрального отражения элемента В, так как сам он центрально-симметричен. На рис. 5 изображен нецентрально-симметричный структурообразующий элемент и его центральное отражение.

Рисунок 5 – Центральное отражение структурообразующего элемента. а) Несимметричный структурообразующий элемент. б) структурообразующий элемеит, отраженный относительно своего центра.

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

Пример 1. Простое применение дилатации.

В пакете IPT операция дилатации реализуется функцией imdilate. Ее основная форма вызова имеет вид

А2=imdilate(A,B),

где А и А2 – это двоичные изображения, а В – матрица из нулей и единиц, которая обозначает структурообразующий элемент. На рисунке 6а дан пример двоичного изображения, которое содержит текст с разорванными буквами. Мы хотим применить дилатацию к этому изображению со структурообразующим элементом

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

>> A=imread('broken_text.tif');

>> B=[ 0 1 0; 1 1 1; 0 1 0];

>> A2=imdilate(A,B);

>> imshow(A2)

На рисунке 6б показано обработанное изображение.

Рисунок 6 – Простой пример дилатации. а) Исходное изображение, содержащее разорванные символы. б) Изображение после применения дилатации.