直方图均衡化对彩色图像无效

3
我正在尝试直方图均衡化,但它给我的结果与输入图像相同。看起来直方图均衡化没有任何影响。有人能告诉我错在哪里吗?
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格式后对第一个通道进行直方图均衡化处理。 然后,我用实现了直方图均衡化处理后得到的Mat格式替换了list。最后,使用merge将列表与源图像合并。 但是,我得到的输出与输入相同。 我正在尝试对此图像进行操作:

enter image description here

PS:我认为在转换的颜色部分犯了一些错误,因为灰度图像可以正常工作。

1个回答

4
你正在将 filterImageList 合并到 srcImage 中,但随后使用的是 filterImage。请尝试使用以下代码替换,将其合并到 filterImage 中:
Core.merge(filterImageList,filterImage);
Imgproc.cvtColor(filterImage,srcImage, Imgproc.COLOR_YCrCb2BGR);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接