我有一个 TYPE_INT_BGR 类型的 BufferedImage。我需要与另一个 BufferedImage 进行逐像素比较,以计算两个图像之间的“距离”。我有一些工作,但很慢。我从“参考”图像中得到一个像素,将其分解为 RGB 字节:
int pixel = referenceImage.getRGB(col, row);
int red = (pixel >> 16) & 0xff;
int green = (pixel >> 8) & 0xff;
int blue = (pixel) & 0xff;
我将 r/g/b 值与候选图像的相应像素进行比较,并将差异的平方相加。
有没有更快的方法来进行这种比较?查看 JRE 源代码,我看到 BufferedImage.getRGB() 实际上是对来自光栅的组成 RGB 值进行或运算,这对我的目的来说是浪费的,因为我只是再次将其分解为字节。
我将尝试直接执行此操作,但我想知道是否没有更好的方法来执行此操作,无论是通过我可能错过的 Java 或 3rd 方 API。