① rgb色彩模式中r的值的大小是如何定義的
的演算法描述。
步驟1:把RGB值轉成中數值。
步驟2:找出R,G和B中的最大值。
步驟3:設L=(maxcolor + mincolor)/2
步驟4:如果最大和最小的顏色值相同,即表示灰色,那麼S定義為0,而H未定義並在程序中通常寫成0。
步驟5:否則,測試L:
If L<0.5, S=(maxcolor-mincolor)/(maxcolor + mincolor)
If L>=0.5, S=(maxcolor-mincolor)/(2.0-maxcolor-mincolor)
步驟6: If R=maxcolor, H=(G-B)/(maxcolor-mincolor)
If G=maxcolor, H=2.0+(B-R)/(maxcolor-mincolor)
If B=maxcolor, H=4.0+(R-G)/(maxcolor-mincolor)
步驟7:從第6步的計算看,H分成0~6區域。RGB顏色空間是一個立方體而HSL顏色空間是兩個六角形錐體,其中的L是RGB立方體的主對角線。因此,RGB立方體的頂點:紅、黃、綠、青、藍和品紅就成為HSL六角形的頂點,而數值0~6就告訴我們H在哪個部分。H=H*60.0,如果H為負值,則加360。
② ps如何縮小後圖片RGB為100%
第一個問題:
我估計你要的是顯示比例吧。。。。
(1)轉滑鼠滾輪
(2)看到屏幕最左下角沒?改掉%號旁邊的數字
(3)選中縮放工具或者按快捷鍵Z,然後滑鼠右鍵,選擇「滿畫布顯示」
第二個問題:
我估計你問的是圖片的縮放吧。。。
(1)按住ALT再點兩下I,改變數字
(2)菜單欄--圖像--圖像大小,改變數字
一般比較小的圖片顯示都會是100%,只要你把圖片改得小於屏幕尺寸就肯定是100%了
其中我要糾正你的一點是
「如何縮小後的新圖片RGB為100%」RGB是圖像模式,XX%是顯示比例,兩者連在一起是PS為了用戶更加清楚明了文檔的信息,你別混在一起了。
③ RGB函數計算公式:顏色值=(65536*blue)+(256*green)+(red)
65536是256的二次方,
RGB是以256進制的數字,也就是說R上的m相當於G上的256*m,相當於B上的256*256*m.
G上的n相當於B上的256*n.
所以你的數字好像寫錯了,應該是:
顏色值=(65536*Red)+(256*Green)+(Blue)
④ 最近在做圖像處理的程序時候找到一個圖片縮放的演算法,但是演算法的注釋太少,看不懂,在這里貼出來,求解釋。
別浪費時間啦,有時間在這里問問題,還不如多逛逛 博客園 或者 CSDN,自己好好鑽研一下吧!
⑤ 求一個計算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演算法是什麼
純色在色坐標上很容易找到, 這個你需要網路"1931xy色坐標繪制".
另外,你對純色有一定的誤解.
在RGB上, 也就是你希望得到(xxx,xxx,xxx) 這種類型是不行的.
所謂的(255,255,0)並不是指的純色黃色光, 它指的是你的電腦顯示器的像素中 R像素和G像素最大亮度時混合而成的黃光, 用專業的光學來解釋也就是說: 這時得到的黃色僅僅是在你顯示器的色域R,G兩點連線的邊上. 並非是所謂的對應單一的波長的黃光.
簡單來說,也就是你所謂的RGB空間其實是指你顯示器的色域空間, 要確定這個色域空間的顏色坐標需要先將R,G,B 三色畫面的坐標(x,y)以及亮度(L)利用光學儀器測出, 然後利用三角形原理即可算出所有坐標.
⑦ PAL或者NTSC制式 BT.656(YUV 4:2:2) 轉化為BMP格式圖片(RGB)演算法
今天對顏色一些格式轉換有些不明白的地方,在網上找了一些文章,感謝原作者,現張貼如下:
顏色空間是一個三維坐標系統,每一種顏色由一個點表示。在 RGB 顏色空間中,紅,綠,藍是基本元素。RGB 格式是顯示器通常使用的格式。在 YUV 空間中,每一個顏色有一個亮度信號 Y,和兩個色度信號 U 和 V。亮度信號是強度的感覺,它和色度信號斷開,這樣的話強度就可以在不影響顏色的情況下改變。YUV 格式通常用於 PAL制,即歐洲的電視傳輸標准,而且預設情況下是圖像和視頻壓縮的標准。
YUV 使用RGB的信息,但它從全彩色圖像中產生一個黑白圖像,然後提取出三個主要的顏色變成兩個額外的信號來描述顏色。把這三個信號組合回來就可以產生一個全彩色圖像。
YUV 使用紅,綠,藍的點陣組合來減少信號中的信息量。Y 通道描述 Luma 信號,它與亮度信號有一點點不同,值的范圍介於亮和暗之間。 Luma 是黑白電視可以看到的信號。U (Cb) 和 V (Cr) 通道從紅 (U) 和藍 (V) 中提取亮度值來減少顏色信息量。這些值可以從新組合來決定紅,綠和藍的混合信號。
YUV和RGB的轉換: ★這里是不是不是yuv而是Y Cb Cr???★
Y = 0.299 R + 0.587 G + 0.114 B
U = -0.1687 R - 0.3313 G + 0.5 B + 128
V = 0.5 R - 0.4187 G - 0.0813 B + 128
R = Y + 1.402 (V-128)
G = Y - 0.34414 (U-128) - 0.71414 (V-128)
B = Y + 1.772 (U-128)
以前,一直沒明白yuv和YcbCr之間的差異,想必有些朋友也會有同樣的疑惑。所以,我看完之後就記載下來了。
一、和rgb之間換算公式的差異
yuv<-->rgb
Y'= 0.299*R' + 0.587*G' + 0.114*B'
U'= -0.147*R' - 0.289*G' + 0.436*B' = 0.492*(B'- Y')
V'= 0.615*R' - 0.515*G' - 0.100*B' = 0.877*(R'- Y')
R' = Y' + 1.140*V'
G' = Y' - 0.394*U' - 0.581*V'
B' = Y' + 2.032*U'
yCbCr<-->rgb
Y』 = 0.257*R' + 0.504*G' + 0.098*B' + 16
Cb' = -0.148*R' - 0.291*G' + 0.439*B' + 128
Cr' = 0.439*R' - 0.368*G' - 0.071*B' + 128
R' = 1.164*(Y』-16) + 1.596*(Cr'-128)
G' = 1.164*(Y』-16) - 0.813*(Cr'-128) - 0.392*(Cb'-128)
B' = 1.164*(Y』-16) + 2.017*(Cb'-128)
Note: 上面各個符號都帶了一撇,表示該符號在原值基礎上進行了gamma correction
二、來源上的差異
yuv色彩模型來源於rgb模型,該模型的特點是將亮度和色度分離開,從而適合於圖像處理領域。
應用:basic color model used in analogue color TV broadcasting.用在模擬彩色電視廣播的基本顏色模型中
YCbCr模型來源於yuv模型。YCbCr is a scaled and offset version of the YUV color space.
應用:數字視頻,ITU-R BT.601 recommendation
ps:
通過上面的比較可以確定,我們在h.264,mpeg等編碼標准中用的yuv其實是YcbCr,大家不要被名稱搞混淆了。
人類視覺系統(HVS)相比亮度來說對於顏色不是那麼敏感的。在RGB顏色空間中,三種顏色被平等地看待,並用相同的解析度
存放起來。但是通過把亮度與顏色信息分離,並對亮度值取更高的解析度可以更有效地表示一個顏色圖像。
YCbCr顏色空間和它的變換(通常寫為YUV)是一種流行而高效的表示一個顏色圖像的方法。Y是亮度值,由R,G,B的加權平均可以
得到: Y=krR + kgG + kbB
這里k是加權因子。
顏色信號可以由不同的顏色差別來表示:
Cb = B-Y
Cr = R-Y
Cg = G-Y
對於一個顏色圖像的完整的描述由給定Y和三個色差:Cb,Cr,Cg來表示。
目前為止,我們的表示方法好像並不那麼好,因為相比RGB表示來說,我們這次用了四個參數。然後Cb+Cr+Cg是一個常數,那麼
我們只需要兩個色度參數就可以了,第三個可以通過其他兩個計算出來。在YCbCr空間中,只有Y和Cb,Cr值被傳輸和存儲,而且
Cb和Cr的解析度可以比Y低,因為人類視覺系統對於亮度更加敏感。這就減少了表示圖像的數據量。通常的觀察情況下,RGB和
YCbCr表示的圖像看上去沒有什麼不同。對於色度採用比亮度低的解析度進行采樣是一種簡單而有效的壓縮辦法。
一個RGB圖像可以在捕捉之後轉換為YCbCr格式用來減少存儲和傳輸負擔。在顯示圖象之前,再轉回為RGB.注意沒有必要去指明
分別的加權值kg(因為kb+kr+kg=1),而且G可以從YCbCr中解壓出來,這說明不需要存儲和傳輸Cg參數。
Y = kr R + (1-kb-kr)G + kb B
Cb = 0.5/(1-kb) * (B-Y)
Cr = 0.5/(1-kr) * (R-Y)
R = Y + (1-kr)/0.5 * Cr
G = Y - 2kb(1-kb)/(1-kb-kr) * Cb - 2kr(1-kr)/(1-kb-kr) * Cr
B = Y + (1-kb)/0.5 * Cb
ITU-R的BT.601決議定義了kb=0.114,kr=0.299,那麼代換參數就有了如下等式:
Y = 0.299R + 0.587G + 0.114B
Cb = 0.564(B - Y )
Cr = 0.713(R - Y )
R = Y + 1.402Cr
G = Y - 0.344Cb - 0.714Cr
B = Y + 1.772Cb
2.4.3 YCbCr采樣格式
4:4:4采樣就是說三種元素Y,Cb,Cr有同樣的解析度,這樣的話,在每一個像素點上都對這三種元素進行采樣.數字4是指在水平方向
上對於各種元素的采樣率,比如說,每四個亮度采樣點就有四個Cb的Cr采樣值.4:4:4采樣完整地保留了所有的信息值.4:2:2采樣中
(有時記為YUY2),色度元素在縱向與亮度值有同樣的解析度,而在橫向則是亮度解析度的一半(4:2:2表示每四個亮度值就有兩個Cb
和Cr采樣.)4:2:2視頻用來構造高品質的視頻彩色信號.
在流行的4:2:0采樣格式中(常記為YV12)Cb和Cr在水平和垂直方向上有Y解析度的一半.4:2:0有些不同,因為它並不是指在實際采樣
中使用4:2:0,而是在編碼史中定義這種編碼方法是用來區別於4:4:4和4:2:2方法的).4:2:0采樣被廣泛地應用於消費應用中,比如
視頻會議,數字電視和DVD存儲中。因為每個顏色差別元素中包含了四分之一的Y采樣元素量,那麼4:2:0YCbCr視頻需要剛好4:4:4
或RGB視頻中采樣量的一半。
4:2:0采樣有時被描述是一個"每像素12位"的方法。這么說的原因可以從對四個像素的采樣中看出.使用4:4:4采樣,一共要進行12次
采樣,對每一個Y,Cb和Cr,就需要12*8=96位,平均下來要96/4=24位。使用4:2:0就需要6*8=48位,平均每個像素48/4=12位。
在一個4:2:0隔行掃描的視頻序列中,對應於一個完整的視頻幀的Y,Cb,Cr采樣分配到兩個場中。可以得到,隔行掃描的總采樣數跟
漸進式掃描中使用的采樣數目是相同的。