Python如何实现伽马矫正

 更新时间:2023年10月12日 14:35:52   作者:一米阳光zw  
这篇文章主要介绍了Python如何实现伽马矫正问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Python实现伽马矫正

伽马矫正是一种借助了指数变换映射的增强技术。

伽马矫正的映射函数可表示为:d = T(s)= csY ,其中c和y为常数。

y的值是控制变换效果的主要因素,所以被称之为伽马矫正。

如右图所示:

  • 当y 之1时,输入的低灰度范围被压缩,高灰度范围被拉伸,实现了强化亮部,压缩暗部的图像增强效果;
  • 当y >1时,输入的高灰度范围被压缩,
  • 低灰度范围被拉伸,实现了强化暗部,压缩亮部的图像增强效果;

gama,pY

代码实现

import numpy as np
import cv2
def gama_trans(img, gamma):
    # 先归一化处理,再做伽马计算,再还原到[0,255]
    gmma_list = [np.power(x / 255.0, gamma) * 255.0 for x in range(256)]
    # 将列表换成nparray,换成无符号8为数
    gamma_table = np.round(np.array(gmma_list)).astype(np.uint8)
    return cv2.LUT(img, gamma_table)
# 定义matshow方法
def matshow(title='image', image=None, gray=False):
    if isinstance(image, np.ndarray):
        if len(image.shape) == 2:
            pass
        elif gray:
            # 转换成GRAY格式
            image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
        else:
            # 图片默认BGR通道,将突破转换成RGB
            image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
            # 使用这种方式显示图片可能会导致图片显示畸形
            # cv2.imshow('image', image)
    plt.figure()
    # 载入图像
    plt.imshow(image, cmap="gray")
    # 设置标题
    plt.title(title)
    plt.show()
if __name__ == '__main__':
    im = cv2.imread('data/lena.jpg', 0)
    matshow('im', im)
    # 使用小于1的伽马值
    im = gama_trans(im, 0.5)
    matshow('im0.5', im)
    # 使用大于1的伽马值
    im = gama_trans(im, 3)
    matshow('im3', im)

实现效果

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python中的SortedList详解

    Python中的SortedList详解

    这篇文章主要介绍了Python中的SortedList集合详解,Python的SortedSet是一个强大的数据结构,它结合了列表和集合的特性,你可以使用sortedcontainers模块中的SortedList类来创建和操作SortedSet,需要的朋友可以参考下
    2023-09-09
  • 详解Python中魔法方法的使用

    详解Python中魔法方法的使用

    Python的魔法方法,也称为dunder(双下划线)方法,是可以让你对类添加“魔法”的特殊方法。本文主要来和大家聊聊魔法方法的使用,需要的可以参考一下
    2022-12-12
  • 基于SpringBoot构造器注入循环依赖及解决方式

    基于SpringBoot构造器注入循环依赖及解决方式

    这篇文章主要介绍了基于SpringBoot构造器注入循环依赖及解决方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Python库BeautifulSoup中的select()和select_one()有什么区别

    Python库BeautifulSoup中的select()和select_one()有什么区别

    BeautifulSoup是一个强大且易于使用的Python库,它能够解析HTML和XML文档,并提供了一系列便捷的方法来提取所需的数据,其中,`select()`和`select_one()` 允许我们使用 CSS 选择器来定位文档中的元素,本文将深入探讨这两个函数的使用方法、区别以及实际应用场景
    2025-06-06
  • python出现RuntimeError错误问题及解决

    python出现RuntimeError错误问题及解决

    这篇文章主要介绍了python出现RuntimeError错误问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • TensorFlow用expand_dim()来增加维度的方法

    TensorFlow用expand_dim()来增加维度的方法

    今天小编就为大家分享一篇TensorFlow用expand_dim()来增加维度的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • PaddleOCR 识别表情包文字示例详解

    PaddleOCR 识别表情包文字示例详解

    这篇文章主要为大家介绍了PaddleOCR 识别表情包文字示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • 利用Python实现自定义连点器

    利用Python实现自定义连点器

    这篇文章主要介绍了如何利用Python实现自定义连点器,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-08-08
  • Python常用模块之datetime模块详解

    Python常用模块之datetime模块详解

    这篇文章主要介绍了Python常用模块之datetime模块详解,datetime是Python处理日期和时间的标准库,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • Python 异步之在 Asyncio中如何运行阻塞任务详解

    Python 异步之在 Asyncio中如何运行阻塞任务详解

    这篇文章主要为大家介绍了Python 异步之在 Asyncio 中运行阻塞任务示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03

最新评论