1

我有一組274張的彩色圖像(每一個是200x150像素)。每幅圖像在視覺上都不同。我想建立一個應用程序,它接受一個基本圖像集合的上/下縮放版本,並確定最接近的匹配。圖像識別的起點?

我是高級軟件工程師,但我完全陌生的圖像識別。我真的很感激任何建議,從哪裏開始。

+2

使用OpenCV的。另見這裏:http://stackoverflow.com/questions/4196453/simple-and-fast-method-to-compare-images-for-similarity(可能重複) – wotanii

+0

如果你想自己做,你可以縮放更大的一個下降到較小的分辨率,並對顏色差異的平方進行求和? – jgroenen

+1

您希望查詢圖像與參考圖像有多相似?如果非常相似,這是相當微不足道的,爲所有圖像提取一個描述符並計算查詢和引用之間的距離。如果它們不太相似(例如重要的旋轉/平移/縮放/透視機會),這是一個更難的問題:查看特徵描述符匹配(非商業產品的SIFT/SURF,商業的ORB) – y300

回答

1

如果你比較極其相似的圖像,這在理論上足以計算2個圖像之間的歐氏距離。圖像的大小必須相同,因此通常需要重新調整圖像大小(通常較大的圖像會縮小)。需要注意的是aliasing問題都可以在這裏發生,所以要一些注意你downsampling algorithm。如果您的圖像沒有相同的寬高比,也有一個問題。

但是,這在實踐中幾乎從未做過,因爲它非常緩慢。對於大小爲寬x高和3個顏色通道的N個圖像,它需要N×寬×高×3周的比較,從而迅速得到不可行(考慮到許多用戶可以有超過1000個大小> 1000×1000的圖像)。

一般我們試圖將圖像縮小到簡單得多捕捉圖像信息的小陣列,稱爲visual descriptor。例如,拍攝一張1024x1024 3的圖像並將其縮小爲128長度的矢量。這隻需要爲參考圖像計算一次,然後存儲在適當的數據結構中。然後,我們可以將查詢圖像的描述符與參考圖像的描述符進行比較。

計算我們的N個圖像數據集的距離爲長度L的描述符的成本就是N x L,而不是原來N x W x H x 3

所以這個問題是要找到有效的描述符是(a)廉價計算和(b)準確地捕捉圖像。這仍然是一個活躍的研究領域,但我可以推薦一些:

  • 直方圖可能做到這一點最簡單的方法,雖然他們做的非常糟糕任何光照變化,並納入唯一的顏色信息,沒有空間的信息。確保在進行任何比較之前對直方圖進行標準化處理
  • 感知散列法對於非常相似的圖像或略微裁剪的圖像效果很好。見here
  • GIST描述符是強大的,但更復雜,看here