bwmorph

Морфологические операции на двухуровневых изображениях

Описание

пример

BW2 = bwmorph(BW,operation) применяет определенную морфологическую операцию к двухуровневому изображению BW.

Примечание

Чтобы выполнить морфологические операции на 3-D объемном изображении, используйте bwmorph3.

Опционально можно выполнить морфологическую операцию с помощью графического процессора (требует Parallel Computing Toolbox™).

BW2 = bwmorph(BW,operation,n) применяет операцию n \times. n может быть Inf, в этом случае операция повторяется, пока изображение больше не изменяется.

Примеры

свернуть все

Считайте двухуровневое изображение и отобразите его.

BW = imread('circles.png');
imshow(BW);

Удалите внутренние пиксели, чтобы оставить схему форм.

BW2 = bwmorph(BW,'remove');
figure
imshow(BW2)

Получите скелет изображений.

BW3 = bwmorph(BW,'skel',Inf);
figure
imshow(BW3)

Входные параметры

свернуть все

Двухуровневое изображение, заданное как 2D числовая матрица или 2D логическая матрица. Для числового входа любые ненулевые пиксели считаются 1 TRUE).

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

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

Операция

Описание

'bothat'

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

'branchpoints'

Найдите точки разветвления скелета. Например:

0  0  1  0  0           0  0  0  0  0
0  0  1  0  0  becomes  0  0  0  0  0
1  1  1  1  1           0  0  1  0  0
0  0  1  0  0           0  0  0  0  0
0  0  1  0  0           0  0  0  0  0

Примечание: Чтобы найти точки разветвления, изображение должно быть skeletonized. Чтобы создать изображение skeletonized, используйте bwmorph(BW,'skel').

'bridge'

Соединяет несвязанные пиксели, то есть, устанавливает 0-значные пиксели на 1 если у них есть два ненулевых соседа, которые не соединяются. Например:

1  0  0           1  1  0 
1  0  1  becomes  1  1  1 
0  0  1           0  1  1

'clean'

Удаляет изолированные пиксели (индивидуум 1 s, которые окружаются 0s), таким как центральный пиксель в этом шаблоне.

0  0  0 
0  1  0 
0  0  0

'close'

Выполняет морфологическое закрытие (расширение, сопровождаемое эрозией).

'diag'

Диагональ использования заполняет, чтобы устранить с 8 возможностями соединения из фона. Например:

0  1  0           0  1  0 
1  0  0  becomes  1  1  0 
0  0  0           0  0  0

'endpoints'

Находит конечные точки скелета. Например:

1  0  0  0           1  0  0  0
0  1  0  0  becomes  0  0  0  0
0  0  1  0           0  0  1  0
0  0  0  0           0  0  0  0

Примечание: Чтобы найти конечные точки, изображение должно быть skeletonized. Чтобы создать изображение skeletonized, используйте bwmorph(BW,'skel').

'fill'

Заливки изолировали внутренние пиксели (индивидуум 0s, которые окружаются 1 с), такой как центральный пиксель в этом шаблоне.

1  1  1 
1  0  1 
1  1  1

'hbreak'

Удаляет пиксели H-connected. Например:

1  1  1           1  1  1 
0  1  0  becomes  0  0  0 
1  1  1           1  1  1

'majority'

Устанавливает пиксель на 1 если пять или больше пикселей в его 3х3 окружении составляют 1 с; в противном случае это устанавливает пиксель на 0.

'open'

Выполняет морфологическое открытие (эрозия, сопровождаемая расширением).

'remove'

Удаляет внутренние пиксели. Эта опция устанавливает пиксель на 0 если всеми его связанными с 4 соседями является 1, таким образом оставляя только граничные пиксели на.

'shrink'

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

'skel'

С n = Inf, удаляет пиксели на контурах объектов, но не позволяет объектам разбиться. Остающиеся пиксели составляют скелет изображений. Эта опция сохраняет Число Эйлера.

Когда работа с 3-D объемами, или, когда это необходимо, сократить скелет, использует bwskel функция.

'spur'

Удаляет цилиндрические пиксели. Например:

0  0  0  0           0  0  0  0
0  0  0  0           0  0  0  0
0  0  1  0  becomes  0  0  0  0
0  1  0  0           0  1  0  0
1  1  0  0           1  1  0  0

'thicken'

С n = Inf, утолщает объекты путем добавления, что пиксели к внешнему виду объектов до выполнения так привели бы к ранее несвязанным объектам, являющимся связанным с 8. Эта опция сохраняет Число Эйлера.

'thin'

С n = Inf, разбавляет объекты к линиям. Это удаляет пиксели так, чтобы объект без отверстий уменьшился к минимально связанному диапазону и объекту с уменьшениями отверстий к связанному звонку на полпути между каждым отверстием и внешней границей. Эта опция сохраняет Число Эйлера. См. Алгоритмы для большего количества детали.

'tophat'

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

Пример: BW3 = bwmorph(BW,'skel');

Типы данных: char | string

Число раз, чтобы выполнить операцию, заданную как числовое значение. n может быть Inf, в этом случае bwmorph повторяет операцию, пока изображение больше не изменяется.

Пример: BW3 = bwmorph(BW,'skel',100);

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Выходные аргументы

свернуть все

Отобразите после морфологических операций, возвращенных как 2D логическая матрица.

Типы данных: логический

Советы

  • Чтобы выполнить эрозию или расширение, используйте imerode или imdilate функции. Если вы хотите скопировать расширение или эрозию, выполняемую bwmorph, затем укажите элемент структурирования ones(3) с этими функциями.

Алгоритмы

свернуть все

Когда используется с 'thin' опция, bwmorph использует следующий алгоритм [3]:

  1. В первой подытерации удалите пиксель p, если и только если условиям G1, G2 и G3 все удовлетворяют.

  2. Во второй подытерации удалите пиксель p если и только если условия G1, G2, и G3 все удовлетворены.

Условие G1:

XH(p)=1

где

XH(p)=i=14bi

bi={1, если x2i1=0 и (x2i=1 или x2i+1=1)0, в противном случае                                          

x1, x2..., x8 являются значениями восьми соседей p, начиная с восточного соседа и пронумерованный в против часовой стрелки порядке.

Условие G2:

2min{n1(p),n2(p)}3

где

n1(p)=k=14x2k1x2k

n2(p)=k=14x2kx2k+1

Условие G3:

(x2x3x¯8)x1=0

Условие G3':

(x6x7x¯4)x5=0

Эти две подытерации вместе составляют одну итерацию утончающегося алгоритма. Когда пользователь задает бесконечное число итераций (n=Inf), итерации повторяются, пока изображение не прекращает изменяться. Условия все тестируются с помощью applylut с предварительно вычисленными интерполяционными таблицами.

Ссылки

[1] Haralick, Роберт М., и Линда Г. Шапиро, компьютер и видение робота, издание 1, Аддисон-Уэсли, 1992.

[2] Кун, Т. Юнг и Азрил Розенфельд, топологические алгоритмы для цифровой обработки изображений, Elsevier Science, Inc., 1996.

[3] Убегите, L., Сен-Вхань Ли и Чин И. Суэнь, "Разбавляя Методологии-A Всесторонний Обзор", Транзакции IEEE согласно Анализу Шаблона и Искусственному интеллекту, Vol 14, № 9, сентябрь 1992, страница 879, нижняя часть первого столбца через верхнюю часть второго столбца.

[4] Пратт, Уильям К., цифровая обработка изображений, John Wiley & Sons, Inc., 1991.

Расширенные возможности

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

| | | | |

Представлено до R2006a

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