python实现图像自动Gamma校正

前言:


关于Gamma:

Gamma校正是对动态范围内亮度的非线性存储/还原算法,即输入值进行的非线性操作,使输出值与输入值呈指数关系;从效果上来说Gamma校正调整图像的整体亮度,没有校正的图像看起来可能会存在过亮或太暗的情况,所以想要图像显示效果更完美,Gamma校正就显得很重要了。
Gamma矫正的计算过程如下:

output=〖input〗^(1/Gamma)

使用上面的指数函数把每个像素的RGB值进行变换。具体执行下列转换公式(假定像素值的取值范围为0到255):

R=〖255X(R/255)〗^((1/gamma))
G=〖255X(G/255)〗^((1/gamma))
B=〖255X(B/255)〗^((1/gamma))

一般处理Gamma矫正都是通过手动调节gamma值来完成的,但如果图片多的情况下,手动设置gamma值显得过于麻烦,这时候就需要采用自动Gamma矫正,将RGB图片转成灰度图,计算灰度图的数据均值,通过下面的计算公式计算gamma值。

gamma_val = math.log10(0.5) / math.log10(mean / 255)

python实现:

import cv2
import numpy as np
import math
import osdef gamma_trans(img, gamma):  # 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)  # 颜色值为整数return cv2.LUT(img, gamma_table)  # 图片颜色查表。另外可以根据光强(颜色)均匀化原则设计自适应算法。def nothing(x):passdata_base_dir = r'./1'  # 输入文件夹的路径
outfile_dir = r'./2'  # 输出文件夹的路径list = os.listdir(data_base_dir)
list.sort()
list2 = os.listdir(outfile_dir)
list2.sort()
for file in list:  # 遍历目标文件夹图片read_img_name = data_base_dir + '/' + file.strip()  # 取图片完整路径image = cv2.imread(read_img_name)  # 读入图片img_gray = cv2.imread(read_img_name, 0)  # 灰度图读取,用于计算gamma值mean = np.mean(img_gray)gamma_val = math.log10(0.5) / math.log10(mean / 255)  # 公式计算gammaimage_gamma_correct = gamma_trans(image, gamma_val)  # gamma变换out_img_name = outfile_dir + '/' + file.strip()cv2.imwrite(out_img_name, image_gamma_correct)print("The photo which is processed is {}".format(file))

python实现图像自动Gamma校正相关推荐

  1. 在OpenCV环境下对图像做Gamma校正

    什么是Gamma校正? Gamma校正是对输入图像灰度值进行的非线性操作,使输出图像灰度值与输入图像灰度值呈指数关系. 上面中的指数γ即为Gamma. 经过Gamma校正后的输入和输出图像灰度值关系如 ...

  2. python图片矫正后对比_python库skimage 对图像进行gamma校正和log校正

    Gamma校正 Gamma校正是对输入图像灰度值进行的非线性操作,使输出图像灰度值与输入图像灰度值呈指数关系: 这个指数即为Gamma. Gamma校正的原理很简单,就一个很简单的表达式,如下图所示: ...

  3. 为什么要对图像做Gamma校正?如何做?

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨HawkWang 来源丨计算摄影 在上一节中,我们得到了颜色校正后的图像 我们当前的进度如下,今 ...

  4. 古老的基于亮度平均值的自动Gamma校正算法。

    本篇博文来自博主Imageshop,更多内容可以移步至Imageshop查看. 转载自:https://www.cnblogs.com/Imageshop/p/13380028.html 侵删 在gi ...

  5. python实现图像自动亮度对比度

    前言 仿照imageJ原理,实现不同等级图像自动亮度对比度,该方法是基于找到大概亮度对比度后,用户觉得不理想,需要再次调节,采用不同level方式调节. imageJ自动图像亮度对比度原理 经过分析, ...

  6. python 数据图像修正_图像处理gamma修正(伽马γ校正)的原理和实现算法

    本文转自博客园:淇淇宝贝的文章<图像处理之gamma校正>,原文链接:https://www.cnblogs.com/qiqibaby/p/5325193.html 一.gamma校正背景 ...

  7. 图像的Gamma(伽玛)校正的原理及OpenCV代码实现

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 Gamma校正的原理很简单,就一个很简单的表达式 ...

  8. Gamma校正原理及python实现

    Gamma校正原理: 假设图像中有一个像素,值是 200 ,那么对这个像素进行校正必须执行如下步骤:  1. 归一化 :将像素值转换为  0 - 1  之间的实数. 算法如下 : ( i + 0. 5 ...

  9. Gamma校正及其OpenCV实现

    參考:[1]http://www.cambridgeincolour.com/tutorials/gamma-correction.htm [2]http://en.wikipedia.org/wik ...

最新文章

  1. matlab噪声倍频带声压级,近海风电场水下打桩噪声传播特性
  2. 职场中不可深交的五种人
  3. 删除唯一性约束unique
  4. SAP设置信贷控制范围有什么作用?
  5. [WPF疑难]ErrorTemplate显示与隐藏问题
  6. Python学习--Selenium模块
  7. 如何把一个数据库的数据copy到另外一个数据库
  8. ASP.NET 使用Session,避免用户F5刷新时重复提交(转)
  9. 上海计算机一级excel试题及答案,2016年计算机一级excel试题及答案
  10. gitlab设置项目组成员权限
  11. Python实现简单拼音输入法
  12. 目标检测00-05:mmdetection(Foveabox为例)-白话给你讲论文-翻译无死角-1
  13. 自定义view系列---刮刮乐的实现
  14. 4G模块-EM05驱动调试分享-02(Android上层更改)
  15. [渣翻]从零开始写一个时序数据库
  16. S3C2440实现dm9000网卡驱动程序移植
  17. Java之——Hash算法大全
  18. DICOM文件的matlab读取
  19. 2级c语言程序设计无忧考试,计算机二级考试|C语言程序设计攻略
  20. 快速入手瑞萨RA系列MCU指南

热门文章

  1. java实现sha256电子签名_Java与PHP签名验签问题(SHA256 with RSA算法)
  2. 2、KML对象转JSON
  3. 查看操作系统及CPU核数
  4. 【ABAQUS】模态分析
  5. 红旗Linux藏文操作系统填补软件数字鸿沟红旗linux操作系统
  6. 21世纪计算机科学与技术,大学计算机基础——常用办公软件(21世纪计算机科学与技术实践型教程)...
  7. 2022-2028全球及中国先进储能系统行业研究及十四五规划分析报告
  8. html超链接及锚链接的简单使用
  9. 血杀英雄为什么不显示服务器,《血杀英雄》不知道该怎么玩?看了这个就懂了...
  10. 什么是APS生产排程系统?