检测图像

时间:2016-04-01 17:51:26

标签: java image-processing

我有一些图片列表。它们总是只包含生长的物体。例如:

image01:

enter image description here

image 01 + n:

enter image description here

image 01 + n + n:

enter image description here

图像01 + n + n + n:

enter image description here

我想得到什么? (这是第三张照片,但经过修改)

enter image description here

如果两个(或更多)对象合并,我想获得合并的中心点(红点),以及从这一点到背景的两条线。

我今天已经尝试过解决这个问题。我认为这不是那么难,但不幸的是它似乎并不那么容易。

我试过了:

1)对于每张图片,使所有对象变黑

2)获取每张照片上的所有物体。获取每个对象的中心。

3)检查每个图像是否在一个对象上是前一个图像的多边形的多个中心。如果是这种情况,则合并两个对象。

4)如果检测到合并,则取前一帧的两个合并对象的中心。在当前帧上使用A *算法连接它们。现在搜索前一帧上为白色的像素。这是“合并点”。

5)现在尝试获取两个最近的白点并用它们绘制“断行”(最后一张图像上的蓝线)。

不幸的是,这似乎并不那么容易,编程也很难。可能已经实现的算法(java)可以更容易地完成这项工作?我实现了我描述的所有内容(快速和肮脏),但它很慢而且有问题。有些东西不起作用,很难调试它。但我认为应该有一个更容易的解决方案。

1 个答案:

答案 0 :(得分:2)

所以你的问题是软件开发和算法开发。

因为你说越野车越来越慢:因为我现在不关心它,它必须工作;但是这个小车是一个问题(软件开发)。

第3部分基本上是正确的:你在当前帧中获取一个对象,如果它在前一帧中包含两个对象则是合并。

您的连线中心理念不正确,因为中心可以在任何地方,线路不会通过连接区域。

检查前一帧中当前帧中发生的变化:这将是前两个对象的一个​​圈。检查最接近两个先前对象的增长(此hallo的一部分)。这是一个对象的增长,并检查增长的哪个部分接近第二个对象;反之亦然。这将为您提供合并区域。

这是一个完整的项目。