这篇博客我们学习直方图反向投影。
一、主要内容
1.1 概述
反向投影是一种记录给定图像中的像素点如何适应直方图模型像素分布的方式,简单来讲,反向投影就是首先计算某一特征的直方图模型,然后使用模型去寻找图像中存在的特征。反向投影在某一位置的值就是原图对应位置像素值在原图像中的总数目。
1.2 一般步骤
反向投影是将特征“反映”到图像上,对于物体特征识别和分割有着很大的作用。
进行反向投影的一般步骤:
1、获取直方图的源,比如我们要对手进行反向投影,那么直方图的源就是肤色的ROI
2、获取需要反向投影的图像
3、计算直方图,通常是在HSV模型中计算,毕竟反向投影的一大工作就是区分颜色
4、反向投影
5、显示
二、API函数
2.1函数原型
void cv::calcBackProject ( const Mat * images,
int nimages,
const int * channels,
InputArray hist,
OutputArray backProject,
const float ** ranges,
double scale = 1,
bool uniform = true
)
参数解释:
const Mat* images:输入图像,图像深度必须位CV_8U,CV_16U或CV_32F中的一种,尺寸相同,每一幅图像都可以有任意的通道数
int nimages:输入图像的数量
const int* channels:用于计算反向投影的通道列表,通道数必须与直方图维度相匹配,第一个数组的通道是从0到image[0].channels()-1,第二个数组通道从图像image[0].channels()到image[0].channels()+image