图像Java的偏斜

时间:2016-05-02 19:36:23

标签: java image image-processing statistics

这是在java中实现图像偏斜的正确方法吗?请注意,我重复了红色和绿色的相同方法,我完全知道如何将它们组合在一起。我只是想确保这个算法在我运行60次以进行分析之前是正确的。

我的理解是,为了计算偏度,你只需将方差偏差方法从方差中的2的幂变为3的幂。但看起来它应该比它更多。如果在这个主题上比我受过更多教育的人可以看一看,那就太好了。欢呼声。

    /*Blue Variance*/
    public static double varianceBlue(BufferedImage image){
        double mean = meanValueBlue(image);
        double sumOfDiff = 0.0;

         for (int y = 0; y < image.getHeight(); ++y){
               for (int x = 0; x < image.getWidth(); ++x){
                               Color b = new Color(image.getRGB(x, y));
                               double colour= b.getBlue() - mean;
                               sumOfDiff += Math.abs(Math.pow(colour, 3));
                             }                   
                           }
        return sumOfDiff / ((image.getWidth() * image.getHeight()) - 1);
        }

    /*Blue Standard Deviation*/
    public static double standardDeviationBlue(BufferedImage image){
        return Math.sqrt(varianceBlue(image));
    }

2 个答案:

答案 0 :(得分:0)

首先,不建议使用RGB颜色空间来分析图像,因为RGB颜色空间不是感知上均匀的空间,并且其尺寸高度相关[Yilmaz,Alper,Omar Javed和Mubarak Shah。 “对象跟踪:一项调查。” Acm计算调查(CSUR)38.4(2006):13。]。最好先将图像转换为HSV色彩空间。其次,我认为计算直方图的偏度更常见,而不是强度值,如calculate histogram features。要实现它,可以使用定义skewness

答案 1 :(得分:-1)

如果你take a look to this page,你可以看到你必须除以标准偏差的立方。还有一个经过调整的偏斜版本。

注意关于N值的精度。它与用于计算标准偏差和偏度(N-1对N)的值不同。