一些复杂的直方图方法
反向投影
反向投影是计算像素和直方图模型中像素吻合度的一种方法
(如果由肤色的直方图,就可以使用反向投影在图像中寻找肤色区域)
基础的反向投影:cv::calcBackProject()
如果一幅图像的区域中显示的是一种结构纹理或者一个独特的物体,那么这个区域的直方图可以看作一个概率函数,他给的是某个像素属于该纹理或物体的概率
实际上是将图像的256个灰度值置为很少的几个值了,具体有几个值,要看把0~255划分为多少个区间!反向投影中某点的值就是它对应的原图像中的点所在区间的灰度直方图值。所以,一个区间点越多,在反向投影矩阵中就越亮。
反向投影中的“反向”指的是从直方图值到反向投影矩阵映射的过程。
如果两幅图的反向投影矩阵相似或相同,那么我们就可以判定这两幅图这个特征是相同的
1、统计已知图像某个特征的色度直方图,通常用色度-饱和度(Hue-Saturation)来统计二维直方图,并把直方图表示为概率的形式。
2、选取测试图像,对于图像中的每一个像素,查看它的色度在已统计直方图上的概率,用这个概率来重建整张图像。
3、最后把重建出的图像归一化,会发现用于统计直方图的特征被突出出来。
(注意:这里测试图像用的反向投影直方图是从已知图像中给出)
之后计算相似性可以掩膜取特征突出的区域,对两个图分别求直方图的相似性(前一节内容)
模板匹配
通过cv::matchTemplate()进行模板匹配并不基于直方图,而是使用一个图像块在输入图像上滑动,应用以下匹配方法
方差匹配方法cv::TM_SQDIFF
归一化方差匹配方法cv::TM_SQDIFF_NORMED
相关性匹配方法cv::TM_CCORR
归一化的互相关匹配方法cv::TM_CCORR_NORMED
相关系数匹配方法cv::TM_CCOEFF
归一化的相关系数皮皮额方法cv::TM_CCOEFF_NORMED
使用cv::matchTemplate() 获得结果result后通过cv::minMaxLoc()或是cv::minMaxIdx()找到最优匹配出现位置
为避免随机性的结果:希望确保最优匹配的邻域也有不错的结果
PREVIOUSopencv直方图和模板
NEXTopencv轮廓