计算图像中彩色像素的数量

时间:2015-08-06 08:45:10

标签: matlab

我有一张蓝花楹树(jpeg)的图像,我想用matlab计算这个图像中'紫色'像素的数量。

1 个答案:

答案 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(:))

*如果你要求灰色维基百科页面会令人困惑