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

    浏览量

    7922
  • 颜色空间
    +关注

    关注

    0

    文章

    3

    浏览量

    1564

原文标题:YCbCr444转YCbCr422

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    是否有显示控制器真正可以处理的 DRM 像素格式列表?

    是否有显示控制器真正可以处理的 DRM 像素格式列表? 目前内核公开以下格式: RGB: RGB565, XRGB8888, ARGB8888, ABGR8888 Packed YCbCr
    发表于 03-31 07:43

    RS485和RS422静电防护方案

    。RS422支持单机发送、多机接收的单向平衡传输模式,允许在单一平衡总线上连接最多十个接收器,实现了信息的有效分发与接收。在RS422的基础上,进一步发展出了RS485标准
    的头像 发表于 03-18 17:09 3286次阅读
    RS485和RS<b class='flag-5'>422</b>静电防护方案

    IT66021FN:支持3D的单端口HDMI 1.4接收器

    ,720P@23.98/24/29.97/30 Hz,720P@50/59.94/60 Hz 辅助格式:装裱、并排(半边)、上下装帧 支持数字视频标准的视频输出接口,如: 24位RGB/YCbCr 4:4:4 16位
    发表于 01-12 16:03

    485换器核心应用:RS232485/422全隔离场景化部署要点

    扰的工业及户外场景。 一、工业自动化:工厂设备集群监控与协同 车间内电脑、PLC、HMI等控制设备多为RS232接口,而现场变频器、伺服驱动器、传感器、智能仪表(如压力表、流量计)多为RS485/RS422接口,需实现“控制端→多设备”的长距离、稳定通信。 1. 数控机床
    的头像 发表于 11-11 15:37 829次阅读

    物联网部署:RS232485/422换器(宽压30V+全隔离)实操指南

    RS232RS485/RS422 485换器是一种工业级通信模块,核心功能是将计算机或设备的RS232接口信号转换为RS485或RS422信号,以满足长距离、高抗干扰的通信需求。
    的头像 发表于 11-11 15:34 1335次阅读

    RS232/RS485/RS422/TTL/USB互转多功能转换器:防浪涌,六合一

    RS232/RS485/RS422/TTL/USB 互转多功能转换器是一种集成多种串口协议转换功能的设备,能实现不同通信接口之间的电气信号和协议格式转换,解决工业设备、嵌入式系统、智能终端等场景中
    的头像 发表于 11-06 18:31 880次阅读

    HCB444-650一体成型功率电感现货:高性能电源管理核心元件

    HCB444-650是台达Delta Electronics推出的一款高性能一体成型功率电感,该产品凭借其优异的电气特性和紧凑型的结构设计,在电源管理、通讯设备等领域得到广泛应用。性能参数•电感量
    发表于 08-15 09:45

    STM32N6的DCMIPP能直接把接收到的YUV422数据转化成RGB565吗?

    YUV444的问题 此选项指示数据为RGB888还是YUV444? 发送端:XS9950芯片,YUV422_8bitYUYV 颜色设置:(Y-U-V) 0xeb0x800x80 接收端:STM32N6
    发表于 08-01 08:06

    基于Matlab与FPGA的双边滤波算法实现

    前面发过中值、均值、高斯滤波的文章,这些只考虑了位置,并没有考虑相似度。那么双边滤波来了,既考虑了位置,有考虑了相似度,对边缘的保持比前几个好很多,当然实现上也是复杂很多。本文将从原理入手,采用Matlab与FPGA设计实现双边
    的头像 发表于 07-10 11:28 4944次阅读
    基于<b class='flag-5'>Matlab</b>与FPGA的双边滤波算法<b class='flag-5'>实现</b>

    工业级USBRS-485/422换器DAM-3238的功能特性与应用解析

    阿尔泰科技DAM-3238是一款通用的USB8路隔离RS-485/422换器,1U机架式结构。
    的头像 发表于 07-07 13:59 1047次阅读
    工业级USB<b class='flag-5'>转</b>RS-485/<b class='flag-5'>422</b><b class='flag-5'>转</b>换器DAM-3238的功能特性与应用解析

    OptiSystem应用:用MATLAB组件实现振幅调制

    本案例展示了在OptiSystem中调用MATLAB代码实现振幅调制。 一、建模目标 案例中,我们生成两束功率为0dBm,频率分别为192.7THz、191THz的载波,合束之后经过自定义脉冲的调制
    发表于 06-13 08:46

    做线材,PC的朋友:我不允许你还不知道这颗芯片方案

    支持 3D 显示左/右场/帧 支持高达 0.5% 下展频的扩频时钟,以降低 EMI 支持水平消隐扩展 支持 eDP 模式 支持 DP 1.4a 自适应同步 RGB 444YCbCr 444
    发表于 06-12 10:38

    这4K120HZ的USB-C口方案,最受高端客户喜欢了。

    /帧 支持高达 0.5% 下展频的扩频时钟,以降低 EMI 支持水平消隐扩展 支持 eDP 模式 支持 DP 1.4a 自适应同步 RGB 444YCbCr 444/422/42
    发表于 06-10 19:54

    DP 1.4to HDMI 2.1(DSC):8k@60Hz?不知道这颗料你们顶不顶得住

    的 CEC 隧道 支持 3D 显示左/右场/帧 支持高达 0.5% 下展频的扩频时钟,以降低 EMI 支持水平消隐扩展 支持 eDP 模式 支持 DP 1.4a 自适应同步 RGB 444YCbCr
    发表于 06-10 19:14

    普源示波器如何连接MATLAB实现数据采集与分析

    普源示波器(Rigol)作为国内知名的测试测量仪器品牌,广泛应用于电子工程、科研实验、教学等领域。为了进一步扩展其功能,用户常需将示波器与MATLAB等数据分析平台连接,实现自动化测试、实时信号处理
    的头像 发表于 05-29 09:34 1512次阅读