浅谈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中的测试模块unittest和doctest的使用教程
Apr 14 Python
Ubuntu16.04/树莓派Python3+opencv配置教程(分享)
Apr 02 Python
matplotlib.pyplot画图 图片的二进制流的获取方法
May 24 Python
python看某个模块的版本方法
Oct 16 Python
使用Python自动化破解自定义字体混淆信息的方法实例
Feb 13 Python
对numpy下的轴交换transpose和swapaxes的示例解读
Jun 26 Python
Python 剪绳子的多种思路实现(动态规划和贪心)
Feb 24 Python
Python 格式化打印json数据方法(展开状态)
Feb 27 Python
Python json读写方式和字典相互转化
Apr 18 Python
python 图像插值 最近邻、双线性、双三次实例
Jul 05 Python
解决pyinstaller 打包exe文件太大,用pipenv 缩小exe的问题
Jul 13 Python
PyQt QMainWindow的使用示例
Mar 24 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
学习php设计模式 php实现备忘录模式(Memento)
2015/12/09 PHP
php生成二维码图片方法汇总
2016/12/17 PHP
解决laravel查询构造器中的别名问题
2019/10/17 PHP
php+mysql实现的无限分类方法类定义与使用示例
2020/05/27 PHP
通过Jscript中@cc_on 语句识别IE浏览器及版本的代码
2011/05/07 Javascript
通过url查找a元素应用案例
2014/04/29 Javascript
javascript实现多栏闭合展开式广告位菜单效果实例
2015/08/05 Javascript
Angularjs material 实现搜索框功能
2016/03/08 Javascript
浅析JavaScript中的对象类型Object
2016/05/26 Javascript
老生常谈js数据类型
2017/08/03 Javascript
react-native-video实现视频全屏播放的方法
2018/03/19 Javascript
Bootstrap Table 双击、单击行获取该行及全表内容
2018/08/31 Javascript
JS闭包经典实例详解
2018/12/20 Javascript
Element-ui自定义table表头、修改列标题样式、添加tooltip、:render-header使用
2019/04/11 Javascript
vue-cli3中vue.config.js配置教程详解
2019/05/29 Javascript
python中的装饰器详解
2015/04/13 Python
python实现对一个完整url进行分割的方法
2015/04/29 Python
Python的Flask框架标配模板引擎Jinja2的使用教程
2016/07/12 Python
30秒轻松实现TensorFlow物体检测
2018/03/14 Python
利用python对Excel中的特定数据提取并写入新表的方法
2018/06/14 Python
python 使用poster模块进行http方式的文件传输到服务器的方法
2019/01/15 Python
IE矩阵Matrix滤镜旋转与缩放及如何结合transform
2012/11/29 HTML / CSS
HTML5 和小程序实现拍照图片旋转、压缩和上传功能
2018/10/08 HTML / CSS
HTML5之SVG 2D入门5—颜色的表示及定义方式
2013/01/30 HTML / CSS
localstorage和sessionstorage使用记录(推荐)
2017/05/23 HTML / CSS
英国一家集合了众多有才华设计师品牌的奢侈店:Wolf & Badger
2018/04/18 全球购物
梅西百货官网:Macy’s
2020/08/04 全球购物
函授大学生自我鉴定
2014/02/05 职场文书
护士自我鉴定怎么写
2014/02/07 职场文书
爱护花草树木的标语
2014/06/11 职场文书
2014年体育教学工作总结
2014/12/09 职场文书
幼儿学前班评语
2014/12/29 职场文书
先进个人评语大全
2015/01/04 职场文书
公积金具结保证书
2015/05/11 职场文书
Mysql实现主从配置和多主多从配置
2021/06/02 MySQL
2021年最新用于图像处理的Python库总结
2021/06/15 Python