我已經搜索了所有可能的相關關鍵字,但我能找到的結果並不是我想要的,因爲我發現的大多數算法都對COLOR高度關注。如何識別2張「黑白」圖像之間的相似度(以%爲單位)?
我的應用程序的想法是識別具有最高相似性的圖像對。
例如,我的輸入是a,圖像池包含b,c,d,e。 結果可能是b(90%),d(85%),e(80%),c(20%)。
我的問題是可以採用什麼方法來計算這種「圖像相似性」? 或者我必須從零開始構建自己的代碼?
我已經搜索了所有可能的相關關鍵字,但我能找到的結果並不是我想要的,因爲我發現的大多數算法都對COLOR高度關注。如何識別2張「黑白」圖像之間的相似度(以%爲單位)?
我的應用程序的想法是識別具有最高相似性的圖像對。
例如,我的輸入是a,圖像池包含b,c,d,e。 結果可能是b(90%),d(85%),e(80%),c(20%)。
我的問題是可以採用什麼方法來計算這種「圖像相似性」? 或者我必須從零開始構建自己的代碼?
你可以看一下形狀上下文http://en.wikipedia.org/wiki/Shape_context計算形狀之間的相似性,也有很多在互聯網上提供形狀上下文的實現中,全文可以在這裏http://www.cs.berkeley.edu/~malik/papers/BMP-shape.pdf
也許你應該看一看Hough transform。這些線將對應於變換圖像中的峯值。然後,您可以識別這些峯值像素,並以某種方式將它們的位置與原始圖像的位置進行比較。
看看SSIM比較兩張圖片。 SSIM代表基於兩幅圖像之間的相似性給出單個值的結構相似性指標度量。訪問維基頁面Structural Similarity
當圖像大小相等時,SSIM可以成功計算出兩幅圖像之間的近似相似度。如果我比較兩張完全相同的不同大小的圖像,結果會很糟糕:( – nb369
)當兩幅圖像的大小不同時,我們可以將大小較小的圖像滑動,然後在幻燈片的每個位置獲得SSIM分數。最終的圖像被稱爲SSIM地圖。當兩幅圖像都相同時,我們可以升高較小的圖像,然後執行SSIM。在某些應用中,填充零也是一種很好的方法。 @ nb369 – PRABHAKARAN
首先,最好的工具是OpenCV,它可以與大多數常用編程語言一起工作。
你可以看到文檔頁面,有很多功能可以幫助你。
函數approxPolyDP()
(see the detail here) 它以指定的精度逼近多邊形曲線(您的形狀)。 在此之前,您必須檢測一對圖像中的輪廓。
this example非常有助於您:
改進:
曲線近似可能是我進一步評估相似性的下一步,並感謝您提出的改進建議。 – nb369
訪問我想這種方法過於複雜,評價我簡單的圖片,還是要謝謝你。 – nb369