一种简单的方法(工具?)来比较不同格式的像素像素?

时间:2009-03-27 23:25:33

标签: java image image-processing comparison jpeg

我现在已经在java中编写了一个基本的无损jpeg joiner东西,但我想将它生成的文件与原始文件进行比较。

我只能在十六进制编辑器中进行比较,有没有人知道一个简单的方法,软件或基于java(最好是软件,因为我现在感觉不再需要编码!)我可以比较两个图像并生成一个像差不一样的“差异图”?

感谢。

8 个答案:

答案 0 :(得分:14)

感谢您的建议。

我首先尝试了Gimp方法,除非图像之间的差异非常小,否则效果很好。我找不到“增强差异”选项来使差异明显,而直方图也只能粗略地表示差异。

最后我使用了ImageMagick我刚刚安装过的东西而忘了一切。创建差异/比较图像就像输入一样简单:

 compare first.jpg second.png difference.gif

在命令行中。

很好地解释了here.

答案 1 :(得分:5)

TortoiseIDiff是一个免费的图像差异查看器:

http://tortoisesvn.tigris.org/TortoiseIDiff.html

它是TortoiseSVN的一部分,但可以在没有Subversion的情况下使用。

  

取决于您的项目,而不是所有版本的文件   控件是文本文件。很可能你也会有图像   示例文档/帮助文件的屏幕截图和图表。

     

对于那些文件,不可能使用常见的文件差异工具,   因为它们只能与文本文件一起使用并逐行进行区分。这是   Tortoise Image Diff工具(TortoiseIDiff)的用武之地   拯救。它可以并排显示两个图像,甚至可以显示图像   彼此alpha混合。

答案 2 :(得分:4)

你可能比Perceptual Diff做得更糟。

答案 3 :(得分:2)

最好的方法是使用Pix for windows(附带DirectX SDK)。支持Bitmap,PNG和Jpeg ......享受!

答案 4 :(得分:1)

使用像Photoshop或Gimp等图像编辑器,它有多个图层。创建一个图像,其中每个源图像位于单独的图层中。

此时,您可以通过关闭和打开顶层的可见性来直观地比较图像。

在大多数体面的编辑器中,您还可以将顶层设置为“差异”模式。现在每个图像像素的值是底层图像中像素值的绝对差值。你可以用例如直方图工具,以查看图像是否相同。如果它们相同,则所有像素值都将为0。

答案 5 :(得分:1)

对于这样的东西,我喜欢netpbm / pbmplus工具包。您可以使用djpegpnmtoplainpnm将每个图像转换为简单的ASCII格式。然后,您只需读取两个文件并发出一个新图像,该图像显示像素的不同之处。例如,您可以计算旧像素和新像素之间的RGB空间中的欧几里德距离,并发出零差异的白色像素,小差异的浅灰色,较大差异的较暗,等等。 ASCII格式很简单,并且在手册页上有详细记录,所有标准查看器程序都可以直接查看。

答案 6 :(得分:1)

Araxis Merge的最新版本将执行图像差异(http://www.araxis.com/merge/topic_comparing_image_files.html)。

不幸的是,这不是一个免费的应用程序,所以你是否愿意支付它是另一回事......

答案 7 :(得分:0)

还有一个方便的web app called Resemble.js,它可以逐个像素地分析和比较图像。根据您的偏好,图像中的不同像素(如果有)以粉红色或黄色突出显示。