OpenCV 自适应的直方图均衡化

自适应的直方图均衡化
在这里插入图片描述
整幅图像会被分成很多小块,这些小块被称为“tiles”。然后再对每一个小块分别进行直方图均衡化。如果有噪声的话,噪声会被放大。为了避免这种情况的出现要使用对比度限制。对于每个小块来说,如果直方图中的 bin 超过对比度的上限的话,就把 其中的像素点均匀分散到其他 bins 中,然后在进行直方图均衡化。

cv.createCLAHE(clipLimit, tileGridSize)
  • clipLimit: 对比度限制,默认是40
  • tileGridSize: 分块的大小,在 OpenCV 中 tiles 的 大小默认为8 * 8

将整幅图像分成很多小块,然后再对每一个小块分别进行直方图均衡化,最后进行拼接。

import cv2 as cv
from matplotlib import pyplot as plt

# 1. 以灰度图形式读取图像
img1 = cv.imread('./1.png', 0)
img2 = cv.imread('./2.png', 0)

# 2. 创建一个自适应均衡化的对象,并应用于图像
clahe = cv.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8))
cl1 = clahe.apply(img1)

clahe2 = cv.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8))
cl2 = clahe.apply(img2)

# 3. 图像展示
fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(10, 8), dpi=100)
axes[0, 0].imshow(img1, cmap=plt.cm.gray)
axes[0, 0].set_title("原图")
axes[0, 1].imshow(cl1, cmap=plt.cm.gray)
axes[0, 1].set_title("自适应均衡化后的结果")
axes[1, 0].imshow(img2, cmap=plt.cm.gray)
axes[1, 0].set_title("原图")
axes[1, 1].imshow(cl2, cmap=plt.cm.gray)
axes[1, 1].set_title("自适应均衡化后的结果")
plt.show()

在这里插入图片描述

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; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值