導航:首頁 > 源碼編譯 > rgb通用演算法

rgb通用演算法

發布時間:2023-04-24 11:08:57

❶ 顏色空間RGB與 色調、飽和度、亮度(ESL)轉換的完整C語言演算法

你把0-240 按比例 縮放 一下 到 HSL 的 范圍,用 HSL-RGB 轉換。

HSL--H是色相(0到360度),S是飽和度(0到1),L是亮度(0到1)

規1化的 HSL到RGB顏色值算換子程序:
// nomorized h,s,L 0-1.0
void HSL2RGB(double h, double s, double L,unsigned char *rr, unsigned char *gg,
unsigned char *bb)
{
double v,m,sv, vs0, c1, c2,xiaoshu,r,g,b;
int ih;
r = L; g = L;b = L;
if (L <= 0.5) v = L * (1.0 + s); else v = L + s - L * s;
if (v > 0) {
m = L + L - v; sv = (v - m ) / v;
h = h * 6.0; ih = (int)h;
xiaoshu = h - ih;
vs0 = v * sv * xiaoshu; c1 = m + vs0; c2 = v - vs0;
switch (ih) {
case 0: r = v; g = c1; b = m; break;
case 1: r = c2; g = v; b = m; break;
case 2: r = m; g = v; b = c1; break;
case 3: r = m; g = c2; b = v; break;
case 4: r = c1; g = m; b = v; break;
case 5: r = v; g = m; b = c2; break;
default: break;
}
}
*rr = (int) (r * 0xff); *gg = (int) (g * 0xff); *bb = (int) (b * 0xff);
}

把你3個數值,各除以240,代入子程序即可。
詳見:http://hi..com/svjvcfwticdkmse/item/e6c43a21e385b10977272c0e
彩虹光譜RGB值自動生成程序 (L_o_o_n_i_e == 金色潛鳥)

❷ 25%的灰度RGB是多少

25%的灰度RGB(25,25,25)。

灰度就是沒有色彩,RGB色彩分量全部相等。如果是一個二值灰度圖像,它的像素值只能為0或1,我們說它的灰度級為2。用個例子來說明吧:一個256級灰度的圖像,如果RGB三個量相同時,如:RGB(100,100,100)就代表灰度為100,RGB(50,50,50)代表灰度為50。

彩色圖像的灰度其實在轉化為黑白圖像後的像素值(是一種廣義的提法),轉化的方法看應用的領域而定,一般按加權的方法轉換,R, G,B 的比一般為3:6:1。

任何顏色都由紅、綠、藍三基色組成,假如原來某點的顏色為RGB(R,G,B),那麼,可以通過下面幾種方法,將其轉換為灰度:

1、浮點演算法:Gray=R*0.3+G*0.59+B*0.11

2、整數方法:Gray=(R*30+G*59+B*11)/100

3、移位方法:Gray =(R*77+G*151+B*28)>>8;

4、平均值法:Gray=(R+G+B)/3;

5、僅取綠色:Gray=G;

通過上述任一種方法求得Gray後,將原來的RGB(R,G,B)中的R,G,B統一用Gray替換,形成新的顏色RGB(Gray,Gray,Gray),用它替換原來的RGB(R,G,B)就是灰度圖了。

(2)rgb通用演算法擴展閱讀


RGB格式:

對一種顏色進行編碼的方法統稱為「顏色空間」或「色域」。用最簡單的話說,世界上任何一種顏色的「顏色空間」都可定義成一個固定的數字或變數。

RGB(紅、綠、藍)只是眾多顏色空間的一種。採用這種編碼方法,每種顏色都可用三個變數來表示-紅色綠色以及藍色的強度。記錄及顯示彩色圖像時,RGB是最常見的一種方案。

但是,它缺乏與早期黑白顯示系統的良好兼容性。因此,許多電子電器廠商普遍採用的做法是,將RGB轉換成YUV顏色空間,以維持兼容,再根據需要換回RGB格式,以便在電腦顯示器上顯示彩色圖形。

網頁格式:

由於網頁(WEB)是基於計算機瀏覽器開發的媒體,所以顏色以光學顏色RGB(紅、綠、藍)為主。網頁顏色是以16進制代碼表示,一般格式為#DEFABC (字母範圍從A-F,數字從0-9 );

如黑色,在網頁代碼中便是:#000000(在css編寫中可簡寫為#000)。當顏色代碼為#AABB11時,可以簡寫為#AB1表示,如#135與#113355表示同樣的顏色。

RGB1、RGB4、RGB8都是調色板類型的RGB格式,在描述這些媒體類型的格式細節時,通常會在BITMAPINFOHEADER數據結構後面跟著一個調色板(定義一系列顏色)。它們的圖像數據並不是真正的顏色值,而是當前像素顏色值在調色板中的索引。

以RGB1(2色點陣圖)為例,比如它的調色板中定義的兩種顏色值依次為0x000000(黑色)和0xFFFFFF(白色)…(每個像素用1位表示)表示對應各像素的顏色為:黑黑白白黑白黑白黑白白白。

❸ 純色在RGB空間裡面的位置是什麼純色的RGB演算法是什麼

純色在色坐標上很容易找到, 這個你需要網路"1931xy色坐標繪制".
另外,你對純色有一定的誤解.
在RGB上, 也就是你希望得到(xxx,xxx,xxx) 這種類型是不行的.
所謂的(255,255,0)並不是指的純色黃色光, 它指的是你的電腦顯示器的像素中 R像素和G像素最大亮度時混合而成的黃光, 用專業的光學來解釋也就是說: 這時得到的黃色僅僅是在你顯示器的色域R,G兩點連線的邊上. 並非是所謂的對應單一的波長的黃光.
簡單來說,也就是你所謂的RGB空間其實是指你顯示器的色域空間, 要確定這個色域空間的顏色坐標需要先將R,G,B 三色畫面的坐標(x,y)以及亮度(L)利用光學儀器測出, 然後利用三角形原理即可算出所有坐標.

❹ 存在十六進制轉換為RGB的通用計算公式嗎,如果有請給出

存在十六進制轉換為RGB的汪困通用計算公式如下:

DC = 220 R

14 = 20 G

3C = 60 B

一一對應的,16進制轉10進制。可以用電腦的計算桐陵謹器。科學型。

進制轉換如下:

F= 15

E =14

D = 13

C=12

B=11

A=10

(4)rgb通用演算法擴展閱讀:

16轉10

16進制數的第0位的權值為16的0次方,局基第1位的權值為16的1次方,第2位的權值為16的2次方……

所以,在第N(N從0開始)位上,如果是數 X (X 大於等於0,並且X小於等於 15,即:F)表示的大小為 X * 16的N次方。

例:2AF5換算成10進制:

用豎式計算:

第0位: 5 * 16^0 = 5

第1位: F * 16^1 = 240

第2位: A * 16^2= 2560

第3位: 2 * 16^3 = 8192

❺ 誰能給一個漸進色的演算法--要全一點的

漸進色的話可以這樣做~~~例如從RGB(r1,g1,b1)到RGB(r2,g2,b2)

首先你設置一個步長step,步長你可以取繪制矩形的大小或者是顏色分量差的最大值,我這里就簡單地取顏色分量差的量大值吧~~
s1=r1-r2
s2=g1-g2
s3=b1-b2
那麼step=max( abs(s1) , abs(s2), abs(s3) )
這樣你可以得到
f_r = s1 / (float)step;
f_g = s2 / (float)step;
f_b = s3 / (float)step;

設一個變數i = 0; i < step; i++
新的顏色c = RGB( r1+f_r*i , r2+f_g*i , r3+f_b*i )
==============================
PhotoShop中那個漸變是用OpenGL來渲染的~~~用這個的話就簡單多了~~只用指定左邊兩點和右邊兩點的顏色,然後以GL_SMOOTH這個默認個值來填充就行了……

❻ 詳細請教:關於十進制RGB顏色值轉換十六進制顏色值的演算法

把十六進制的數前面加0補成長度為6的數,然後前兩位化成十進制數代表紅色,中間兩位化成十進制數代表綠色,最後兩位化成十進制數代表藍色。如&FFFF,先變成00FFFF,於是等於RGB(0,255,255)

網上還有專門的顏色值運算器,要是嫌計算麻煩,就下一個用吧~~~

❼ 詳解RGB-HSB互相轉換的演算法

在講這個之前,首先簡單介紹一下什麼是RGB,什麼是HSB。

RGB色彩模式是工業界的一種顏色標准,是通過對紅(R)、綠(G)、藍(B)三個顏色通道的變化以及它們相互之間的疊加來得到各式各樣的顏色的,RGB即是代表紅、綠、藍三個通道的顏色,這個標准幾乎包括了人類視力所能感知的所有顏色,是運用最廣的顏色系統之一。顯示器大都是採用了RGB顏色標准。

HSB又稱HSV,表示一種顏色模式:在HSB模式中,H(hues)表示色相,S(saturation)表示飽和度,B(brightness)表示亮度。HSB模式對應的媒介是人眼。

(以下為了避免RGB的B和HSB的B混淆,HSB統一寫作HSV)

RGB的色彩模型是一個立方體,而HSV的色彩模型一般為圓柱體或圓錐體。詳見下圖:

當然,色彩模式還有很多,諸如:CMYK,ABL等等,本文不多做介紹。

相對於RGB,HSV模式更便於描述人眼對與顏色的感覺。如圖的HSV椎形坐標,橫截面從下往上亮度值V從0%到100%遞增,橫截面的中心(即圓心位置)是灰色的,隨著半徑增大(相對遠離圓心位置),飽和度S從0向100%遞增,色相H取值0°~360°,代表截面上紅、黃、綠、青、藍、紫的顏色變化。

HSV坐標系最頂部的截面最外圈,飽和度和亮度都是100%,隨著色相從0°到360°變化,RGB值的變化如上圖,紅色、綠色、藍色分別位於0°、120°、240°;0°到60°之間綠色分量均勻增加,60°到120°之間紅色分量均勻減少,以此類銀謹推。設置S=V=100%,調整H的值觀察RGB的變換就能發現這個規律。如下圖:

根據上圖可知,不論H處於哪個位置,RGB值中的(r,g,b)三個數值中最大值一定是255,最小值一定是0。

而由此可見,與H相關的,是RGB值中的判搏頃(r,g,b)三個數值中最大的那個值。

在亮度B=100%時,飽和度S降低,即「不飽和度」會升高,會使得RGB與最大值255相差的部分對應增大,RGB三個分量越趨於相同就使得圖像越灰。而這個「不飽和度」可以用1-S來代替。

而RGB三個分量中的單個分量的數值中,經過我在PS中對色相立方體的多次測試觀察,可以推斷。如下圖,當只改變最大值且使它保持最大值時,顏色只會在Y軸縱向偏移,而改變最小值且使它保持最小值,顏色只會在X軸進行橫向偏移。由此可見max是由純色向著黑色進行漸變的,max越小,顏色越暗,min是由純色向著白色進行漸變的,min越大,顏色越亮。

在明度開始下降時,RGB的三個分量,都會開始同時下降,下降遞減的值,是根據分量本身來定的。

根據「概念二」可知,明度相關的是RGB的最大值。

如:rgb(255,255,255)

那麼這個時候的明度是100%。

 R=255/255=100%=1

G=255/255=100%=1

B=255/255=100%=1

如:rgb(126,24,99)

那麼這個時候的明度是49%。

R=126/255=49=0.49

G=25/255=10=0.1

B=99/255=39=0.39

以PS的色相立方體為模型,H從最底下0°開始上升,到360°=0°,除去0°和360°兩個頂點同為紅色外,60°黃色,120°綠色,180°青色,240°藍色,300°紫色。

以這七個位置作為原點,向右是正向偏移,即f,向左是反向偏移,即1-f。

正掘陸向偏移取的是這六個區間內的左邊的值,反向偏移取的是這六個區間右邊的值。

如:130°,相對120°的綠色,正向偏移了10°,相對180°的青色反向偏移了50°

而這個時候的綠色為255,藍色從左自右逐漸遞增,紅色始終為0。

由此可見正向偏移得到的是最大值max,反向偏移得到的是中間值med。

在確定H的值之前,需要知道H代表的是什麼,以及H和RGB之間的關系。

根據上文提到,H代表的是色相,以及「概念一」中提到的可以得知:

h1=[H/60] mod6 

詳解:h1等於H除以60,取整數部分,然後除以六,求出余數。

H/60的整數部分除以六,求出余數。是確定H在的顏色區域。而H/60的小數部分,即為在這個顏色范圍中偏移的值。

如果h1=0,那麼顏色在0°-60°區域

如果h1=1,那麼顏色在60°-120°區域

如果h1=2,那麼顏色在120°-180°區域

如果h1=3,那麼顏色在180°-240°區域

如果h1=4,那麼顏色在240°-300°區域

如果h1=5,那麼顏色在300°-359°區域

f=H/60-h1

詳解:這里變數f求的是顏色在色相環中對應區域的偏移值。已知 [H/60] 是確定區域作用,

根據上文提到,H/60的小數部分是求顏色范圍的偏移值

,那麼h/60-[h/60]=H/60-h1就是求出求出這個偏移值。

p=   V*(1-S)

詳解:這里變數p求的是實際RGB中的最小值,即min。

根據「概念二」得知,1-S求的是不飽和度,則1-S求的是飽和度最低的值,也就是RGB中三個分量中與255相差大的值。這個值乘以明度,即是RGB三個分量中最小的那個值。

q=   V*(1-f*s)

詳解:這里變數q求的是實際RGB中的最大值,即max。

根據「概念一」可以得知,與最大值相關的,就是H,f是h在指定色相區域內的偏移角度,f*s是RGB三個分量中最大的那個值的飽和度,1-f*s得到的就是最大值不飽和度,再乘以明度即是RGB三個分量中最大的那個值。

t=V*(1-(1-f)*s)

詳解:這里變數q求的是實際RGB中的中間值,即med。

根據「概念一」可以得知,與最大值相關的,就是H,f是h在指定色相區域內的偏移角度,而根據「概念4」可以得知,1-f就是反向偏移,反向偏移求的就是中間值,(1-f)*s就是反向偏移的中間值乘以飽和度。(1-(1-f)*s)就是反向偏移的中間值的不飽和度,最後再把明度乘進去,V*(1-(1-f)*s),求的就是RGB的中間值。

當把max,med,min,三個對應RGB中分量的值求出來之後,開始判斷條件,分別代入。

根據上面的式子,我們可以知道,判斷H位置的變數是h1,

結合「概念一」中提到的,紅色、綠色、藍色分別位於0°、120°、240°;0°到60°之間綠色分量均勻增加,60°到120°之間紅色分量均勻減少,等等。以及表格的內容。

那麼就可以將max,med,min,找到對應的位置,填入RGB的三個分量中去。

這里不作詳細解釋,上面圖片里的式子寫的很清楚,自行理解。

以下是查閱(參考資料1)獲得的RGB轉HSV演算法公式,其中求V的演算法是錯誤的。

因為(參考資料1)中沒有說明演算法中的max及min的相關說明。所以我在這里困惑了很久。

通過推導(參考資料2)的過程,可以得知,max和man分別代表的是兩個變數,這兩個變數取自RGB值中的(r,g,b)三個數值中的最大值及最小值。

那麼演算法代表的意義就明確起來。

undefined     if max=min     

詳解:當最大值等於最小值時,h可以為任意值,不會影響實際展示出來的顏色。因為RGB值中的(r,g,b)三個數值都相等。如果RGB的三個數值相等,那麼色彩的范圍在色彩模型中就是圓心的位置,即為黑白灰,與色相H無關。

60°*(g-b)/(max-min)+0°        if max =r and g>=b     

詳解:根據上面總結的規律可以得知如果最大值為r,那麼H的取值范圍就是300°-360°或0°-60°,且如果要滿足g大於等於b,假設g=b,那麼g和b只能為0。當g>b時,H的取值范圍就變為0°-60°,且角度一定是R向G進行偏移,這個時候只需要計算R向著G的偏移度數,即可求出H的值。 g-b為差值,max-min是差值分量,(g-b)/(max-min)是求偏移分量,60*(g-b)/(max-min)是求在這個取色范圍中偏移度數。60*(g-b)/(max-min)+0°是求所在色彩區域距離0°的差值,需要加上。

60°*(g-b)/(max-min)+360°        if max =r and b>g  

詳解:此處是求R值的第二種情況,最大值為r,那麼H的取值范圍就是300°-360°或0°-60°,且如果要滿足b大於g,當g>b時,H的取值范圍就變為300°-360°,且角度一定是B向R進行偏移,這個時候只需要計算B向著R的偏移度數,即可求出H的值。 g-b為差值,max-min是差值分量,(g-b)/(max-min)是求偏移分量,60*(g-b)/(max-min)是求在這個取色范圍中偏移度數。60*(g-b)/(max-min)+360°是求所在色彩區域距離0°的差值,需要加上。

60°*(b-r)/(max-min)+120°        if max =g 

詳解:根據上面總結的規律可以得知如果最大值為g,那麼H的取值范圍就是60°-240°。 b-r為差值,max-min是差值分量,(b-r)/(max-min)是求偏移分量,60*(b-r)/(max-min)是求在這個取色范圍中偏移度數,可以為負數,正數代表G向著B偏移,負數代表G向著R偏移。60*(g-b)/(max-min)+120°是求所在色彩區域距離0°的差值,需要加上。

60°*(r-g)/(max-min)+240°        if max =b

詳解:根據上面總結的規律可以得知如果最大值為b,那麼H的取值范圍就是120-300°。 r-g為差值,max-min是差值分量,(r-g)/(max-min)是求偏移分量,60*(r-g)/(max-min)是求在這個取色范圍中偏移度數,可以為負數,正數代表B向著R偏移,負數代表B向著G偏移。60*(r-g)/(max-min)+240°是求所在色彩區域距離0°的差值,需要加上。

0            if max = 0

詳解:當RGB中的最大值都為0,那麼其他兩個值,也一定為0,此時的顏色為黑色。無飽和度,所以飽和度也為0。

(max-min)/max

詳解:這里max代表的是顏色的飽和度最高值,min代表的是顏色飽和度的最低值,因為max與RGB分量的最大值255更為接近,而min與RGB分量的最小值0更為接近。

這里將max作為這個RGB值分量的最大值,即飽和度的最高值,那麼min就代表的是不飽和度,將飽和度的最大值減去不飽和度,得到的即是飽和度的數值。然後將飽和度的數值除以RGB中的最大分量max,得到的百分比,即使飽和度S的值。

上面公式圖的V的演算法應該是錯誤的,

實際應該是:V=max/255

詳解:根據「概念三」可以得知,與明度相關的值只有max,所以直接用max除以RGB顏色值的最大分量,得到的百分比,即是明度。

完。(以上內容不保證完全正確,僅供參考)

❽ 如何計算RGB數字圖像處理 亮度的亮度值

可以將RGB顏色空間轉為YIQ色彩空間,其中Y是指顏色的明視度,即亮度:Y = 0.299R + 0.587G + 0.114B。

RGB是通過紅綠藍啟隱三原色來描述顏色的顏色空間,R=Red、G=Green、B=Blue。YIQ色彩空間屬於NTSC系統。這里Y是指顏色的明視度,即亮度。其實Y就是圖像灰度值,I和Q都指的是指色調,即描述圖像色彩與飽和度的屬性。

YIQ顏色空間具有能將圖像中的亮度分量分離提悄笑廳取出來的優點,並且YIQ顏色空間與RGB顏色空間之間是線性變換的關系。RGB和YIQ的對應關系的方程式表示:Y = 0.299R + 0.587G + 0.114B。

(8)rgb通用演算法擴展閱讀:

顏色空間轉換特特點:

1、RGB顏色空間採集到的彩色圖像,一般就是被分成R、G、B的成分加以保存的。然而,自然環境下對亮度比較敏感。而RGB顏色空間的分量與亮度密切相關,即只要亮度升旁改變,3個分量都會隨之相應地改變。所以,RGB顏色空間適合於顯示系統,卻並不適合於圖像處理。

2、HSI變換與RGB變換都是非線性變換,耗時多,無法滿足機器手進行採摘工作的實時性需要。L*a*b*顏色空間可以直接通過使用顏色空間內的幾何距離來做不同顏色之間的比較分析,所以可以有效地、方便地用在測量較小的色差上。但因為是非線性變換,所以計算量比較大。

❾ 求一個計算RGB顏色值的演算法,色差要盡量大,從黑色到白色之間可以計算出來100個以上顏色,盡量用C++

在RGB顏色模型下,要100個顏色設一個變數從0到0x1000000之間分成100遞增即可,顏色差值最大。

javaapplet最簡演示,附圖。從黑到白100個顏色塊

=====

importjava.applet.Applet;

importjava.awt.Color;

importjava.awt.Graphics;

publicclassTestextendsApplet{

=1802199483736051124L;

publicintnum_of_colors;

@Override

publicvoidinit(){

num_of_colors=100;//如果要多可以設得更多

}

@Override

publicvoidpaint(Graphicsg){

introw_max=(int)Math.sqrt(num_of_colors);

intcol_w=getWidth()/row_max;

intx=0,y=0;

intcd=(int)(0x1000000L/num_of_colors);

intc=0;

for(intn=0;n<num_of_colors;n++){

g.setColor(newColor(c));

g.fillRect(x,y,col_w,col_w);

c+=cd;

if(n%row_max==0&&n>0){

x=0;

y+=col_w;

}elsex+=col_w;

}

}

}

❿ rgb顏色表怎麼算的

RGB就是red green blue三原色相互搭配組成的顏色。每種顏色分為0-255,RGB 0,0,0就是黑的。255,255,255是白的。255,0,0紅色,0,255,0綠色,0,0,255藍色。其他顏色就是搭配出來的了。比如255,255,0,就是黃色。

閱讀全文

與rgb通用演算法相關的資料

熱點內容
幻影伺服器怎麼樣 瀏覽:27
具體哪些廣東公司招程序員 瀏覽:867
嵌入式編譯器教程 瀏覽:302
ssl數據加密傳輸 瀏覽:86
51單片機定時器方式2 瀏覽:330
命令行查看開機時間 瀏覽:812
python微博復雜網路分析 瀏覽:550
rf3148編程器 瀏覽:505
浙江標准網路伺服器機櫃雲主機 瀏覽:587
設置網路的伺服器地址 瀏覽:600
java圖形界面設計 瀏覽:751
純前端項目怎麼部署到伺服器 瀏覽:538
瓜子臉程序員 瀏覽:505
如何保證伺服器優質 瀏覽:94
小微信aPP怎麼一下找不到了 瀏覽:299
演算法纂要學術價值 瀏覽:975
程序員你好是什麼意思 瀏覽:802
倩女幽魂老伺服器如何玩 瀏覽:563
電子鍾單片機課程設計實驗報告 瀏覽:1001
看加密頻道 瀏覽:383