浅谈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 相关文章推荐
深入探究Django中的Session与Cookie
Jul 30 Python
python 动态加载的实现方法
Dec 22 Python
Python根据指定日期计算后n天,前n天是哪一天的方法
May 29 Python
Python3利用Dlib实现摄像头实时人脸检测和平铺显示示例
Feb 21 Python
使用selenium模拟登录解决滑块验证问题的实现
May 10 Python
Python 数据可视化pyecharts的使用详解
Jun 26 Python
Python函数的定义方式与函数参数问题实例分析
Dec 26 Python
tensorflow 获取checkpoint中的变量列表实例
Feb 11 Python
python GUI库图形界面开发之PyQt5布局控件QHBoxLayout详细使用方法与实例
Mar 06 Python
Python写捕鱼达人的游戏实现
Mar 31 Python
Python发送邮件实现基础解析
Aug 14 Python
python垃圾回收机制原理分析
Apr 13 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
连接到txt文本的超链接,不直接打开而是点击后下载的处理方法
2009/07/01 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
基于PHP实现生成随机水印图片
2020/12/09 PHP
jquery1.4后 jqDrag 拖动 不可用
2010/02/06 Javascript
Google AJAX 搜索 API实现代码
2010/11/17 Javascript
深入理解JQuery keyUp和keyDown的区别
2013/12/12 Javascript
javascript创建对象、对象继承的实用方式详解
2016/03/08 Javascript
jQuery组件easyui基本布局实现代码
2016/08/25 Javascript
jQuery实现为LI列表前3行设置样式的方法【2种方法】
2016/09/04 Javascript
微信小程序 高德地图SDK详解及简单实例(源码下载)
2017/01/11 Javascript
基于JavaScript实现下拉列表左右移动代码
2017/02/07 Javascript
细说webpack源码之compile流程-入口函数run
2017/12/26 Javascript
微信小程序手机号码验证功能的实例代码
2018/08/28 Javascript
javascript动态创建对象的属性详解
2018/11/07 Javascript
layui的表单提交以及验证和修改弹框的实例
2019/09/09 Javascript
JavaScript实现原型封装轮播图
2020/12/27 Javascript
Python Web框架Flask中使用七牛云存储实例
2015/02/08 Python
Python封装shell命令实例分析
2015/05/05 Python
Python 正则表达式入门(中级篇)
2016/12/07 Python
python验证码识别教程之利用投影法、连通域法分割图片
2018/06/04 Python
Python实现点阵字体读取与转换的方法
2019/01/29 Python
对PyQt5中树结构的实现方法详解
2019/06/17 Python
python 贪心算法的实现
2020/09/18 Python
让IE可以变相支持CSS3选择器
2010/01/21 HTML / CSS
HTML5的结构和语义(1):前言
2008/10/17 HTML / CSS
国际鲜花速递专家:Floraqueen
2016/11/24 全球购物
泰国网上购物:Shopee泰国
2018/09/14 全球购物
党员违纪检讨书
2014/02/18 职场文书
创建无烟单位实施方案
2014/03/29 职场文书
项目经理任命书
2014/06/04 职场文书
超市开店计划书
2014/09/15 职场文书
学生夜不归宿检讨书
2014/09/23 职场文书
公安局班子个人对照检查材料思想汇报
2014/10/09 职场文书
大学生社会服务心得体会
2016/01/22 职场文书
PyTorch 实现L2正则化以及Dropout的操作
2021/05/27 Python
python垃圾回收机制原理分析
2022/04/13 Python