Указание значения каждого пикселя в суперпикселе - PullRequest
0 голосов
/ 13 февраля 2019

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

  L = superpixels(A, 200);
    K=regionprops(L, 'PixelIdxList');

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

K=regionprops(L, 'MeanIntensity')

Вопрос в том,как можно указать значения всех пикселей в суперпикселе?

1 Ответ

0 голосов
/ 14 февраля 2019

Синтаксис для получения списка всех значений пикселей в каждой метке: K = regionprops(L, A, 'PixelValues').Но это работает только для значения серого A.

Самое простое решение - выполнить итерации по каналам и вызвать вышеупомянутую функцию для каждого канала:

A = imread('~/tmp/boat.tiff'); % whatever RGB image
L = superpixels(A, 200);

n = size(A,3); % number of channels, typically 3
K = cell(max(L(:)),n);
for ii=1:n
   tmp = regionprops(L, A(:,:,ii), 'PixelValues');
   K(:,ii) = {tmp.PixelValues};
end

Теперь у нас естьмассив ячеек K, который содержит значения для каждого помеченного пикселя: K{lab,1} - это набор значений для пикселей, помеченных lab, для первого канала.

Следующий код объединяет компоненты каждого пикселяв один массив:

K2 = cell(size(K,1),1);
for ii=1:numel(K2)
   K2{ii} = [K{ii,:}];
end

Теперь K2 содержит массивы данных RGB: K{lab} - это матрица Nx3 со значениями RGB для каждого из N пикселей, помеченных lab.

...