识别照片上每块石头的边界

Recognize borders of each stone on the photo

我的问题:如何识别下图中每块石头的边界?尺寸计算将是一件容易的事。

首先我必须告诉你,我是图像识别的新手,我会感谢任何:

所以..

我有一张带有小石头的图片。我必须测量它们的大小(以像素为单位)。

我已经玩过任何像素的 RGB 值,高亮像素 RGB 值介于我定义的常量之间。我不喜欢有些石头是粘在一起的,有些边界比它应该的更宽。

for (y=0; y<height; y++,pixelIndex = width*y<<2)
    for (x=0; x<width; x++,pixelIndex+=4)
        if (pixelsData[pixelIndex  ]>self.minRedSlider.integerValue && pixelsData[pixelIndex  ]<self.maxRedSlider.integerValue &&
            pixelsData[pixelIndex+1]>self.minGreenSlider.integerValue && pixelsData[pixelIndex+1]<self.maxGreenSlider.integerValue &&
            pixelsData[pixelIndex+2]>self.minBlueSlider.integerValue && pixelsData[pixelIndex+2]<self.maxBlueSlider.integerValue) {
            resultData[pixelIndex] = 255;
            resultData[pixelIndex+1] = 255;
            resultData[pixelIndex+2] = 255;
        } else {
            resultData[pixelIndex] = 0;
            resultData[pixelIndex+1] = 0;
            resultData[pixelIndex+2] = 0;
        }

这是我的测试应用目前的样子:

PS: 我知道我的问题很模糊,但我必须开始,找不到或猜测一个合适的方向。无论如何,感谢您已经花在上面的时间。

您不能仅仅使用 RGB 值来查找对象(超像素)。您尝试做的事情称为分水岭分割。我建议使用 OpenCV 库,他们给出了一个类似于您的案例的示例 HERE

另外,github上有很多算法实现。