我正在使用此方法计算图像的平均像素值。有没有更好或更复杂的方法来做这个特定的方法?我对此很新,我很高兴我有这么远,但我的任务是找到一个更好的,更加数学上复杂的方式做到这一点,我是难倒!
public static double meanValue(BufferedImage image) {
Raster raster = image.getRaster();
double sum = 0.0;
for (int y = 0; y < image.getHeight(); ++y){
for (int x = 0; x < image.getWidth(); ++x){
sum += raster.getSample(x, y, 0);
}
}
return sum / (image.getWidth() * image.getHeight());
}
答案 0 :(得分:1)
您可以将图像分成块并进行并行计算。
以下是如何执行此操作的示例: https://stackoverflow.com/a/5686581/1814524
答案 1 :(得分:1)
也许是这样的(如果你可以使用Java 8)
public static double meanValue(BufferedImage image)
{
final Raster raster = image.getRaster();
return( IntStream.range(0, image.getHeight())
.parallel()
.mapToDouble(y -> IntStream.range(0, image.getWidth())
.parallel()
.map(x -> raster.getSample(x, y, 0))
.average().getAsDouble())
.average()
.getAsDouble() );
}