浅谈Python Opencv中gamma变换的使用详解


Posted in Python onApril 02, 2018

伽马变换就是用来图像增强,其提升了暗部细节,简单来说就是通过非线性变换,让图像从暴光强度的线性响应变得更接近人眼感受的响应,即将漂白(相机曝光)或过暗(曝光不足)的图片,进行矫正。

伽马变换的基本形式如下:

大于1时,对图像的灰度分布直方图具有拉伸作用(使灰度向高灰度值延展),而小于1时,对图像的灰度分布直方图具有收缩作用(是使灰度向低灰度值方向靠拢)。

#分道计算每个通道的直方图
img0 = cv2.imread('12.jpg')
hist_b = cv2.calcHist([img0],[0],None,[256],[0,256])
hist_g = cv2.calcHist([img0],[1],None,[256],[0,256])
hist_r = cv2.calcHist([img0],[2],None,[256],[0,256])
def gamma_trans(img,gamma):
 #具体做法先归一化到1,然后gamma作为指数值求出新的像素值再还原
 gamma_table = [np.power(x/255.0,gamma)*255.0 for x in range(256)]
 gamma_table = np.round(np.array(gamma_table)).astype(np.uint8)
 #实现映射用的是Opencv的查表函数
 return cv2.LUT(img0,gamma_table)
img0_corrted = gamma_trans(img0, 0.5)
cv2.imshow('img0',img0)
cv2.imshow('gamma_image',img0_corrted)
cv2.imwrite('gamma_image.png',img0_corrted)
#分通道计算Gamma校正后的直方图
hist_b_c =cv2.calcHist([img0_corrted],[0],None,[256],[0,256])
hist_g_c =cv2.calcHist([img0_corrted],[1],None,[256],[0,256])
hist_r_c =cv2.calcHist([img0_corrted],[2],None,[256],[0,256])
fig = plt.figure('gamma')
pix_hists = [[hist_b, hist_g, hist_r],
    [hist_b_c, hist_g_c, hist_r_c]]
pix_vals = range(256)
for sub_plt, pix_hist in zip([121, 122], pix_hists):
 ax = fig.add_subplot(sub_plt, projection='3d')
 for c, z, channel_hist in zip(['b', 'g', 'r'], [20, 10, 0], pix_hist):
  cs = [c] * 256
  ax.bar(pix_vals, channel_hist, zs=z, zdir='y', color=cs, alpha=0.618, edgecolor='none', lw=0)
 ax.set_xlabel('Pixel Values')
 ax.set_xlim([0, 256])
 ax.set_ylabel('Count')
 ax.set_zlabel('Channels')
plt.show()
cv2.waitKey()

以上这篇浅谈Python Opencv中gamma变换的使用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
linux 下实现python多版本安装实践
Nov 18 Python
Python3实现Web网页图片下载
Jan 28 Python
Python3连接MySQL(pymysql)模拟转账实现代码
May 24 Python
对django xadmin自定义菜单的实例详解
Jan 03 Python
Python面向对象程序设计示例小结
Jan 30 Python
pyinstaller打包程序exe踩过的坑
Nov 19 Python
Python中的X[:,0]、X[:,1]、X[:,:,0]、X[:,:,1]、X[:,m:n]和X[:,:,m:n]
Feb 13 Python
python属于解释语言吗
Jun 11 Python
python 三种方法提取pdf中的图片
Feb 07 Python
pycharm无法导入lxml的解决办法
Mar 31 Python
PyCharm 安装与使用配置教程(windows,mac通用)
May 12 Python
Python 匹配文本并在其上一行追加文本
May 11 Python
opencv改变imshow窗口大小,窗口位置的方法
Apr 02 #Python
python opencv设置摄像头分辨率以及各个参数的方法
Apr 02 #Python
python opencv 图像尺寸变换方法
Apr 02 #Python
Python聊天室程序(基础版)
Apr 01 #Python
Python socket实现简单聊天室
Apr 01 #Python
简单实现python聊天程序
Apr 01 #Python
简单实现Python爬取网络图片
Apr 01 #Python
You might like
CentOS 6.2使用yum安装LAMP以及phpMyadmin详解
2013/06/17 PHP
PHP页面中文乱码分析
2013/10/29 PHP
解密ThinkPHP3.1.2版本之独立分组功能应用
2014/06/19 PHP
php 微信公众平台开发模式实现多客服的实例代码
2016/11/07 PHP
自己开发Dojo的建议框架
2008/09/24 Javascript
JavaScript 拾漏补遗
2009/12/27 Javascript
JS的replace方法介绍
2012/10/20 Javascript
通过jQuery源码学习javascript(一)
2012/12/27 Javascript
Javascript倒计时页面跳转实例小结
2013/09/11 Javascript
javascript监听鼠标滚轮事件浅析
2014/06/05 Javascript
关于Javascript回调函数的一个妙用
2016/08/29 Javascript
vue-resource调用promise取数据方式详解
2017/07/21 Javascript
jQuery 改变P标签文本值方法
2018/02/24 jQuery
ES6中字符串的使用方法扩展
2019/06/04 Javascript
vue cli4下环境变量和模式示例详解
2020/04/09 Javascript
javascript实现数字时钟效果
2021/02/06 Javascript
python之import机制详解
2014/07/03 Python
python 网络爬虫初级实现代码
2016/02/27 Python
Centos Python2 升级到Python3的简单实现
2016/06/21 Python
python使用pandas实现数据分割实例代码
2018/01/25 Python
对python:threading.Thread类的使用方法详解
2019/01/31 Python
Python之指数与E记法的区别详解
2019/11/21 Python
python实现单目标、多目标、多尺度、自定义特征的KCF跟踪算法(实例代码)
2020/01/08 Python
使用python从三个角度解决josephus问题的方法
2020/03/27 Python
浅谈Python中os模块及shutil模块的常规操作
2020/04/03 Python
Python列表去重复项的N种方法(实例代码)
2020/05/12 Python
Python函数参数定义及传递方式解析
2020/06/10 Python
详解CSS3 filter:drop-shadow滤镜与box-shadow区别与应用
2020/08/24 HTML / CSS
HTML5 Web存储方式的localStorage和sessionStorage进行数据本地存储案例应用
2012/12/09 HTML / CSS
牧马人澳大利亚官网:Wrangler澳大利亚
2019/10/08 全球购物
Nixon手表英国官网:美国尼克松手表品牌
2020/02/10 全球购物
澳大利亚在线性感内衣商店:Fantasy Lingerie
2021/02/07 全球购物
shell程序中如何注释
2012/02/17 面试题
Ajax的工作原理
2015/12/04 面试题
学校趣味运动会开幕词
2016/03/04 职场文书
浅谈Python协程asyncio
2021/06/20 Python