我有一个TYPE_INT_BGR类型的BufferedImage。我需要对另一个BufferedImage进行逐像素比较来计算两个图像之间的“距离”。我有一些工作,但很慢。我从“参考”图像的像素时,它分解成RGB与字节:最快的方法来比较两个BufferedImages之间的像素值?
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或第三方API。
你是对的;挥发性是一个不好的建议。我已经编辑出来了。可悲的是我不能倒下我的答案。 – Mikeb 2009-12-29 21:00:49
你的答案对DataBuffer比较好:) – 2009-12-30 03:12:06