В этом примере показано, как использовать опцию Сокращения Графика в приложении Image Segmenter, чтобы сегментировать изображение. Сокращение графика является полуавтоматическим методом сегментации, который можно использовать, чтобы сегментировать изображение на фоновые элементы и передний план. Сегментация сокращения графика не требует хорошей инициализации. Вы проводите линии на изображении, названном каракулями, чтобы идентифицировать то, что вы хотите на переднем плане и что вы хотите в фоновом режиме. Сегменты Image Segmenter изображение автоматически на основе ваших каракулей и отображений сегментированное изображение. Можно совершенствовать сегментацию путем рисования большего количества каракулей на изображении, пока вы не удовлетворены результатом.
Метод Сокращения Графика применяет теорию графов к обработке изображений, чтобы достигнуть быстрой сегментации. Метод создает график изображения, где каждый пиксель является узлом, соединенным взвешенными ребрами. Чем выше вероятность, что пиксели связаны, тем выше вес. Алгоритм сокращает вдоль слабых ребер, достигая сегментации объектов в изображении. Image Segmenter использует особое разнообразие алгоритма Сокращения Графика, названного lazysnapping. Для получения информации о другом методе сегментации, который связан с сокращением графика, смотрите, что Изображение Сегмента Использует Локальное Сокращение Графика (Grabcut) в Image Segmenter.
Считайте изображение в рабочую область. В данном примере считайте демонстрационное изображение baby.png
в рабочую область.
b = imread('baby.jpg');
От панели инструментов MATLAB® откройте приложение Image Segmenter. На вкладке Apps, в разделе Image Processing и Computer Vision, нажимают Image Segmenter.
На панели инструментов приложения нажмите Load Image, и затем выберите Load Image from Workspace. В диалоговом окне Import from Workspace выберите изображение, которое вы читаете в рабочую область. Отображения приложения Image Segmenter изображение вы выбрали.
Можно также открыть приложение с помощью imageSegmenter
команда, задавая изображение:
imageSegmenter(b);
На панели инструментов приложения Image Segmenter выберите Graph Cut.
Image Segmenter открывает новую вкладку для сегментации Сокращения Графика. Как первый шаг в сегментации Сокращения Графика, отметьте элементы изображения, что вы хотите быть на переднем плане. Когда Image Segmenter открывает вкладку Graph Cut, он предварительно выбирает опцию Марка Фореграунда. Чтобы отметить объект как передний план, чертите линию (также названный каракулями) по объекту. Когда вы чертите линию, попытайтесь включать все различные значения в объект, который вы хотите сегментировать. Можно провести столько отдельных линий, сколько вам нравится. Если вы не удовлетворены линиями, вы чертите, можно всегда редактировать их. Нажмите Erase и переместите курсор через любую часть линии, которую вы хотите удалить. Если хотят запуститься, нажмите Clear Markings.
Затем нажмите Mark Background и чертите каракули, чтобы отметить элементы изображения, вы хотите быть фоном. Когда вы закончили проводить линии, Image Segmenter сразу выполняет сегментацию (отображенный синим).
Чтобы совершенствовать сегментацию, продолжите чертить фоновые линии и передний план. Например, существует несколько областей около нижней части изображения, которое должно быть удалено из переднего плана. Чтобы решить эти проблемы, проведите дополнительные фоновые линии на этих частях изображения.
Чтобы получить лучший взгляд на сегментацию, нажмите Show Binary.
Когда вы будете удовлетворены сегментацией, нажмите Create Mask в панели инструментов на вкладке Graph Cut. Приложение закрывает вкладку Graph Cut и возвращает вас во вкладку Segmentation.
Когда вы возвращаетесь к основной вкладке Segmentation, можно использовать инструменты, чтобы совершенствовать рисунок маски, такой как Морфология и Активные Контуры. Чтобы сохранить рисунок маски, нажмите Export. Можно также использовать опцию Экспорта, чтобы получить код, приложение Image Segmenter раньше создавало сегментацию.
Image Segmenter | lazysnapping