exponenta event banner

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].

Алгоритмы

bwtraceboundary функция реализует алгоритм трассировки Мура-Соседа, модифицированный критериями остановки Джейкоба. Эта функция основана на boundaries функция представлена в первом издании «Digital Image Processing Using MATLAB» Гонсалеса, Р. К., Р. Э. Вудса и С. Л. Эддинса, Нью-Джерси, Пирсон Прентис Холл, 2004.

Ссылки

[1] Гонсалес, Р. К., Р. Э. Вудс и С. Л. Эддинс, Цифровая обработка изображений с использованием MATLAB, Нью-Джерси, Пирсон Прентис Холл, 2004.

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

..

См. также

|

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