我可以为图像指定超像素及其属性。
L = superpixels(A, 200);
K=regionprops(L, 'PixelIdxList');
我知道每个超像素的平均强度值可以指定如下:
K=regionprops(L, 'MeanIntensity')
问题是如何指定超像素内所有像素的值?
我可以为图像指定超像素及其属性。
L = superpixels(A, 200);
K=regionprops(L, 'PixelIdxList');
我知道每个超像素的平均强度值可以指定如下:
K=regionprops(L, 'MeanIntensity')
问题是如何指定超像素内所有像素的值?
获取每个标签内所有像素值列表的语法是K = regionprops(L, A, 'PixelValues')
. 但这仅适用于 gray-value 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 矩阵,其中标记为 的 N 个像素中的每个像素都有 RGB 值lab
。