- •Лабораторная работа №7. Морфологическая обработка изображений
- •Базовые понятия теории множеств
- •Риунок 1 – а) Два множества а и в. Б) Объединение множеств а и в. В) Пересечение множеств а и в. Г) Дополнение множества а. Д) Разность множеств а и в.
- •Двоичные изображения, множества и логические операции
- •Разложение структурообразующих элементов
- •Функция strel
- •Преобразование успех/неудача
- •Использование поисковых таблиц
- •Функция bwmorph
- •Выделение компонент связности
- •Морфологическая реконструкция
- •Размыкание реконструкцией
- •Размыкание и замыкание
- •Реконструкция
- •Список индивидуальных данных
- •Задание:
Двоичные изображения, множества и логические операции
Язык и теория математической морфологии позволяют взглянуть на двоичные изображения как бы с двух сторон. С одной стороны, двоичное изображение (как часто в этой книге) можно себе представлять в виде функции с двумя возможными значениями координат х и у. Теория морфологии рассматривает двоичное изображение в виде множества его пикселов переднего плана (со значениями 1), которое лежит в пространстве Z². Введенные выше операции над множествами типа объединение и пересечение можно напрямую применять к двоичным изображениям. Например, если А и В – двоичные изображения, то С = А В – также двоичное изображение, причем пикселы на изображении С являются пикселами переднего плана, если соответствующие пикселы на А, на В или на обоих этих изображениях принадлежат переднему плану. При первом, функциональном подходе, изображение С задается формулой
А, с точки зрения теории множеств, изображение С определяется выражением
С = { (х, у) | (х, у) А, или (х, у) В, или (х, у) (А и В)}.
Операции над множествами, приведенные на рисунке 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^)z∩A≠Ø},
где Ø обозначает пустое множество, а В – это структурообразующий элемент. Другими словами, дилатация А относительно В является множеством, которое состоит из всехположений центров структурообразующего элемента, который, будучи центрально отраженным и сдвинутым, имеет частичное перекрытие с множеством А. Заметим, что процесс сдвига структурообразующего элемента похож на механизм построения свертки. На рис. 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 – Простой пример дилатации. а) Исходное изображение, содержащее разорванные символы. б) Изображение после применения дилатации.
