exponenta event banner

bwskel

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

Описание

пример

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

пример

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.

Алгоритмы

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

Ссылки

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

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

Представлен в R2018a