我想按照每种颜色计算图像中的对象数。
示例:我想在图像中计算黄色米粒或绿色米粒。
请你给我一些提示吗?
答案 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):