全局直方图均衡化和CLAHE算法实现 c++
时间: 2024-03-28 10:18:01 浏览: 75
17. OpenCV 直方图均衡化和自适应直方图均衡化 (CLAHE)(Python代码)
全局直方图均衡化和CLAHE算法都是图像处理中常用的增强算法,可以提升图像的对比度和细节。下面是它们的C++实现。
1. 全局直方图均衡化
```c++
#include <iostream>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat src = imread("test.jpg", IMREAD_GRAYSCALE);
if (src.empty()) {
cout << "Failed to load image!" << endl;
return -1;
}
Mat dst;
equalizeHist(src, dst);
namedWindow("Source Image", WINDOW_AUTOSIZE);
imshow("Source Image", src);
namedWindow("Equalized Image", WINDOW_AUTOSIZE);
imshow("Equalized Image", dst);
waitKey(0);
return 0;
}
```
2. CLAHE算法
```c++
#include <iostream>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/imgcodecs.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat src = imread("test.jpg", IMREAD_GRAYSCALE);
if (src.empty()) {
cout << "Failed to load image!" << endl;
return -1;
}
Ptr<CLAHE> clahe = createCLAHE();
clahe->setClipLimit(4.0);
Mat dst;
clahe->apply(src, dst);
namedWindow("Source Image", WINDOW_AUTOSIZE);
imshow("Source Image", src);
namedWindow("CLAHE Image", WINDOW_AUTOSIZE);
imshow("CLAHE Image", dst);
waitKey(0);
return 0;
}
```
注意:在使用CLAHE算法时,需要使用`createCLAHE()`函数创建CLAHE对象,并且设置`clipLimit`参数来控制对比度增强的程度。
阅读全文