浅谈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 相关文章推荐
Python操作sqlite3快速、安全插入数据(防注入)的实例
Apr 26 Python
深入解析Python中的线程同步方法
Jun 14 Python
Python 40行代码实现人脸识别功能
Apr 02 Python
python版简单工厂模式
Oct 16 Python
python 将list转成字符串,中间用符号分隔的方法
Oct 23 Python
Python-ElasticSearch搜索查询的讲解
Feb 25 Python
使用 Supervisor 监控 Python3 进程方式
Dec 05 Python
python列表生成器迭代器实例解析
Dec 19 Python
python3 实现调用串口功能
Dec 26 Python
基于PyQT实现区分左键双击和单击
May 19 Python
python新手学习使用库
Jun 11 Python
Scrapy中如何向Spider传入参数的方法实现
Sep 28 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
备份mysql数据库的php代码(一个表一个文件)
2010/05/28 PHP
PHP验证码类代码( 最新修改,完全定制化! )
2010/12/02 PHP
在smarty中调用php内置函数的方法
2013/02/07 PHP
PHP独立Session数据库存储操作类分享
2014/06/11 PHP
php中smarty区域循环的方法
2015/06/11 PHP
Zend Framework连接Mysql数据库实例分析
2016/03/19 PHP
Zend Framework教程之连接数据库并执行增删查的方法(附demo源码下载)
2016/03/21 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
javascript继承之为什么要继承
2012/11/10 Javascript
JavaScript禁止页面操作的示例代码
2013/12/17 Javascript
from表单多个按钮提交用onclick跳转不同action
2014/04/24 Javascript
JavaScript作用域链示例分享
2014/05/27 Javascript
jquery实现页面关键词高亮显示的方法
2015/03/12 Javascript
jQuery中$(function() {});问题详解
2015/08/10 Javascript
学习JavaScript设计模式之观察者模式
2020/04/22 Javascript
Javascript实现图片轮播效果(二)图片序列节点的控制实现
2016/02/17 Javascript
基于javascript实现九宫格大转盘效果
2020/05/28 Javascript
react native 仿微信聊天室实例代码
2019/09/17 Javascript
JavaScript this使用方法图解
2020/02/04 Javascript
[30:55]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第二场 11.18
2020/11/18 DOTA
Python去掉字符串中空格的方法
2014/03/11 Python
python多线程抓取天涯帖子内容示例
2014/04/03 Python
Python简单实现两个任意字符串乘积的方法示例
2018/04/12 Python
python实现随机加减法生成器
2020/02/24 Python
解决python3插入mysql时内容带有引号的问题
2020/03/02 Python
python异常处理之try finally不报错的原因
2020/05/18 Python
屈臣氏越南官网:Watsons越南
2021/01/14 全球购物
生产副总岗位职责
2013/11/28 职场文书
市场营销求职信范文
2014/02/21 职场文书
网页美工求职信范文
2014/04/17 职场文书
2014小学生国庆65周年演讲稿
2014/09/21 职场文书
2014年电信员工工作总结
2014/12/19 职场文书
2015年技术工作总结范文
2015/04/20 职场文书
思品教学工作总结
2015/08/10 职场文书
2016简单的租房合同范本
2016/03/18 职场文书