基于颜色直方图的搜索

图片搜索是指将输入图片于目标图片库的图片进行一一匹配,得到与其相似的图片。当然图片搜索可以有多种方法,可以根据像素匹配或者图像特征匹配,在我做的应用中,是用颜色的直方图作为搜索和匹配依据,得到输入图片与其他图片的差距值,这个值体现了图片不同的颜色总体感觉。

图像像素值为0到255,因为是彩色,所以颜色点的种类数目是255的三次方,如果对每一个颜色点进行计算它在整张图片占的比重,不仅计算直方图的时候开销大,在匹配的时候计算量更是大得惊人。所以我们将这些颜色点进行压缩,255级像素缩放到约8级灰度,这样总的颜色点种类就只有600种左右,计算量大大减小。另外,在进行图像搜索的时候,计算每个图像的直方图还是一个比较耗时的程序,所以,我们的应用在没添加一张图片的时候就计算好它的直方图,然后把信息存到xml文件中,这样在进行搜索的时候就只需要从文件中取到数据。

OpenCV入门教程之五 图像直方图的应用

OpenCV中如何载入图像并且转换成灰度显示图像直方图

OpenCV 绘制直方图

OpenCV 数字图像灰度直方图

结果及分析

搜索结果还算比较理想,图像的直方图体现了图像颜色的大体特征,但是这种基于颜色直方图的搜索方法未能体现图像颜色位置上的搭配特征,所以搜索结果也难免有出入。

比如在1000张图片中搜索红色公车,搜索结果如下:

基于颜色直方图的搜索

从上图搜索结果可看到前9个最匹配的图片中有一个与我们期望有差距,这就是没有考虑颜色位置信息的结果。

再看搜索恐龙的结果:

基于颜色直方图的搜索

搜索恐龙的结果令人较满意。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/06aa7714652e27cd927bebe4d113b29a.html