2012-04-19 111 views
1

我想要计算java中图像的标准偏差。我正在使用rast.Sample来获取每个灰度级,然后我将它从平均值中除去并将其平方。java中图像直方图的方差

我的代码是:

public int standardDeviation(BufferedImage source) 
    { 
    int width = source.getWidth(); 
    int height = source.getHeight(); 
    int totalPixels = width * height; 
    int temp = 0; 
    int VarianceSum = 0; 
    double SumSquared = 0; 
    int mean = mean(source); 
    double variance = 0; 
    int StandardDeviation = 0; 
    Raster rast = source.getRaster(); 

    //Loop through rast getting each grey level. 
    for(int i =0; i<width; i++) 
     { 
      for(int j=0; j<width; j++) 
      { 
       temp = rast.getSample(i,j,0); 
       VarianceSum += (temp - mean); 
       SumSquared = Math.pow(VarianceSum,2); 
      } 
     } 

    variance = SumSquared/totalPixels; 


    System.out.println(temp); 
    System.out.println(VarianceSum); 
    //System.out.println(SumSquared); 
    System.out.println(totalPixels); 



    return StandardDeviation; 

    } 

我做一些愚蠢的!请帮助

+0

你面临的问题是什么?此外,如果不打算修改它,请使用getData()而不是getRaster – Rolle 2012-04-19 11:39:00

+0

标准差的值返回为0. – CBoyle 2012-04-19 11:54:19

+0

我的for循环是什么? – CBoyle 2012-04-19 11:56:40

回答

1

您重复遍历宽度两次。如果宽度!=高度会崩溃。另见我的评论