2011-05-20 41 views
3

我想比較原始PNG圖像與有損JPEG圖像,看看我失去了多少。我發現我可以使用ImageMagic來比較圖像。我更喜歡使用Java(im4java)。我很困惑他們的文檔(http://www.imagemagick.org/script/compare.php)。它沒有描述它是用於哪個平臺。我如何使用這些命令行,它們甚至可以在im4java中使用?如果有人可以寫我如何使用它的步驟,我將不勝感激。ImageMagick:如何比較原始PNG到有損JPEG?

+1

請注意雖然這種工具可以幫助您找到差異,即使您將它分解爲PSNR delta ...也沒有什麼可以模擬人類的感知。這種損失是否令人反感最終成爲人類眼中的問題。舉例來說,音頻壓縮(是的...這是音頻感知)。這一般通過拋出中端...但通常不明顯。如果你拿到最高的數據並丟掉一半的數據......它仍然會更令人討厭/明顯地丟掉中頻。 – 2011-05-21 23:32:02

+0

@John Green,這是對感性音頻編碼的糟糕描述。 – 2011-05-22 08:42:57

+0

@Wizard先生 - 你可能是對的。我的寫作遭遇了有限的成功。 :) – 2011-05-22 10:51:01

回答

1

ImageMagick在許多平臺上運行。如果您單擊Binary Releases,它們將列出可用軟件包。正如其主頁所描述的,im4java庫調用ImageMagick命令行工具來完成它的工作,因此它將在任何支持ImageMagick和Java的平臺上運行。通過瀏覽其API documentation,看起來compare命令在im4java中不可用,所以您必須修改im4java以支持它。

+0

在這種情況下,是否有其他庫?我只是想比較JPG轉換器的性能。只有一次交易。 – 2011-05-20 14:22:26

+0

在ImageMagic.Thanks中結束使用Windows解決方案 – 2011-05-20 14:35:39

1

那麼爲什麼你不能直接使用ImageMagick命令行工具呢?

請注意,在compare的幫助下比較2張不同的圖像只會導致有意義的結果,如果兩者具有相同的像素尺寸(寬x高)。 compare做逐個像素的比較。

這是我會怎麼做:

compare \ 
     -verbose \ 
     -debug coder \ 
     -log "%u %m:%l %e" \ 
     orig1.png \ 
     orig2.jpeg \ 
     -compose src \ 
     diff.png 

這個命令,2個圖像作爲輸入:orig1.pngorig2.jpeg。它生成diff.png作爲輸出。它也給你一些調試信息stdout。輸出圖像的所有像素呈紅色,並且輸入之間不同。

另一種可能性是該修改命令:

compare \ 
     -verbose \ 
     -debug coder \ 
     -log "%u %m:%l %e" \ 
     orig1.png \ 
     orig2.jpeg \ 
     -compose difference \ 
     diff.png 

它可視化以另一種方式的差異。你也可以不寫的差異文件,但是說比較打開一個窗口,並顯示在屏幕上的差異:

compare \ 
     -verbose \ 
     -debug coder \ 
     -log "%u %m:%l %e" \ 
     orig1.png \ 
     orig2.jpeg \ 
     -compose difference \ 
     x: 
0

我的博客文章更多的是JPEG quality and what is the difference of ImageMagick and Lightroom,但你可以找到有用的命令行,做所需要的比較:

composite image1.ext image2.ext -compose difference diff.png 

確保您使用巴紐(或gif或其它無損格式)作爲輸出圖像,因爲首先你有興趣的差異,和.jpg將扭曲它作爲一個照片。