本文翻譯自: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: 無論尺度和方向變化如何,直方圖都是一樣的.
如圖所示,我們用了不同的角度和比例因子旋轉和縮放了圖像,x軸是bin的數量,y軸是每個bin中圖像像素的百分比。
每種情況下的直方圖是相同的,也就證明了顏色直方圖不會因尺度和旋轉而變化。
圖像描述子的旋轉和尺度不變形也是圖片搜索引擎的理想特性。如果用戶向我們的圖片搜索引擎請求查詢,不論查詢圖像的大小和旋轉角度,我們都得找到相似的圖像。當一個描述子能如此魯棒以至於能應對像旋轉和尺度這樣的變化的時候,我們稱之爲不變性(不是因爲它不能改變),因爲它的描述子具有如尺度和旋轉的不變性。
紋理
紋理在於對圖像的感覺、外觀和整體觸覺質量建立模型,但不是那麼容易呈現。例如,改怎麼用描述子表示一張霸王龍圖的粗糙程度?