opencv中自适应直方图均衡化
时间: 2024-08-26 07:02:55 浏览: 60
C# opencvsharp直方图均衡化全局局部自适应直方图均衡化源码
5星 · 资源好评率100%
OpenCV中的自适应直方图均衡化(Adaptive Histogram Equalization, AHE)是一种图像增强技术,它的目的是为了改善局部图像区域的对比度,使得图像的细节更加突出。常规的直方图均衡化会对整个图像进行均匀化的处理,而自适应版本则根据每个像素邻域的亮度信息来进行调整。
在OpenCV中,你可以使用`cv::equalizeHist()`函数进行全局直方图均衡化。但是如果你想要进行自适应处理,你需要利用`createCLAHE()`函数创建一个 Contrast Limited Adaptive Histogram Equalization (CLAHE) 对象。CLAHE会在一个小的邻域(通常称为“tiles”或“blocks”)内计算直方图并应用均衡化,然后对结果进行限制,防止过度强化导致的失真。
以下是一个简单的示例代码:
```cpp
#include <opencv2/opencv.hpp>
int main() {
cv::Mat src; // 假设你已经加载了源图像
if (!src.data)
return -1;
int tileSize = 8; // 邻域大小,默认值可能适合小图片,但可以根据需求调整
cv::Ptr<cv::CLAHE> clahe = cv::createCLAHE(// 创建CLAHE对象
cv::TermCriteria(), // 使用默认终止条件
cv::Size(tileSize, tileSize), // 定义邻域大小
cv::Rect() // 如果不指定,全图像都将被划分为等大的块
);
cv::Mat dst;
clahe->apply(src, dst); // 应用CLAHE到源图像上
// 现在dst就是自适应直方图均衡化的结果
// 可以显示原始图像和增强后的图像进行比较
cv::imshow("Original", src);
cv::imshow("CLAHE Enhanced", dst);
cv::waitKey(0);
return 0;
}
```
阅读全文