指定超像素中每个像素的值
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 值
我可以为图像指定超像素及其属性。
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
.