Как получить доступ к сегментам изображения

Я хотел бы извлечь цвет, форму и особенности структуры суперпиксельных сегментов изображения. Затем я хотел бы визуализировать эти функции, чтобы выбрать важные функции.

Я использую код по этой ссылке:
https://github.com/np-csu/SLIC-superpixel

Я хотел бы получить доступ к каждому кластеру сегментированного изображения, как это исследование:
http://www.pyimagesearch.com/2014/12/29/accessing-individual-superpixel-segmentations-python/

Тем не менее, я не смог найти соответствующую часть кода.

0

Решение

Метод int* SLIC::GetLabel() возвращает метку для каждого пикселя. Вы можете создать Mat заголовок для int* для легкого доступа:

Mat1i labelImg(img.rows, img.cols, slic.GetLabel());

Затем вы можете создать маску для каждого суперпикселя (метки):

Mat1b superpixel_mask = labelImg == label;

и получить суперпиксель в исходном изображении:

Mat3b superpixel_in_img;
img.copyTo(superpixel_in_img, superpixel_mask);

Затем вы можете вычислить любую статистику, которая вам нужна.

Вот полный код для справки:

#include <opencv2/opencv.hpp>
#include "slic.h"
int main()
{
// Load an image
Mat3b img = imread("path_to_image");

// Set the maximum number of superpixels
UINT n_of_superpixels = 200;
SLIC slic;

// Compute the superpixels
slic.GenerateSuperpixels(img, n_of_superpixels);

// Visualize superpixels
//Mat3b res = slic.GetImgWithContours(Scalar(0,0,255));

// Get the labels
Mat1i labelImg(img.rows, img.cols, slic.GetLabel());

// Get the actual number of labels
// may be less that n_of_superpixels
double max_dlabel;
minMaxLoc(labelImg, NULL, &max_dlabel);
int max_label = int(max_dlabel);

// Iterate over each label
for (int label = 0; label <= max_label; ++label)
{
// Mask for each label
Mat1b superpixel_mask = labelImg == label;

// Superpixel in original image
Mat3b superpixel_in_img;
img.copyTo(superpixel_in_img, superpixel_mask);

// Now you have the binary mask of each superpixel: superpixel_mask
// and the superpixel in the original image: superpixel_in_img
}

return 0;
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]