imseggeodesic

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

Описание

пример

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

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

пример

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

пример

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

Цель - сегментировать лепестки цветка. Задайте начальную начальную область seed в виде прямоугольного информация только для чтения при помощи drawrectangle функция. Отобразите информация только для чтения в красном цвете. Аргумент в виде пары имя-значение 'Position' задает верхнюю левую координату, ширину и высоту информация только для чтения в качестве вектора с 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.

Задайте начальные начальные области seed как прямоугольный информация только для чтения. Отобразите информация только для чтения в синем цвете.

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.

Создайте маску для каждого информация только для чтения, в котором 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.

Первая область состоит из жёлтых цветочных лепестков. Задайте начальную начальную область seed в виде прямоугольного информация только для чтения при помощи drawrectangle функция. Нарисуйте информация только для чтения желтым цветом. Аргумент в виде пары имя-значение 'Position' задает верхнюю левую координату, ширину и высоту информация только для чтения в качестве вектора с 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.

Создайте маску для каждого информация только для чтения, в котором 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 (листья). Добавьте другой фоновый информация только для чтения.

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. Чтобы создать строчки в интерактивном режиме, сначала нарисуйте информация только для чтения с помощью таких функций, как drawcircle, drawfreehand, drawpolygon, или drawrectangle. Затем создайте маску из информация только для чтения с помощью createMask.

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

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

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

Изображение Scribble для третьей области, заданная как логическая матрица. BW3 должны иметь одинаковое число строк и столбцы в качестве входа изображения RGB. Чтобы создать строчки в интерактивном режиме, сначала нарисуйте информация только для чтения с помощью таких функций, как drawcircle, drawfreehand, drawpolygon, или drawrectangle. Затем создайте маску из информация только для чтения с помощью 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
Для просмотра документации необходимо авторизоваться на сайте