我有一张蓝花楹树(jpeg)的图像,我想用matlab计算这个图像中'紫色'像素的数量。
答案 0 :(得分:3)
关于这个问题的难点是 - > 你如何定义紫色?
在回答之前,请介绍HSV color space。 在这个颜色空间中,与RGB不同,有一个描述颜色的值,而其他颜色是饱和度和“亮”(有关HSV的更多信息,请参阅维基百科或my answer here)。这意味着只要看一下H就可以知道哪种颜色了。我们要做的第一件事就是把我们的形象放在HSV中。
hsv_image = rgb2hsv(rgb_image)
现在我们需要知道H的哪些值是“紫色”。我们可以看到紫色为in this SO answer的粗略近似值,其中它在大约300度的色调中被识别出来。相反,如果我们对Shades of purple *的维基百科页面有所了解。在那里,我们可以看到列出的紫色阴影大约是270-320 Hue值。
如果我们喜欢这种近似,那么我们可以选择具有该H量的图像的像素
H=hsv_image(:,:,1);
然后只选择所需范围内的那些
purple=H<320 && H> 270;
或者只是一次性
purple=hsv_image(:,:,1)<320 && hsv_image(:,:,1)> 270;
然后我们只需要数数。
N_purple=sum(purple(:))
*如果你要求灰色维基百科页面会令人困惑