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

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

3天内不再提示

实现matlab YCbCr444转YCbCr422实例

FPGA开源工作室 来源:FPGA开源工作室 作者:FPGA开源工作室 2020-09-27 11:32 次阅读

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 YCbCr444转YCbCr422

首先将rgb图像转为YCbCr444然后再由YCbCr444转为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转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交错显示

3 fpga仿真实现

`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实现CbCr22

责任编辑:xj

原文标题:YCbCr444转YCbCr422

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

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

    关注

    0

    文章

    2

    浏览量

    7796
  • 颜色空间
    +关注

    关注

    0

    文章

    3

    浏览量

    1427

原文标题:YCbCr444转YCbCr422

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

收藏 人收藏

    评论

    相关推荐

    基于TDA处理器的360度全景实现YUV422输出的方案

    电子发烧友网站提供《基于TDA处理器的360度全景实现YUV422输出的方案.pdf》资料免费下载
    发表于 09-05 11:12 0次下载
    基于TDA处理器的360度全景<b class='flag-5'>实现</b>YUV<b class='flag-5'>422</b>输出的方案

    利用Matlab函数实现深度学习算法

    Matlab实现深度学习算法是一个复杂但强大的过程,可以应用于各种领域,如图像识别、自然语言处理、时间序列预测等。这里,我将概述一个基本的流程,包括环境设置、数据准备、模型设计、训练过程、以及测试和评估,并提供一个基于Matlab
    的头像 发表于 07-14 14:21 1736次阅读

    MATLAB如何使用训练好的网络

    实现和应用变得简单易行。 MATLAB神经网络概述 MATLAB提供了多种神经网络架构,如前馈神经网络、卷积神经网络(CNN)、循环神经网络(RNN)等。这些网络可以通过MATLAB
    的头像 发表于 07-03 10:06 918次阅读

    一款通用的USBRS-485/422换器DAM-3232N

    DAM-3232N 是一款通用的 USB/RS-485/422 转换器,无需外加电源、兼容USB、RS-422、RS-485标准,能够将单端的 USB 信号转换为平衡差分的 RS-422
    的头像 发表于 06-25 11:37 847次阅读
    一款通用的USB<b class='flag-5'>转</b>RS-485/<b class='flag-5'>422</b><b class='flag-5'>转</b>换器DAM-3232N

    国产SR-422收发器的作用有哪些?

    422收发器的基本概念和特点。作为一种串行通信器件,422收发器遵循RS-422标准,能够实现长距离、高速率的数据传输。相比于其他串行通信协议,RS-
    的头像 发表于 05-29 15:39 474次阅读

    422232接器异常

    通信板卡中的单片机对外按通信协议正常输出指令,正常对外采用422接口,因为需要接到上位机进行测试,因此板卡的422接口通过Ztek公司的422232
    发表于 05-24 19:56

    基于MATLAB的信号处理系统与分析

    基于MATLAB的信号处理系统与分析,包括信号的导入、预处理、分析、特征提取以及频谱分析等关键步骤,并通过实例展示MATLAB在信号处理与分析中的强大功能。
    的头像 发表于 05-17 14:24 900次阅读

    YCbCr转换成RGB565,并丢到显示RAM中去,为什么显示的图像不对?

    我现在已经写好了代码,将YCbCr转换成RGB565,并丢到显示RAM中去了,但是显示的图像还是不对。不知道哪里出了问题,我TW9912设置的问题还是YCbCr转换成RGB565的算法的问题。 还有
    发表于 05-11 08:42

    CS5802专用HDMIType-C转换控制芯片方案

    CS5802专用HDMIType-C转换控制芯片方案,支持RGB 6/8/10ppc和YCbCr 4:4:4、4:2:2等格式。支持的高分辨率4k@60Hz.对于Type-C输出,它由4个数
    发表于 04-16 10:50

    3.3YPbPr/YCbCr接口静电浪涌保护方案介绍

    方案优点:采用三颗分立ESD二极管完成对接口的静电浪涌保护,方便布线,低结电容,IPP电流大20A/18A,既可以保证信号传输完整性,又可以防护一定的浪涌。
    的头像 发表于 04-08 10:35 362次阅读
    3.3YPbPr/<b class='flag-5'>YCbCr</b>接口静电浪涌保护方案介绍

    ​上海雷卯推出YPbPr/YCbCr视频接口ESD/EOS静电及浪涌保护方案

    YPbPr /YCbCr 接口传输的是视频信号,不传输音频信号。YPbPr 和 YCbCr 都是视频信号的颜色编码格式,多应用于机顶盒(Set-top box),TV电视,投影仪,游戏机和DVD播放器。
    的头像 发表于 03-13 10:08 418次阅读
    ​上海雷卯推出YPbPr/<b class='flag-5'>YCbCr</b>视频接口ESD/EOS静电及浪涌保护方案

    解决YPbPr/ YCbCr接口 ESD/EOS静电浪涌问题

    YPbPr /YCbCr 接口传输的是视频信号,不传输音频信号。YPbPr 和 YCbCr 都是视频信号的颜色编码格式,多应用于机顶盒(Set-top box),TV电视,投影仪,游戏机和DVD
    的头像 发表于 03-08 18:02 886次阅读
    解决YPbPr/ <b class='flag-5'>YCbCr</b>接口 ESD/EOS静电浪涌问题

    FMC扩展子卡 6 路422,8 组LVDS,8 路GPIO

    。 本产品基于一些逻辑转换芯片而设计,能实现差分信号单端输出给载板、载板的单端信号差分输出;422 信号的输入/ 输出;GPIO 信号由载板实现
    的头像 发表于 02-26 15:04 402次阅读
    FMC扩展子卡 6 路<b class='flag-5'>422</b>,8 组LVDS,8 路GPIO

    讲解MATLAB/Simulink HDL使用入门

    我们将使用实例讲解MATLAB / Simulink HDL 使用入门。
    的头像 发表于 11-06 09:12 1188次阅读
    讲解<b class='flag-5'>MATLAB</b>/Simulink HDL使用入门

    MATLAB如何实现PID?

    MATLAB是一种非常强大的工具,用于实现和分析PID(比例-积分-微分)控制器。在MATLAB中,您可以使用控制系统工具箱来设计、模拟和调整PID控制系统。以下是一般步骤,演示如何在MATL
    的头像 发表于 11-04 08:00 2672次阅读
    <b class='flag-5'>MATLAB</b>如何<b class='flag-5'>实现</b>PID?