Image processing opencv中叶状形状检测的优化方法

Image processing opencv中叶状形状检测的优化方法,image-processing,opencv,computer-vision,Image Processing,Opencv,Computer Vision,我开始在我正在从事的一个项目中使用OpenCV。 为了这个项目,我在盆里种植植物。不同发育阶段的静态照片从上面拍摄(见下图) 目标是检测并最终测量不同发育阶段生长植物的叶子(即大小)。 我尝试了一种使用Canny边缘检测的简单方法,但是效果不太好(参见下图),因为它还检测土壤中的小边缘(无论我使用何种阈值) 我认为更好的方法是首先根据颜色分割图像,然后使用一些边缘检测算法来检测树叶。 有更好的方法吗 叶片结构是事先知道的。我可以使用机器学习/分类算法来获得更好的结果吗 我也没有想过如何测量树

我开始在我正在从事的一个项目中使用OpenCV。
为了这个项目,我在盆里种植植物。不同发育阶段的静态照片从上面拍摄(见下图)

目标是检测并最终测量不同发育阶段生长植物的叶子(即大小)。
我尝试了一种使用Canny边缘检测的简单方法,但是效果不太好(参见下图),因为它还检测土壤中的小边缘(无论我使用何种阈值)

我认为更好的方法是首先根据颜色分割图像,然后使用一些边缘检测算法来检测树叶。
有更好的方法吗

叶片结构是事先知道的。我可以使用机器学习/分类算法来获得更好的结果吗

我也没有想过如何测量树叶的大小?是否存在测量尺寸和其他描述符的通用模式?(图片中可能有一个已知大小的参考对象?)

最后,我还要在一定程度上处理遮挡问题。这在图片中不可见,但在后期的开发阶段,我可能不得不处理重叠的叶子。 有什么办法可以解决这个问题吗

我不能将图片偏向我自己的方向(即遮光土壤等),因为可能有成千上万的植物需要加工

总结我的问题:

  • 检测土壤中树叶的最佳方法是什么(见图)
  • 机器学习算法能改进检测吗
  • 我如何测量树叶的大小
  • 如何处理遮挡/重叠叶片
我真的很感谢你给我一些建议或想法

更新(基于Jeff7评论):

我首先用泛光填充算法运行了均值漂移颜色分割,最后得到了这张图片:

现在,当我在该图片上运行canny edge detection+findcontours时,结果要好得多:


由于你对拍摄图像的条件有很大的控制权,因此偏见对你有利。当你想拍摄图像时,用黑卡制作一个面具,放在植物根部周围。您的问题归结为在黑色背景下发现绿色像素。由于您还可以控制相机的位置而不是工厂的位置,因此您应该能够安排一些事项,以便像素/毫米比率在您的一系列图像中保持不变。叶面积则是一个简单的计数像素的问题

这还不能解决遮挡问题。你可以再拍两张照片,在两个正交平面上观察植物的高度(同样使用黑色背景),了解植物的形状

评论后编辑

好吧,你们的问题包括“为了这个项目,我在一个罐子里种植一种特定的植物”,现在你们想要处理成千上万的该死的东西。我仍在寻求使形象偏向于你的可能性。例如,如果您发布的图像背景中没有绿色塑料,那么您可能会有一张图片,通过在图像的绿色通道上进行简单的阈值分割,可以以很高的精度进行分离。因此,去除绿色背景,在成像前浇灌土壤,以增加其黑度

至于遮挡的问题,你需要比我最初的建议更聪明的方法来处理成千上万的植物。也许你可以在每个阶段牺牲一些植物,测量“从头顶直接观察到的叶面积”,然后撕下叶,将它们分别排列在一张黑卡上,并得出总面积和可观察面积之间的经验关系

进一步编辑

好的,所以你不能偏向你喜欢的场景。你有没有想过用相机上的滤镜只允许绿灯进入?或使绿色对象比非绿色对象更亮的照明?这件事我没主意了

最终编辑

我已经没有主意了。我认为你最初的方法,用颜色区分树叶和背景,是很好的。由于您知道树叶的结构,您可以尝试模板匹配,但是您可以通过计算像素来估计面积和长度(或面积和长度的差异)。您可能需要研究形态学操作(例如骨骼化),以便从图像中导出形状度量。你可以在有关树叶遥感(等)的文献中找到有用的资料


我得到的印象是,你在思想上致力于实现一个计算机视觉系统的目标,你的目标实际上是监控工厂的发展,你的一些想法(例如边缘检测、机器学习)不要为实现正确的目标做出任何贡献。

看看均值偏移颜色分割(示例目录中有一个OpenCV附带的示例)。您可以使用它将图像分为两类(植物和土壤),并使用它们进一步处理数据

至于测量,您可能希望在开始时忽略遮挡效果和相机校准,而只查看图像中植物类区域的一部分


如果你想开始测量单个叶子,你可以采取一种“跟踪”的方法,你可以使用图像中的时间信息和空间信息。时间信息可以是前一图像中叶子的位置和大小。可能有很多技术可以应用,但如果我是你,我会从简单开始,看看它能让你走多远

PlantCV指出,你越是