如何计算图像中的数字对象在Matlab中按颜色标识

时间:2011-11-03 03:03:37

标签: matlab image-processing computer-vision

我想按照每种颜色计算图像中的对象数。

示例:我想在图像中计算黄色米粒或绿色米粒。

enter image description here

请你给我一些提示吗?

3 个答案:

答案 0 :(得分:3)

您已从MATLAB rice demonstration附带的Image Processing Toolbox中获取此图像。如果您通读了演示,那么您已经有了一些代码可以单独隔离每个米粒 - 这就是图像的创建方式。

至于计算具有特定颜色的颗粒的数量,例如黄色或绿色,再次通过演示阅读:很明显,米粒没有用一小组离散颜色(如黄色或绿色)着色(或橙色或粉红色)。相反,米粒颜色是专门创建的,因此它们在整个色图spring中间距相等。

因此,为了继续你的任务,你将不得不提供一些“黄色”或“绿色”的定义,可能是在特定的RGB值范围内。

完成此操作后,您可以使用变量labeled(在演示中为您构建)和regionprops命令,为您提供每个变量中的像素列表稻米边界。只需将这些像素与您的黄色或绿色定义进行比较,就可以了。

答案 1 :(得分:0)

假设您有一个矩阵a(大小为m*n*3)的图片,并且您想要找到颜色为[r,g,b]的对象数。

首先,仅选择具有正确颜色的像素:

bb = (a(:,:,1) == r & a(:,:,2) == g &a(:,:,3) == b);

比:

[~,num] = bwlabel(bb,8)

num是对象的数量。

答案 2 :(得分:0)

最好通过工作在不同于RGB的颜色空间(想想HSV,L a b *,..)。

Steve Eddins发布了一系列文章,展示了如何从图像中分割某种颜色的对象(在他的情况下为绿色M& Ms):

mms