色彩图的非线性缩放以增强对比度

2024-03-30

以下 python 代码创建包含正态分布值的矩阵热图

import numpy as np
from matplotlib import pylab as plt


np.random.seed(123) #make sure we all have same data
m = np.random.randn(200).reshape(10, 20)
plt.imshow(m, cmap='RdYlGn', interpolation='nearest')
plt.colorbar()

这是这段代码的输出

我想通过“淡出”接近于零的值来增强该图像的对比度。 我可以通过使用原始数据的双曲线缩放轻松地做到这一点,如下所示:

def disigmoidScaling(values, steepnessFactor=1, ref=None):
    ''' Sigmoid scaling in which values around a reference point are flattened
    arround a reference point

    Scaled value y is calculated as 
        y = sign(v - d)(1 - exp(-((x - d)/s)**2)))
    where v is the original value,  d is the referenc point and s is the 
    steepness factor
    '''
    if ref is None:
        mn = np.min(values)
        mx = np.max(values)
        ref = mn + (mx - mn) / 2.0

    sgn = np.sign(values - ref)
    term1 = ((values - ref)/steepnessFactor) ** 2
    term2 = np.exp(- term1) 
    term3 = 1.0 - term2 
    return sgn * term3


plt.imshow(disigmoidScaling(m, 4), cmap='RdYlGn', interpolation='nearest')
plt.colorbar()

这是输出。

我对结果很满意,除了这个版本中的原始版本 值已交换为缩放值。

有没有办法执行值到颜色图的非线性映射?


颜色图包含映射在区间 [0,1] 上的红色、绿色和蓝色值的字典。这线性分段色彩图 http://matplotlib.sourceforge.net/api/colors_api.html#matplotlib.colors.LinearSegmentedColormap类文档给出了示例

cdict = {'red':   [(0.0,  0.0, 0.0),
               (0.5,  1.0, 1.0),
               (1.0,  1.0, 1.0)],

     'green': [(0.0,  0.0, 0.0),
               (0.25, 0.0, 0.0),
               (0.75, 1.0, 1.0),
               (1.0,  1.0, 1.0)],

     'blue':  [(0.0,  0.0, 0.0),
               (0.5,  0.0, 0.0),
               (1.0,  1.0, 1.0)]}

“表中给定颜色的每一行都是 x、y0、y1 元组的序列。在每个序列中,x 必须从 0 单调增加到 1。对于落在 x[i] 和 x[i+ 之间的任何输入值 z 1],给定颜色的输出值将在 y1[i] 和 y0[i+1] 之间线性插值:”

The RdYlGn颜色图对于每种颜色有 11 个 x 值,从 0 到 1.0,步长为 0.1。您可以获得cdict通过调用值

plt.cm.RdYlGn._segmentdata

然后,您可以将 x 值更改为您想要的任何步骤(只要它们单调递增且范围从 0 到 1),并通过调用获取新的颜色图matplotlib.colors.LinearSegmentedColormap在你的新cdict。在这方面有几个很好的例子Matplotlib 食谱 http://www.scipy.org/Cookbook/Matplotlib/ColormapTransformations.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

色彩图的非线性缩放以增强对比度 的相关文章

随机推荐

  • 如何为 iPad 创建表单弹出窗口 (iOS 8.1)

    我想使用 Swift 8 1 和演示文稿类型 Form Sheet 制作非常基本的弹出窗口 它应该是一个漂浮在屏幕中间的窗口 没有故事 我创建了两个视图控制器 一个按钮 并使用参数 Present As Popover 将按钮从一个控制器连
  • 从没有分支的分离提交中获取代码

    我有一个不在分支中的提交 它包含我所有的最新工作 我需要将其添加到主分支 我怎样才能做到这一点 git status显示这个 detached from b225b49 master saved work 如果我会失去它吗git check
  • 实现从 .net winforms 应用程序将文件拖到桌面吗?

    我有一个文件列表 其名称位于列表框中 其内容存储在 SQL 表中 并希望我的应用程序的用户能够选择列表框中的一个或多个文件名并将它们拖到桌面 从而生成桌面上的实际文件 我找不到任何有关如何执行此操作的文档 任何人都可以解释或指出解释吗 稍后
  • Scala 何时需要匿名函数和扩展函数的参数类型?

    Scala编译器什么时候真正需要匿名函数参数的类型信息 例如 给定这个函数 def callOn T R target T f T gt R f target 那么我不能像这样使用它 callOn 4 toString gt error m
  • 如何安装和使用 Apache Velocity?

    我已经安装了Apache服务器2 4和Ant 1 8 3 我已经下载了Velocity 1 7和Velocity工具2 0 我已经阅读了 Apache Velocity 的安装文档大约十遍 并且 Google 了两天 我仍然不知道如何处理这
  • ngOnInit 在 APP_INITIALIZER 完成之前启动

    APP INITIALIZER 运行一系列嵌套的承诺 我尝试过订阅 结果没有任何差异 APP INITIALIZER 在从 API 服务器检索数据之前需要进行身份验证 它还需要从 API 服务器拉取两个表 按顺序 在 api service
  • 手电筒打开时 AVCaptureSession 冻结

    我们的 iOS 应用程序具有条形码扫描功能 客户可以根据需要打开和关闭手电筒 在 iPhone X 上 且仅在 iPhone X 上 当 AvCaptureSession 运行且手电筒启用时 屏幕上的视频捕获会冻结 一旦手电筒再次关闭 视频
  • Django:一种更干燥的方法来防止编辑/删除对象?

    读完Django的权限文档后 我还是一头雾水 我想阻止用户编辑或删除他们不拥有的对象 我是这样写的并且有效 在views py中 def deleteReward request reward id reward get object or
  • C++ 中的浮点变量

    我正在学习C 并在一个简单的程序中遇到这些问题 所以请帮助我 这是代码 include
  • 捕获页面重定向的下载链接 (WGET)

    这是我的问题 我目前正在为我编写一个脚本 该脚本可以自动下载一些我用来 清理 计算机的软件 我已经能够使用如下下载 URL 进行下载 https www driverscloud com plugins DriversCloud Win e
  • C++ 单击红色 X 时防止控制台窗口关闭

    我正在开发一个简单的 C 控制台应用程序 没有类和对象 有没有任何方法或功能可以防止单击红色 X 按钮时控制台关闭 我正在使用 Visual Studio C Express 2010 一个简单的控制台应用程序 仅包含 main cpp 文
  • 保存 matplotlib 动画时遇到问题[重复]

    这个问题在这里已经有答案了 我正在使用 matplotlib 制作动画热图 我的数据在一个文本文件 rs h 中 有 3 列 x y z 我使用散点图制作一个简单的热图 然后使用动画包随着时间的推移更新热图 import pandas as
  • 如何使用 powershell 删除 SSL 绑定

    I use Remove WebBinding Port Port Protocol https删除 Web 绑定 这将从关联站点中删除绑定 但绑定仍然存在 我可以在下面找到一个条目IIS SslBindings但未分配给任何站点 如果我尝
  • Wcf 类公共属性与 get;set 属性

    当我创建一个 wcf 类时 我经常这样做 DataContract Public class Customer DataMember public string Name get set 有人告诉我这样做更好 DataContract Pu
  • 如何在 Java Response 对象中返回 JsonArray

    我正在尝试实现基于 java 的 web 服务服务器 它返回 Json 和基于 java 脚本的 web 服务客户端 这是我的java部分 Path myapp Consumes MediaType APPLICATION JSON Pro
  • 在微服务中使用 json Web 令牌进行会话管理

    我试图弄清楚如何在微服务架构中使用 json Web 令牌来管理会话 看看这个设计article http nordicapis com how to control user identity within microservices 我
  • C++ 流如何为输入分配空间?

    例如 is type std istream str type std string is gt gt str 这是怎么长出来的str适应输入 它逐个字符地读取并调用str push back 或类似的东西 或者它是否有一种机制可以在读取输
  • 作为 Xcode 构建过程的一部分,如何运行上传符号来上传 dSYM?

    好的 所以我正在尝试自动上传 dSYM 我正在遵循此官方文档中的说明 https firebase google com docs crashlytics get deobfuscated reports https firebase go
  • 左右声道与麦克风录音分离

    我试图从麦克风录制并将录制的数据仅发送到左通道 右通道上有零 但我的技术似乎不起作用 我正在使用 PCM 16 和单声道模式的录音和音轨 我似乎做错了什么 package com example leftrighttest import a
  • 色彩图的非线性缩放以增强对比度

    以下 python 代码创建包含正态分布值的矩阵热图 import numpy as np from matplotlib import pylab as plt np random seed 123 make sure we all ha