【发布时间】:2011-11-04 00:06:53
【问题描述】:
我想计算图像中每种颜色标识的对象数量。
示例:我想计算图像中的黄米或绿米。
你能给我一些建议吗?
【问题讨论】:
标签: matlab image-processing computer-vision
我想计算图像中每种颜色标识的对象数量。
示例:我想计算图像中的黄米或绿米。
你能给我一些建议吗?
【问题讨论】:
标签: matlab image-processing computer-vision
您已从 MATLAB 的 Image Processing Toolbox 随附的 rice demonstration 中获取此图像。如果您通读演示,您已经有了一些代码可以单独隔离每个米粒 - 这就是创建图像的方式。
至于计算具有特定颜色(例如黄色或绿色)的谷物数量,请再次阅读演示:很明显,米粒不是用黄色或绿色(或橙色或粉红色)。相反,米粒颜色是专门创建的,因此它们在整个颜色图中等距分布spring。
因此,要继续您的任务,您将不得不提供一些“黄色”或“绿色”的定义,也许是在特定的 RGB 值范围内。
完成此操作后,您可以将变量labeled(在演示中为您构建)与regionprops 命令一起使用,为您提供每个米粒边界内的像素列表。只需将这些像素与您对黄色或绿色的定义进行比较,就可以了。
【讨论】:
假设您在矩阵a(大小为m*n*3)中有一个图像,并且您想要找到颜色为[r,g,b] 的对象的数量。
首先,只选择颜色正确的像素:
bb = (a(:,:,1) == r & a(:,:,2) == g &a(:,:,3) == b);
比:
[~,num] = bwlabel(bb,8)
num 是对象的数量。
【讨论】:
最好在与 RGB 不同的色彩空间中工作(想想 HSV、Lab*、..)。
Steve Eddins 发表了一系列文章,展示了如何从图像中分割特定颜色的对象(在他的案例中为绿色 M&M):
【讨论】: