Обрезка (морфология) - Pruning (morphology)

В обрезка алгоритм - это метод, используемый в цифровая обработка изображений на основе математическая морфология.[1] Используется как дополнение к скелет и алгоритмы прореживания для удаления нежелательных паразитных компонентов (шпор). В этом случае «паразитные» компоненты относятся к ветвям линии, которые не являются ключевыми для общей формы линии и должны быть удалены. Эти компоненты часто могут быть созданы обнаружение края алгоритмы или оцифровка. Обычное использование обрезки: автоматическое распознавание рукописных символов. Часто непоследовательность в написании писем создает нежелательные стимулы, которые необходимо устранить для лучшей характеристики.[2]

Математическое определение

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

Структурирование элементов

Символ x в массивах указывает на состояние «безразлично», то есть на изображении может быть либо 1, либо 0.

Шаг 1: Истончение

Примените этот шаг заданное (n) раз, чтобы исключить любую ветвь с (n) или менее пикселями.

Шаг 2. Найдите конечные точки

Где бы ни выполнялись элементы структурирования, центр матрицы 3x3 считается конечной точкой.

Шаг 3: Расширять Конечные точки

Выполните растяжение, используя матрицу 3x3 (H), состоящую из всех единиц, и вставьте только единицы, в которых исходное изображение (A) также имело 1. Выполните это для каждой конечной точки во всех направлениях (n) раз.

Шаг 4: Союз из X1 & ИКС3

Возьмите результат из шага 1 и объедините его с шагом 3, чтобы получить окончательные результаты.

MATLAB Код

 1 %% --------------- 2 % Обрезка 3 % --------------- 4 Чисто; clc; 5  6 % Изображение прочитано 7 img = я читал('Pruning.tif'); 8  9 b_img_skel = bwmorph (img, 'skel', 40);10 b_img_spur = bwmorph(b_img_skel, 'шпора', Inf);11 12 фигура('Имя', 'Обрезка');13 подсюжет(1,2,1);14 imshow(b_img_skel);15 заглавие(спринт('Скелет изображения'));16 подсюжет(1,2,2);17 imshow(b_img_spur);18 заглавие(спринт("Изображение скелета обрезано"));

MATLAB Пример

В приведенном ниже примере MATLAB он берет исходное изображение (внизу слева) и скелетонирует его 40 раз, затем обрезает изображение, чтобы удалить шпоры согласно приведенному выше коду MATLAB. Как показано (внизу справа), это удалило большую часть всех шпор, что привело к более чистому изображению.

Исходное изображениеСкелет изображенияИзображение скелета обрезано
Pruning.tifОбрезка MATLAB Example.jpg

Смотрите также

внешняя ссылка

Рекомендации

  1. ^ Расс, Джон С. (2011). Справочник по обработке изображений (6-е изд.). Бока-Ратон: CRC Press. ISBN  978-1-4398-4045-0.
  2. ^ Gonzalez, Rafael C .; Вудс, Ричард Э. (2008). Цифровая обработка изображений (3-е изд.). Река Аппер Сэдл, Нью-Джерси: Prentice Hall. ISBN  978-0131687288.