bwtraceboundary

Проследите объект в бинарном изображении

Описание

B = bwtraceboundary(BW,P,fstep) трассирует контур объекта в бинарном изображении BW. Ненулевые пиксели принадлежат объекту, и нулевые пиксели составляют фон. P задает координаты строка и столбец точки на контуре объекта, с которой должна начинаться трассировка. fstep задает начальное направление поиска для следующего пикселя объекта, подключенного к P. B содержит координаты строка и столбец краевых пикселей для области.

B = bwtraceboundary(BW,P,fstep,conn) прослеживает контур, где conn задает необходимую связность.

пример

B = bwtraceboundary(BW,P,fstep,conn,m,dir) задает m, максимальное количество краевых пикселей для извлечения и dir, направление, в котором можно проследить контур. По умолчанию bwtraceboundary определяет все пиксели на контуре.

Примеры

свернуть все

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

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

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

Выберите объект в изображении и проследите контур. Чтобы выбрать объект, укажите пиксель на его контуре. Этот пример использует координаты пикселя на контуре толстого белого круга, полученного путем визуального контроля с помощью impixelinfo. По умолчанию bwtraceboundary определяет все пиксели на контуре.

r1 = 163;
c1 = 37;
contour = bwtraceboundary(BW,[r1 c1],'W');

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

hold on
plot(contour(:,2),contour(:,1),'g','LineWidth',2)

Figure contains an axes. The axes contains 2 objects of type image, line.

Выберите точку на контуре второго объекта. В этом примере используются координаты пикселя вблизи верхнего левого угла самого большого прямоугольника. Проследите первые пятьдесят краевых пикселей в направлении по часовой стрелке.

r2 = 68;
c2 = 95;
contourCW = bwtraceboundary(BW,[r2 c2],'W',8,50,'clockwise');

Начиная с той же точки на втором контуре объекта, проследите первые пятьдесят краевых пикселей в направлении против часовой стрелки.

contourCCW = bwtraceboundary(BW,[r2 c2],'W',8,50,'counterclockwise');

Постройте график контура по часовой стрелке на изображении красным цветом. Постройте контур против часовой стрелки на изображении синим цветом.

plot(contourCW(:,2),contourCW(:,1),'r','LineWidth',2)
plot(contourCCW(:,2),contourCCW(:,1),'b','LineWidth',2)

Figure contains an axes. The axes contains 4 objects of type image, line.

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

свернуть все

Бинарное изображение, заданное как 2-D числовая или логическая матрица.

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

Координаты начальной точки на контуре объекта, где необходимо начать трассировку, заданные как 2-элементный вектор формата [row column].

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

Начальное направление поиска для следующего пикселя объекта, соединенного с P, заданный как вектор символов или строковый скаляр, как изображено на схеме.

Примечание

Когда подключение conn является 4, fstep ограничивается значениями 'N', 'E', 'S', и 'W'.

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

Связность пикселей, заданная как 8 или 4.

Значение

Значение

Двумерные связи

4-соединенный

Пиксели соединяются, если их ребра касаются. Окрестностью пикселя являются соседние пиксели в горизонтальном или вертикальном направлении.

8-соединенный

Пиксели соединяются, если их ребра или углы касаются. Окрестностью пикселя являются смежные пиксели в горизонтальном, вертикальном или диагональном направлении.

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

Максимальное количество краевых пикселей для извлечения, заданное как положительное целое число. По умолчанию m является Inf и bwtraceboundary определяет все пиксели на контуре.

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

Направление, в котором можно проследить контур, заданное как 'clockwise' или 'counterclockwise'.

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

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

свернуть все

Координаты строка и столбец краевых пикселей для области, возвращенные как матрица q -by-2. Каждая строка в B имеет форму [row column].

Алгоритмы

The bwtraceboundary функция реализует алгоритм трассировки Мура-Соседа, модифицированный критериями остановки Якоба. Эта функция основана на boundaries функция, представленная в первом издании Digital Image Processing Using MATLAB, Gonsalez, R. C., R. E. Woods, and S. L. Eddins, New Jersey, Pearson Prentice Hall, 2004.

Ссылки

[1] Gonsalez, R. C., R. E. Woods, and S. L. Eddins, Digital Image Processing Using MATLAB, New Jersey, Pearson Prentice Hall, 2004.

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

..

См. также

|

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