bwskel

Уменьшите все объекты до линий в 2-D бинарном изображении или 3-D двоичном объеме

Описание

пример

B = bwskel(A) уменьшает все объекты в 2-D бинарном изображении A к 1-пиксельным широким изогнутым линиям, не меняя существенную структуру изображения. Этот процесс, называемый skeletonization, извлекает осевую линию с сохранением топологии и числа Эйлера (также известного как характеристика Эйлера) объектов.

пример

B = bwskel(V) возвращает каркас 3-D двоичного объема.

B = bwskel(___,'MinBranchLength',N) задает минимальную длину ветви N скелета. bwskel удаляет (обрезает) все ветви короче заданной длины. bwskel вычисляет длину как количество пикселей в ветви, используя 8-связность для 2-D и 26-связность для 3-D.

Примеры

свернуть все

Считайте 2-D изображение в полутоновом цвете в рабочую область. Отобразите изображение. Объектами интереса являются темные нити на светлом фоне.

I = imread('threads.png');
imshow(I)

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

Для скелетонизации требуется бинарное изображение, в котором 1 пиксели переднего плана (белый) и фон 0 (черный). Чтобы сделать оригинальное изображение подходящим для скелетонизации, возьмите дополнение изображения так, чтобы объекты были светлыми, а фон - темным. Затем бинаризируйте результат.

Icomplement = imcomplement(I);
BW = imbinarize(Icomplement);
imshow(BW)

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

Выполните скелетонизацию бинарного изображения, используя bwskel.

out = bwskel(BW);

Отобразите каркас над оригинальным изображением при помощи labeloverlay функция. Скелет появляется в виде синей линии шириной 1 пиксель над темными нитями.

imshow(labeloverlay(I,out,'Transparency',0))

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

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

out2 = bwskel(BW,'MinBranchLength',15);
imshow(labeloverlay(I,out2,'Transparency',0))

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

Считайте бинарное изображение в рабочую область.

BW1 = imread('circbw.tif');

Скелетируйте объекты на изображении с помощью bwskel функция.

BW2 = bwskel(BW1);

Просмотрите оригинальное изображение и скелетированное изображение один за другим.

montage({BW1,BW2},'BackgroundColor','blue','BorderSize',5)

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

Загрузите объемный набор данных в рабочую область. Имя набора данных spiralVol. Отображение объема с помощью volshow.

load spiralVol.mat;
volshow(spiralVol);

Преобразуйте spiralVol набор данных в двоичном формате, который требуется bwskel функция.

spiralVolLogical = imbinarize(spiralVol);

Скелетируйте фигуру спирали в наборе данных. Отобразите скелетированный объем с volshow.

spiralVolSkel = bwskel(spiralVolLogical);

.

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

свернуть все

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

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

3-D двоичный том, заданный как 3-D логический массив.

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

Минимальная длина ветви, заданная как неотрицательное целое число. bwskel обрезает ветви короче N. По умолчанию bwskel не обрезает ветви.

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

свернуть все

Скелетированное изображение или том, возвращенные как 2-D логическая матрица или 3-D логический массив того же размера, что и вход изображение или том.

Совет

  • В то время как оба bwskel и bwmorph можно скелетировать 2-D изображения, можно получить различные результаты используя bwmorph чем при использовании bwskel. Потому что они используют различные алгоритмы, bwskel функция использует 4-связность с 2-D изображениями; bwmorph использует 8-связность.

  • bwskel принимает, что объекты переднего плана в бинарное изображение являются белыми (логическими true). Если ваше изображение имеет белый фон и черные объекты, используйте дополнение вашего изображения в качестве входов для bwskel. Вычислить дополнение можно при помощи imcomplement.

Алгоритмы

  • The bwskel функция использует среднее преобразование оси.

Ссылки

[1] Та-Чих Ли, Рангасами Л. Кашьяп и Чонг-Нам Чу. Построение моделей скелета с помощью 3-D медиальных алгоритмов утончения поверхности/оси. Компьютерное зрение, графика и обработка Изображения, 56 (6): 462-478, 1994.

[2] Kerschnitzki, M, Kollmannsberger, P, Burghammer, M. et al. Архитектура остеоцитарной сети коррелирует с качеством костного материала. Журнал исследований костей и минералов, 28 (8): 1837-1845, 2013.

Введенный в R2018a