【发布时间】:2019-07-24 08:51:21
【问题描述】:
根据 MATLAB 测量每个超像素的平均颜色的帮助,我将图像分割为 200 个超像素,并尝试将输出图像中每个像素的颜色设置为超像素区域的平均 CIELAB 颜色。 输入图如下:
B=imread('H.jpg');
A=rgb2lab(B); // conversion from rgb to lab
[L,N] = superpixels(A,200);
figure
BW = boundarymask(L);
imshow(imoverlay(A,BW,'cyan'),'InitialMagnification',67);
outputImage = zeros(size(A),'like',A);
idx = label2idx(L);
numRows = size(A,1);
numCols = size(A,2);
for labelVal = 1:N
redIdx = idx{labelVal};
greenIdx = idx{labelVal}+numRows*numCols;
blueIdx = idx{labelVal}+2*numRows*numCols;
outputImage(redIdx) = mean(A(redIdx));
outputImage(greenIdx) = mean(A(greenIdx));
outputImage(blueIdx) = mean(A(blueIdx));
end
figure
imshow(outputImage,'InitialMagnification',67);
我不确定此代码的输出是否正确地为我提供了 CIELAB 颜色空间中每个超像素的正确平均颜色。与 RGB 颜色空间相比,图像是否具有如此不同的颜色或代码不正确?在CIELAB颜色空间的通道平均颜色测量中,代码有问题吗?
【问题讨论】:
-
我在 MATLAB 2018 中编写代码。
-
我使用 MATLAB help.RGB 有 3 个通道,确定平均颜色是在每个通道内完成的。但是由于 CIELAB 颜色空间的特性,我不知道如何测量图像从 RGB 到 CIELAB 颜色空间转换后的每个超像素的平均颜色?
-
图片在蓝色链接中。
-
@CrisLuengo,请让我知道您对代码和图像的评论。谢谢
标签: image matlab image-processing image-segmentation