孫敬 孫濱



摘要:借鑒已有顏色空問轉(zhuǎn)換方法,通過認(rèn)真分析RCB、YUV顏色空問模型,結(jié)合YUV采樣格式和存儲方式,本文提出RGB到Y(jié)UV轉(zhuǎn)換的功能需求,并給出了相應(yīng)的轉(zhuǎn)換公式。在此基礎(chǔ)上,本文利用VC++技術(shù)將顏色空間轉(zhuǎn)換思想加以實(shí)現(xiàn),并詳細(xì)描述了RGB到Y(jié)UV轉(zhuǎn)換的關(guān)鍵技術(shù)及核心算法。軟件運(yùn)行結(jié)果顯示,該轉(zhuǎn)換方式在視頻格式處理方面具有明顯的優(yōu)勢。
關(guān)鍵詞:YUV;RCB;顏色空間
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2020)20-0192-03
1引言
當(dāng)今時代,隨著計(jì)算機(jī)多媒體技術(shù)的發(fā)展,彩色圖像富有感染力和視覺刺激,更能傳遞很多有用的信息。在視頻文件處理的研究中,國外視頻圖像處理技術(shù)相對成熟,更注重圖像質(zhì)量以及存儲和傳輸時減少存儲空間和提高傳輸率。并且很早就應(yīng)用在實(shí)際生活各領(lǐng)域中[1-5]。但由于彩色圖像承載信息量大,其傳輸、存儲等操作更加復(fù)雜,再加上彩色圖像采用不同顏色空間進(jìn)行色彩表征,所以如何采用有效方法進(jìn)行顏色空間轉(zhuǎn)換便成了本文視頻格式處理的關(guān)鍵問題。
2顏色空間概述
2.1YUV顏色空間模型
在實(shí)際生活中,人們往往利用顏色空間模型對不同顏色進(jìn)行量化,并用不同顏色空間模型描述不同領(lǐng)域內(nèi)的顏色量化需求[6]。在眾多顏色空間中,RCB和YUV是顏色空間模型的典型代表,其中,RGB顏色空間是利用紅(R)、綠(G)、藍(lán)(B)三原色以不同強(qiáng)度疊加來描述顏色,而YUV顏色空間則利用色彩亮度和色度原理來描述顏色[7],它們的顏色空間模型如圖1所示。
3YUV采樣格式及存儲方式
YUV格式有兩大類:打包格式(packed)和平面格式(planar),其中打包格式將每個YUV分量連續(xù)交叉存儲,并將若干相鄰的同數(shù)組中像素組成宏像素,平面格式則按照順序?qū)、U、V分量分別存儲到不同數(shù)組中[8]。
3.1YUV采樣格式
在表示像素格式時,YUV采用亮度參量和色度參量進(jìn)行獨(dú)立描述,這樣可避免兩個參量之間出現(xiàn)色彩十?dāng)_,降低了色度的采樣率。由于YUV的UV(色度)頻道比Y(亮度)頻道采樣率低,所以不會明顯降低視覺質(zhì)量和圖像質(zhì)量,在視頻格式處理時,人們往往采用A:B:C來描述UV(色度)與Y(亮度)的采樣率比例。
3.2YUV存儲方式
1)對于4:4:4格式,每像素32位,這是一個打包格式[10]。其中每個像素都被編碼為四個連續(xù)字節(jié),如FOURCC碼的AYUV。
2)對于4:2:2格式,每像素16位,支持兩個4:2:2格式,其中每個色差信道的抽樣率是亮度信道的一半,在水平方向的色度信道的抽樣率是4:4:4的一半,其中每個像素都被編碼為四個連續(xù)字節(jié)的兩個像素,如FOURCC碼的YUY2、UYVY[11],從而使得色度水平采樣乘以系數(shù)2。
3)對于4:2:0格式,每行掃描線上只有一種色度分量以2:1的抽樣率存儲,每像素16位。FOURCC碼為IMC1、IMC2。
其中,由于4:2:2和4:4:4顏色構(gòu)成的畫面對大多數(shù)人來說區(qū)別不大,所以當(dāng)4:2:2信號被解碼的時候,人們往往通過內(nèi)插補(bǔ)點(diǎn)方式計(jì)算兩側(cè)顏色完成“缺失”色度采樣。但是,在4:2:0中,人們需要通過內(nèi)插補(bǔ)點(diǎn)計(jì)算分別補(bǔ)充左有相鄰、上下兩行的采樣點(diǎn)來完成相應(yīng)的“缺失”色度采樣。
4BMP位圖轉(zhuǎn)換成YUV視頻的實(shí)現(xiàn)
4.1BMP文件格式
在對數(shù)字圖像進(jìn)行存儲和記錄時,計(jì)算機(jī)以文件(由文件頭、文件體和文件尾組成)形式來完成相關(guān)操作。位圖文件(BMP)格式是微軟公司開發(fā)的、與硬件沒備無關(guān)的、Windows環(huán)境下的圖像文件存儲格式[12],以.bmp或.dib為文件擴(kuò)展名。位圖文件由位圖文件頭(包含該文件類型、顯示內(nèi)容等信息)、位圖信息頭(包含該文件的寬、高及所采用的壓縮方法)、調(diào)色板、位圖數(shù)據(jù)(實(shí)際的R、G、B值)等四部分組成。位圖圖像的每一掃描行由連續(xù)的表示圖像像素的一組字節(jié)組成,字節(jié)數(shù)由圖像顏色數(shù)和寬度決定,并且其個數(shù)采用DWORD對齊方式,因此其數(shù)目必須是4的整數(shù)倍。另外,所有掃描行的字節(jié)是由下而上進(jìn)行存儲的,下面給出讀取位圖的流程圖。
4.2 RGB到Y(jié)UV的轉(zhuǎn)換關(guān)系
針對現(xiàn)實(shí)生活中的彩色圖像,由于RGB是利用紅綠藍(lán)三原色以不同強(qiáng)度疊加形成不同顏色,使得每個像素在R、G、B三個成分上擁有相同的像素和顯示分辨率,這樣不僅影響彩色圖像處理效率,還會影響在不同需求下的圖像處理精度。由于YUV中的U、V(色度)分量可高度壓縮,所以很多地方開始采用YUV來更好地處理彩色圖像。
RGB到Y(jié)UV轉(zhuǎn)換公式為:
Y=INT(16.5+(0.257R+0.504G+0.098B))
Cb=INT(128.5+(-0.148R-0.291G+0.429B))
Cr=INT(128.5+(0.439R-0.368G-0.071B))
由于現(xiàn)實(shí)生活中視頻所占存儲空間大,為方便傳輸和存儲,人們往往先將視頻進(jìn)行壓縮,再利用相應(yīng)的視頻播放器進(jìn)行視頻播放[13]。壓縮視頻主要有面向存儲和面向流式媒體兩大類,其中后者是經(jīng)常應(yīng)用于流媒體電影、現(xiàn)場直播或轉(zhuǎn)播等場合。利用VC++技術(shù),本論文將單幀或多幀RGB格式的視頻圖像轉(zhuǎn)換成YUV420/YUV422格式的視頻文件,從而實(shí)現(xiàn)了不同顏色空間的視頻圖像轉(zhuǎn)換。下面給出本文顏色空間轉(zhuǎn)換的部分關(guān)鍵代碼。
for(currentnum=start_number;Currentnum<(start_number+to-tal_number); currentnum++) { BmpPathStr.Format(" %s%d.bmp",UnchangPathStrl.currentnum);
strcpy(src,BmpPathStr);
switch(format) {
case IDC_RADIO_420://將RGB轉(zhuǎn)換成420采樣格式的YUV文件{
if(w*3%4==0)difiw=0;
else diffw=4-(w*3%4);
diffh=h%2;if(yuvout==0) { sprintf(dstY, "%s%d.Y",Un-changPathStr2.currentnum);
sprintf(dstU,"%s%d.U",UnchangPathStr2.currentnum);
sprintf(dstV,"%s%d.V",UnchangPathStr2.currentnum);
f1=fopen(dstY,"wb");
f2=fopen(dstU, "wb");
f3=fopen(dstV,"wb");}
y=(unsigned char*)malloc((w+diffw)*(h+diffh));
u=(unsigned char*)maloc((w+diflw)*(h+diflh)/4);
v= (unsigned
char
*)malloc((w+diffw)*(h+diffh)/4) ;bmp2yuv_420(w.h.diffw,diffh.src,y,u,v);} }
這段代碼首先使用一個循環(huán)語句來控制滾動條的狀態(tài)的變化,開始時滾動條的狀態(tài)為空,并且它的值為1,當(dāng)轉(zhuǎn)換成功后,對應(yīng)滾動條的狀態(tài)顯示為全彩色,并且它的值為100。再者實(shí)現(xiàn)的功能是將BMP位圖轉(zhuǎn)換成YUV420采樣格式的視頻文件。
其中核心為BMP位圖到Y(jié)UV視頻文件的轉(zhuǎn)換算法,其算法能滿足轉(zhuǎn)換的基本需求,并且效率比較高。再者,實(shí)現(xiàn)的功能是將BMP位圖轉(zhuǎn)換成YUV422采樣格式的視頻文件。
4.3軟件運(yùn)行效果
首先需要用戶解壓該軟件的壓縮包,運(yùn)行解壓后文件夾中的EXE可執(zhí)行文件,就打開BMP轉(zhuǎn)YUV主界面,分為BMP文件目錄選擇模塊,沒置幀頻模塊,YUV文件存放目錄模塊,YUV采樣格式和存儲方式兩個模塊,進(jìn)度條模塊,轉(zhuǎn)換和關(guān)閉按鈕模塊,具體展示如圖3所示。
5軟件測試的效果
本軟件針對的對象是用戶,所以首先從用戶角度出發(fā)去測試,一方面驗(yàn)證該軟件是否能實(shí)現(xiàn)轉(zhuǎn)換功能,另一方面驗(yàn)證是顏色空間是否可以實(shí)現(xiàn)轉(zhuǎn)換。由于該軟件轉(zhuǎn)換后的YUV文件需要使用指定PC的播放器才能播放,下面是BMP圖像轉(zhuǎn)換成YUV420/YUV422視頻圖像轉(zhuǎn)換前后如圖4和圖5所示。
本轉(zhuǎn)換軟件經(jīng)過測試后,可以實(shí)現(xiàn)BMP位圖到Y(jié)UV視頻格式的轉(zhuǎn)換,主要包括BMP位圖到Y(jié)UV(4:2:2/4:2:0)視頻格式和BMP位圖到Y(jié)、U、V(4:2:2/4:2:0)視頻格式的轉(zhuǎn)換,驗(yàn)證了軟件中所涉及的算法的正確性和可塑性,能很好地滿足用戶的需求。
6總結(jié)
利用VC++技術(shù),本軟件從而實(shí)現(xiàn)了不同顏色空間的轉(zhuǎn)換。傳統(tǒng)方法只能將單個BMP位圖轉(zhuǎn)換為YUV視頻,并且視頻文件不能被相應(yīng)的播放器播放,但是本軟件不僅實(shí)現(xiàn)了單個或多個連續(xù)的BMP位圖轉(zhuǎn)換成相應(yīng)的YUV視頻,而且轉(zhuǎn)換后的視頻文件還可以在其他格式的轉(zhuǎn)換軟件中使用,使得顏色空間轉(zhuǎn)換更具實(shí)用性,應(yīng)用范圍也得到擴(kuò)展。另外,本軟件將YUV視頻的三個分量獨(dú)立存儲,這為以后轉(zhuǎn)換為不同格式的YUV視頻文件提供了新的研究思路。
參考文獻(xiàn):
[1]滕升華,沈怡平.顏色空間在圖像彩色化處理中的應(yīng)用分析[J].計(jì)算機(jī)科學(xué),2009,36(10):277-279.
[2]劉云粼,王樹東.基于SSE2的YUV與RGB色彩空間轉(zhuǎn)換[J].中國圖象圖形學(xué)報(bào),2010,15(1):45-49.
[3]張琳,劉曦,李大海,等.一種YUV顏色空間下的多視差圖偏色校正方法[J].液晶與顯示,2010,25(2):278-282.
[4]楊璟,朱雷.基于RGB顏色空間的彩色圖像分割方法[J].計(jì)算機(jī)與現(xiàn)代化,2010(8):147-149,171.
[5]張爭珍,石躍祥.YCgCr與YCgCb顏色空間的膚色檢測[J].計(jì)算機(jī)工程與應(yīng)用,2010,46(34):167-170.
[6]馮永超,羅敏,賀貴明.一種快速YUV-RCB彩色空間變換方法[J].微型機(jī)與應(yīng)用,2002,21(7):59-60.
[7]于韶光.認(rèn)識RGB和YUV——兼淡色差信號的標(biāo)識問題[J].家庭影院技術(shù),2000(2):37-39.
[8]廉玉生,王秀澤.5種不同顏色空間的均勻性研究[J].測繪科學(xué)技術(shù)學(xué)報(bào),2007,24(2):104-106.109.
[9]王建國,林宇生,楊靜宇.基于新顏色空間YCgCr的人臉區(qū)域初定位[J].計(jì)算機(jī)科學(xué),2007,34(5):228-230,233.
[10]王建國,華繼釗,楊靜宇.基于YCgCr顏色空間的光照白適應(yīng)的膚色區(qū)域檢測[J].計(jì)算機(jī)應(yīng)用研究,2008,25(2): 467-468.472.
[11]張學(xué)習(xí),楊宜民.彩色圖像工程中常用顏色空間及其轉(zhuǎn)換[J].計(jì)算機(jī)工程與設(shè)計(jì),2008,29(5):1210-1212.
[12]黃國祥.RCB顏色空間及其應(yīng)用研究[D].長沙:中南大學(xué),2002.
[13] Mahlknecht S,Oberhammer R.Novak G.A real-time imagerecognition system for tiny autonomous mohile rohots[J].Real-Time Systems, 2005,29(2/3):247-261.
【通聯(lián)編輯:李雅琪】
收稿日期:2020-03-27
基金項(xiàng)目:河南省科技攻關(guān)項(xiàng)目(編號:172102210532,20A520039)資助;河南省高等學(xué)校重點(diǎn)科研資助項(xiàng)目(編號:20A520039)資助;河南省教育廳高校青年骨干教師培養(yǎng)資助項(xiàng)目(項(xiàng)目編號:2019GGJS279)
作者簡介:孫敬(1991-),女,助教,本科,研究方向:計(jì)算機(jī)技術(shù)應(yīng)用;孫濱(1983-),男,副教授,碩士研究生,研究方向機(jī)器學(xué)習(xí)與大數(shù)據(jù)。