colour-science是专门用来进行颜色空间计算的python模块,绘制CIE色度图用法十分简便。近来尝试了CIE 1976色度图的绘制,记录如下:

安装python colour-science模块,用于绘制色域图

git clone git://github.com/colour-science/colour.git
cd colour
conda activate back-matting   #用虚拟环境安装为好
pip install --user

安装plotting option

pip install --user ‘colour-science[plotting]’

安装完成。
绘制:
1 colour-science函数画出CIE1976UCS色度图;
2 将CIE1931 xy点坐标转换成CIE1976 u’v’坐标;
3 matplotlib绘制ITU-R BT.709,ITU-R BT.2020,DCI-P3色度空间多边形,以及pointer 色度空间;
4 附加曲线标注,修改坐标范围;
5 显示

import colour
from colour.plotting import *
colour_style()
import numpy as npplot_chromaticity_diagram_CIE1976UCS(standalone=False)import matplotlib.pyplot as plt
import matplotlib.patches as patchesax = plt.gca()       # 获取CIE1976UCS的坐标系# 坐标转换函数
# colour.xy_to_Luv_uv        convert  CIE 1931 xy to CIE 1976UCS u'v'
# colour.xy_to_UCS_uv       convert CIE 1931 xy to CIE 1960UCS uv
#  xy: CIE 1931 xy;    UCS_uv: CIE 1960UCS uv;  Luv_uv: CIE 1976 u'v'
ITUR_709=([[.64, .33], [.3, .6], [.15, .06]])
ITUR_709_uv=colour.xy_to_Luv_uv(ITUR_709)
ITUR_2020=([[.708, .292], [.170, .797], [.131, .046]])
ITUR_2020_uv=colour.xy_to_Luv_uv(ITUR_2020)
DCI_P3=([[.68, .32], [.265, .69], [.15, .06]])
DCI_P3_uv=colour.xy_to_Luv_uv(DCI_P3)
pointer_bound= ([[ 0.508, 0.226], [ 0.538, 0.258], [ 0.588, 0.280], [ 0.637, 0.298], [ 0.659, 0.316], [ 0.634, 0.351], [ 0.594, 0.391], [ 0.557, 0.427], [ 0.523, 0.462], [ 0.482, 0.491], [ 0.444, 0.515], [ 0.409, 0.546], [ 0.371, 0.558], [ 0.332, 0.573], [ 0.288, 0.584], [ 0.242, 0.576], [ 0.202, 0.530 ], [ 0.177, 0.454], [ 0.151, 0.389],[ 0.151, 0.330 ],[ 0.162, 0.295], [ 0.157, 0.266], [ 0.159, 0.245], [ 0.142, 0.214], [ 0.141, 0.195], [ 0.129, 0.168], [ 0.138, 0.141], [ 0.145, 0.129], [ 0.145, 0.106], [ 0.161, 0.094], [ 0.188, 0.084], [ 0.252, 0.104], [ 0.324, 0.127], [ 0.393, 0.165], [ 0.451, 0.199], [ 0.508, 0.226]])
pointer_bound_uv=colour.xy_to_Luv_uv(pointer_bound)
# matplotlib绘制四个多边形,对应四种颜色空间
gamut_709=patches.Polygon(ITUR_709_uv, linewidth=2, color='green', fill=False)
gamut_2020=patches.Polygon(ITUR_2020_uv, linewidth=2, color='yellow', fill=False)
gamut_DCI_P3=patches.Polygon(DCI_P3_uv, linewidth=1, color='blue', fill=False)
gamut_pointer=patches.Polygon(pointer_bound_uv, linewidth=2, color='white', fill=False)
ax.add_patch(gamut_709)
ax.add_patch(gamut_2020)
ax.add_patch(gamut_DCI_P3)
ax.add_patch(gamut_pointer)
plt.legend([gamut_709,gamut_2020, gamut_DCI_P3, gamut_pointer],['ITU-R BT.709','ITU-R BT.2020', 'DCI-P3', 'pointer gamut'],loc='upper right')  # 对曲线的标注
plt.axis([-0.1, 0.7, -0.1, 0.7])    #改变坐标轴范围
plt.show()

也可以直接用以下函数绘制。

RGB = np.random.random((3, 3, 3))  #(32,32,3) 定义点数少,可减少RGB对图形的干扰。
plot_RGB_chromaticities_in_chromaticity_diagram_CIE1976UCS(RGB,colourspaces=['ITU-R BT.2020','ITU-R BT.709','dci-p3'],show_pointer_gamut=True)


注:

plot_RGB_chromaticities_in_chromaticity_diagram_CIE1976UCS()

函数和

plot_chromaticity_diagram_CIE1976UCS(standalone=False)

不同,前者直接显示了所绘制的图像,于是不能在其上再用matplotlib绘制任何东西;后者没有显示图像,因此可以添加matplotlib的对象,最后

plt.show()

显示合成的图像。

两图比较,由plot_RGB_chromaticities_in_chromaticity_diagram_CIE1976UCS()绘制的pointer色域图与第一个(matplotlib绘制)略有不同,在见右上角处。原因是从colour-science提供的colour.POINTER_GAMUT_BOUNDARIES数据少了三个点。而matplotlib从colour-science github网站提供的PointerData.xls则共有35个点,此xls文件由pointer博士提供,具有权威性。

根据色度学,pointer色域是自然界常见的颜色范围,目前所用的几种颜色空间都是围绕pointer色域来定义,使之尽可能多的包含pointer色域。
BT.709色域是HDTV采用的标准,对CIE1976色域的覆盖率为33.2%,对pointer色域的覆盖率为70.2%。
DCI-P3是美国数字影院系统采用的色域,对CIE1976和pointer色域的覆盖率分别是41.7%和85.5%。
BT.2020是超高清UHDTV和高动态范围HDR电视规定的宽色域,对CIE1976和pointer色域的覆盖率分别是57.3%和99.7%。
目前的液晶显示器,基本能够覆盖BT.709色域;性能优异的液晶显示器,对DCI-P3色域的覆盖可达到98%;而采用纯净激光RGB光源的 DLP投影机,则可覆盖BT.2020色域达到97%。
可参见:
RTINGS.com

python colour-science 绘制CIE 1976色度图相关推荐

  1. Qt 绘制CIE色域图

    重写窗体的paintEvent函数,绘制CIE色品图 QPainter提供绘制封闭图形方法drawPolygon,QBrush有渐变填充方法QLinearGradient,通过将两种方法有机结合便可绘 ...

  2. python采用Basemap绘制完美中国地图(包括绘制边界框,随机点等)

    python采用Basemap绘制完美中国地图(包括绘制边界框,随机点等) 1. 效果图 2. 原理 2.1 依赖模块及安装 2.2 工程目录 2.3 依赖文件latlng.txt 经纬度 3 源码 ...

  3. 使用Python,Opencv绘制调色板及圆形来模拟霓虹的渐变效果

    使用Python,Opencv绘制调色板及圆形来模拟霓虹的渐变效果 1. 效果图 2. 源码 参考 这篇博客将使用python,opencv绘制调色板及圆形来模拟霓虹的渐变效果. 1. 效果图 可以构 ...

  4. python使用matplotlib绘制一条正弦曲线(plot函数可视化sine plot)

    python使用matplotlib绘制一条正弦曲线(plot函数可视化sine plot) 目录 python使用matplotlib绘制一条正弦曲线(plot函数可视化sine plot) #导入 ...

  5. Python使用matplotlib绘制透明背景的可视化图像并保存透明背景的可视化结果(transparent background)

    Python使用matplotlib绘制透明背景的可视化图像并保存透明背景的可视化结果(transparent background) 目录

  6. Python使用matplotlib绘制分组对比柱状图(bar plot)可视化时汉语(中文)标签显示成了框框□□、什么情况、我们有解决方案

    Python使用matplotlib绘制分组对比柱状图可视化时(bar plot)汉语(中文)标签显示成了框框□□.什么情况.我们有解决方案 目录

  7. Python使用matplotlib绘制数据去重前后的柱状图对比图(在同一个图中显示去重操作之后同一数据集的变化情况)

    Python使用matplotlib绘制数据去重前后的柱状图对比图(在同一个图中显示去重操作之后同一数据集的变化情况) #仿真数据 import pandas as pd import numpy a ...

  8. Python使用matplotlib绘制柱状图(bar plot)实战:水平条形图、垂直条形图、分组条形图、堆叠条形图

    Python使用matplotlib绘制柱状图(bar plot)实战:水平条形图.垂直条形图.分组条形图.堆叠条形图 目录

  9. Python把matplotlib绘制的水平条形图(horizontal bar)转化为竖直的柱状图(vertical bar)实战

    Python把matplotlib绘制的水平条形图(horizontal bar)转化为竖直的柱状图(vertical bar)实战 目录

  10. python使用matplotlib绘制水平条形图并在条形图上添加实际数值标签实战

    python使用matplotlib绘制水平条形图并在条形图上添加实际数值标签实战 # 绘制水平条形图进行模型对比 x_labels = ["LogisticRegression" ...

最新文章

  1. HTML5培训好不好
  2. 几行代码搞定ML模型,低代码机器学习Python库正式开源
  3. Balder 3D开发系列之--创建天空盒
  4. Document Builder: 怎样根据document ID使用API获得document的所有数据
  5. 阿里云 云服务器ECS(CentOS 8.0 64位) 安装 MySQL 数据库
  6. vue跳转下个页面关闭当前页面_如何机智判断页面是刷新还是关闭,背景:vue项目,需求:关闭页面,下次直接跳到登陆页...
  7. java cookie id,我如何在Java中获取会话ID
  8. 极客大学架构师训练营 系统架构 CAP原理 分布式系统脑裂 第六次作业
  9. Adobe Dreamweaver CC完美补丁amtlib.dll 解决进程CPU占用高问题
  10. 一元云购指定中奖版源码(开源+PC+移动端)
  11. Oracle-11g数据库安装教程
  12. Mysql 的ANY_VALUE()函数和 ONLY_FULL_GROUP_BY 模式
  13. Adaptive AUTOSAR和Classic AUTOSAR
  14. 双主机切换下导致的显示器闪动
  15. es备份之snapshot SLM策略cron详解
  16. programming notes - 在线学习资源
  17. 图应用之最短路径问题(头歌教学实践平台)
  18. 【指数Lyapunov】Lyapunov指数的MATLAB仿真
  19. Facebook的Twitter和Ins账号遭黑客攻击,又是第三方平台惹祸
  20. bilibili老版本_bilibili老版本

热门文章

  1. 4款好用的Android设备HTML编辑器
  2. 使用ACR122U NFC读卡器对M1卡进行读写操作(可以读写中文)
  3. 南京邮电大计算机科学与技术,计算机科学与技术专业培养目标与毕业要求-南京邮电大学计算机学院.PDF...
  4. 尚硅谷 模拟w3school首页导航条练习
  5. 什么样的家具拆单软件才能称之为好用?全屋定制拆单 衣柜橱柜拆单 sketchup拆单 拆单软件 有屋拆单软件 筑木
  6. 中文拼音排序的两种方法
  7. MATLAB:绘制用户给定的01序列图并计算其对应的AMI编码,双相编码和CMI编码
  8. 数学建模【开会总结】
  9. 计算机应用维护师实习周记,计算机系统维护专业毕业实习周记
  10. 随机游走算法(Random Walk)