bwmorph

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

Описание

пример

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

Примечание

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

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

Примеры

свернуть все

Считайте бинарное изображение и отобразите его.

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

Figure contains an axes. The axes contains an object of type image.

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

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

Figure contains an axes. The axes contains an object of type image.

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

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

Figure contains an axes. The axes contains an object of type image.

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

свернуть все

Бинарное изображение в виде 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