bwtraceboundary

Объект трассировки в двухуровневом изображении

Синтаксис

B = bwtraceboundary(BW,P,fstep)
B = bwtraceboundary(BW,P,fstep,conn)
B = bwtraceboundary(BW,P,fstep,conn,m,dir)

Описание

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)

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

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

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

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

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

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)

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

свернуть все

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

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

Координаты отправной точки на границе объекта, где вы хотите, чтобы трассировка началась, заданный как вектор с 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, представленной в первом выпуске Цифровой обработки изображений Используя MATLAB, Гонсалесом, R. C. Р. Э. Вудс и С. Л. Эддинс, Нью-Джерси, Пирсон Prentice Hall, 2004.

Ссылки

[1] Гонсалес, R. C. Р. Э. Вудс, и С. Л. Эддинс, цифровая обработка изображений Используя MATLAB, Нью-Джерси, Пирсона Prentice Hall, 2004.

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

Смотрите также

|

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

Для просмотра документации необходимо авторизоваться на сайте