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

目录
  • 1. 原理
  • 2. 代码

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对数变换内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python灰度变换中的分段线性函数专项分析实现

    目录 1. 分段线性函数介绍 2. 代码实现 3. other 1. 分段线性函数介绍 分段线性函数同样是点运算,基于像素的图像增强,也就是对比度拉伸. 大概的原理就是:将不同灰度区间的灰度值经过不同的映射函数映射到另一个灰度区间的过程. 因为使用变换函数的个数是三个,所以我们经常使用的分段线性函数是三段线性变换函数 对应的数学公式为 a = 1 ,b = 0 时,恒等函数,不改变图像的灰度值 a >1, 对比度增强 0 < a < 1 , 对比度减弱 b 控制图像的亮度,b >

  • Python图像灰度变换及图像数组操作

    使用python以及numpy通过直接操作图像数组完成一系列基本的图像处理 numpy简介: NumPy是一个非常有名的 Python 科学计算工具包,其中包含了大量有用的工具,比如数组对象(用来表示向量.矩阵.图像等)以及线性代数函数. 数组对象可以实现数组中重要的操作,比如矩阵乘积.转置.解方程系统.向量乘积和归一化.这为图像变形.对变化进行建模.图像分类.图像聚类等提供了基础. 在上一篇python基本图像操作中,当载入图像时,通过调用 array() 方法将图像转换成NumPy的数组对象

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

    目录 1. 原理 2. 代码 1. 原理 对数变换的公式为: 其中:c是伸缩系数,常设为1.src为输入的原图像,dst为经过对数变换的输出图像 对数变换的曲线为: 由曲线的形状可以发现,对数变换将输入中范围较窄的低灰度值映射为输出中灰度值较宽的部分.也就是对数变换可以提升原图中暗区的对比度,同时可以压缩明亮区的对比度. 反对数变换的效果刚好相反 2. 代码 import numpy as np import cv2 def log(x): y =np.log(1+x) ym = y- y.mi

  • Python灰度变换中位图切割分析实现

    目录 1. 介绍 2. 实现方法 3. code 4. 比特平面重建图像 1. 介绍 图像的像素值是由比特组成的.例如一副256级灰度图像中,图像是由8 bit组成. 与之前对比度拉伸的区别是,之前我们主要强调在某一范围的灰度值作为我们能感兴趣的目标将其变亮或者变暗.而位图切割主要强调每个bit对图像的贡献,通过方法将不同位的灰度值值取出来还原成图像. 如图所示,一副8 bit图像,我们可以将图像分割成8个,将每个图像对应的比特位取出构建成一副新的图像 2. 实现方法 例如图像某一点的像素值为1

  • Python灰度变换中伽马变换分析实现

    目录 1. 介绍 2. 代码实现 3. 提升视频的亮度 1. 介绍 伽马变换主要目的是对比度拉伸,将图像灰度较低的部分进行修正 伽马变换针对的是对单个像素点的变换,也就是点对点的映射 形式为: 其中,s为输出的像素点的灰度值,r为输入像素点的灰度值.c . γ 为常数 γ 值不同的时候,对应的变换曲线如图,这里我们不关注具体函数的取值,而只是关注变换曲线的形状 通过观察可以发现 γ > 1 的时候,会压缩暗区的对比度,抬高亮区的对比度.并且γ越大,效果越明显 γ < 1 的时候,会提升暗区的对

  • Python编程中的反模式实例分析

    本文实例讲述了Python编程中的反模式.分享给大家供大家参考.具体分析如下: Python是时下最热门的编程语言之一了.简洁而富有表达力的语法,两三行代码往往就能解决十来行C代码才能解决的问题:丰富的标准库和第三方库,大大节约了开发时间,使它成为那些对性能没有严苛要求的开发任务的首选:强大而活跃的社区,齐全的文档,也使很多编程的初学者选择了它作为自己的第一门编程语言.甚至有国外的报道称,Python已经成为了美国顶尖大学里最受欢迎的编程入门教学语言. 要学好一门编程语言实属不易,在初学阶段,就

  • Python编程中Python与GIL互斥锁关系作用分析

    我们知道,在 CPython 中,有一个全局解释器锁,英文叫 global interpreter lock,简称 GIL,是一个互斥锁,用来保护 Python 世界里的对象,防止同一时刻多个线程执行 Python 的字节码,从而确保线程安全,这导致了 Python 的线程无法利用多核 CPU 的优势,因此有人说 Python 的多线程是伪多线程,性能不高,那么 Python 将来有可能去除 GIL 吗? 要回答这个问题,先从 GIL 的起源进行分析. GIL 的起源 Python 第一次发布是

  • python开发中range()函数用法实例分析

    本文实例讲述了python开发中range()函数用法.分享给大家供大家参考,具体如下: python中的range()函数的功能很强大,所以我觉得很有必要和大家分享一下 就好像其API中所描述的: If you do need to iterate over a sequence of numbers, the built-in function range() comes in handy. It generates arithmetic progressions 下面是我做的demo: #

  • python开发中module模块用法实例分析

    本文实例讲述了python开发中module模块用法.分享给大家供大家参考,具体如下: 在python中,我们可以把一些功能模块化,就有一点类似于java中,把一些功能相关或者相同的代码放到一起,这样我们需要用的时候,就可以直接调用了 这样做的好处: 1,只要写好了一个功能模块,就可以在以后调用,代码的重用就可以体现出来了 2,功能写好了以后,不会发生错误.如果一个相同的功能,我们在一个模块中写了一遍,在另外的模块中又写了一遍......这样我们难免保证我们在写的过程中不发生错误. 但是我们如果

  • python pandas中索引函数loc和iloc的区别分析

    目录 前言 1.直接使用行或者列标签 2.loc函数 3.iloc函数 总结 前言 使用pandas进行数据分析的时候,我们经常需要对DataFrame的行或者列进行索引.使用pandas进行索引的方法主要有三种:直接使用行或者列标签.loc函数和iloc函数. 举个简单的例子: import numpy as np import pandas as pd df = pd.DataFrame({"Fruits":["apple","pear",&

  • Python程序中设置HTTP代理

    0x00 前言 大家对HTTP代理应该都非常熟悉,它在很多方面都有着极为广泛的应用.HTTP代理分为正向代理和反向代理两种,后者一般用于将防火墙后面的服务提供给用户访问或者进行负载均衡,典型的有Nginx.HAProxy等.本文所讨论的是正向代理. HTTP代理最常见的用途是用于网络共享.网络加速和网络限制突破等.此外,HTTP代理也常用于Web应用调试.Android/IOS APP 中所调用的Web API监控和分析,目前的知名软件有Fiddler.Charles.Burp Suite和mi

随机推荐