原文地址:
要理解直方图的反向投影,先要看下直方图反向投影矩阵的计算方法!
设有原灰度图像矩阵:
Image=
1 2 3 4
5 6 7 7
9 8 0 1
5 6 7 6
将灰度值划分为如下四个区间:
[0,2] [3,5] [6,7] [8,10]
很容易得到这个图像矩阵的直方图hist= 4 4 6 2
好,接下来计算反向投影矩阵:
反向投影矩阵的大小和原灰度图像矩阵的大小相同!
原图像中坐标为(0,0)的灰度值为1,1位于区间[0,2] 中,区间[0,2] 对应的直方图值为4,所以反向投影矩阵中中坐标为(0,0)的值记为4
按上面的计算方法,可以得到Image的直方图反向投影矩阵为:
back_Projection=
4 4 4 4
4 6 6 6
2 2 4 4
4 6 6 6
从上面的计算过程我们来理解直方图的反向投影到底代表什么?
我们看到,实际上是原图像的256个灰度值被置为很少的几个值了,具体有几个值,要看把0~255划分为多少个区间!反向投影矩阵中某点的值就是它对应的原图像中的点所在区间的灰度直方图值。所以我们可以看出,一个区间点越多,在反向投影矩阵中就越亮。
那么怎么理解反向投影矩阵中的“反向”二字呢?从这个过程可以看出,我们是先求出原图像的直方图,再由直方图得到反向投影矩阵,由直方图到反向投影矩阵实际上就是一个反向的过程,所以叫反向。
通过图像的反向投影矩阵,我们实际上把原图像简单化了,简单化的过程实际上就是提取出图像的某个特征。所以以后我们可以用这个特征来对比两幅图,如果两幅图的反向投影矩阵相似或相同,那么我们就可以判定这两幅图这个特征是相同的。那么怎么对比相似度呢?可以参看博文http://blog.youkuaiyun.com/wenhao_ir/article/details/51613038(这篇博文虽然是在对比H-S直方图,但H-S直方图也是一个矩阵,而非向量哦)
好原理就说到这里,下面上源码:
//OpenCV版本2.4.9
//交流QQ2487872782
2016-8-4日注:很报歉,此代码目前不能公开发表在博客上,已经删除,希望大家理解!
运行结果如下图所示