上面中有以下几点值得说明:
1,在作彩色图像直方图的反向映射时,一般需要对图像颜色进行降维。
2,OpenCV中提供的函数clacBackProject用于计算直方图的反向映射,其参数和计算直方图的参数大体相同。
3,threshold是一个阈值化的函数。
二、图像相似性的比较
图像相似性比较是比上面直方图映射更加实用且普通的例子,前段时间淘宝或百度推出类似搜图的功能都离不开图像相似性判断这个话题,当然本文这里面不可能去深入探讨那些解决方案的实现,只是利用OpenCV中的例程来简单的实现图片的匹配。 下面我们来计算两幅图像之间的相似度:我们以左边一幅图像作为参考图像,是没有车辆停放时的图像,右边两幅跟左边比较计算相似性。中间一幅是有车辆停放时,右边一幅是另一个时刻没有车辆停放时。
这个例子实际可以应用在停车位上车辆检测上面:
int main() { Mat refImg=imread("../ref.png"); Mat image1=imread("../image1.png"); Mat image2=imread("../image2.png"); ColorHistogram imgHist; //图像颜色降维 refImg=imgHist.colorReduce(refImg,64); image1=imgHist.colorReduce(image1,64); image2=imgHist.colorReduce(image2,64); MatND refH=imgHist.getHistogram(refImg); MatND hist1=imgHist.getHistogram(image1); MatND hist2=imgHist.getHistogram(image2); double dist1,dist2; dist1=compareHist(refH,hist1,