Если вопрос стоит в нахождении нескольких отличии между двум полностью идентичными картинками, то библиотеки не нужны
import java.io.File;
import java.awt.Color;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
public class ImageSimilarity {
public static BufferedImage getDifferenceImage(BufferedImage img1, BufferedImage img2) {
final int w = img1.getWidth(),
h = img1.getHeight(),
highlight = Color.MAGENTA.getRGB();
final int[] p1 = img1.getRGB(0, 0, w, h, null, 0, w);
final int[] p2 = img2.getRGB(0, 0, w, h, null, 0, w);
for (int i = 0; i < p1.length; i++) {
if (p1[i] != p2[i]) {
p1[i] = highlight;
}
}
final BufferedImage out = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
out.setRGB(0, 0, w, h, p1, 0, w);
return out;
}
public static void main(String[] args) throws Exception {
ImageIO.write(
getDifferenceImage(
ImageIO.read(new File("img1.png")),
ImageIO.read(new File("img2.png"))),
"png",
new File("diff.png"));
}
}
Библиотеки нужны для более сложных задач, типа нахождения разницы между двумя фотографиями одного места, сделанными в разное время. Приведённый выше код тупо зальёт итоговое изображение пурпурным туманом. Для таких случаем уже нужны библиотеки типа OpenCV или OpenIMAJ.