文档章节

Python OpenCV学习笔记之:图像直方图均衡化

IOTService
 IOTService
发布于 2016/12/07 13:14
字数 201
阅读 114
收藏 1
# -*- 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()

© 著作权归作者所有

共有 人打赏支持
IOTService
粉丝 16
博文 138
码字总数 30215
作品 0
广州
程序员
OpenCV使用python实现限制对比度的自适应直方图均衡化

前面讲到的自适应直方图均衡化的实现方法首先是将图像划分成不重叠的区域块,让后对每个块分别进行直方图均衡化处理。如果在图像有噪声的情况下这样处理,在每个被分割的小区域块中的噪声就会...

异步社区
06/28
0
0
人脸检测原理及示例(OpenCV+Python)

前言 关于opencv OpenCV 是 Intel 开源计算机视觉库 (Computer Version) 。它由一系列 C 函数和少量 C++类构成,实现了图像处理和计算机视觉方面的很多通用算法。 OpenCV 拥有包括 300 多个 ...

张卫泉
2012/09/12
0
2
基于OpenCV和Python的文件操作——捕获摄像头的帧,在窗口显示图像,在窗口显示摄像头帧和视频文件的读/写

0 写在前面 这篇博客主要参考资料为《OpenCV 3计算机视觉Python语言实现》(Learning OpenCV 3 Computer Vison with Python)。 因为之前用Faster R-CNN做过一个红绿灯检测的小实践,但是Git...

learning_tortosie
04/12
0
0
图像检索的三种python实现(直方图/OpenCV/哈希法)

简介: 本文介绍了图像检索的三种实现方式,均用python完成,其中前两种基于直方图比较,哈希法基于像素分布。 检索方式是:提前导入图片库作为检索范围,给出待检索的图片,将其与图片库中的...

漫步当下
07/09
0
0
【AI实战】动手实现人脸识别程序

人脸识别在现实生活中有非常广泛的应用,例如iPhone X的识别人脸解锁屏幕、人脸识别考勤机、人脸识别开门禁、刷脸坐高铁,还有识别人脸虚拟化妆、美颜,甚至支付宝还推出了刷脸支付、建设银行...

雪饼
08/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

c语言之内存分配笔记

先看一个数组: short array[5] = {1,2} // 这儿定义的一个int类型的数组,数组第1和第2个元素值是1和2.其余后面默认会给值为0; 或者 short array[] = {1,2};//这儿数组第1和第2个元素,数组...

DannyCoder
今天
2
0
Shell | linux安装包不用选择Y/N的方法

apt-get install -y packageOR echo "y" | sudo apt-get install package

云迹
今天
2
0
Hadoop的大数据生态圈

基于Hadoop的大数据的产品圈 大数据产品的一句话概括 Apache Hadoop: 是Apache开源组织的一个分布式计算开源框架,提供了一个分布式文件系统子项目(HDFS)和支持MapReduce分布式计算的软件架...

zimingforever
今天
5
0
八大包装类型的equals方法

先看其中一个源码 结论:八大包装类型的equals方法都是先判断类型是否相同,不相同则是false,相同则判断值是否相等 注意:包装类型不能直接用==来等值比较,否则编译报错,但是数值的基本类型...

xuklc
今天
2
0
NoSQL , Memcached介绍

什么是NoSQL 非关系型数据库就是NoSQL,关系型数据库代表MySQL 对于关系型数据库来说,是需要把数据存储到库、表、行、字段里,查询的时候根据条件一行一行地去匹配,当量非常大的时候就很耗...

TaoXu
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部