免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
顏色空間轉(zhuǎn)換(一)

顏色空間轉(zhuǎn)換

     不同彩色空間之間的轉(zhuǎn)換。

1,CMY/CMYK顏色空間   

     青、品紅、黃(CMY)(Cyan、Magenta、Yellow)彩色模型是彩色圖象印刷行業(yè)使用的彩色空間,在彩色立方體中它們是紅、綠、藍(lán)的補(bǔ)色,稱為減色基,而紅、綠、藍(lán)稱為加色基。在CMY模型中,顏色是從白光中減去一定成分得到的。CMY坐標(biāo)可以從RGB模型中得到:

                  C = 1 – R

                  M = 1 – G

                  Y = 1 – B  

  由于在印刷時(shí)CMY模型不可能產(chǎn)生真正的黑色,因此在印刷業(yè)中實(shí)際上使用的是CMYK彩色模型,K為第四種顏色,表示黑色(black ink):從CMY 到CMYK的轉(zhuǎn)換:

              K := min(C,M,Y)

              C := C – K

              M := M – K

              Y := Y - K

  1. //RGB轉(zhuǎn)換為CMY  
  2. void rtRGB2CMY(RtScalar rgb, RtScalar& cmy)  
  3. {  
  4.     cmy.val[0] = 255 - rgb.val[0];  
  5.     cmy.val[1] = 255 - rgb.val[1];  
  6.     cmy.val[2] = 255 - rgb.val[2];  
  7. }  
  8.   
  9. //CMY轉(zhuǎn)換為RGB  
  10. void rtCMY2RGB(RtScalar cmy, RtScalar& rgb)  
  11. {  
  12.     rgb.val[0] = 255 - cmy.val[0];  
  13.     rgb.val[1] = 255 - cmy.val[1];  
  14.     rgb.val[2] = 255 - cmy.val[2];  
  15. }  
  16.   
  17. //CMY轉(zhuǎn)換為CMYK  
  18. void rtCMY2CMYK(RtScalar cmy, RtScalar& cmyk)  
  19. {  
  20.     unsigned char temp = 0;  
  21.       
  22.     temp = min(min(cmy.val[0], cmy.val[1]), cmy.val[2]);  
  23.   
  24.     if (temp == 255 )  
  25.     {   
  26.         cmyk = rtScalar(0, 0, 0, 0);  
  27.     }  
  28.     else   
  29.     {  
  30.         cmyk.val[0] = cmy.val[0] - temp;  
  31.         cmyk.val[1] = cmy.val[1] - temp;  
  32.         cmyk.val[2] = cmy.val[2] - temp;  
  33.     }  
  34.     cmyk.val[3] = temp;  
  35. }  
  36.   
  37. //CMYK轉(zhuǎn)換為CMY  
  38. void rtCMYK2CMY(RtScalar cmyk, RtScalar& cmy)  
  39. {  
  40.     cmy.val[0] = cmyk.val[0] + cmyk.val[3];  
  41.     cmy.val[1] = cmyk.val[1] + cmyk.val[3];  
  42.     cmy.val[2] = cmyk.val[2] + cmyk.val[3];  
  43. }  
  

2,HSI顏色空間

      HSI色彩空間是從人的視覺系統(tǒng)出發(fā),用色調(diào)(Hue)、色飽和度(Saturation或Chroma)和亮度 (Intensity或Brightness)來描述色彩。HSI色彩空間可以用一個(gè)圓錐空間模型來描述。用這種 描述HIS色彩空間的圓錐模型相當(dāng)復(fù)雜,但確能把色調(diào)、亮度和色飽和度的變化情形表現(xiàn)得很清楚。 通常把色調(diào)和飽和度通稱為色度,用來表示顏色的類別與深淺程度。由于人的視覺對亮度的敏感 程度遠(yuǎn)強(qiáng)于對顏色濃淡的敏感程度,為了便于色彩處理和識(shí)別,人的視覺系統(tǒng)經(jīng)常采用HSI色彩空間, 它比RGB色彩空間更符合人的視覺特性。在圖像處理和計(jì)算機(jī)視覺中大量算法都可在HSI色彩空間中 方便地使用,它們可以分開處理而且是相互獨(dú)立的。因此,在HSI色彩空間可以大大簡化圖像分析 和處理的工作量。HSI色彩空間和RGB色彩空間只是同一物理量的不同表示法,因而它們之間存在著 轉(zhuǎn)換關(guān)系。

HSI 色彩模型是從人的視覺系統(tǒng)出發(fā),用 H 代表色相 (Hue)、S 代表飽和度 (Saturation) 和 I 代表亮度 (Intensity) 來描述色彩。飽和度與顏色的白光光量剛好成反比,它可以說是一個(gè)顏色鮮明與否的指標(biāo)。因此如果我們在顯示器上使用 HIS 模型來處理圖像,將能得到較為逼真的效果。
色相 (Hue):指物體傳導(dǎo)或反射的波長。更常見的是以顏色如紅色,橘色或綠色來辨識(shí),取 0 到 360 度的數(shù)值來衡量。

飽和度 (Saturation):又稱色度,是指色彩的強(qiáng)度或純度。飽和度代表灰色與色調(diào)的比例,并以 0% (灰色) 到 100% (完全飽和) 來衡量。

亮度 (Intensity):是指顏色的相對明暗度,通常以 0% (黑色) 到 100% (白色) 的百分比來衡量。

  1. //RGB轉(zhuǎn)換為HSI  
  2. void rtRGB2HSI(RtScalar rgb, RtScalar& hsi)  
  3. {  
  4.     double maxv = 0, minv = 0, angle = 0;  
  5.     RtScalar temp;  
  6.   
  7.     temp.val[0] = rgb.val[0] / 255.0;  
  8.     temp.val[1] = rgb.val[1] / 255.0;  
  9.     temp.val[2] = rgb.val[2] / 255.0;  
  10.   
  11.     maxv = max(max(temp.val[0], temp.val[1]), temp.val[2]);  
  12.     minv = min(min(temp.val[0], temp.val[1]), temp.val[2]);  
  13.   
  14.     hsi.val[2] = (temp.val[0] + temp.val[1] + temp.val[2]) / 3.0;  
  15.     hsi.val[1] = 1.0 - minv/hsi.val[2];  
  16.   
  17.     angle = (temp.val[0] + temp.val[0] - temp.val[1] - temp.val[2]) / 2.0 * sqrt((temp.val[0] - temp.val[1])*(temp.val[0] - temp.val[1]) + (temp.val[0] - temp.val[2])*(temp.val[1] - temp.val[2]));  
  18.   
  19.     if (temp.val[2] <= temp.val[1])  
  20.         hsi.val[0] = angle / PI * 180.0;  
  21.     else  
  22.         hsi.val[0] = (2 * PI - angle)/PI * 180.0;  
  23. }  
  24.   
  25. //HSI轉(zhuǎn)換為RGB  
  26. void rtHSI2RGB(RtScalar hsi, RtScalar& rgb)  
  27. {  
  28.     int flag = 0;  
  29.     double t1 = 0, t2 = 0, tv1 = 0, tv2 = 0, tv3 = 0;  
  30.     RtScalar temp;  
  31.     temp = hsi;  
  32.     temp.val[0] = hsi.val[0] * PI / 180.0;  
  33.   
  34.     t1 = 2.0 * PI / 3.0;  
  35.     t2 = 2.0 * t1;  
  36.   
  37.     if (temp.val[0] >= t1 && temp.val[0] < t2)  
  38.     {  
  39.         flag = 1;  
  40.         temp.val[0] -= t1;  
  41.     }  
  42.     if (temp.val[0] >= t2)  
  43.     {  
  44.         flag = 2;  
  45.         temp.val[0] -= t2;  
  46.     }  
  47.   
  48.     tv1 = (temp.val[2] * (1 - temp.val[1])) * 255.0;  
  49.     tv2 = (temp.val[2] * (1 + temp.val[1] * cos(temp.val[0]) / cos(PI / 3 - temp.val[0]))) * 255.0;  
  50.     tv3 = (3.0 * temp.val[2] - tv1 - tv2) * 255.0;  
  51.       
  52.     switch (flag)  
  53.     {  
  54.     case 0:  
  55.         rgb = rtScalar(tv2, tv3, tv1, 0);  
  56.         break;  
  57.     case 1:  
  58.         rgb = rtScalar(tv1, tv2, tv3, 0);  
  59.         break;  
  60.     case 2:  
  61.         rgb = rtScalar(tv3, tv1, tv2, 0);  
  62.         break;  
  63.     }  
  64. }  

3,YUV顏色空間
在現(xiàn)代彩色電視系統(tǒng)中,通常采用三管彩色攝像機(jī)或彩色CCD(點(diǎn)耦合器件)攝像機(jī),它把攝得的彩色圖像 信號(hào),經(jīng)分色、分別放大校正得到RGB,再經(jīng)過矩陣變換電路得到亮度信號(hào)Y和兩個(gè)色差信號(hào)R-Y、B-Y, 最后發(fā)送端將亮度和色差三個(gè)信號(hào)分別進(jìn)行編碼,用同一信道發(fā)送出去。這就是我們常用的YUV色彩空間。 采用YUV色彩空間的重要性是它的亮度信號(hào)Y和色度信號(hào)U、V是分離的。如果只有Y信號(hào)分量而沒有U、V分量, 那么這樣表示的圖就是黑白灰度圖。彩色電視采用YUV空間正是為了用亮度信號(hào)Y解決彩色電視機(jī)與黑白電視機(jī) 的兼容問題,使黑白電視機(jī)也能接收彩色信號(hào)。根據(jù)美國國家電視制式委員會(huì),NTSC制式的標(biāo)準(zhǔn),當(dāng)白光的 亮度用Y來表示時(shí),它和紅、綠、藍(lán)三色光的關(guān)系可用如下式的方程描述:Y=0.3R+0.59G+0.11B 這就是常用 的亮度公式。色差U、V是由B-Y、R-Y按不同比例壓縮而成的。如果要由YUV空間轉(zhuǎn)化成RGB空間,只要進(jìn)行 相反的逆運(yùn)算即可。與YUV色彩空間類似的還有Lab色彩空間,它也是用亮度和色差來描述色彩分量,其中L為 亮度、a和b分別為各色差分量。

YUV與RGB相互轉(zhuǎn)換的公式如下(RGB取值范圍均為0-255):

Y = 0.299R + 0.587G + 0.114B
U = -0.147R - 0.289G + 0.436B
V = 0.615R - 0.515G - 0.100B

R = Y + 1.14V
G = Y - 0.39U - 0.58V
B = Y + 2.03U

  1. // RGB轉(zhuǎn)換為YUV  
  2. void rtRGB2YUV(RtScalar rgb, RtScalar& yuv)  
  3. {      
  4.     yuv.val[0] = 0.299*rgb.val[0] + 0.587*rgb.val[1] + 0.114*rgb.val[2]; // y  
  5.     yuv.val[1] = -0.147*rgb.val[0] - 0.289*rgb.val[1]+ 0.436*rgb.val[2]; // u  
  6.     yuv.val[2] = 0.615*rgb.val[0] - 0.515*rgb.val[1] - 0.1*rgb.val[2]; // v  
  7. }  
  8.   
  9. // YUV轉(zhuǎn)換為RGB  
  10. void rtYUV2RGB(RtScalar yuv, RtScalar& rgb)  
  11. {  
  12.     rgb.val[0] = yuv.val[0] + 1.14*yuv.val[2]; // r  
  13.     rgb.val[1] = yuv.val[0] - 0.39*yuv.val[1] - 0.58*yuv.val[2];   
  14.     rgb.val[2] = yuv.val[0] + 2.03*yuv.val[1];   
  15. }  

(未完待繼續(xù))

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
色坐標(biāo)軸定義
關(guān)于HSL和HSV顏色空間的詳細(xì)論述
顏色空間:RGB,CMY,HSV,HSL,Lab詳解
HSV顏色識(shí)別
如果你認(rèn)為 AR 只是掃掃圖片的小把戲的話,你就 out 了! | 愛范兒
機(jī)器人視覺識(shí)別技術(shù)簡介
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服