失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > OpenCV 自适应的直方图均衡化

OpenCV 自适应的直方图均衡化

时间:2023-08-09 20:10:31

相关推荐

OpenCV 自适应的直方图均衡化

自适应的直方图均衡化

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

cv.createCLAHE(clipLimit, tileGridSize)

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

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

import cv2 as cvfrom 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 自适应的直方图均衡化》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。