赞
踩
20.OpenCV的直方图均衡化
直方图均衡化通过调整图像的灰度来提高图像的对比度。
普通直方图均衡化主要是指将原图像的灰度级均匀地映射到全部灰度级范围内。OenCV的 cv2.equalizeHist()函数用于实现普通直方图均衡化,其基本格式如下:
dst = cv2.equalizeHist(src)
dst为直方图均衡化后的图像
src为原图像, 必须是8位的单通道图像
import cv2 import numpy as np import matplotlib.pyplot as plt img = cv2.imread('bee.jpg', cv2.IMREAD_GRAYSCALE) cv2.imshow('original', img) hist = cv2.calcHist([img], [0], None, [256], [0, 255]) plt.figure(figsize = (10,5)) plt.title('Original_Hist') plt.plot(hist, color='b') img2 = cv2.equalizeHist(img) cv2.imshow('EqualizeHist', img2) hist = cv2.calcHist([img2], [0], None, [256], [0, 255]) plt.figure(figsize = (10,5)) plt.title('EqualizeHist_Hist') plt.plot(hist, color='k') cv2.waitKey(0) cv2.destroyAllWindows()
普通直方图均衡化用于对图像全局进行调整,不能有效提高图像的局部对比度。为了提高图像的局部对比度,可将图像分为若干字块,对子块进行直方图均衡化,这就是自适应直方图均衡化。自适应直方图均衡化可能会造成图像的局部对比度过高,从而导致失真。为了解决此问题,可对局部对比度进行限制,这就是限制对比度自适应直方图均衡化(Contrast Limited Adaptied Histogram Equalization, CLAHE)。
OpenCV的cv2.createCLAHE()函数用于创建CLAHE对象,其基本格式如下:
retval =cv2.createCLAHE([clipLimit[, tileGridSize]])
retval为返回的CLAHE对象
clipLimit为对比度受限制的阈, 默认值为40.0
tileGridSize为直方图均衡化的网格大小, 默认值为(8,8)
调用CLAHE对象的apply()方法,将其应用到图像中进行均衡化
img = cv2.imread('clahe.jpg') img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) cv2.imshow('original', img) hist = cv2.calcHist([img], [0], None, [256], [0, 255]) plt.figure(figsize = (10,5)) plt.title('Original_Hist') plt.plot(hist, color='b') img2 = cv2.equalizeHist(img) cv2.imshow('EqualizeHist', img2) hist = cv2.calcHist([img2], [0], None, [256], [0, 255]) plt.figure(figsize = (10,5)) plt.title('EqualizeHist_Hist') plt.plot(hist, color='b') clahe = cv2.createCLAHE(clipLimit=2.0,tileGridSize=(8, 8)) img3 = clahe.apply(img) cv2.imshow('CreateCLAHE', img3) hist = cv2.calcHist([img3], [0], None, [256], [0, 255]) plt.figure(figsize = (10,5)) plt.title('CreateCLAHE_Hist') plt.plot(hist, color='b') cv2.waitKey(0) cv2.destroyAllWindows()
OpenCV-Python测试用图片、中文官方文档、opencv-4.5.4源码
以上内容介绍了OpenCV-Python的直方图基础操作,有关Python、数据科学、人工智能等文章后续会不定期发布,请大家多多关注,一键三连哟(●’◡’●)。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。