bwmorph

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

Описание

пример

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

Примечание

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

BW2 = bwmorph(BW,operation,n) применяет операцию n времени. 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.

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

свернуть все

Бинарное изображение, заданное как 2-D числовая матрица или 2-D логическая матрица. Для числового входа любые ненулевые пиксели рассматриваются как 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

Примечание: Чтобы найти точки ветви, изображение должно быть скелетировано. Чтобы создать скелетированное изображение, используйте 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с, которые окружены 0с), такие как центральный пиксель в этом шаблоне.

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

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

'fill'

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

1  1  1 
1  0  1 
1  1  1

'hbreak'

Удаление связанных по H пикселей. Для примера:

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

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

свернуть все

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

Типы данных: logical

Совет

  • Чтобы выполнить эрозию или расширение, используйте 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, Robert M., and Linda G. Shapiro, Computer and Robot Vision, Vol. 1, Addison-Wesley, 1992.

[2] Kong, T. Yung and Azriel Rosenfeld, Topological Algorithms for Digital Image Processing, Elsevier Science, Inc., 1996.

[3] Lam, L., Seong-Whan Lee, and Ching Y. Suen, «Thinning Methodologies-A Completal Survey», IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol 14, no 9, Sepery 879, page 879, pp.

[4] Pratt, William K., Digital Image Processing, John Wiley & Sons, Inc., 1991.

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

..

См. также

| | | | |

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