OpenCV 4.11.0
开源计算机视觉
|
该方法由Michael J. Swain 和 Dana H. Ballard在其论文Indexing via color histograms中提出。
简单来说是什么呢?它用于图像分割或查找图像中感兴趣的对象。简单来说,它创建一个与输入图像大小相同(但只有一个通道)的图像,其中每个像素对应于该像素属于我们目标对象的概率。更简单地说,输出图像中我们感兴趣的对象会比其余部分更亮(白色)。好吧,这是一个直观的解释。(我无法再简化了)。直方图反投影与camshift算法等一起使用。
我们如何做到这一点?我们创建一个包含我们感兴趣的对象(在我们的例子中,是地面、离开的玩家和其他东西)的图像的直方图。为了获得更好的结果,对象应尽可能填充图像。并且,颜色直方图优于灰度直方图,因为对象的颜色比其灰度强度更能定义对象。然后,我们将此直方图“反投影”到我们需要查找对象的测试图像上,换句话说,我们计算每个像素属于地面的概率并显示它。对结果输出进行适当的阈值处理后,我们就能得到单独的地面。
我们使用以下函数:cv.calcBackProject (images, channels, hist, dst, ranges, scale)
images | 源数组。它们都应该具有相同的深度,cv.CV_8U、cv.CV_16U 或 cv.CV_32F,以及相同的大小。它们中的每一个都可以具有任意数量的通道。 |
channels | 用于计算反投影的通道列表。通道数必须与直方图维数匹配。 |
hist | 可以是密集型或稀疏型的输入直方图。 |
dst | 目标反投影数组,它是一个与images[0]大小和深度相同的单通道数组。 |
ranges | 每个维度中直方图仓边界数组(参见 cv.calcHist)。 |
scale | 可选的输出反投影比例因子。 |
cv.normalize (src, dst, alpha = 1, beta = 0, norm_type = cv.NORM_L2, dtype = -1, mask = new cv.Mat())
src | 输入数组。 |
dst | 与src大小相同的输出数组。 |
alpha | 归一化到的范数值,或范围归一化情况下的较低范围边界。 |
beta | 范围归一化情况下的上限边界;它不用于范数归一化。 |
norm_type | 归一化类型(参见 cv.NormTypes)。 |
dtype | 当为负数时,输出数组与src具有相同的类型;否则,它与src具有相同的通道数,并且深度 = CV_MAT_DEPTH(dtype)。 |
mask | 可选的操作掩码。 |