搭建图像搜索引擎(之一):定义你的图像描述子

本文翻译自:http://www.pyimagesearch.com/2014/02/03/building-an-image-search-engine-defining-your-image-descriptor-step-1-of-4/


之前我们已经讲述了如何从头到尾搭建“一个令人敬畏的指环王图片搜索引擎”,其乐趣无穷,并且学到了许多:我们懂得了如何使用OpenCV里的图像描述子,更重要的是从实际的代码出发,明白一个图片搜索引擎是如何搭建起来的。

下面,让我们迈出踏实的第一步吧。

先来回顾图像搜索引擎的4步:

    1.定义图像描述子:要使用哪种描述子?要描述图像的哪些方面?

    2.索引数据集:用描述子表示数据集里的每个图像。

    3.定义相似性度量:如何确定两幅图像是否相似?

    4.搜索:实际搜索是如何执行的呢?这些查询请求是如何提交到搜索引擎的呢?

上篇博文只是“活动关节,写写代码”类型的文章,接下来的文章更显水平。如果你只是想知道如何搭建一个图像搜索引擎,你只需知道这4步。

这篇博文主要是介绍第一步:定义图像描述子。


定义图像描述子

指环王图片搜索引擎中,我们用三维的图像直方图来表示每幅图像的特征。这是全局图像描述子一种应用于整幅图像的OpenCV图像描述子。对于我们的数据集来说,这是一个不错的选择。我们所利用的电影里的每个场景都有各自相对不同的颜色分布,所以才能使得每个颜色直方图更容易返回相应的结果。

当然,颜色直方图并不是唯一的描述子,我们还能利用其它方法描述图像里的对象的纹理和形状。看看有哪些。

颜色

总所周知,颜色是描述图像的最基本方面,也是计算最简单的。我们可以使用每个通道内像素强度的均值、标准差、梯度来表示图像颜色特征,也可以使用之前描述的颜色直方图来表示。它是一种应用于整幅图像的全局描述子。使用简单的颜色方法的好处之一是我们可以很容易获取图像大小(尺度)和方向(图像旋转)不变性。

这怎么可能?

那么,首先看看《侏罗纪公园》里的霸王龙图像在不同尺度和方向提取出来的直方图结果。

Figure 1: No matter how we rotate and scale the T-Rex image, we still have the same histogram.

Figure 1: 无论尺度和方向变化如何,直方图都是一样的.

如图所示,我们用了不同的角度和比例因子旋转和缩放了图像,x轴是bin的数量,y轴是每个bin中图像像素的百分比。

每种情况下的直方图是相同的,也就证明了颜色直方图不会因尺度和旋转而变化。

图像描述子的旋转和尺度不变形也是图片搜索引擎的理想特性。如果用户向我们的图片搜索引擎请求查询,不论查询图像的大小和旋转角度,我们都得找到相似的图像。当一个描述子能如此鲁棒以至于能应对像旋转和尺度这样的变化的时候,我们称之为不变性(不是因为它不能改变),因为它的描述子具有如尺度和旋转的不变性。

纹理

纹理在于对图像的感觉、外观和整体触觉质量建立模型,但不是那么容易呈现。例如,改怎么用描述子表示一张霸王龙图的粗糙程度?

大多数尝试建立纹理模型的方法用于检测灰度图像而不是彩色图像。如果我们使用灰度图像,我们很容易获得一个N*N的像素密度矩阵。通过检查这些像素对,可以建立这些像素对在X像素条件下的频率(概率)密度分布。 这种类型的分布叫做灰度共生矩阵(GLCM)。
一旦有了GLCM,我们可以计算统计数据,像对比度、相关性和熵等等。其他的纹理描述子包括灰度图像的傅里叶变换和小波变换,以及变换后的系数检查。
最后,更为流行的纹理特征描述子之一是方向梯度直方图(Histogram of Oriented Gradients, HOG),已经完全用于检查图像里的人。

形状

说到形状,我不是指图像呈现的NumPy数组的形状(尺寸,或者说高度和宽度),而是说图像里特定对象的形状。当使用形状描述子,第一步通常是运用分割或者边缘检测技术来让我们更关注我们所想要描述形状的轮廓。然后,一旦获得了轮廓,就可以再次用统计矩来表示形状。
下面看看皮卡丘的例子。
Figure 2: The image on the left is not suited for shape description. We first need to either perform edge detection (middle) or examine the countered, masked region (right).
Figure 2: 左图不适合形状描述。需要边缘检测(中间)或者检测相反的、取出模块的区域(右)。
左图是幅皮卡丘的全彩色图像,通常情况先我们不用这种类型的图像进行形状描述。我们将它转换到灰度图像,再来使用边缘检测(中间),或者使用皮卡丘的模(即我们想描述的相关部分)。
OpenCV提供了Hu矩(Hu Moments)的方法,被广泛作为一种简单的形状描述子。
后续文章中,我将展示用更多的形状描述子描述图像里对象的形状。

小结

本文中我们讨论了搭建图片搜索引擎的第一步,选择图像描述子。我们需要检测数据集并决定描述图像的哪一方面:颜色分布?纹理特征?还是形状?或许,我们三个都要。
选择描述子只是第一步,下次我们将探讨如何用这些描述子描述图像数据集里的每一幅图像。


Downloads:


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值