直方图均衡问题

时间:2012-09-20 22:33:58

标签: java project histogram

我正在开展一个项目,我正在尝试使用直方图均衡来执行类似于此图像的操作

http://zerocool.is-a-geek.net/wp-content/uploads/2011/12/input-300x200.jpg

“http://zerocool.is-a-geek.net/wp-content/uploads/2011/12/hist_before.png”

到这张图片

http://zerocool.is-a-geek.net/wp-content/uploads/2011/12/output-300x200.jpg

“http://zerocool.is-a-geek.net/wp-content/uploads/2011/12/hist_after.png”

但我似乎无法弄明白。

这是我的增强型图像代码,它应该实现相同类型的调整。

public void EnhancedImage (File fileName) {

           double sumc = 0;
            for(int r = 0; r < array.length; r++){
                for(int c = 0; c < array[r].length; c++){ 
                    sumc = r+c;
                    if (sumc <= array[r][c]) {
                     sumc = array[r][c];
                    }
                        newc = Math.round(maxshade * ((double)sumc / pixtot));
                        array[r][c] = (int) (newc);
                        if (array[r][c] > 255) {
                            array[r][c] = 255;
                    }
                }

                }

我想使用的算法在下面,其中maxShade是图像的最大阴影(通常为255)sumc是图像中像素值小于或等于c的总像素数,pixtot是总数图片中的像素数:

newc := round(maxShade * ((double)sumc / pixtot))

但是我不确定我是否做对了...目前我的图像变得非常暗。

任何帮助将不胜感激!感谢。

也是我的pixtot例程:

 pixtot = 0;
           for(int y = 0; y < imageArray.length; y++)
                for(int x = 0; x < imageArray[0].length; x++)
                    pixtot = x+y;

0 个答案:

没有答案