Синтаксис для получения списка всех значений пикселей в каждой метке: 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
.