指定超像素中每个像素的值

Specifying value of each pixel in a superpixel

我可以为图像指定超像素及其属性。

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

我知道每个超像素的平均强度值可以指定如下:

K=regionprops(L, 'MeanIntensity')

问题是如何指定超像素内所有像素的值?

获取每个标签内所有像素值列表的语法是 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 矩阵,其中标记为 lab.

的 N 个像素中的每一个都有 RGB 值