实现对比度增强
整体流程
下面是实现对比度增强的整体步骤:
步骤 | 操作 |
---|---|
1 | 读取图像 |
2 | 转换为灰度图像 |
3 | 计算直方图 |
4 | 计算累积分布函数 |
5 | 对图像进行对比度增强 |
具体操作
1. 读取图像
// 读取图像
Mat image = Imgcodecs.imread("input.jpg");
2. 转换为灰度图像
// 转换为灰度图像
Mat grayImage = new Mat();
Imgproc.cvtColor(image, grayImage, Imgproc.COLOR_BGR2GRAY);
3. 计算直方图
// 计算直方图
Mat hist = new Mat();
Imgproc.calcHist(Arrays.asList(grayImage), new MatOfInt(0), new Mat(), hist, new MatOfInt(256), new MatOfFloat(0, 256));
4. 计算累积分布函数
// 计算累积分布函数
Mat cdf = new Mat(hist.rows(), hist.cols(), hist.type());
cdf.put(0, 0, hist.get(0, 0));
for (int i = 1; i < hist.rows(); i++) {
cdf.put(i, 0, cdf.get(i - 1, 0)[0] + hist.get(i, 0)[0]);
}
Core.normalize(cdf, cdf, 0, 255, Core.NORM_MINMAX);
5. 对图像进行对比度增强
// 对比度增强
Mat enhancedImage = new Mat();
Core.LUT(grayImage, cdf, enhancedImage);
序列图
sequenceDiagram
participant 小白
participant 开发者
小白->>开发者: 请求教学如何实现对比度增强
开发者->>小白: 依次按照步骤操作
小白->>开发者: 读取图像
小白->>开发者: 转换为灰度图像
小白->>开发者: 计算直方图
小白->>开发者: 计算累积分布函数
小白->>开发者: 对比度增强
开发者->>小白: 完成对比度增强
状态图
stateDiagram
[*] --> 读取图像
读取图像 --> 转换为灰度图像
转换为灰度图像 --> 计算直方图
计算直方图 --> 计算累积分布函数
计算累积分布函数 --> 对比度增强
对比度增强 --> [*]
通过上面的步骤,你就可以成功实现对比度增强了,记得多多练习,加深理解!祝你编程顺利!