0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一文知道fpga如何实现YCbCr422转YCbCr444

FPGA开源工作室 来源:搜狐网 作者:搜狐网 2020-09-27 18:10 次阅读

1 YCbCr颜色空间

YCbCr颜色空间是YUV颜色空间的缩放和偏移版本。Y定义为8bit,标称颜色范围为16-235;Cb和Cr标称颜色表示范围为16-240。YCbCr的采样格式一般有44、42、41、和40。

1.1 44 YCbCr格式

图1表示44格式YCbCr采样点的定位。每个采样点有Y、Cb和Cr值,每个颜色值的颜色分量为8bit(典型),因此每个采样点24bit。

图1 44采样

1.2 42 YCbCr格式

图 2表示42格式YCbCr采样点定位。对于每两个水平Y采样点,有一个Cb和一个Cr采样点。

图2 42协调位置采样

2 matlab YCbCr422转YCbCr444

在上一期的基础上将YCbCr422再转回YCbCr444

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));

Cb =double(zeros(H,W));

Cr = double(zeros(H,W));

%RGB转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

%由YCbCr422转出YCbCr444

%Cb

for i=1:1:H

for j=1:1:W

if rem(j,2)==0

Cb(i,j)=Cb1(i,j/2);

else

Cb(i,j)=Cb1(i,(j+1)/2);

end

end

end

%Cr

for i=1:1:H

for j=1:1:W

if rem(j,2)==0

Cr(i,j)=Cr1(i,j/2);

else

Cr(i,j)=Cr1(i,(j+1)/2);

end

end

end

CbCr=uint8(CbCr);

YCbCr(:,:,1)=Y0;

YCbCr(:,:,2)=Cb;

YCbCr(:,:,3)=Cr;

YCbCr=uint8(YCbCr);

Y=uint8(Y0);

Cb=uint8(Cb);

Cr=uint8(Cr);

%YCbCr422中的CbCr交替

figure(1),

imshow(CbCr),title('CbCr');

figure(2),

subplot(221),imshow(Cb),title('Cb');

subplot(222),imshow(Cr),title('Cr');

subplot(223),imshow(Y),title('Y');

subplot(224),imshow(YCbCr),title('YCbCr');

figure(3),

imshow(YCbCr),title('YCbCr');

CbCr细节放大为一幅CbCr交错的图像。

YCbCr444的Y分量为一幅灰度图像。

上图为YCbCr422转换后的YCbCr444

3 fpga仿真实现

module YUV422_2YUV444(

input clk,//系统时钟

input rst_n,

input[7:0] y_i,//输入视频亮度信号y

input[7:0] cbcr_i,//输入视频色度信号cbcr

input de_i,//输入视频有效

input hs_i,//输入视频行同步

input vs_i,//输入视频场同步

output [7:0] y_o,//输出视频亮度分量y

output[7:0] cb_o,//输出视频Cb分量

output[7:0] cr_o,//输出视频Cr分量

output reg de_o,//输出视频有效

output reg hs_o,//输出视频行同步

output reg vs_o//输出视频场同步

);

reg flag;//CbCr分离时标记信号

reg[7:0] cbcr_r,cbcr_r1,y_r;

assign cb_o = (flag==1'b0)?cbcr_r:cbcr_r1;

assign cr_o = (flag==1'b0)?cbcr_i:cbcr_r;

assign y_o = y_r;

always@(posedge clk)

begin

de_o <= de_i;

hs_o <= hs_i;

vs_o <= vs_i;

cbcr_r<=cbcr_i;

cbcr_r1<=cbcr_r;

y_r<=y_i;

end

always@(posedge clk or negedge rst_n)

begin

if(~rst_n)

flag <= 1'b0;

else if(de_o==1'b1)

flag <= ~flag;

else

flag <= 1'b0;

end

//将CbCr分开,并复制

//如:CbYCrYCbYCrY --> CbCrYCbCrYCbCrYCbCrY

endmodule

fpga实现YCbCr422转YCbCr444,效果和matlab一致。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1625

    文章

    21663

    浏览量

    601673

原文标题:fpga实现YCbCr422转YCbCr444

文章出处:【微信号:leezym0317,微信公众号:FPGA开源工作室】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    NCS8803芯片HDMIEDP功能简介

    supportedRGB444/YCbCr444/YCbCr422 supportedPixel clock up to 340MHz2-channel audio
    发表于 07-05 09:14

    HDMIEDP芯片NCS8803简介

    supportedRGB444/YCbCr444/YCbCr422 supportedPixel clock up to 340MHz2-channel audio supportedAdaptive
    发表于 07-27 09:01

    YCbCr色彩空间和RGB色彩空间之间的转换方法介绍

    分辨率的视频转换,而且支持YCbCr444YCbCr422YCbCr420等多种打包或平面YCbCr格式。本设计方案已用VerilogHDL语言
    发表于 07-01 06:41

    【稳定方案】转接/转换芯片NCS8827 IC:HDMI to CVBS

    format of PAL or NTSC**HDMI输入**:HDMI InputSupport HDMI 1.4RGB444/YCbCr444/YCbCr422 supported2-channel
    发表于 07-26 18:00

    转换IC/转接芯片NCS8828:HDMI-to-YPbPr

    /YCbCr444/YCbCr422 supportedPixel clock up to 166MHz2-channel audio supportedSupport Hot-Plug
    发表于 07-30 11:59

    NCS8803芯片HDMIEDP功能简介

    InputHDMI 1.4a supportedRGB444/YCbCr444/YCbCr422 supportedPixel clock up to 340MHz2-channel audio
    发表于 04-23 15:57

    NCS8803 HDMIEDP芯片规格书

    /YCbCr444/YCbCr422像素时钟: 340MHz支持双通道音频输入;参考时钟任何频率,在19MHz到100MHz之间,单端时钟输入 内置5000 ppm SSC与否通信方式:IIC电源1.2V
    发表于 12-10 17:09

    NCS8803芯片HDMIEDP功能简介

    InputHDMI 1.4a supportedRGB444/YCbCr444/YCbCr422 supportedPixel clock up to 340MHz2-channel audio
    发表于 04-20 16:00

    请问在FPGA上怎么实现从RGB转换到YCbCr

    本文推导出种适合在FPGA实现从RGB到YCbCr。颜色空间变换的新算法,采用单片FPGA完成电路设计,利用
    发表于 04-29 06:57

    NCS8803 HDMIEDP芯片规格书

    /YCbCr444/YCbCr422像素时钟: 340MHz支持双通道音频输入;参考时钟任何频率,在19MHz到100MHz之间,单端时钟输入 内置5000 ppm SSC与否通信方式:IIC电源1.2V
    发表于 08-02 10:11

    NCS8803 HDMIEDP芯片规格书

    /YCbCr444/YCbCr422像素时钟: 340MHz支持双通道音频输入;参考时钟任何频率,在19MHz到100MHz之间,单端时钟输入 内置5000 ppm SSC与否通信方式:IIC电源1.2V
    发表于 04-19 10:37

    MS2109视频传采集晶片参数特性介绍 HDMIUSB

    DVI1.0,支持HDCP1.42.最大输入解析度3840*2160@30HZ3.支持RGB444,YCBCR422,YCBCR444,YCBCR420 color space4.支持
    发表于 04-19 17:22

    MS2109视频传采集晶片参数特性介绍 HDMIUSB

    DVI1.0,支持HDCP1.42.最大输入解析度3840*2160@30HZ3.支持RGB444,YCBCR422,YCBCR444,YCBCR420 color space4.支持
    发表于 05-10 14:43

    MS2109视频传采集晶片参数特性介绍 HDMIUSB

    DVI1.0,支持HDCP1.42.最大输入解析度3840*2160@30HZ3.支持RGB444,YCBCR422,YCBCR444,YCBCR420 color space4.支持
    发表于 05-27 11:14

    实现matlab YCbCr444YCbCr422实例

    采样 1.2 42 YCbCr格式 图 2表示42格式YCbCr采样点定位。对于每两个水平Y采样点,有个Cb和个Cr采样点。 图2 42协调位置采样 2 matlab
    的头像 发表于 09-27 11:32 4663次阅读
    <b class='flag-5'>实现</b>matlab <b class='flag-5'>YCbCr444</b><b class='flag-5'>转</b><b class='flag-5'>YCbCr422</b>实例