2010-08-02 80 views
7

我有一種通用的R第這裏:用的數碼相機在R中聚類照片?

通常我們傾向於點擊很多immages的可能是重複的,並且會浪費網絡空間,同時對Picassa中分享或者是試圖刪除一些不需要的時候開銷圖片。

是否可以使用R來聚類照片?我的意思是在Matlab中有一些用於圖像處理的聚類能力,但是這種功能是否可用,或者是否有任何建議在R中這樣做?

請提供一些關於此主題的建議。

回答

9

如果你看看CRAN,有各種各樣的(我計數大約10)包讀取圖像數據。當然,還有各種各樣的軟件包可以進行羣集。 在理論上,你可以將原始圖像數據插入到聚類算法中,但實際上這樣做不會很好。就速度而言,速度會非常慢,而且在準確性方面也可能會非常糟糕。聚類圖像數據的現代技術依賴於從圖像中提取的專用特徵,並對其進行操作。最好的功能取決於應用程序,但一些最知名的是SIFT,SURF和HOG。較早的技術依賴於圖像顏色的直方圖作爲特徵,這對於上述R包非常適用,但它並不十分準確 - 它幾乎無法區分大海的圖片和藍色的房間的圖片。

那該怎麼辦?這取決於你的最終目標,真的。一種方法可以是使用各種開源特性提取器之一,將數據保存爲文本或其他R可讀格式,然後像往常一樣在R中進行數據處理。

一個不錯的開源C庫提取具有cli界面的功能是vlfeat。如果你使用這個,我建議在三個顏色通道上使用密集的SIFT提取。然後用連接的SIFT向量表示每個圖像,並應用您最喜歡的聚類技術(可處理具有數千個維度的向量)。這幾乎不會讓你看到藝術表現,但這是一個開始。

This page具有特徵提取器的各種參考實現,但僅是二進制。

請注意:根據我的經驗,R對於大型高維數據集(大小在GB範圍內)不能很好地進行縮放。我喜歡R去死,但是使用C++來做這件事。

+0

偉大的建議,將考慮到這一點。謝謝! – 2010-08-02 14:36:47

+1

@Neo_Me:我記得一個基於這些技術的圖像聚集的Python + C程序。據我所知,這是一個用於研究目的的一次性項目,但它可能有助於啓發。 [Yorg](http://lear.inrialpes.fr/src/yorg/doc/index.html) – dimatura 2010-08-02 17:01:00