如果我们已经知道图像中某个物体的大致位置,就可以用概率分布图找到物体的准确位置。窗口中概率最大的位置就是物体最可能出现的位置。因此,我们可以从一个初始位置开始,在周围反复移动以提高局部匹配概率,也许就能找到物体的准确位置。这个实现方法称为均值平移算法。
采用 HSV 色彩空间的色调通道来描述物体。这意味着需要把图像转换成 HSV 色彩空间并提取色调通道,然后计算指定 ROI 的一维色调直方图:
// 读取参考图像
cv::Mat image= cv::imread("baboon01.jpg");
// 狒狒脸部的 ROI
cv::Rect rect(110, 45, 35, 45);
cv::Mat imageROI= image(rect);
// 得到狒狒脸部的直方图
int minSat=65;
ColorHistogram hc;
cv::Mat colorhist= hc.getHueHistogram(imageROI,minSat);
我们在 ColorHistogram 类中增加了一个简便的方法来获得色调直方图: