直方图均衡化图像增强c++
时间: 2024-04-03 16:29:06 浏览: 135
直方图均衡化是一种常用的图像增强方法,它可以提高图像的对比度和细节。在C++中,可以使用OpenCV库来实现直方图均衡化。
下面是直方图均衡化的步骤:
1. 将彩色图像转换为灰度图像(如果原始图像是彩色的)。
2. 计算灰度图像的直方图,统计每个灰度级别的像素数量。
3. 计算累积直方图,将每个灰度级别的像素数量累加起来。
4. 根据累积直方图和图像尺寸,计算每个灰度级别的新像素值。
5. 将新的像素值映射到原始图像上,得到均衡化后的图像。
以下是C++代码示例:
```cpp
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
// 读取图像
Mat image = imread("input.jpg", IMREAD_GRAYSCALE);
// 进行直方图均衡化
Mat equalizedImage;
equalizeHist(image, equalizedImage);
// 显示原始图像和均衡化后的图像
imshow("Original Image", image);
imshow("Equalized Image", equalizedImage);
waitKey(0);
return 0;
}
```
在上述代码中,首先使用`imread`函数读取输入图像,并将其转换为灰度图像(使用`IMREAD_GRAYSCALE`参数)。然后,使用`equalizeHist`函数对灰度图像进行直方图均衡化。最后,使用`imshow`函数显示原始图像和均衡化后的图像,并使用`waitKey`函数等待按键输入。
阅读全文