2012-10-01 41 views
0

有没有任何建议(代码段)可以帮助我理解如何比较两个不同图像文件的概念,无论它们是否相同?java.util.zip.CRC32比较图像文件

在此先感谢。

编辑: 我的意思是,例如,我应该检查CRC32(我不知道该怎么做)与文件的大小检查。那么这意味着他们是相同的图片...

编辑2:当我说图像是相同的,我的意思是图像看起来完全一样的用户。

+2

如果你有损压缩,你需要定义你的意思是“相同”两个想象可以有效地与人眼相同,但一个可以是另一个的一半大小。 –

+0

是的,图像文件的CRC只会告诉你该文件是否可能与同一文件的另一个副本相同。它不会告诉你内部的图像是否可能是相同的,哪些文件是单独创建的。 –

+0

@Peter请参阅编辑的问题 – Javatar

回答

1

您可以使用CRC32来合计任何文件。但是如果你想知道两幅图像是否相同,你必须决定看起来相同的两幅图像是否相同。例如以下图像都有不同的大小,更不用说不同的CRC32数字。

enter image description here enter image description here enter image description here enter image description here

+0

感谢彼得,我一开始就给出了这个细节;简而言之,哪张图片对于最终用户来说看起来是一样的,对我来说也是一样的!所以你提供的这些图像对我来说是一样的:)因此,我所理解的是CRC32是不够的?那么你的建议是否适合我的需求呢?谢谢。 – Javatar

+0

您需要将它们转换为通用格式(通常是未压缩的位图)并比较像素以查看它们是否相似。例如当这个数字是0时,你使用'sqrt(sum(x1 - x2))'这个颜色的距离,他们确实是一样的。如果这个数字非常小(并且你必须决定它是什么),它们是相同的,当数字很大时,它们不是。将有一个灰色的地区,很难分类。您可能还需要对图像进行转换,例如缩放和裁剪,例如如果图像有一个额外的空白行,即使它的大小不一样,它也是一样的。;) –

+0

要比较图像以查看它们是否“看起来”相同,则必须使用相对复杂的信号处理技术。 http://dsp.stackexchange.com/会是你要求进一步问题的地方。 –

1

为ZIP条目校验的含义:在不同的文件是不同的。

CRC32类允许您自己计算字节的校验和。

为了有效检查两幅图像是否为几乎与相等,有很多means,就像制作一个小的8x8图像并比较颜色值的差异。