图像增强概述
图像增强是有目的地强调图像的整体或局部特性,将原来不清晰的图像变得清晰或强调某些感兴趣的特征,扩大图像中不同物体特征之间的差别,抑制不感兴趣的特征,使之改善图像质量、丰富信息量,加强图像判读和识别效果,满足某些特殊分析的需要。
图像增强通常划分如图所示的分类
直方图均衡化概述
直方图均衡化是图像处理领域中利用图像直方图对对比度进行调整的方法。通过这种方法,亮度可以更好地在直方图上分布。这样就可以用于增强局部的对比度而不影响整体的对比度,直方图均衡化通过有效地扩展常用的亮度来实现这种功能。
全局直方图均衡
该方法主要优点是算法简单、速度块、可自动曾倩图像;缺点是对噪声敏感、细节信息容易丢失,在某些结果区域产生过增强的问题。
局部直方图均衡
该方法优点是局部自适应,可最大限度的增强图像细节;缺点是增强图像质量操控困难,会随之引入噪声。
代码实现
全局直方图均衡化
#encoding:utf-8import cv2 import numpy as np import matplotlib.pyplot as plt#读取图片img = cv2.imread('1.bmp',cv2.IMREAD_GRAYSCALE)#灰度转换gray = img #cv2.cvtColor(img,cv2.COLOR_GRAY2RGB)#直方图均衡化处理result = cv2.equalizeHist(gray)#显示图像fig = plt.figure(figsize=(10, 10))#设置大小plt.subplot(221)plt.imshow(gray, cmap=plt.cm.gray, vmin=0, vmax=255), plt.axis("off"), plt.title('(a)') plt.subplot(222)plt.imshow(result, cmap=plt.cm.gray, vmin=0, vmax=255), plt.axis("off"), plt.title('(b)') plt.subplot(223)plt.hist(img.ravel(), 256), plt.title('(c)') plt.subplot(224)plt.hist(result.ravel(), 256), plt.title('(d)') plt.show()fig.savefig('fig-equal.jpg',bbox_inches='tight')
局部直方图均衡化
#encoding:utf-8import cv2 import numpy as np import matplotlib.pyplot as plt#读取图片img = cv2.imread('E:/python/CSDN/image/image_process/1.bmp',cv2.IMREAD_GRAYSCALE)#灰度转换gray = img #cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)#局部直方图均衡化处理clahe = cv2.createCLAHE(clipLimit=2, tileGridSize=(10,10))#将灰度图像和局部直方图相关联, 把直方图均衡化应用到灰度图 result = clahe.apply(gray)#显示图像fig = plt.figure(figsize=(10, 10))#设置大小plt.subplot(221)plt.imshow(gray, cmap=plt.cm.gray, vmin=0, vmax=255), plt.axis("off"), plt.title('(a)') plt.subplot(222)plt.imshow(result, cmap=plt.cm.gray, vmin=0, vmax=255), plt.axis("off"), plt.title('(b)') plt.subplot(223)plt.hist(img.ravel(), 256), plt.title('(c)') plt.subplot(224)plt.hist(result.ravel(), 256), plt.title('(d)') plt.show()fig.savefig('E:/python/CSDN/image/image_process/fig-clahe.jpg',bbox_inches='tight')
效果展示
全局直方图均衡化
局部直方图均衡化
CSDN话题挑战赛第2期
参赛话题:学习笔记