【问题标题】:How does Histogram Backprojection in numpy work?numpy 中的直方图反投影如何工作?
【发布时间】:2020-11-22 19:38:18
【问题描述】:

我是这个平台的新手,也是计算机视觉世界的新手。我正在做一个项目,我使用直方图 BackProjection 来检测有色物体。有两种方法可以实现此方法,使用 numpy 或内置函数形式的 opencv (cv2.calcBackProject)。但是,我真的很想使用 numpy 版本,因为它可以更好地理解发生了什么。 numpy的实现代码如下:

1 import cv2
2 import numpy as np
3 import matplotlib.pyplot as plt
4 #roi is the object or region of object we need to find
5 roi = cv2.imread('D:/downloads/messi_ground.jpg')
6 hsv = cv2.cvtColor(roi,cv2.COLOR_BGR2HSV)
7 #target is the image we search in
8 target = cv2.imread('D:/downloads/messi.jpg')
9 hsvt = cv2.cvtColor(target,cv2.COLOR_BGR2HSV)
10 # Find the histograms using calcHist.
11 M = cv2.calcHist([hsv],[0, 1], None, [180, 256], [0, 180, 0, 256] )
12 I = cv2.calcHist([hsvt],[0, 1], None, [180, 256], [0, 180, 0, 256] )

13 R = M/I
14 h,s,v = cv2.split(hsvt)

15 B = R[h.ravel(),s.ravel()
16 B = np.minimum(B,1)
17 B = B.reshape(hsvt.shape[:2])

该算法在目标图像中找到与模型直方图中相似的像素(在我的例子中是 roi 的直方图,M)

所以我的问题是:

  • 当一个直方图除以另一个(第 13 行)时会发生什么?
  • 如何使用 h,s 通道反投影生成的直方图(在本例中为第 13 行的 R) 目标图像?换句话说,第 15 行如何反向投影 Resulted R 直方图?
  • 第 16 行假设在 0 和 1 之间输入数字,以便将像素值视为属于模型直方图的概率。但是,我跳过了它并得到了相同的结果,那么算法为什么要使用它呢?

不幸的是,解释这种方法的论文非常抽象,并没有明确算法的功能(论文:通过颜色直方图进行索引) 我知道这个网站可以帮助解决直接的编程问题。不过我觉得应该也有助于理解一些编程相关的操作。

【问题讨论】:

  • @rayryeng 如果您能提供帮助将不胜感激:)

标签: python numpy opencv image-processing numpy-ndarray


【解决方案1】:

paper- Indexing via color histograms 中,作者 Michael J. Swain 和 Dana H. Ballard 关注 - 目标对象图像中的颜色是什么以及在哪里?

首先我们计算一个特征的直方图模型,然后用它在目标图像中找到这个特征。

第 11-12 行正在计算不同于正常直方图的二维直方图。二维直方图计算强度组合的出现次数。

我们想在 I 和 M 中找到相似之处。在第 13 行中,当我们将 M 除以 I 时,只有当 M 和 I 元素(像素)都为非零。否则,它们将为零或楠。这些非零像素区域可能有我们的目标对象。现在我们使用目标图像像素的色调 (H) 和饱和度 (S) 值(在第 14 行中提取)找到目标图像中与这些非零像素对应的像素

第 15 行使用 h & s 过滤掉这些非零值。 Nan 值被简单地拒绝,并且零值无论如何都是黑色的。它只是一个类似于阈值的过滤操作 - 这就是为什么使用 ravel 扁平化数组的原因。

跳过第 16 行可能适用于您的情况,这可能是因为您的 roi 将包含一种 R/G/B 颜色,其值接近比例的高端,即在 0-1 比例上接近 1,在 0- 比例上接近 255 255 规模。所以用一个较小的数字除以这个大数字就可以保持它已经

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-24
    • 1970-01-01
    • 2011-08-27
    • 2021-05-02
    • 1970-01-01
    • 2019-01-18
    • 2017-03-31
    • 1970-01-01
    相关资源
    最近更新 更多