我有一个类型为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值进行OR运算,这对我的目的来说是浪费的,因为我只是再次将其分解为字节。
我将尝试直接进行操作,但我想知道是否有更好的方法来完成这个任务,无论是通过Java还是第三方API。