zoukankan      html  css  js  c++  java
  • RGB與CIELAB色彩空間轉換

    原地址:http://cg2010studio.wordpress.com/2012/10/02/rgb與cielab色彩空間轉換/

    之前有研究CIE L*a*b*色彩空間,現在想更進一步探討RGB色彩空間轉換至CIE L*a*b*色彩空間

    • 這時候我們想知道,為何需要將RGB色彩空間轉換至CIE L*a*b*色彩空間?

    一般影像在儲存像素的色彩時,使用RGB色彩空間來表示一個像素的顏色,這種表示方法可用來傳達一個像素的色彩在紅、綠、藍三個頻道(channel)中的相關性;但是,從RGB表示法無法得知像素的明亮度(luminance)飽和度(saturation)色相(hue)為何,因此,我們將像素的色彩由RGB色彩空間轉換至CIELAB(或CIE L*a*b*)。

    接下來介紹RGB和CIELAB如何互轉。

    RGB與CIELAB色彩空間轉換

    CIELAB色彩空間具有視覺上的均勻性(perceptually uniform),也就是說值的變化量和視覺上感知到的變化量是相同的,例如:值從100變為110與值從0變為10的感覺是相同的,這種表示方法較接近人類的視覺系統,而其它的色彩空間則較不具有這種特性。

    CIELAB色彩空間的表示法為(L*, a*, b*),L*代表黑色到白色間的位置,也就是明亮度(luminance),範圍是0~100;a*為綠色(green)到紫紅色(magenta)間的位置,範圍是-500~500;b*為藍色(blue)到黃色(yellow)間的位置,範圍是-200~200;距離圓心愈近飽和度愈底。

    為CIELAB色彩空間。

    為當L*為25、50、75 時的橫切面。

    #RGB 轉CIELAB 色彩空間

    先將RGB的值調整為介於0~1之間,再將色彩空間轉換至CIE XYZ色彩空間,以下為其轉換矩陣:

    再由CIE XYZ色彩空間轉換至CIELAB色彩空間,方法如下:

    #CIELAB轉RGB色彩空間

    先將CIELAB色彩空間轉換至CIE XYZ色彩空間,方法如下:

    再由CIE XYZ色彩空間轉換回RGB色彩空間,轉換矩陣如下:

    最後,將RGB的範圍由0~1調整為0~255。

    參考:WiKi - Lab color space台科大資管所碩士論文—秀拉點描派之電腦模擬。

  • 相关阅读:
    JAVA中的CAS
    深入介绍Java中的锁[原理、锁优化、CAS、AQS]
    Java并发之AQS详解
    Java线程池ThreadPoolExecutor使用和分析(一)
    LinkedBlockingQueue
    生产者消费者两种实现:wait/notifyAll和Lock/Condition
    Java并发编程:CountDownLatch、CyclicBarrier和 Semaphore
    jvm系列(1):JVM问答
    mysql不存在插入否则更新
    java.util.MissingResourceException: Can't find bundle for base name db, locale zh_CN
  • 原文地址:https://www.cnblogs.com/lanye/p/3736335.html
Copyright © 2011-2022 走看看