比较代表两个图片的两个字节数组

时间:2012-08-04 14:31:06

标签: java android image-comparison

我正在为android编写一个小应用程序,我需要在两张图片之间进行比较。 图片表示为两个字节的数组。

是否有算法可以比较它们?我需要检查它们之间的变化。

1 个答案:

答案 0 :(得分:1)

这取决于您是否只想标记它们是不同的,或记录它们之间的每个差异。

仅仅检查它们是不同的(正如Hunter McMillen指出的那样) - http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html

boolean different = Arrays.equals(byteArray1, byteArray2);

存储个体差异(假设您的照片尺寸相同):

byte[] differenceArray = new byte[byteArray1.length];
for (int i = 0; i < byteArray1.length; i++) {
    differenceArray[i] = (byte) (byteArray1[i] - byteArray2[i]);
}

编辑:

如果你想要字节数组的两个维度(例如800x600),你可以这样做:

byte[][] differenceArray = new byte[byteArray1.length][byteArray1[0].length];
for (int x = 0; x < byteArray1.length; x++) {
    for (int y = 0; y < byteArray1[0].length; y++) {
        differenceArray[x][y] = (byte) (byteArray1[x][y] - byteArray2[x][y]);
    }
}

如果两个图像之间没有差异,则差异数组将全为0,否则数字将是字节之间的差异。