0

我的应用程序将处理从相机获取的 12 位二进制图像。下面以 jpeg 显示相同的图像。

任务是识别每个白色发光区域。
这 4 个区域作为一组随机出现在每个图像中。可以假设 4 个白色区域总是一起从一个图像移动到另一个图像。与黑色或接近黑色的背景相比,每个点都将具有非常高的强度。每个点实际上不是一个像素,而是一个 14 x 14 的 ROI。图像的高度也是200像素。
每个白色区域之间的距离始终是固定的。

如果我申请 CVMinMaxLoc(); 我只会得到一个最亮的位置。

如何识别每个区域?

在此处输入图像描述

4

1 回答 1

1

您可以执行以下操作:

  1. 用于threshold()获得每个白色区域至少有一个白点的黑白图像。

  2. 在阈值图像上:应用minMaxLoc()以获取第一个白色区域,然后通过floodFill()将其涂黑来消除该白色区域。

  3. 重复步骤 2,直到获得所有白色区域。(您将找到每个白色连接的组件一次,因为您将每个组件都涂成黑色。)

如果您的白色区域在之后没有连接threshold(),您可以使用dilate()使它们连接。

如果要检测白色区域的中心,也可以erode()在步骤 1 之后使用。

于 2012-11-22T17:04:15.380 回答