Python OpenCV学习笔记之:图像直方图均衡化
2016-12-07 00:00
225 查看
摘要: 代码地址:https://github.com/juxiangwu/tensorflow-learning/tree/master/opencv
# -*- coding: utf-8 -*- """ 图像直方图均衡化 """ import cv2 import numpy as np from matplotlib import pyplot as plt img = cv2.imread('../../../../datas/images/fish.jpg',0) # 计算处理前的直方图 hist,bins = np.histogram(img.flatten(),256,[0,256]) cdf = hist.cumsum() cdf_normalized = cdf * hist.max()/ cdf.max() plt.figure() plt.plot(cdf_normalized, color = 'b') plt.hist(img.flatten(),256,[0,256], color = 'r') plt.xlim([0,256]) plt.legend(('cdf','histogram'), loc = 'upper left') # 均衡化处理 cdf_m = np.ma.masked_equal(cdf,0) cdf_m = (cdf_m - cdf_m.min())*255/(cdf_m.max()-cdf_m.min()) cdf = np.ma.filled(cdf_m,0).astype('uint8') img2 = cdf[img] plt.figure() plt.subplot(121) plt.imshow(img,'gray') plt.subplot(122) plt.imshow(img2,'gray') plt.figure() # 处理后直方图 hist,bins = np.histogram(img2.flatten(),256,[0,256]) cdf = hist.cumsum() cdf_normalized = cdf * hist.max()/ cdf.max() # 显示处理后直方图 plt.plot(cdf_normalized, color = 'b') plt.hist(img.flatten(),256,[0,256], color = 'r') plt.xlim([0,256]) plt.legend(('cdf','histogram'), loc = 'upper left') # 使用OpenCV提供的函数 equ = cv2.equalizeHist(img) plt.figure() plt.subplot(121) plt.imshow(img,'gray') plt.subplot(122) plt.imshow(equ,'gray') plt.show()
相关文章推荐
- Python OpenCV学习笔记之:图像轮廓处理
- Python OpenCV学习笔记之:计算彩色图像各通道的直方图及图像区域直方图
- Python OpenCV学习笔记之:图像数学形态操作
- Python OpenCV学习笔记之:图像模板匹配
- 详解python OpenCV学习笔记之直方图均衡化
- Python OpenCV学习笔记之:图像梯度处理:Laplacian,Sobel算子
- openCV Python 学习笔记(一)图像的基本操作
- Python3+OpenCV学习笔记(二):图像几何变换及补边、裁剪
- Opencv Python版学习笔记(一)图像直方图
- python3.6.3+opencv3.3.0学习笔记六--存储视频和图像
- Python OpenCV学习笔记之:图像几何变换
- OpenCV之Python学习笔记(1)(2): 图像的载入、显示和保存 图像元素的访问、通道分离与合并
- python3.6.3+opencv3.3.0学习笔记四--获取摄像头图像
- Python OpenCV学习笔记之:图像阈值操作
- Python OpenCV学习笔记之:图像直方图反向投影(backprojection)原理简单实现
- Python OpenCV学习笔记之:图像直方图反向投影
- Python OpenCV学习笔记之:灰度图像的直方图计算
- OpenCV学习笔记(三):将图像显示在MFC控件上并做直方图均衡化处理
- python OpenCV学习笔记(二十二):直方图均衡化
- Python3+OpenCV学习笔记(一):图像加载、显示和保存