计算Image:Java的平均像素值

时间:2016-02-18 16:28:32

标签: java image

我正在使用此方法计算图像的平均像素值。有没有更好或更复杂的方法来做这个特定的方法?我对此很新,我很高兴我有这么远,但我的任务是找到一个更好的,更加数学上复杂的方式做到这一点,我是难倒!

    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());
     }

2 个答案:

答案 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() );
   }