今天看到一篇对我很有帮助的文档,给大家转转。

原文地址:http://blog.sina.com.cn/s/blog_53a06e87010087dh.html

YCbCr以极坐标表示,则Chroma和Hue的计算公式如下:

Chroma = Sqrt(Cb^2+Cr^2)
Hue    = Arctg(Cr/Cb)

下面我们给出了6种颜色的C与H的值:

 
            R    G    B    Y   Cb    Cr    C     H
Red    255  0    0     76   84  235 250  72

Blue   0      0    255  29 235  106 257    24

Green 0    255 0     150 42    18  45     24

Yellow 255 255 0    226  0   150  150  270

Cyan 0 255 255      179 172 0    172 360

Magenta 255 0 255 105  214 235 319 50

那么现在我们就有了最基本的调整关系公式了。

在YCbCr空间中,一般情况下我们进行调整都是利用一个调整矩阵来实现的:

| Y'  |   |k1  k2  k3|    | Y|
|Cb'| =|k4  k5  k6| * |Cb|
|Cr' |   |k7  k8  k9|    |Cr|

这里我们主要调整的就是这个矩阵的各个参数了,我们一般调整的物理参数主要有:Contrast,Cb_Gain,Cr_Gain,Hue这几种参数,那么这几个参数是如何作用的呢?下面一个一个来说吧:

Contrast:这个参数只需要调整第一行即可,一般的调整范围在(0~4)之间;

Cb_Gain:需要调整的是就是第二行了,范围大致也在(0~4);

Cr_Gain:这个与Cb_Gain类似,调整的是第三行,范围(0~4);

Hue:这个的调整是比较麻烦的,因为这个是在极坐标系内处理的,而从公式看,它又与Cb和Cr都有关系,但与Y无关。一般来说tan(Hue)=k6/k5=-k8/k9。调整的时候由于还要考虑到chroma的归一问题,所以还要进行如下限制:

k5^2+k6^2=1(不考虑cb_gain的时候)

k8^2+k9^2=1(不考虑cr_gain的时候)

这时候在上面的两个限制前提下,再加上tan(Hue)=k6/k5=-k8/k9,我们就可以按照Hue(0~360)来一度一度的进行调节了。




YCbCr空间中进行色彩调整的方法相关推荐

  1. 关于如何在空间中建立直角坐标系

    关于如何在空间中建立直角坐标系 前言:以前数学没学好,给现在埋了很多坑,现在来补一下数学基础,编写此文方便以后复习 空间直角坐标系的定义:空间任意选定一点O,过点O作三条互相垂直的数轴Ox,Oy,Oz ...

  2. OpenCV Using Python——HSV颜色空间和改进的YCbCr颜色空间中的肤色检测

    HSV颜色空间中的肤色检测 1. HSV颜色空间的肤色模型简介 Pitas等人提出在HSV空间建立肤色模型.不要求颜色归一化并且对光照鲁棒性很强,条件同时满足才会被分割成皮肤.实现条件如下: 2. 实 ...

  3. ORA-01653 表xxx无法通过8(在表空间xxx中)扩展解决方法

    当前系统的数据量越来越大的,昨天还运行正常的数据库,突然无法使用了.经过定位发现是"ORA-01653 " 即表空间满了,在这里简单记录下处理办法,长期来看oracle是顶不住了, ...

  4. 知识图谱中传统关系抽取方法

    目前主要采用统计机器学习的方法,将关系实例转换成高 维空间中的特征向量或直接用离散结构来表示,在标注语 料库上训练生成分类模型,然后再识别实体间关系  基于特征向量方法 最大熵模型(Kambhatl ...

  5. 继承实现的原理、子类中调用父类的方法、封装

    一.继承实现的原来 1.继承顺序 Python的类可以继承多个类.继承多个类的时候,其属性的寻找的方法有两种,分别是深度优先和广度优先. 如下的结构,新式类和经典类的属性查找顺序都一致.顺序为D--- ...

  6. 一文看尽4种SLAM中零空间的维护方法

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨wuRDmemory@知乎 来源丨https://zhuanlan.zhihu.com/p/34 ...

  7. Bioinformatics| 生物医学网络中的图嵌入方法

    今天给大家介绍Bioinformatics期刊的一篇文章,"Graph embedding on biomedical networks: methods, applications and ...

  8. cloning java_深入浅出Java中的clone克隆方法,写得太棒了!

    作者:张纪刚 blog.csdn.net/zhangjg_blog/article/details/18369201/ 2019-03-24 10:33:04 Java中对象的创建 clone 顾名思 ...

  9. 智能,万亿维空间中的求解

    作者:Terry J. Sejnowski 编译:贾伟.梦佳 1884年,Edwin Abbott 在讽刺小说<平面国>中描述了这样一个世界,这个国家生活在一个二维世界中,平面国的人们只能 ...

最新文章

  1. 【Android】Anroid5.0+新控件---酷炫标题栏的简单学习
  2. switch中default的用法
  3. jdom学习:读取xml文件
  4. Linux 网络层收发包流程及 Netfilter 框架浅析
  5. TensorFlow(九)eval函数
  6. android 音频播放总结 soundlPool,MediaPlay
  7. 再谈网络字节顺序,大小端问题
  8. 什么是UPS电源系统
  9. grafana zabbix 模板_【Grafana教程】安装Grafana并配置Zabbix数据源
  10. [算法]圆圈中最后剩下的数
  11. 用Notepad2替换Windows自带记事本
  12. 如何使用Bartender标签打印软件批量打印构件二维码标签?
  13. cefsharp修改html元素,CefSharp网页元素点击
  14. 电子计算机的两个重要改进是,1946年,冯.诺依曼在研制EDVAC计算机时,提出的两个重要改进是什么?...
  15. 复制命令(COPY)
  16. 【DDD落地实践系列】DDD领域驱动设计如何进行工程化落地
  17. android格式化SD卡,获取其它程序的缓存大小,清理数据
  18. 《三井帝国在行动》pdf电子版下载
  19. java交易撮合怎么实现_「康力电梯002367」“股票实时交易系统如何实现高并发撮合交易?最好有java架构“java 股票分析工具-京东方a小-seo金融...
  20. 一条sql语句添加多个字段

热门文章

  1. Android Sensor架构和原理分析
  2. Vscode之运行更新出错
  3. 人脸方向学习(十九):Face Landmark Detection-SBR-解读
  4. 深度学习自学(十五):人脸识别数据预处理方法
  5. 使用PyQt打包命令pyinstall的几个问题
  6. 计算机金融专业课程方案,《计算机在金融业中的应用》教学实施方案
  7. python怎么导入csv文件数据-机器学习Python实践——数据导入(CSV)
  8. 取rtsp流数据_SDP在RTSP、国标GB28181、WebRTC中的实践
  9. mysql startswith_Java startsWith()方法
  10. BeanUtils.copyProperties使用