我有渲染使用Adobe PDF引擎PDF文件以及其它PDF裂口。我想嘗試找出他們渲染不同的地方。問題是它們都呈現略微不同的抗混疊,顏色和極小的位置差異。我更關心更大的差異。我想比較附件match1.png
和match2.png
。這兩個應該匹配。文件diff1.png
和diff2.png
不應該匹配。他們應該失敗,因爲那個人失蹤了。我曾與ImageMagick的比較,但沒有得到足夠好的結果忽略輕微的渲染差異,只專注於主要的。我認爲下面的算法可以工作,但我不知道如何讀取PNG文件並逐個像素地比較它們。比較圖像的呈現差異(忽略抗鋸齒)
- 在ImageA每個像素比較在ImageB相同的像素。也比較每個相鄰像素ImageB
- 查找在ImageB所有測試像素的最近的匹配像素。
- 商店這個最接近匹配的像素作爲用於ImageA該像素差分索引的色差。
- 對ImageA中的每個像素重複此計算。
- 將差值標準化以使最小差值爲零。未歸一化的值可能是(3,8,5,18),歸一化值可能是(0,5,2,15)或某種其他類型的歸一化函數。
- 然後計算有多少像素超過閾值,比如5或其他。然後,可以使用這個「壞」像素的計數來計算其中一個圖像中存在渲染錯誤的概率。
這只是一個樣本算法。我不知道如何逐個像素地處理PNG文件。我會開到PHP的解決方案,或者使用命令行工具,如ImageMagick的解決方案等