图像增强是图像处理中一种常用的技术,它的目的是增强图像中全局或局部有用的信息。合理利用图像增强技术能够针对性的增强图像中感兴趣的特征,抑制图像中不感兴趣的特征,这样能够有效的改善图像的质量,增强图像的特征。
介绍
计算机视觉主要有两部分组成:
- 特征提取
- 模型训练
- 频域法
- 空间域法
- 直方图均衡化
- 滤波
直方图均衡化
直方图均衡化的作用是图像增强,这种方法对于背景和前景都太亮或者太暗的图像非常有用。直方图是一种统计方法,根据对图像中每个像素值的概率进行统计,按照概率分布函数对图像的像素进行重新分配来达到图像拉伸的作用,将图像像素值均匀分布在最小和最大像素级之间。其中LLL 为灰度级。
用直白的语言来描述:把像素按从小到大排序,统计每个像素的概率和累计概率,然后用灰度级乘以这个累计概率就是映射后新像素的像素值。
一幅图像像素分布如图,像素级为255,利用直方图对像素分布进行统计,示例如下:
滤波
基于滤波的算法主要包括以下几种:
- 均值滤波
- 中值滤波
- 高斯滤波
这些方法主要用于图像平滑和去噪,在前一讲中已经阐述,感兴趣的可以看一下【动手学计算机视觉】第一讲:图像预处理之图像去噪。
编程实践
1完整代码地址:2https://github.com/jakpopc/aiLearnNotes/blob/master/computer_vision/image_enhancement.py3requirement:matplotlib/opencv
本文主要介绍直方图均衡化图像增强算法,前一讲已经实现了滤波法,需要的可以看一下。首先利用opencv读取图像并转化为灰度图,图像来自于voc2007:
1img = cv2.imread("../data/2007_000793.jpg")2gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
可以显示图像的灰度直方图:
1def histogram(gray):2 hist = cv2.calcHist([gray], [0], None, [256], [0.0, 255.0])3 plt.plot(range(len(hist)), hist)4# opencv calcHist函数传入5个参数:5# images:图像6# channels:通道7# mask:图像掩码,可以填写None8# hisSize:灰度数目9# ranges:回复分布区间
直方图均衡化,这里使用opencv提供的函数:
1dst = cv2.equalizeHist(gray)
均衡化后的图像为:
·end·
—如果喜欢,快分享给你的朋友们吧—
我们一起愉快的玩耍吧