0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

實(shí)現(xiàn)matlab YCbCr444轉(zhuǎn)YCbCr422實(shí)例

FPGA開(kāi)源工作室 ? 來(lái)源:FPGA開(kāi)源工作室 ? 作者:FPGA開(kāi)源工作室 ? 2020-09-27 11:32 ? 次閱讀

1 YCbCr顏色空間

YCbCr顏色空間是YUV顏色空間的縮放和偏移版本。Y定義為8bit,標(biāo)稱顏色范圍為16-235;Cb和Cr標(biāo)稱顏色表示范圍為16-240。YCbCr的采樣格式一般有44、42、41、和40。

1.1 44 YCbCr格式

圖1表示44格式Y(jié)CbCr采樣點(diǎn)的定位。每個(gè)采樣點(diǎn)有Y、Cb和Cr值,每個(gè)顏色值的顏色分量為8bit(典型),因此每個(gè)采樣點(diǎn)24bit。

圖1 44采樣

1.2 42 YCbCr格式

圖 2表示42格式Y(jié)CbCr采樣點(diǎn)定位。對(duì)于每?jī)蓚€(gè)水平Y(jié)采樣點(diǎn),有一個(gè)Cb和一個(gè)Cr采樣點(diǎn)。

圖2 42協(xié)調(diào)位置采樣

2 matlab YCbCr444轉(zhuǎn)YCbCr422

首先將rgb圖像轉(zhuǎn)為YCbCr444然后再由YCbCr444轉(zhuǎn)為YCbCr422。

close all clear all clc I=imread('1.bmp'); [H ,W ,D]=size(I); R=double(I(:,:,1)); G=double(I(:,:,2)); B=double(I(:,:,3)); Y0= double(zeros(H,W)); Cb0 =double(zeros(H,W)); Cr0 = double(zeros(H,W)); Cb1 =double(zeros(H,W/2)); Cr1 = double(zeros(H,W/2)); CbCr = double(zeros(H,W)); %RGB轉(zhuǎn)YCbCr444 for i = 1:H for j = 1:W Y0(i, j) = 0.299*R(i, j) + 0.587*G(i, j) + 0.114*B(i, j); Cb0(i, j) = -0.172*R(i, j) - 0.339*G(i, j) + 0.511*B(i, j) + 128; Cr0(i, j) = 0.511*R(i, j) - 0.428*G(i, j) - 0.083*B(i, j) + 128; end end for i=1:1:H for j=2:2:W Cb1(i,j/2)=(Cb0(i,j-1)+Cb0(i,j))/2; end end for i=1:1:H for j=2:2:W Cr1(i,j/2)=(Cr0(i,j-1)+Cr0(i,j))/2; end end for i=1:1:H for j=1:1:W if rem(j,2)==0 CbCr(i,j)=Cr1(i,j/2); else CbCr(i,j)=Cb1(i,(j+1)/2); end end end Iycbcr(:,:,1)=Y0; Iycbcr(:,:,2)=Cb0; Iycbcr(:,:,3)=Cr0; Iycbcr=uint8(Iycbcr); Y0=uint8(Y0); Cb0=uint8(Cb0); Cr0=uint8(Cr0); Cb1=uint8(Cb1); Cr1=uint8(Cr1); CbCr=uint8(CbCr); figure(1), subplot(211),imshow(I),title('RGB'); subplot(212),imshow(Iycbcr),title('YCbCr444'); figure(2), subplot(221),imshow(Cb1),title('Cb1'); subplot(222),imshow(Cr1),title('Cr1'); subplot(223),imshow(Cb0),title('Cb0'); subplot(224),imshow(Cr0),title('Cr0'); figure(3), subplot(211),imshow(Y0),title('Y0'); subplot(212),imshow(CbCr),title('CbCr');

Cb2和Cr2

CbCr交錯(cuò)顯示

3 fpga仿真實(shí)現(xiàn)

`timescale 1ns/1ps module YUV444_422 ( input clk, input rst_n, input iVsync, input iHsync, input iDVAL, input[23:0] YUV444_D, output reg oVsync, output reg oHsync, output reg oDVAL, output reg[15:0] YUV422_D ); reg iDVAL_reg0,iDVAL_reg1,iDVAL_reg2,iDVAL_reg3; reg iVsync_reg0,iVsync_reg1,iVsync_reg2,iVsync_reg3; reg iHsync_reg0,iHsync_reg1,iHsync_reg2,iHsync_reg3; reg[8:0] YUV444_Cr_Sum0; reg[8:0] YUV444_Cb_Sum0; wire [7:0] temp_Y,temp_Cb,temp_Cr; reg [7:0] temp_Y0,temp_Y1,temp_Y2,temp_Y3; reg [7:0] temp_Cb0,temp_Cb1; reg [7:0] temp_Cr0,temp_Cr1; reg[7:0] Cr,Cb,Crbuf; reg Sel; assign temp_Y=YUV444_D[23:16]; assign temp_Cb=YUV444_D[15:8]; assign temp_Cr=YUV444_D[7:0]; always@(posedge clk) begin iDVAL_reg0 <= iDVAL; iDVAL_reg1 <= iDVAL_reg0; iDVAL_reg2 <= iDVAL_reg1; iDVAL_reg3 <= iDVAL_reg2; oDVAL <= iDVAL_reg3; end always@(posedge clk ) begin iVsync_reg0 <= iVsync; iVsync_reg1 <= iVsync_reg0; iVsync_reg2 <= iVsync_reg1; iVsync_reg3 <= iVsync_reg2; oVsync <= iVsync_reg3; end always@(posedge clk) begin iHsync_reg0 <= iHsync; iHsync_reg1 <= iHsync_reg0; iHsync_reg2 <= iHsync_reg1; iHsync_reg3 <= iHsync_reg2; oHsync <= iHsync_reg3; end always@(posedge clk ) begin //delay 3 clock Y temp_Y0<=temp_Y; temp_Y1<=temp_Y0; temp_Y2<=temp_Y1; temp_Y3<=temp_Y2; //delay 2 clock Cb temp_Cb0<=temp_Cb; temp_Cb1<=temp_Cb0; //delay 2 clock Cr temp_Cr0<=temp_Cr; temp_Cr1<=temp_Cr0; //delay 1 clock YUV444_Cr_Sum0 <= temp_Cr1 + temp_Cr0;//cr0+cr1 YUV444_Cb_Sum0 <= temp_Cb1 + temp_Cb0;//cb0+cb1 //delay 2clock Cr <= YUV444_Cr_Sum0[8:1]; Cb <= YUV444_Cb_Sum0[8:1]; end always@(posedge clk or negedge rst_n) begin if(~rst_n) Sel <= 1'b0; else if(iDVAL_reg3) Sel <= ~Sel; else Sel <= 1'b0; end always@(posedge clk or negedge rst_n)begin if(~rst_n) YUV422_D <= 16'd0; else if(iDVAL_reg3) begin YUV422_D[15:8] <= temp_Y3; YUV422_D[7:0] <=(!Sel)?Cb:Crbuf; Crbuf <= Cr; end end endmodule

fpga實(shí)現(xiàn)CbCr22

責(zé)任編輯:xj

原文標(biāo)題:YCbCr444轉(zhuǎn)YCbCr422

文章出處:【微信公眾號(hào):FPGA開(kāi)源工作室】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • YCB
    YCB
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    7790
  • 顏色空間
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    1425

原文標(biāo)題:YCbCr444轉(zhuǎn)YCbCr422

文章出處:【微信號(hào):leezym0317,微信公眾號(hào):FPGA開(kāi)源工作室】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于TDA處理器的360度全景實(shí)現(xiàn)YUV422輸出的方案

    電子發(fā)燒友網(wǎng)站提供《基于TDA處理器的360度全景實(shí)現(xiàn)YUV422輸出的方案.pdf》資料免費(fèi)下載
    發(fā)表于 09-05 11:12 ?0次下載
    基于TDA處理器的360度全景<b class='flag-5'>實(shí)現(xiàn)</b>YUV<b class='flag-5'>422</b>輸出的方案

    利用Matlab函數(shù)實(shí)現(xiàn)深度學(xué)習(xí)算法

    Matlab實(shí)現(xiàn)深度學(xué)習(xí)算法是一個(gè)復(fù)雜但強(qiáng)大的過(guò)程,可以應(yīng)用于各種領(lǐng)域,如圖像識(shí)別、自然語(yǔ)言處理、時(shí)間序列預(yù)測(cè)等。這里,我將概述一個(gè)基本的流程,包括環(huán)境設(shè)置、數(shù)據(jù)準(zhǔn)備、模型設(shè)計(jì)、訓(xùn)練過(guò)程、以及測(cè)試和評(píng)估,并提供一個(gè)基于Matlab
    的頭像 發(fā)表于 07-14 14:21 ?1180次閱讀

    MATLAB如何使用訓(xùn)練好的網(wǎng)絡(luò)

    實(shí)現(xiàn)和應(yīng)用變得簡(jiǎn)單易行。 MATLAB神經(jīng)網(wǎng)絡(luò)概述 MATLAB提供了多種神經(jīng)網(wǎng)絡(luò)架構(gòu),如前饋神經(jīng)網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)(CNN)、循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)等。這些網(wǎng)絡(luò)可以通過(guò)MATLAB
    的頭像 發(fā)表于 07-03 10:06 ?626次閱讀

    一款通用的USB轉(zhuǎn)RS-485/422轉(zhuǎn)換器DAM-3232N

    DAM-3232N 是一款通用的 USB/RS-485/422 轉(zhuǎn)換器,無(wú)需外加電源、兼容USB、RS-422、RS-485標(biāo)準(zhǔn),能夠?qū)味说?USB 信號(hào)轉(zhuǎn)換為平衡差分的 RS-422
    的頭像 發(fā)表于 06-25 11:37 ?630次閱讀
    一款通用的USB<b class='flag-5'>轉(zhuǎn)</b>RS-485/<b class='flag-5'>422</b><b class='flag-5'>轉(zhuǎn)</b>換器DAM-3232N

    國(guó)產(chǎn)SR-422收發(fā)器的作用有哪些?

    422收發(fā)器的基本概念和特點(diǎn)。作為一種串行通信器件,422收發(fā)器遵循RS-422標(biāo)準(zhǔn),能夠實(shí)現(xiàn)長(zhǎng)距離、高速率的數(shù)據(jù)傳輸。相比于其他串行通信協(xié)議,RS-
    的頭像 發(fā)表于 05-29 15:39 ?376次閱讀

    422轉(zhuǎn)232轉(zhuǎn)接器異常

    通信板卡中的單片機(jī)對(duì)外按通信協(xié)議正常輸出指令,正常對(duì)外采用422接口,因?yàn)樾枰拥缴衔粰C(jī)進(jìn)行測(cè)試,因此板卡的422接口通過(guò)Ztek公司的422轉(zhuǎn)232
    發(fā)表于 05-24 19:56

    YCbCr轉(zhuǎn)換成RGB565,并丟到顯示RAM中去,為什么顯示的圖像不對(duì)?

    我現(xiàn)在已經(jīng)寫(xiě)好了代碼,將YCbCr轉(zhuǎn)換成RGB565,并丟到顯示RAM中去了,但是顯示的圖像還是不對(duì)。不知道哪里出了問(wèn)題,我TW9912設(shè)置的問(wèn)題還是YCbCr轉(zhuǎn)換成RGB565的算法的問(wèn)題。 還有
    發(fā)表于 05-11 08:42

    CS5802專(zhuān)用HDMI轉(zhuǎn)Type-C轉(zhuǎn)換控制芯片方案

    CS5802專(zhuān)用HDMI轉(zhuǎn)Type-C轉(zhuǎn)換控制芯片方案,支持RGB 6/8/10ppc和YCbCr 4:4:4、4:2:2等格式。支持的高分辨率4k@60Hz.對(duì)于Type-C輸出,它由4個(gè)數(shù)
    發(fā)表于 04-16 10:50

    3.3YPbPr/YCbCr接口靜電浪涌保護(hù)方案介紹

    方案優(yōu)點(diǎn):采用三顆分立ESD二極管完成對(duì)接口的靜電浪涌保護(hù),方便布線,低結(jié)電容,IPP電流大20A/18A,既可以保證信號(hào)傳輸完整性,又可以防護(hù)一定的浪涌。
    的頭像 發(fā)表于 04-08 10:35 ?314次閱讀
    3.3YPbPr/<b class='flag-5'>YCbCr</b>接口靜電浪涌保護(hù)方案介紹

    ?上海雷卯推出YPbPr/YCbCr視頻接口ESD/EOS靜電及浪涌保護(hù)方案

    YPbPr /YCbCr 接口傳輸?shù)氖且曨l信號(hào),不傳輸音頻信號(hào)。YPbPr 和 YCbCr 都是視頻信號(hào)的顏色編碼格式,多應(yīng)用于機(jī)頂盒(Set-top box),TV電視,投影儀,游戲機(jī)和DVD播放器。
    的頭像 發(fā)表于 03-13 10:08 ?368次閱讀
    ?上海雷卯推出YPbPr/<b class='flag-5'>YCbCr</b>視頻接口ESD/EOS靜電及浪涌保護(hù)方案

    解決YPbPr/ YCbCr接口 ESD/EOS靜電浪涌問(wèn)題

    YPbPr /YCbCr 接口傳輸?shù)氖且曨l信號(hào),不傳輸音頻信號(hào)。YPbPr 和 YCbCr 都是視頻信號(hào)的顏色編碼格式,多應(yīng)用于機(jī)頂盒(Set-top box),TV電視,投影儀,游戲機(jī)和DVD
    的頭像 發(fā)表于 03-08 18:02 ?585次閱讀
    解決YPbPr/ <b class='flag-5'>YCbCr</b>接口 ESD/EOS靜電浪涌問(wèn)題

    FMC擴(kuò)展子卡 6 路422,8 組LVDS,8 路GPIO

    。 本產(chǎn)品基于一些邏輯轉(zhuǎn)換芯片而設(shè)計(jì),能實(shí)現(xiàn)差分信號(hào)轉(zhuǎn)單端輸出給載板、載板的單端信號(hào)轉(zhuǎn)差分輸出;422 信號(hào)的輸入/ 輸出;GPIO 信號(hào)由載板實(shí)現(xiàn)
    的頭像 發(fā)表于 02-26 15:04 ?322次閱讀
    FMC擴(kuò)展子卡 6 路<b class='flag-5'>422</b>,8 組LVDS,8 路GPIO

    講解MATLAB/Simulink HDL使用入門(mén)

    我們將使用實(shí)例講解MATLAB / Simulink HDL 使用入門(mén)。
    的頭像 發(fā)表于 11-06 09:12 ?1066次閱讀
    講解<b class='flag-5'>MATLAB</b>/Simulink HDL使用入門(mén)

    MATLAB如何實(shí)現(xiàn)PID?

    MATLAB是一種非常強(qiáng)大的工具,用于實(shí)現(xiàn)和分析PID(比例-積分-微分)控制器。在MATLAB中,您可以使用控制系統(tǒng)工具箱來(lái)設(shè)計(jì)、模擬和調(diào)整PID控制系統(tǒng)。以下是一般步驟,演示如何在MATL
    的頭像 發(fā)表于 11-04 08:00 ?2440次閱讀
    <b class='flag-5'>MATLAB</b>如何<b class='flag-5'>實(shí)現(xiàn)</b>PID?

    基于MATLAB GUI的水汽自動(dòng)處理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《基于MATLAB GUI的水汽自動(dòng)處理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf》資料免費(fèi)下載
    發(fā)表于 10-24 10:47 ?0次下載
    基于<b class='flag-5'>MATLAB</b> GUI的水汽自動(dòng)處理系統(tǒng)的設(shè)計(jì)與<b class='flag-5'>實(shí)現(xiàn)</b>