![]() |
OpenCV 4.12.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 | 每个维度中直方图 bin 边界的数组(参见 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 | 可选操作掩码。 |