我正在使用openCV和Python来制作一个计算机视觉应用程序,用于检测热像仪图像中的热点。
图像基本上是一个大型机器,我想获得图像中最热(就温度而言)的部分。
我到现在为止想到的:
- 使用颜色量化(和 K 均值)将颜色数减少到 8。
- 使用某种阈值并获取具有最多红色的集群(因为通常红色=更多热量)。
现在我已经成功地完成了第一部分。我有一个仅包含 8 种颜色的量化图像。
到目前为止,我所做的所有阈值都需要我自己放置颜色范围(即使用cv2.inRange
函数创建桅杆,然后使用cv2.bitwiseAND
将蒙版应用于图像)。但在这里,我希望它是动态的,这样它就会得到最热的部分,也就是说,即使红色很少,它也应该让我成为红色最多的区域。
那么有什么方法可以做到这一点呢?
(另外,这里的"热点"是指实际的热点。即具有最高温度的斑点。
编辑:正如Photon的评论所提到的,目前我正在计算红色的直方图并使用它来设置阈值。
我希望进一步优化这一点,所以如果存在更有效的方法,请告诉我。(这个过程应该很快。我可以在一定程度上在准确性上妥协)
为了动态估计阈值,您需要查看数据的分布。 为此,您需要计算红色的直方图。然后,找到一个阈值,使一定百分比的像素低于该阈值。 例如 90%。