当前位置: 首页 > news >正文

基于FPGA实现YCbCr444转RGB888

目录

一.YCbCr444转RGB888的公式算法

1.YCbCr444转RGB888计算公式

这里为什么不和RGB888转YCbCr一样放大256倍?

二.Verilog代码的实现


一.YCbCr444转RGB888的公式算法


我们通常认为YUV 和YCbCr是一个概念,但是两者还是有很大区别的:

YUV是模拟信号,其中Y的取值范围在0-1之间,而U,V取值在-0.5至0.5之间。YCbCr是数字信号,如果再细分的话,可以分为tv range和full range两种格式。对于tv range,Y的取值在16-235之间,Cb的取值在16-240之间,Cr的取值在16-240之间;而对于full range,Y,Cb,Cr的取值都在0-255之间。

我们这里以RGB888与YCbCr444(对于full range 或者pc range的YCbCr格式)转换为例,YCbCr444转RGB888的转换公式如下所示:

如果我们要在FPGA 上实现YCbCr转RGB,可以将上述的YCbCr转RGB公式在硬件加速的理论下,转换成如下公式:

1.YCbCr444转RGB888计算公式


上述硬件加速的核心思想是放大1024倍,去除小数点,而后再右移10位(缩小1024倍)。

这里为什么不和RGB888转YCbCr一样放大256倍?

这里笔者原先是放大256倍的,但是复原的 数据与原先数据对比有偏差,放大1024倍的可以复原出原来的数据。

二.Verilog代码的实现

`timescale 1ns / 1ps module YCbCr444_RGB888 ( input wire clk, input wire reset_n, input wire img_in_vsync, input wire img_in_href, input wire img_in_de, input wire [7:0] img_in_Y, input wire [7:0] img_in_Cb, input wire [7:0] img_in_Cr, output wire img_out_vsync, output wire img_out_href, output wire img_out_de, output wire [7:0] img_out_red, output wire [7:0] img_out_green, output wire [7:0] img_out_blue ); //--------------------------------------------------------------------- (* ASYNC_REG = "TRUE" *)reg [2:0] img_in_de_reg; (* ASYNC_REG = "TRUE" *)reg [2:0] img_in_vsync_reg; (* ASYNC_REG = "TRUE" *)reg [2:0] img_in_href_reg; reg [19:0] img_y_r0; reg [19:0] img_cb_r0,img_cb_r1; reg [19:0] img_cr_r0,img_cr_r1; reg [19:0] img_red_r0,img_green_r0,img_blue_r0; reg [7:0] img_red_r1,img_green_r1,img_blue_r1; //--------------------------------------------------------------------- always @(posedge clk or negedge reset_n) begin if(~reset_n) begin img_in_de_reg <= 3'd0; img_in_vsync_reg <= 3'd0; img_in_href_reg <= 3'd0; end else begin img_in_de_reg <= {img_in_de_reg[1:0],img_in_de}; img_in_vsync_reg <= {img_in_vsync_reg[1:0],img_in_vsync}; img_in_href_reg <= {img_in_href_reg[1:0],img_in_href}; end end always@(posedge clk) begin img_y_r0 <= img_in_Y * 'd1024; img_cb_r0 <= img_in_Cb * 'd352; img_cb_r1 <= img_in_Cb * 'd1815; img_cr_r0 <= img_in_Cr * 'd1437; img_cr_r1 <= img_in_Cr * 'd731; end always@(posedge clk) begin img_red_r0 <= img_y_r0 + img_cr_r0 - 20'd183763; img_green_r0 <= 20'd138674 + img_y_r0 - img_cb_r0 - img_cr_r1; img_blue_r0 <= img_y_r0 + img_cb_r1 - 20'd232260; end reg [1:0] img_red_p; reg [1:0] img_green_p; reg [1:0] img_blue_p; always@(posedge clk) begin img_red_r1 <= img_red_r0[17:10]; img_green_r1 <= img_green_r0[17:10]; img_blue_r1 <= img_blue_r0[17:10]; img_red_p <= img_red_r0[19:18]; img_green_p <= img_green_r0[19:18]; img_blue_p <= img_blue_r0[19:18]; end //----------------------output data------------------------------------ assign img_out_de = img_in_de_reg[2]; assign img_out_href = img_in_href_reg[2]; assign img_out_vsync = img_in_vsync_reg[2]; assign img_out_red = img_out_href ? (img_red_p[1] ? 8'd0 : (img_red_p[0] ? 8'd255 : img_red_r1)) : 8'd0; assign img_out_green = img_out_href ? (img_green_p[1] ? 8'd0 : (img_green_p[0] ? 8'd255 : img_green_r1)) : 8'd0; assign img_out_blue = img_out_href ? (img_blue_p[1] ? 8'd0 : (img_blue_p[0] ? 8'd255 : img_blue_r1)) : 8'd0; endmodule

内容仅供参考,如有错误,欢迎批评指正。

http://www.jsqmd.com/news/1248123/

相关文章:

  • 深入解析Tiva TM4C123BH6ZRB Flash与EEPROM寄存器级操作
  • Unity游戏开发入门:从零构建角色与场景的完整实践指南
  • 实习第七天日记周三【2026.7.22】
  • 智能合约钱包开发:EIP-4337与ERC-7715实战解析
  • 618 市场数据佐证:ENTINA 小橙果,让普通家庭轻松拥抱儿童 3D 打印新风潮
  • Tiva™ QSSI模块深度配置:从寄存器手册到稳健SPI驱动实战
  • 支持评委打分和大众投票的投票工具推荐,云众评选适合各类赛事海选活动 - 微信投票小程序
  • 【Agentic RL / 强化学习 / OPD】OpenClaw-RL 源码阅读笔记 --- (9)--- Reward Judging
  • 寄快递怎么省钱?2026年4个渠道大盘点 - 快递物流实时资讯
  • EdgeCrafter:边缘计算中的高效视觉Transformer姿态估计
  • 官网发布2026成都浪琴售后细则,保养收费表、维修周期、正规网点清单全公开 - 浪琴中国服务中心
  • AI趋势监控平台RadarAI的核心技术与行业应用
  • GJB/Z299D可靠性预计软件 常见问题FAQ
  • 科技巨头AI军备竞赛:资本逻辑与算力基建
  • BMS电池包生产流程详解:从bq20zXX芯片校准到阻抗跟踪算法启用
  • MSPM0 RTC寄存器深度解析:从基础概念到低功耗驱动实战
  • 2026工业场景虚拟电厂服务商综合实力排名,从调度能力与落地案例筛选
  • VirtualBox搭建Ubuntu与MySQL开发环境全指南
  • C++测试与分支覆盖实战:从框架选型到CI集成的完整指南
  • Unity水下渲染插件深度解析:Stylized Water 2扩展实战与移动端优化
  • 数据总线技术选型实战:从RS-485到LVDS的硬件设计指南
  • 大模型在视频创作工具中的应用:从脚本生成到自动剪辑的AI工具链
  • 弹幕去无声工具:智能音视频处理实战指南
  • 代理IP被目标网站封禁403?自建代理池的恢复方案与长效预防机制
  • 元初混沌 6G 全域通感一体化体系架构 第一卷第五十一篇 通感一体五行互扰隔离模型
  • Harness日志系统:集中化管理与智能分析实践
  • 马鞍山老黄金回收,璟安黄金回收,不压成色,价格实在! - 新芸鼎珠宝首饰
  • BQ41Z50状态寄存器解析:OperationStatus、ChargingStatus与GaugingStatus实战指南
  • OpenClaw 3.22版本架构升级与安全特性解析
  • OV 证书的申请流程是怎样的?企业网站需要多准备一步组织验证