直方图均衡不适用于彩色图像

时间:2017-06-30 00:39:11

标签: opencv image-processing

我正在尝试直方图均衡,但它给了我与输入相同的图像。

似乎直方图均衡没有影响。谁能告诉我哪里出错?

private static Mat adjustBrightnessContrast(Mat srcImage){
        Mat filterImage = srcImage.clone();
        Imgproc.cvtColor(srcImage,filterImage,Imgproc.COLOR_BGR2YCrCb);
        java.util.List<Mat> filterImageList = new ArrayList<Mat>(3);
        Core.split(filterImage,filterImageList);
        Mat luminance = filterImageList.get(0);
        Imgproc.equalizeHist(luminance,luminance);
        filterImageList.set(0,luminance);
        Core.merge(filterImageList,srcImage);
        Imgproc.cvtColor(filterImage,srcImage, Imgproc.COLOR_YCrCb2BGR);
        return srcImage;
    }

我所做的是将图像从BGA转换为YCrCb格式,然后在将图像转换为list格式后,在第一个通道0上执行直方图均衡。 然后是我在实现hist后得到的Mat格式。 EQ。我用它替换了list。最后merge包含sourceImage的列表。

但我得到的输出与输入相同。

我正在尝试这张图片:

enter image description here

PS:我认为我在转换的颜色部分做了一些错误,因为GRAYSCALED图像正常工作。

1 个答案:

答案 0 :(得分:4)

您正在将filterImageList合并到srcImage中,然后使用filterImage。尝试替换此代码,以合并到filterImage

Core.merge(filterImageList,filterImage);
Imgproc.cvtColor(filterImage,srcImage, Imgproc.COLOR_YCrCb2BGR);