В этом примере показано, как использовать опцию Graph Cut в приложении Image Segmenter для сегментации изображения. График является полуавтоматическим методом сегментации, который можно использовать, чтобы сегментировать изображение в элементы переднего и заднего плана. Графика сегментация выреза не требует хорошей инициализации. Вы рисуете линии на изображении, называемые scribbles, чтобы определить, что вы хотите на переднем плане и что вы хотите на заднем плане. Image Segmenter автоматически сегментирует изображение на основе строчек и отображает сегментированное изображение. Можно уточнить сегментацию, рисуя больше строчек на изображении, пока вы не будете удовлетворены результатом.
Метод Graph Cut применяет теорию графиков к обработке изображений для достижения быстрой сегментации. Метод создает график изображения, где каждый пиксель является узлом, соединенным взвешенными ребрами. Чем выше вероятность того, что пиксели связаны, тем выше вес. Алгоритм разрезает по слабым ребрам, добиваясь сегментации объектов на изображении. Image Segmenter использует конкретное разнообразие алгоритма Graph Cut под названием lazysnapping. Для получения информации о другом методе сегментации, который связан с вырезом графика, смотрите Сегмент Изображения Используя Локальный Граф Вырез (Grabcut) в Image Segmenter.
Чтение изображения в рабочую область. В данном примере прочтите образец изображения baby.png
в рабочую область.
b = imread('baby.jpg');
На панели инструментов MATLAB ® откройте приложение Image Segmenter. На вкладке Apps, в разделе Image Processing and Компьютерное Зрение, нажмите Image Segmenter.
На панели инструментов приложения щелкните Загрузка изображения, а затем выберите Загрузка изображения из рабочей области. В диалоговом окне Импорт из рабочей области выберите изображение, считанное в рабочую область. В приложении Image Segmenter отображается выбранное изображение.
Вы также можете открыть приложение, используя imageSegmenter
команда, задающая изображение:
imageSegmenter(b);
На панели приложения Image Segmenter выберите График Cut.
Откроется Image Segmenter новая вкладка для сегментации Графика Вырез ". В качестве первого шага сегментации Graph Cut отметьте элементы изображения, которые вы хотите видеть на переднем плане. Когда Image Segmenter открывает вкладку Graph Cut, он предварительно выбирает опцию Mark Forground. Чтобы отметить объект как передний план, нарисуйте линию (также называемую scribble) над объектом. Когда вы рисуете линию, попробуйте включить все различные значения в объект, который вы хотите сегментировать. Вы можете рисовать сколько угодно отдельных линий. Если вы не удовлетворены линиями, которые вы рисуете, вы всегда можете редактировать их. Нажмите «Стереть» и наведите курсор на любую часть линии, которую вы хотите удалить. Если необходимо начать заново, щелкните Удалить маркировку (Clear Markings).
Затем щелкните Пометить фон (Mark Background) и нарисуйте черновики, чтобы отметить элементы изображения, которое вы хотите использовать в качестве фона. Когда вы заканчиваете рисовать линии, Image Segmenter немедленно выполняет сегментацию (синяя).
Для уточнения сегментации продолжите рисование линий переднего и заднего плана. Например, в нижней части изображения есть несколько областей, которые необходимо удалить из переднего плана. Чтобы исправить эти проблемы, нарисуйте дополнительные фоновые линии на этих частях изображения.
Чтобы лучше просмотреть сегментацию, нажмите Показать двоичный.
Когда сегментация будет удовлетворена, щелкните Создать маску (Create Mask) на панели инструментов на вкладке Вырез графика (Graph Cut). Приложение закрывает вкладку Graph Cut и возвращает вас на вкладку Segmentation.
Когда вы возвращаетесь на главную вкладку Сегментация (Segmentation), можно использовать инструменты для уточнения маскирующего изображения, такие как Морфология (Morphology) и Активные контуры (Active Contours). Чтобы сохранить изображение маски, нажмите кнопку Экспорт. Можно также использовать опцию «Экспорт», чтобы получить код приложения Image Segmenter, используемого для создания сегментации.
Image Segmenter | lazysnapping