Python灰度变换中的对数变换专项分析实现

 更新时间:2022年10月18日 09:05:17   作者:Henry_zs  
灰度变换是指根据某种目标条件按一定变换关系逐点改变源图像中每个像素灰度值的方法。目的是改善画质,使图像显示效果更加清晰。图像的灰度变换处理是图像增强处理技术中的一种非常基础、直接的空间域图像处理方法,也是图像数字化软件和图像显示软件的一个重要组成部分

1. 原理

对数变换的公式为:

其中:c是伸缩系数,常设为1。src为输入的原图像,dst为经过对数变换的输出图像

对数变换的曲线为:

由曲线的形状可以发现,对数变换将输入中范围较窄的低灰度值映射为输出中灰度值较宽的部分。也就是对数变换可以提升原图中暗区的对比度,同时可以压缩明亮区的对比度。

反对数变换的效果刚好相反

2. 代码

import numpy as np
import cv2
def log(x):
    y =np.log(1+x)
    ym = y- y.min()
    dst = (ym / ym.max()) * 255
    return dst.astype(np.uint8)
img = cv2.imread('./f.jpg',0)
dst = log(img)
cv2.imshow('img',np.hstack((img,dst)))
cv2.waitKey()
cv2.destroyAllWindows()

处理的结果为

注:

因为图像经过对数变换后的值域很小,所以需要放大到0-255范围当中

  • 一般来说可以直接将对数变换后的图像dst / dst.max(),然后在乘上255
  • 图中演示的代码为图像处理书上给出的缩放Gm = Gm - Gm.min() , dst = Gm / Gm.max()在乘上255
  • 两者的区别是。书上的可以将灰度值最低的部分映射为0,而第一种方法有时候会出现这样的情况。这是因为图像的背景部分虽然是黑色,但灰度值不是0,经过对数变换会将灰度值低的区域对比度拉伸,所以会出现灰蒙蒙的样子

而使用书上的方法则不会出现这种情况

到此这篇关于Python灰度变换中的对数变换专项分析实现的文章就介绍到这了,更多相关Python对数变换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解如何使用Python和正则表达式处理XML表单数据

    详解如何使用Python和正则表达式处理XML表单数据

    在日常的Web开发中,处理表单数据是一个常见的任务,而XML是一种常用的数据格式,用于在不同的系统之间传递和存储数据,本文通过阐述一个技术问题并给出解答的方式,介绍如何使用Python和正则表达式处理XML表单数据,需要的朋友可以参考下
    2023-09-09
  • TensorFlow模型保存/载入的两种方法

    TensorFlow模型保存/载入的两种方法

    这篇文章主要为大家详细介绍了TensorFlow 模型保存/载入的两种方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • python之生产者消费者模型实现详解

    python之生产者消费者模型实现详解

    这篇文章主要介绍了python之生产者消费者模型实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • python中使用smtplib和email模块发送邮件实例

    python中使用smtplib和email模块发送邮件实例

    python脚本发邮件,一般会用到smtplib和email这两个模块。看看该模块怎么使用,先看smtplib模块。 smtplib模块定义了一个简单的SMTP客户端,可以用来在互联网上发送邮件
    2014-04-04
  • Python中requirements.txt简介(推荐)

    Python中requirements.txt简介(推荐)

    Python项目中必须包含一个 requirements.txt 文件,用于记录所有依赖包及其精确的版本号,以便新环境部署,这篇文章主要介绍了Python中requirements.txt简介,需要的朋友可以参考下
    2022-11-11
  • Python实现递归遍历文件夹并删除文件

    Python实现递归遍历文件夹并删除文件

    本文给大家汇总了3个Python实现遍历文件夹并删除的代码,主要是给大家分享下这3种方法的实现思路,有需要的小伙伴可以参考下
    2016-04-04
  • Python三种打包exe方法案例教程

    Python三种打包exe方法案例教程

    这篇文章主要介绍了Python三种打包exe方法案例教程,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • Django admin美化插件suit使用示例

    Django admin美化插件suit使用示例

    这篇文章主要介绍了Django admin美化插件suit使用示例,简单介绍了suit的使用界面示例,官方文档,安装语句等相关内容,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • python网络编程 使用UDP、TCP协议收发信息详解

    python网络编程 使用UDP、TCP协议收发信息详解

    这篇文章主要介绍了python网络编程 使用UDP、TCP协议收发信息详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Python使用pyaudio实现录音功能

    Python使用pyaudio实现录音功能

    pyaudio是一个跨平台的音频I/O库,使用PyAudio可以在Python程序中播放和录制音频,本文将利用它实现录音功能,并做到停止说话时自动结束
    2023-05-05

最新评论