一、YUV422轉(zhuǎn)換規(guī)律
做視頻采集與處理,自然少不了要學(xué)會分析YUV數(shù)據(jù)。因?yàn)閺牟杉慕嵌葋碚f,一般的視頻采集芯片輸出的碼流一般都是YUV數(shù)據(jù)流的形式,而從視頻處理(例如H.264、MPEG視頻編解碼)的角度來說,也是在原始YUV碼流進(jìn)行編碼和解析,所以,了解如何分析YUV數(shù)據(jù)流對于做視頻領(lǐng)域的人而言,至關(guān)重要。本文就是根據(jù)我的學(xué)習(xí)和了解,簡單地介紹如何分析YUV數(shù)據(jù)流。
YUV,分為三個分量,“Y”表示明亮度(Luminance或Luma),也就是灰度值;而“U”和“V” 表示的則是色度(Chrominance或Chroma),作用是描述影像色彩及飽和度,用于指定像素的顏色。
與我們熟知的RGB類似,YUV也是一種顏色編碼方法,主要用于電視系統(tǒng)以及模擬視頻領(lǐng)域,它將亮度信息(Y)與色彩信息(UV)分離,沒有UV信息一樣可以顯示完整的圖像,只不過是黑白的,這樣的設(shè)計(jì)很好地解決了彩色電視機(jī)與黑白電視的兼容問題。并且,YUV不像RGB那樣要求三個獨(dú)立的視頻信號同時傳輸,所以用YUV方式傳送占用極少的頻寬。
好了,言歸正傳,談?wù)勅绾畏治鯵UV碼流吧。YUV碼流有多種不同的格式,要分析YUV碼流,就必須搞清楚你面對的到底是哪一種格式,并且必須搞清楚這種格式的YUV采樣和分布情況。下面我將介紹幾種常用的YUV碼流格式,供大家參考。
YUV碼流的存儲格式其實(shí)與其采樣的方式密切相關(guān),主流的采樣方式有三種,YUV4:4:4,YUV4:2:2,YUV4:2:0,關(guān)于其詳細(xì)原理,可以通過網(wǎng)上其它文章了解,這里我想強(qiáng)調(diào)的是如何根據(jù)其采樣格式來從碼流中還原每個像素點(diǎn)的YUV值,因?yàn)橹挥姓_地還原了每個像素點(diǎn)的YUV值,才能通過YUV與RGB的轉(zhuǎn)換公式提取出每個像素點(diǎn)的RGB值,然后顯示出來。
1.1 YUV格式
為了方便后面敘述,圖片的大小定 義為:w * h,寬高分別為w和h
YUV420格式
先Y,后V,中間是U。其中的Y是w * h,U和V是w/2 * (h/2)
如果w = 4,h = 2,則:
yyyy
yyyy
uu
vv
內(nèi)存則是:yyyyyyyyuuvv
需要占用的內(nèi)存:w * h * 3 / 2
采樣規(guī)律是:每個像素點(diǎn)都采樣Y,寄數(shù)行采樣1/2個U,不采樣V,偶數(shù)行采樣1/2個V,不采樣U
YUV422格式
本格式使用較為廣泛
每兩個點(diǎn)為一組,共占用4個字節(jié)
YUYVYUYV…
對于每一組YUYV,前面一個Y和本組中的UV組成第一個點(diǎn),第二個Y和本組中的UV組成第二個點(diǎn)
所以,在內(nèi)存中,寬高分別為w * 2、h。
如果w = 4,h = 2,則:
YUYVYUYV
YUYVYUYV
需要占用的內(nèi)存:w * h * 2
UYUY422格式
本格式和YUYV422一樣,只是YUV的位置不一樣罷了
每組中YUV的排列順序?yàn)椋篣YUV
需要占用的內(nèi)存:w * h * 2
YUV的采樣格式及每種格式中單像素所占內(nèi) 存大小
YUV主要的采樣格式有YCbCr 4:2:0、YCbCr 4:2:2、YCbCr 4:1:1和 YCbCr 4:4:4。
采樣格式 單像素所占內(nèi)存大小 存放的碼流
YCbCr 4:4:4 3byte Y0 U0 V0 Y1 U1 V1 Y2 U2 V2 Y3 U3 V3(4像素為例)
YCbCr 4:2:2 2byte Y0 U0 Y1 V1 Y2 U2 Y3 V3(4像素為例)
YCbCr 4:2:0 1.5byte Y0 U0 Y1 Y2 U2 Y3 Y5 V5 Y6 Y7 V7 Y8(8像素為例)
YCbCr 4:1:1 1.5byte Y0 U0 Y1 Y2 V2 Y3(4像素為例)
1.2 存儲方式
下面我用圖的形式給出常見的YUV碼流的存儲方式,并在存儲方式后面附有取樣每個像素點(diǎn)的YUV數(shù)據(jù)的方法,其中,Cb、Cr的含義等同于U、V。
(1) YUVY 格式 (屬于YUV422)
YUYV為YUV422采樣的存儲格式中的一種,相鄰的兩個Y共用其相鄰的兩個Cb、Cr,分析,對于像素點(diǎn)Y'00、Y'01 而言,其Cb、Cr的值均為 Cb00、Cr00,其他的像素點(diǎn)的YUV取值依次類推。
(2) UYVY 格式 (屬于YUV422)
UYVY格式也是YUV422采樣的存儲格式中的一種,只不過與YUYV不同的是UV的排列順序不一樣而已,還原其每個像素點(diǎn)的YUV值的方法與上面一樣。
(3) YUV422P(屬于YUV422)
YUV422P也屬于YUV422的一種,它是一種Plane模式,即打包模式,并不是將YUV數(shù)據(jù)交錯存儲,而是先存放所有的Y分量,然后存儲所有的U(Cb)分量,最后存儲所有的V(Cr)分量,如上圖所示。其每一個像素點(diǎn)的YUV值提取方法也是遵循YUV422格式的最基本提取方法,即兩個Y共用一個UV。比如,對于像素點(diǎn)Y'00、Y'01 而言,其Cb、Cr的值均為 Cb00、Cr00。
二、移植x264
首先下載對應(yīng)的源文件http://ftp.videolan.org/pub/videolan/x264/snapshots/
我選擇了x264-snapshot-20181021-2245-stable.tar.bz2
tar jxvf x264-snapshot-20181021-2245-stable.tar.bz
./configure --host=arm-linux --prefix=/opt/wecam/ffmpeg --enable-shared --disable-asm
host:是要使用的平臺
prefix:是make install的目錄
enable-shared:是使能動態(tài)鏈接庫
disable-asm:是關(guān)閉匯編命令
然后需要修改config.mak文件
然后運(yùn)行指令:
make
make install
然后在/opt/wecam/ffmpeg目錄下就有了對應(yīng)的文件:
然后把libx264.so.155和pkgconfig目錄放到4412開發(fā)板的/lib目錄,再用指令創(chuàng)建軟鏈接
ln -s libx264.so.155 libx264.so
而頭文件x264.h是編譯程序時需要使用的頭文件
三、使用庫編寫YUV422轉(zhuǎn)x264應(yīng)用
#include #include #include "stdint.h" #include "include/x264.h" int main(int argc, char *argv[]) { int ret; int y_size; int i, j; if(argc != 3) { printf("usage: %s [source file] [dest file] n", argv[0]); return -1; } //source file FILE *fp_src = fopen(argv[1], "rb"); FILE *fp_dst = fopen(argv[2], "wb"); //Encode 0 frame int frame_num = 50; int csp = X264_CSP_I422; //YUYV int width=640,height=480; //640*480 int iNal = 0; x264_nal_t *pNals = NULL; x264_t *pHandle = NULL; x264_picture_t *pPic_in = (x264_picture_t *)malloc(sizeof(x264_picture_t)); x264_picture_t *pPic_out = (x264_picture_t *)malloc(sizeof(x264_picture_t)); x264_param_t *pParam = (x264_param_t *)malloc(sizeof(x264_param_t)); if(fp_src == NULL || fp_dst == NULL) { printf("Error open files.n"); return -1; } x264_param_default(pParam); pParam->i_width = width; pParam->i_height = height; pParam->i_csp = csp; x264_param_apply_profile(pParam, x264_profile_names[4]); pHandle = x264_encoder_open(pParam); x264_picture_init(pPic_out); x264_picture_alloc(pPic_in, csp, pParam->i_width, pParam->i_height); y_size = pParam->i_width * pParam->i_height; printf("w:%d h:%drn",pParam->i_width,pParam->i_height); //detect frame number if(frame_num == 0) { fseek(fp_src, 0, SEEK_END); switch(csp) { case X264_CSP_I444: frame_num = ftell(fp_src)/(y_size*3); break; case X264_CSP_I420: frame_num = ftell(fp_src)/(y_size*3/2); break; case X264_CSP_I422: frame_num = ftell(fp_src)/(y_size*2); break; default: printf("Colorspace Not Support.n"); return -1; } fseek(fp_src, 0, SEEK_SET); } printf("frame_num:%d y_size:%drn",frame_num,y_size); //Loop to Encode for(i=0;i case X264_CSP_I444: fread(pPic_in->img.plane[0], y_size, 1, fp_src); fread(pPic_in->img.plane[1], y_size, 1, fp_src); fread(pPic_in->img.plane[2], y_size, 1, fp_src); break; case X264_CSP_I420: fread(pPic_in->img.plane[0], y_size, 1, fp_src); fread(pPic_in->img.plane[1], y_size/4, 1, fp_src); fread(pPic_in->img.plane[2], y_size/4, 1, fp_src); break; case X264_CSP_I422: { int index = 0; int y_i = 0, u_i = 0, v_i = 0; for(index = 0; index < y_size*2; ) { fread(&pPic_in->img.plane[0][y_i++], 1, 1, fp_src); //Y index++; fread(&pPic_in->img.plane[1][u_i++], 1, 1, fp_src); //U index++; fread(&pPic_in->img.plane[0][y_i++], 1, 1, fp_src); //Y index++; fread(&pPic_in->img.plane[2][v_i++], 1, 1, fp_src); //V index++; } break; } default: printf("Colorspace Not Support.n"); return -1; } pPic_in->i_pts = i; ret = x264_encoder_encode(pHandle, &pNals, &iNal, pPic_in, pPic_out); if(ret < 0) { printf("Error.n"); return -1; } printf("Succeed encode frame: %5dn", i); for(j=0;j } } //flush encoder while(1) { ret = x264_encoder_encode(pHandle, &pNals, &iNal, NULL, pPic_out); if(ret == 0) break; printf("Flush 1 frame.n"); for(j=0;j } x264_picture_clean(pPic_in); x264_encoder_close(pHandle);
上一篇:嵌入式ARM開發(fā)板學(xué)習(xí)方法步驟
下一篇:4412 使用usb攝像頭拍照YUYV格式
推薦閱讀
史海拾趣
在汽車產(chǎn)業(yè)領(lǐng)域,Daewoo公司同樣取得了令人矚目的成就。大宇汽車公司作為Daewoo集團(tuán)的骨干企業(yè),自1983年獨(dú)立以來,憑借其先進(jìn)的技術(shù)和出色的品質(zhì),迅速在韓國汽車市場嶄露頭角。公司不僅在國內(nèi)市場表現(xiàn)優(yōu)異,還積極開拓國際市場,成功將產(chǎn)品出口到世界各地。
隨著全球?qū)Νh(huán)保和可持續(xù)發(fā)展的重視,DBM Optix也積極響應(yīng)這一趨勢。公司在生產(chǎn)過程中注重節(jié)能減排、降低廢棄物排放等措施,同時積極開發(fā)環(huán)保型產(chǎn)品,以滿足客戶對綠色環(huán)保的需求。此外,DBM Optix還積極參與各種環(huán)?;顒雍蜕鐣媸聵I(yè),為推動電子行業(yè)的可持續(xù)發(fā)展貢獻(xiàn)自己的力量。這些舉措不僅提升了公司的社會形象,也為公司的長遠(yuǎn)發(fā)展奠定了堅(jiān)實(shí)的基礎(chǔ)。
Dearborn Electronics Inc.始終將品質(zhì)放在首位,建立了嚴(yán)格的質(zhì)量管理體系。公司從原材料采購到生產(chǎn)、檢驗(yàn)、包裝等各個環(huán)節(jié)都進(jìn)行嚴(yán)格的質(zhì)量控制,確保每一件產(chǎn)品都符合最高標(biāo)準(zhǔn)。此外,公司還不斷引進(jìn)先進(jìn)的生產(chǎn)設(shè)備和技術(shù),提高生產(chǎn)效率和產(chǎn)品質(zhì)量。
隨著技術(shù)的不斷進(jìn)步,Dearborn Electronics Inc.不斷投入研發(fā),推出了一系列具有創(chuàng)新性的產(chǎn)品,如鉭電容、陶瓷電容器等。這些產(chǎn)品以其卓越的性能和可靠性贏得了市場的廣泛認(rèn)可。同時,公司也積極拓展市場,將產(chǎn)品銷售到全球各地,特別是醫(yī)療、石油、交通、工業(yè)等嚴(yán)苛應(yīng)用領(lǐng)域。
在初創(chuàng)期,力芯微公司專注于DVD、音響、機(jī)頂盒及遙控器等傳統(tǒng)電子市場的芯片研發(fā)及銷售。公司憑借對市場的敏銳洞察,與步步高、TCL、Sony、飛利浦、富士康等知名品牌建立了穩(wěn)固的合作關(guān)系。這些合作不僅為公司帶來了穩(wěn)定的收入,也為力芯微積累了與品牌客戶合作的寶貴經(jīng)驗(yàn)。
嵌入式系統(tǒng)無疑是當(dāng)前最熱門最有發(fā)展前途的IT應(yīng)用領(lǐng)域之一。嵌入式系統(tǒng)用在一些特定專用設(shè)備上,通常這些設(shè)備的硬件資源(如處理器、存儲器等)非常有限,并且對成本很敏感,有時對實(shí)時響應(yīng)要求很高等。特別是隨著消費(fèi)家電的智能化,嵌入式更顯重要。 ...… 查看全部問答∨ |
|
ACPI電源管理模式——掃盲詳解1、 ACPI的概念 ACPI: Advanced Configuration and Power Interface 2、 ACPI有以下幾種模式:? S0 正常。 S1 CPU停止工作。 S2 CPU ...… 查看全部問答∨ |
現(xiàn)在做串口采集,用多線程,出現(xiàn)了個問題cpu占用率有點(diǎn)太高了,在我一個雙核的機(jī)器上占30%,到了一低配的賽揚(yáng)單核上占50%多,簡直沒法用了; 簡單介紹:我現(xiàn)在是每一個串口連接著同一種類型的設(shè)備,每個設(shè)備連接的采集點(diǎn)的相關(guān)數(shù)據(jù)、參數(shù)都保存在 ...… 查看全部問答∨ |
北京盟石科技的PXA310開發(fā)板目前已經(jīng)價格調(diào)整到最低1800的程度,也許您可以作為對比看看。不過,下面的幾點(diǎn)可能對你很重要:1. 盟石科技是國內(nèi)第一家推出PXA310開發(fā)板的公司。 2. 盟石科技是在PXA310開發(fā)板上能提供最多的系統(tǒng)的公司。(WindowsCE6 ...… 查看全部問答∨ |
如題,小弟準(zhǔn)備做一個與追蹤日光有關(guān)的作品,不知要選擇光電池還是光敏電阻,抑或光電二(三)極管,請各位知道的不吝賜教,跟我說一下他們之間的主要用途以及區(qū)別、價格等,詳細(xì)一點(diǎn),不過聲明一下不要抄網(wǎng)上的!感激不盡?。?!… 查看全部問答∨ |
我們的板子目前上的CPU是pxa270 312Mhz的,理論上Core電壓所需是1.25V,但是由于采購疏忽,PMIC的默認(rèn)core電壓是1.4V,硬件此次沒有連出PMIC的I2C引腳,所以無法更改core電壓,請問在312M的CPU上用1.4V的Core電壓會不會有問題呢? 目前板子偶爾可 ...… 查看全部問答∨ |
我直接按步驟建立的 OS ,沒做修改直接編譯,出錯,錯誤還真多,高手幫幫忙??纯词鞘裁村e誤,幫我改改。 BUILD: [00:0000000524:PROGC ] Building COMPILE Pass in C:\\WINCE600\\PLATFORM\\SMDK2440A\\Src\\Drivers\\Touch\\ directory. BUILD: ...… 查看全部問答∨ |
LM2678輸入為28.6V,輸出電阻為1K和20K+1K電位器。電壓范圍為25.5-26.5V的 電感38uH,0.8平方的漆包線繞的,輸出電容為50V,220uf 其他均按照LM2678手冊設(shè)計(jì)~ 電路圖在單位,不能詳說,明天上圖,先簡要說下 ...… 查看全部問答∨ |
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- 光電融合突破算力邊界:曦智科技2025 WAIC發(fā)布多維度創(chuàng)新成果
- 阿里黑科技落地!夸克AI眼鏡全球首發(fā),高德、淘寶、支付寶都能用
- 化繁為簡, 適配復(fù)雜磁場環(huán)境,MT73xx 3D雙路輸出霍爾鎖存器賦能車規(guī)電機(jī)精準(zhǔn)控制
- 9.5億美元收購恩智浦MEMS傳感器業(yè)務(wù),意法半導(dǎo)體 在傳感器領(lǐng)域的地位再升級
- 高性能電動滑板車 BLDC 電機(jī)驅(qū)動器:技術(shù)解析與應(yīng)用展望
- 5G工業(yè)網(wǎng)關(guān)的“邊緣計(jì)算+AI推理”一體化設(shè)計(jì),PLC協(xié)議解析與缺陷檢測的實(shí)時聯(lián)動
- AR眼鏡的“工業(yè)指令投射”系統(tǒng),SLAM的空間定位、PLC數(shù)據(jù)實(shí)時疊加顯示
- 多光譜氣體傳感器的抗交叉干擾設(shè)計(jì)
- 多模態(tài)融合感知的“語義-幾何”聯(lián)合建模
- 工業(yè)觸摸屏的“壓感-手勢”多模態(tài)交互設(shè)計(jì)
- 了解設(shè)計(jì)完整AC-DC系統(tǒng)的快速低風(fēng)險方法,輕松答題贏好禮
- 英飛凌家用暖通空調(diào)解決方案邀你拆盲盒
- Littelfuse 高效 • 可靠 • 精準(zhǔn)的功率控制和電路保護(hù)方案在工業(yè)、交通、通訊、醫(yī)療及新能源中的應(yīng)用
- 關(guān)注 PI 最新 SCALE-iDriver IC產(chǎn)品系列 答題有好禮!
- ADI電磁流量計(jì)解決方案
- 英飛凌出手游啦 | 汽車水泵挑戰(zhàn)賽等你來!
- 有獎直播|羅徹斯特電子半導(dǎo)體全周期解決方案 助您應(yīng)對供應(yīng)鏈中斷和元器件停產(chǎn)的挑戰(zhàn)
- 日本軟銀正試圖出售ARM部分或全部股份,最終結(jié)局還未可知
- 智能邊緣,開啟中國“數(shù)”“智”新時代
- 美參議院通過代工廠法案,立法推動關(guān)鍵芯片的研發(fā)與生產(chǎn)
- 西班牙:領(lǐng)先的綠色氫、光伏與儲能綜合系統(tǒng)將力促工業(yè)減排
- 技術(shù)文章—LTC7803 ,讓電源設(shè)計(jì)更簡單更省錢
- 高速 ADC 技術(shù)的發(fā)展趨勢及測試方法
- 混頻器噪聲系數(shù)測試時,校準(zhǔn)之后增益和噪聲系數(shù)不為零?
- 5G 空中性能測量和評測
- 電磁仿真是電腦版的網(wǎng)絡(luò)分析儀
- 電源紋波和噪聲的測試測量和分析