2014-04-07 62 views
2

我正在考慮編寫一個可以比較圖像的應用程序:即檢查一個圖像是否存在於另一個圖像中。比較圖像的算法

讓我們來想象一個人,樹和其他東西的圖​​片。讓我們想象一棵樹的另一張照片。是否有可能檢查第二張圖片是否與第一張圖片中的樹有相似之處?

我試圖讀取字節並比較它們,但它沒有奏效。

做這種事情的最佳方法是什麼?我應該使用什麼算法?什麼是最好的(更快)的語言來做到這一點?

在此先感謝。

+0

通常有很多方法可以做到這一點,具體方法是最好的方法,也可能是唯一可行的方法,具體取決於細節。第二幅圖像中的樹或其他物體是否與第一幅圖的尺寸完全相同?也許更小但是相同?或者你在尋找大致相似的形狀,而不是細節的細節?兩張照片上的照片都會被照亮嗎?如果沒有,這是否重要?如果第一個圖像中找到第二個圖像中的對象,但第二個圖像中的背景或其他對象不存在於第一個圖像中,它會計數嗎? – DarenW

+0

對象可能大小不同。在第一張照片裏,你可以有一個類型爲「a」的樹。當我拍下這張照片時,我會將它發送到我的應用程序,以檢查該樹的名稱。想象一下,我有很多jpeg的樹木文件,我想確定哪些文件與我發送的圖片有最接近的樹。解決這個問題的最佳方法是什麼? – placplacboom

回答

0

SURFSIFT是兩種很好的算法,可以在您選擇的語言的庫中廣泛使用。

以自己喜歡的語言自己實現它們也很有啓發性,以便熟悉這個主題。

1

您需要類似於在字符串中搜索子串的快速算法的算法,但是開發用於在二維空間中搜索。

例如,這裏是很好的解決方案:

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.45.581&rep=rep1&type=pdf

及其複雜性是在最壞的情況下,其中n是大矩陣的維數爲O(n 2 )。

+0

這是用於字符串模式的,對嗎?我沒有弄清楚如何搜索圖像文件。 – placplacboom

+0

@DavidL。 「字符串」和「字母」只是抽象。在你的圖像中,每個像素都有其給定範圍內的值,所以它可以表示爲「字符」,整個圖像可以表示爲「字符的二維矩陣」。 –

+0

明白了,但如果圖像可以變小,變暗,我可以使用它嗎? – placplacboom