程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> 計算機中的顏色IX—總述:RGB和HSV快速轉換

計算機中的顏色IX—總述:RGB和HSV快速轉換

編輯:VB綜合教程
 

寫了一段有關顏色的文章,回顧過去幾篇文章,做一個階段性總結。利用前幾篇文章的心得,推導出快速轉換RGB模式與HSV模式的公式。

  RGB模式:用R、G、B三個顏色的分量來表示顏色,分量的取值范圍為[0,255],整數型

  HSV模式:用H、S、V三個分量來表示顏色。

        分量H:表示顏色的色相,取值[0,360),整數型

        分量S:表示顏色的純度,取值[0,1),浮點數型

        分量V:表示顏色的亮度,取值[0,1),浮點數型

  以上內容,詳細請參看“計算機中的顏色III——HSV表示方法”

  1、RGB到HSV

    顏色(R,G,B)如何快速轉化到(H,S,V)

    參看文章“計算機中的顏色IV——純色、色相色”,“計算機中的顏色V——快速計算顏色的色相值”

    令MAX為R、G、B三個分量的最大值;MIN為三個分量的最小值

    若MAX=MIN,則

      H=0

      S=0

      V=MAX/255

    若MAX≠MIN

      當G≥B時

        H=(Max-R’+G’-Min+B’-Min)/(Max-Min)×60

        S=1-MIN/MAX

        V=MAX/255

      當G<B時

        H=360-(Max-R’+G’-Min+B’-Min)/(Max-Min)×60

        S=1-MIN/MAX

        V=MAX/255

  2、HSV到RGB

    顏色(H,S,V)如何快速轉化到(R,G,B)

    參看文章“計算機中的顏色VIII——快速計算顏色的偏轉”

    顏色(H,S,V)可以看成顏色(0,S,V)順時針偏轉H後得到顏色,其實,就是獲得該顏色MAX與MIN分量

    MAX=V×255=255V

    若S=0,說明MAX=MIN,此時表示灰度色

      R=MAX

      G=MAX

      B=MAX

    若S>0,則令ρ=MAX-MIN=255SV,MIN=MAX-ρ

      若H>180,令H’=360-H;反之,令H’=H

      令λ=H’/60×ρ

      R=2ρ-λ;若R<0,則R=0;若R>ρ,則R=ρ;

      G=λ;若G>ρ,則G=ρ;

      B=λ-2ρ;若B<0;則B=0;

      若H>180,則交換G和B分量的值;反之,不交換。最後

      R=R+MIN

      G=G+MIN

      B=B+MIN

  總述,以上是我推導的HSV和RGB的互相轉化公式,比許多網上介紹的原來的公式來的簡單。參看“計算機中的顏色III——HSV表示方法”。
 

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved