Python OpenCV学习笔记之:图像直方图均衡化
Python OpenCV学习笔记之:图像直方图均衡化
IOTService 发表于1年前
Python OpenCV学习笔记之:图像直方图均衡化
  • 发表于 1年前
  • 阅读 93
  • 收藏 1
  • 点赞 0
  • 评论 0

移动开发云端新模式探索实践 >>>   

摘要: 代码地址: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()
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 15
博文 134
码字总数 29156
×
IOTService
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: