如何比較兩幅圖像並確定它們是否100%相似,或只是改變了顏色或裁剪?如何比較兩張圖像來檢測重複項和裁剪重複項?
回答
以下是一個相當簡單的方法來解決這個問題,並且對於從不同角度拍攝的同一主題的兩張不同照片將無法很好地工作,但是如果您有兩張您想要的相同圖像的副本校驗。
兩個相同圖像的情況很簡單 - 只是通過像素陣列循環通過RGB值從另一個減去。如果差異小於一個小公差,那麼像素是相同的。因此,只要您發現像素差異大於容差,就會知道圖像不同。
您可以允許一定數量或百分比的差異以允許壓縮文物引起的差異。
要檢查顏色的變化,您可以查看HLS(色調,亮度和飽和度)值。如果像素具有相同的L值,但具有不同的H值,那麼它就是不同的顏色(我認爲)。
裁剪更困難,因爲您必須嘗試在較大的圖像中找到較小圖像的位置。
這是非常有趣和有益的。我必須確定如何針對每種圖像格式進行處理。 – LamonteCristo 2010-11-04 19:53:27
好,抽象地說,你需要定義一個相似度函數,它比較兩張圖片。爲了確定如果圖像是「100%相似」(等於),可以執行以下操作:
- 比較圖像的尺寸
- 如果圖像尺寸是相同的簡單地從彼此 減去像素
if (sum(abs(pixel_1_i - pixel_2_j))/num_pixels < threshold) return true
對於圖像是不同顏色的情況下,或裁剪
- 申請一封DGE檢測器,用於兩個圖像
- 計算的互相關(在頻域中,FFT)
- 找到最高峯
- 發生在所確定的位置的(較小的)邊緣映射
- 計算絕對誤差
if (error < threshold) return true
BTW:這種做法不會,如果你的圖像縮放或旋轉工作。
進一步研究:
您可以使用對象描述符,如:
SIFT - http://en.wikipedia.org/wiki/Scale-invariant_feature_transform
SURF - http://en.wikipedia.org/wiki/SURF
然後通過計算描述比較圖像。這些描述符將使您能夠處理旋轉,縮放和稍微更改的圖像。
此外,描述符由定向漸變組成,這意味着這些描述符對光照和顏色變化也很穩健。
您可以使用Accord.NET(SURF實現)。
- 1. 比較值和檢查重複項
- 2. 如何比較兩個對象數組來刪除重複項?
- 3. 檢測重複項,Listview?
- 4. 比較2 ArrayLists並刪除重複項
- 5. 顯示重複項和重複項數
- 6. ActionScript - 比較和刪除複雜數組的重複項?
- 7. 如何驗證和比較javascript中的數組重複項
- 8. C# - 檢測臉部和裁剪圖像
- 9. 使用Javascript複製和裁剪圖像
- 10. 查找重複和比較
- 11. 比較兩個陣列和檢查重複和缺失值
- 12. 比較兩個陣列並刪除重複項
- 13. 比較兩個列表<string>並打印重複項
- 14. 比較兩個陣列刪除重複項
- 15. 火炬 - 重複張量像numpy重複
- 16. Python:使用集合檢測重複項
- 17. 檢測excel中的重複項
- 18. 檢測數組中的重複項
- 19. 檢測DataFlow中的重複項目
- 20. 使用LINQ和C比較收集和計數重複項#
- 21. PHP比較兩個多維數組和檢查重複
- 22. css或Javascript重複圖像而不裁剪它
- 23. 如何比較具有重複項的數組作爲集?
- 24. 如何合併重複節點,在比較中使用子項?
- 25. 比較數據庫項目以查找重複項
- 26. 如何檢查ObservableCollection中的重複項?
- 27. C#檢查重複項
- 28. 檢查重複項目
- 29. SQL:比較兩個表與重複
- 30. 比較文件夾和刪除重複項
您是否在談論人工染色的確切副本?或者你的意思是同一件事的兩張不同的照片。這可能會在方法上產生重大影響。 – Pace 2010-11-04 12:16:46
我只是在尋找數字修改過的拷貝,包括彩色拷貝。沒有校驗和的方法可能會在這裏工作... – LamonteCristo 2010-11-04 19:49:44