用JavaScript识别红球在图像中的位置?

won*_*ng2 5 javascript canvas image-processing html5-canvas

说我有这个图像:

在此输入图像描述

我想知道图像中红球的位置,我可以测量前方球的大小(以像素为单位).

我知道我可以将图像绘制到画布上,然后我可以获得像素颜色数据context.getImageData,但那我该怎么办?我应该使用哪种算法?我是图像处理的新手,非常感谢.

sni*_*ies 0

好吧,我会去聚类该颜色的像素。例如,您可以有一个查找表,其中存储红色(或在阈值范围内)像素(坐标是查找键),并且每当您遇到没有任何已知红色邻居的像素时,都会将整数值作为簇 ID它启动一个新的簇,所有其他红色像素都获得它们相邻的红色像素的簇 ID。取决于你的算法内核:

   A) XXX      B)  X
      XOX         XOX
      XXX          X 
Run Code Online (Sandbox Code Playgroud)

您可能需要处理(情况 B)连接两个先前未连接的簇的像素。您必须替换其中一个集群的集群 ID。

之后你就有了像素簇。这些你可以分析一下。如果是圆形,我会查找每个簇的 x 和 y 的中值,并检查该簇的所有像素是否都在半径内。

如果红球(或其一部分)位于另一个红色物体的前面,则此操作将会失败。您将需要更复杂的算法。