我们说我有像this one这样的球的形象:
我想将球的颜色与颜色组分开。在这种情况下,我应该有2个主要颜色组 - "棕色"和"白色"。 "褐色"组将具有所有棕色像素和"白色"组将具有所有白色像素。 我使用matlab完成这项任务。我想做的方式是:
scatter
来查看是否可以清楚地看到某些群组,但我没有。 答案 0 :(得分:0)
此任务称为细分,在您的情况下,每种颜色都是细分,细分并不总是连续的。
搜索Matlab的分段示例应该会产生很多代码示例和定理。
注意一件事,没有基本事实解决方案,你不能说每个图像有多少段,因为它是主观问题。在一般情况下,您可以对颜色值运行聚类算法,这会将图像分解为颜色段,有一些算法可以自动找到组的数量 - 这可以是图像中颜色组数量的良好开端。
快速搜索产生了这些作品,他们可以为您提供想法:
答案 1 :(得分:0)
虽然图像分割是处理分色的正确方法,但如果你的图像很简单,你可以试着用它来做暴力。
此处,转换为HSV会更容易处理图像。
对于图像的白色部分:
I=imread('ball.jpg');
H=rgb2hsv(I);
% separate dimensions
h=H(:,:,1);
s=H(:,:,2);
v=H(:,:,3);
% color conditions
v(v<0.8 | s>0.7 | h>0.7 )=NaN;
h(isnan(v))=NaN;
s(isnan(v))=NaN;
% convert image back
W=cat(3,h,s,v);
White_image=hsv2rgb(W);
figure; imagesc(White_image);
对于棕色部分:
% separate dimensions
h=H(:,:,1);
s=H(:,:,2);
v=H(:,:,3);
% color conditions
v(s<0.6 | v>0.8 )=NaN;
h(isnan(v))=NaN;
s(isnan(v))=NaN;
% convert image back
B=cat(3,h,s,v);
Brown_image=hsv2rgb(B);
figure; imagesc(Brown_image); axis off