浅谈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 正则式使用心得
May 07 Python
使用python的chardet库获得文件编码并修改编码
Jan 22 Python
使用python统计文件行数示例分享
Feb 21 Python
Python使用tkinter库实现文本显示用户输入功能示例
May 30 Python
python 内置模块详解
Jan 01 Python
python+openCV调用摄像头拍摄和处理图片的实现
Aug 06 Python
python实现淘宝购物系统
Oct 25 Python
python数据爬下来保存的位置
Feb 17 Python
python GUI库图形界面开发之PyQt5选项卡控件QTabWidget详细使用方法与实例
Mar 01 Python
Python selenium如何打包静态网页并下载
Aug 12 Python
详解Django中views数据查询使用locals()函数进行优化
Aug 24 Python
使用numpy nonzero 找出非0元素
May 14 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中取得image按钮传递的name值
2006/10/09 PHP
超级简单的php+mysql留言本源码
2009/11/11 PHP
用PHP+MySQL搭建聊天室功能实例代码
2012/08/20 PHP
PHP echo,print,printf,sprintf函数之间的区别与用法详解
2013/11/27 PHP
PHP中TP5 上传文件的实例详解
2017/07/31 PHP
PHP查找一列有序数组是否包含某值的方法
2020/02/07 PHP
读jQuery之七 判断点击了鼠标哪个键的代码
2011/06/21 Javascript
javascript学习笔记(一)基础知识
2014/09/30 Javascript
Javascript学习指南
2014/12/01 Javascript
jquery实现向下滑出的二级导航下滑菜单效果
2015/08/25 Javascript
JS原型对象的创建方法详解
2016/06/16 Javascript
jQuery实现查找最近父节点的方法
2016/06/23 Javascript
node.js的事件机制
2017/02/08 Javascript
JS实现新建文件夹功能
2017/06/17 Javascript
JavaScript用二分法查找数据的实例代码
2017/06/17 Javascript
jQuery 改变P标签文本值方法
2018/02/24 jQuery
搭建vue开发环境
2018/07/19 Javascript
Vue如何将页面导出成PDF文件
2020/08/17 Javascript
详解Python中的循环语句的用法
2015/04/09 Python
Python类属性与实例属性用法分析
2015/05/09 Python
Python实现数通设备端口使用情况监控实例
2015/07/15 Python
Python Xml文件添加字节属性的方法
2018/03/31 Python
python根据txt文本批量创建文件夹
2020/12/08 Python
Android Q之气泡弹窗的实现示例
2020/06/23 Python
原生canvas制作画图小工具的踩坑和爬坑
2020/06/09 HTML / CSS
国际书籍零售商:Wordery
2017/11/01 全球购物
拥有超过850家商店的美国在线派对商店:Party City
2018/10/21 全球购物
Jack Rogers官网:美国经典的女性鞋靴品牌
2019/09/04 全球购物
电脑教师的自我评价
2013/12/18 职场文书
《跨越百年的美丽》教学反思
2014/02/11 职场文书
购房协议书范本
2014/04/11 职场文书
服务承诺书
2015/01/19 职场文书
解决Python中的modf()函数取小数部分不准确问题
2021/05/28 Python
Nginx源码编译安装过程记录
2021/11/17 Servers
一次线上mongo慢查询问题排查处理记录
2022/03/18 MongoDB
零基础学java之循环语句的使用
2022/04/10 Java/Android