bwmorph

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

Синтаксис

BW2 = bwmorph(BW,operation)
BW2 = bwmorph(BW,operation,n)

Описание

пример

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

Примечание

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

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

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

Примеры

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

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

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

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

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

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

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

Выполните морфологические операции на графическом процессоре

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

BW1 = gpuArray(imread('circles.png'));
figure
imshow(BW1)

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

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

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

свернуть все

Введите изображение, заданное как двухуровневое изображение. Входное изображение может быть числовым или логическим, и должно быть 2D, действительным и неразреженным.

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

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | логический

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

Операция

Описание

'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 | логический

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

свернуть все

Выходное изображение, возвращенное как двухуровневое изображение.

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

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

Советы

  • Чтобы выполнить эрозию или расширение, используйте функции imdilate или imerode. Если вы хотите копировать расширение или эрозию, выполняемую 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