exponenta event banner

imseggeodesic

Сегментация изображения на две или три области с использованием цветовой сегментации на основе геодезических расстояний

Описание

пример

L = imseggeodesic(RGB,BW1,BW2) сегментирует цветное изображение RGB, возврат сегментированного двоичного изображения с метками L. BW1 и BW2 бинарные изображения, задающие расположение начальных областей, называемых писанками, для этих двух областей (переднего плана и фона).

imseggeodesic использует писанки, указанные в BW1 и BW2 в качестве репрезентативных выборок для вычисления статистики для их соответствующих регионов, которые затем используются в сегментации. Писцы, указанные BW1 и BW2 (логические истинные области) не должны перекрываться. Базовый алгоритм использует статистику, оцененную по регионам, отмеченным писанками для сегментации. Чем больше число пикселей, отмеченных писанками, тем точнее оценка статистики области, что обычно приводит к более точной сегментации. Поэтому рекомендуется создавать как можно больше писанок. Обычно обеспечивают, по меньшей мере, несколько сотен пикселей в качестве красок для каждой области.

пример

L = imseggeodesic(RGB,BW1,BW2,BW3) сегментирует цветное изображение RGB, возврат сегментированного изображения с тремя сегментами (тринарная сегментация) с метками области, заданными матрицей меток L. BW1, BW2, и BW3 бинарные изображения, которые указывают местоположение начальных начальных областей или писанок для трех областей. Писцы, указанные BW1, BW2, и BW3 (логические истинные области) не должны перекрываться.

пример

[L,P] = imseggeodesic(___) также возвращает вероятность для каждого пикселя, принадлежащего каждой из меток в матрице P.

пример

[L,P] = imseggeodesic(___,Name,Value) использует пары имя-значение для управления аспектами сегментации.

Примеры

свернуть все

Чтение и отображение изображения.

RGB = imread('yellowlily.jpg');
imshow(RGB)

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

Цель - сегментировать лепестки цветка. Укажите начальную исходную область как прямоугольную окупаемость инвестиций с помощью drawrectangle функция. Просмотрите ROI красным цветом. Аргумент пары имя-значение Position указывает верхнюю левую координату, ширину и высоту ROI в качестве 4-элементного вектора [xmin, ymin, width, height]. Если требуется нарисовать прямоугольник в интерактивном режиме, опустите аргумент пары имя-значение Position.

roiObject = drawrectangle(gca,'Position',[350 700 375 120],'Color','r');

Figure contains an axes. The axes contains 2 objects of type image, images.roi.rectangle.

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

roiBackground = drawrectangle(gca,'Position',[90 1230 910 190],'Color','b');

Figure contains an axes. The axes contains 3 objects of type image, images.roi.rectangle.

Создание маски для каждого ROI, в котором находится ROI true и другие пиксели false.

maskObject = createMask(roiObject);
maskBackground = createMask(roiBackground);

Сегментируйте изображение.

[L,P] = imseggeodesic(RGB,maskObject,maskBackground);

Отображение сегментированных меток.

imshow(label2rgb(L))
title('Segmented Labels')

Figure contains an axes. The axes with title Segmented Labels contains an object of type image.

Отображение сегментированных меток поверх исходного изображения.

imshow(labeloverlay(RGB,L))
title('Labels Overlaid on Original Image')

Figure contains an axes. The axes with title Labels Overlaid on Original Image contains an object of type image.

Чтение и отображение изображения.

RGB = imread('yellowlily.jpg'); 
imshow(RGB)

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

Первая область состоит из жёлтых лепестков цветка. Укажите начальную исходную область как прямоугольную окупаемость инвестиций с помощью drawrectangle функция. Нарисуйте окупаемость инвестиций желтым цветом. Аргумент пары имя-значение Position указывает верхнюю левую координату, ширину и высоту ROI в качестве 4-элементного вектора [xmin, ymin, width, height]. Если требуется нарисовать прямоугольник в интерактивном режиме, опустите аргумент пары имя-значение Position.

r1 = drawrectangle(gca,'Position',[350 700 425 120],'Color','y');

Figure contains an axes. The axes contains 2 objects of type image, images.roi.rectangle.

Вторая область состоит из зелёных листьев. Укажите начальную область как прямоугольную окупаемость инвестиций и начертите окупаемость инвестиций красным цветом.

r2 = drawrectangle(gca,'Position',[800 1124 120 230],'Color','r');

Figure contains an axes. The axes contains 3 objects of type image, images.roi.rectangle.

Третья область - фон, который является грязью на этом изображении. Укажите начальную область как прямоугольную окупаемость инвестиций и начертите окупаемость инвестиций синим цветом.

r3 = drawrectangle(gca,'Position',[1010 290 180 240],'Color','b');

Figure contains an axes. The axes contains 4 objects of type image, images.roi.rectangle.

Создание маски для каждого ROI, в котором находится ROI true и другие пиксели false.

mask1 = createMask(r1);
mask2 = createMask(r2);
mask3 = createMask(r3);

Сегментируйте изображение.

[L,P] = imseggeodesic(RGB,mask1,mask2,mask3,'AdaptiveChannelWeighting',true);

Отображение сегментированных меток поверх исходного изображения.

imshow(labeloverlay(RGB,L))
title('Segmented Image with Three Regions')

Figure contains an axes. The axes with title Segmented Image with Three Regions contains an object of type image.

Правый нижний угол изображения неправильно классифицируется как область 2 (листья). Добавьте еще один фоновый ROI.

r4 = drawrectangle(gca,'Position',[20 1320 480 200],'Color','b');

Figure contains an axes. The axes with title Segmented Image with Three Regions contains 2 objects of type image, images.roi.rectangle.

mask4 = createMask(r4);
maskBackground = mask3 + mask4;

Сегментируйте изображение, а затем отобразите сегментированные метки поверх исходного изображения.

[L,P] = imseggeodesic(RGB,mask1,mask2,maskBackground,'AdaptiveChannelWeighting',true);
imshow(labeloverlay(RGB,L))
title('Refined Segmented Image with Three Regions')

Figure contains an axes. The axes with title Refined Segmented Image with Three Regions contains an object of type image.

Отображение вероятности того, что каждый пиксель принадлежит каждой метке.

montage(P,'Size',[1 3])
title('Probability That Each Pixel Belongs to Each Label')

Figure contains an axes. The axes with title Probability That Each Pixel Belongs to Each Label contains an object of type image.

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

свернуть все

Изображение, подлежащее сегментированию, указывается как изображение RGB. imseggeodesic преобразует входное изображение RGB в цветовое пространство YCbCr перед выполнением сегментации.

Пример: RGB = imread('peppers.png');

Типы данных: double | uint8 | uint16

Изображение надписи для первой области, указанное как логическая матрица. BW1 должно иметь то же количество строк и столбцов, что и входное изображение RGB. Для интерактивного создания книжек сначала нарисуйте ROI с помощью таких функций, как drawcircle, drawfreehand, drawpolygon, или drawrectangle. Затем создайте маску из ROI с помощью createMask.

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

Изображение надписи для второй области, указанное как логическая матрица. BW2 должно иметь то же количество строк и столбцов, что и входное изображение RGB. Для интерактивного создания книжек сначала нарисуйте ROI с помощью таких функций, как drawcircle, drawfreehand, drawpolygon, или drawrectangle. Затем создайте маску из ROI с помощью createMask.

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

Изображение надписи для третьей области, указанное как логическая матрица. BW3 должно иметь то же количество строк и столбцов, что и входное изображение RGB. Для интерактивного создания книжек сначала нарисуйте ROI с помощью таких функций, как drawcircle, drawfreehand, drawpolygon, или drawrectangle. Затем создайте маску из ROI с помощью createMask.

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

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: [L,P] = imseggeodesic(RGB,BW1,BW2,BW3,'AdaptiveChannelWeighting',true);

Используйте адаптивное взвешивание канала, указанное как логический скаляр. Когда true, imseggeodesic взвешивает каналы пропорционально количеству дискриминационной информации, которую они имеют, которая полезна для сегментации (на основе красок, предоставляемых в качестве входных данных). Когда false (по умолчанию), imseggeodesic весит все каналы одинаково.

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

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

свернуть все

Матрица меток, возвращаемая как матрица неотрицательных целых чисел. Маркированные пикселы 0 - фон и пиксели, помеченные 1 определить сегментированную область. Маркированные пикселы 2 идентифицировать другую сегментированную область в тринарной сегментации.

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

Вероятность того, что пиксель принадлежит помеченной области, определенной как M-by-N-by-2 матрица для двоичной сегментации или M-by-N-by-3 матрица для тринарной сегментации. M и N - количество строк и столбцов во входном изображении. P(i,j,k) задает вероятность пикселя в местоположении (i,j) принадлежность к этикетке k.

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

Совет

  • Надписи для двух (или трех) областей не должны перекрывать друг друга. Каждая матрица писанки (BW1, BW2, и BW3) должен быть непустым, то есть должен быть по крайней мере один пиксель (хотя чем больше, тем лучше), помеченный как логический true в каждой из писанок.

Алгоритмы

imseggeodesic использует алгоритм сегментации цвета на основе геодезических расстояний (аналогично [1]).

Ссылки

[1] А. Протьер и Г. Сапиро, интерактивная сегментация изображения через адаптивные взвешенные расстояния, транзакции IEEE при обработке изображения. Том 16, выпуск 4, 2007.

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