我正在尋找一種算法或庫,可以發現兩個圖像之間的差異(如在「查找錯誤」遊戲中)並輸出包含這些更改的邊界框的協調。我可以使用Python,C或幾乎任何其他語言的算法。是否有算法來檢測兩個圖像之間的差異?
回答
有很多,適合不同的目的。您可以通過查看OpenCV開始,該免費計算機視覺庫具有C,C++中的API,並且還綁定到Python和許多其他語言。它可以輕鬆進行減法,並且還具有邊界或分組點集的功能。
除了簡單的圖像相減,OpenCV解決的具體用途之一是motion detection or object tracking。
您可以在Signal Processing stackexchange站點中詢問更具體的與圖像相關的算法相關問題。
通過裁剪原始圖像將兩幅圖像「解析」爲多幅較小的圖像。 每個「子圖像」的大小將是您掃描操作的「分辨率」。例如,如果原始圖像爲100像素×100像素,則可以將分辨率設置爲10 x 10,並且每個原始圖像都有一百個10 x 10的子圖像。將子圖像保存到磁盤。
接下來,比較每一對子圖像文件,每個原始圖像一個。如果存在文件大小或數據差異,則可以將該「座標」標記爲在原始圖像上具有差異。
該算法假定您不在尋找各個像素差異的座標。
如果你只是想顯示差異,那麼你可以使用下面的代碼。
FastBitmap original = new FastBitmap(bitmap);
FastBitmap overlay = new FastBitmap(processedBitmap);
//Subtract the original with overlay and just see the differences.
Subtract sub = new Subtract(overlay);
sub.applyInPlace(original);
// Show the results
JOptionPane.showMessageDialog(null, original.toIcon());
要比較兩張圖片,可以使用Catalano Framework中的ObjectiveFideliy類。 Catalano Framework在Java中,所以你可以在另一個LGPL項目中移植這個類。
FastBitmap original = new FastBitmap(bitmap);
FastBitmap reconstructed = new FastBitmap(processedBitmap);
ObjectiveFidelity of = new ObjectiveFidelity(original, reconstructed);
int error = of.getTotalError();
double errorRMS = of.getErrorRMS();
double snr = of.getSignalToNoiseRatioRMS();
//Show the results
聲明:我是這個框架的作者,但我認爲這會有所幫助。
經過測試,將Android上的圖像與此進行比較,效果很好,但看起來像ObjectiveFidelity的方法名稱已更改,您是否可以更新答案以反映此更改? – TouchBoarder
- 1. 如何計算兩個圖像之間的差異
- 2. 計算圖像之間的差異
- 3. 兩個密度圖之間的差異
- 4. 兩張圖片之間的差異是否大於圖片?
- 5. 如何檢查兩次之間的差異是否大於8.30?
- 6. 斑點檢測和圖像分割之間的差異
- 7. 檢測python/pygame中圖像之間的差異
- 8. 如何檢測兩個三維點雲之間的差異?
- 9. 使用Javascript檢測兩個字符串之間的差異
- 10. SQL:檢測兩個表之間的總和差異?
- 11. 檢測兩個JSON文件之間的差異在C#
- 12. 計算兩次之間的差異
- 13. 計算兩列之間的差異sql
- 14. 計算兩次python之間的差異
- 15. 評估兩個列表之間的序列差異的算法
- 16. 相同算法的兩個實現之間的性能差異
- 17. 如何檢查兩個日期之間是否至少有一天差異
- 18. 試圖計算兩個日期之間的差異
- 19. 計算網絡中兩個圖形邊緣之間的差異
- 20. 如何計算ImmutableJS中兩個地圖之間的差異?
- 21. VB檢測天數之間的差異
- 22. 使用emgu的兩個圖像之間的差異
- 23. 找到兩個圖像之間的差異的邊界框?
- 24. 如何找到兩個圖像之間的差異矩形
- 25. 如何找到兩個圖像之間的差異
- 26. 計算平均絕對誤差之間的兩個圖像MATLAB
- 27. 是否存在兩個JSON之間差異的既定表示?
- 28. 如何計算兩個日期之間的差異是否大於20年?
- 29. 檢查兩個日期之間的差異是否超過20分鐘
- 30. 計算兩個時間域之間的差異
取決於差異。最簡單的方法是從另一個圖像中減去一個圖像,並找到所有非零像素。 –