OpenCV 4.10.0
开源计算机视觉
|
由Michael J. Swain,Dana H. Ballard在其论文通过颜色直方图编制索引中提出。
用简单的语言来说它实际上是什么?它用于图像分割或在图像中寻找感兴趣的对象。简而言之,它创建了一幅与输入图像大小相同(但单通道)的图像,其中每个像素对应于该像素属于我们对象的概率。用更简单的话来说,输出图像中,我们感兴趣的对象将比其他部分更白。当然,这是一个直观的解释。(我无法让它变得更简单)。直方图反投影与 CamShift 算法等结合使用。
我们如何做到这一点?我们创建一个包含我们感兴趣对象的图像的直方图(在我们的例子中,地面留给玩家和其他事物)。为了获得更好的结果,对象应尽可能填充图像。而且,彩色直方图优于灰度直方图,因为对象的彩色比其灰度强度更能定义对象。然后,我们将此直方图“反投影”到我们需要找到对象的测试图像上,换句话说,我们计算每个像素属于地面的概率并显示它。在适当的阈值化上产生的输出结果只有地面。
我们使用这些函数:cv.calcBackProject(图像,通道,直方图,目标,范围,比例)
图像 | 源阵列。它们都应具有相同的深度,cv.CV_8U,cv.CV_16U 或 cv.CV_32F,并且大小相同。它们每个人都可以有任意数量的通道。 |
通道 | 用于计算反投影的通道列表。通道的数量必须与直方图维数相匹配。 |
直方图 | 输入直方图,可以是稠密的或稀疏的。 |
目标 | 目标反投影阵列,它是与 images[0] 相同大小和深度但单通道的阵列。 |
范围 | 每个维度的直方图箱界限的阵列(参见 cv.calcHist)。 |
比例 | 输出反投影的可选比例因子。 |
cv.normalize (src, dst, alpha = 1, beta = 0, norm_type = cv.NORM_L2, dtype = -1, mask = new cv.Mat())
src | 输入数组。 |
目标 | 与 src 大小相同的输出数组。 |
alpha | 要标准化的范数值,或者在范围标准化中是下限范围。 |
beta | 在范围标准化中是上限范围;在范数标准化中不使用。 |
norm_type | 标准化类型(参见 cv.NormTypes)。 |
dtype | 为负值时,输出数组的类型与 src 相同;否则,输出数组的通道数与 src 相同,并且深度 = CV_MAT_DEPTH(dtype)。 |
mask | 可选的操作掩码。 |