我正在尝试直方图均衡,但它给了我与输入相同的图像。
似乎直方图均衡没有影响。谁能告诉我哪里出错?
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的列表。
但我得到的输出与输入相同。
我正在尝试这张图片:
PS:我认为我在转换的颜色部分做了一些错误,因为GRAYSCALED图像正常工作。
答案 0 :(得分:4)
您正在将filterImageList
合并到srcImage
中,然后使用filterImage
。尝试替换此代码,以合并到filterImage
:
Core.merge(filterImageList,filterImage);
Imgproc.cvtColor(filterImage,srcImage, Imgproc.COLOR_YCrCb2BGR);