孫敬 孫濱



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