YUV(YCbCr)是图像存储与传输的压缩格式,R/G/B才是显示屏原生格式,FPGA做图像链路时两者必须互转。以BT.601标准为例,转换公式为:
R = Y + 1.140×(Cr−128)
G = Y − 0.395×(Cr−128) − 0.581×(Cb−128)
B = Y + 1.702×(Cb−128)
FPGA不跑浮点。工程上的做法是把系数×256取整:1.140→292,1.702→436,0.395→101,0.581→149。每项运算变成"乘常数→右移8位",用MAC(乘加器)即可完成,单像素流水延迟仅2~3拍。如果是BT.709(1080p/4K场景),部分系数有微调,记得对照标准数值表替换。
写公式容易,上板子就麻烦。四个高频问题:
1. 位宽与饱和:中间结果可能超出[0,255],必须用16位甚至24位寄存器暂存,输出端做钳位(clamp),否则色偏肉眼可见。
2. 采样格式对齐:YUV420每2×2像素共享一对色度,YUV422每2个像素共享一对。FPGA前端要先做色度上采样(复制或线性插值)再送转换模块,否则RGB逐像素对不上。
3. 流水线与背压:三组方程可拆成三级流水,吞吐一拍一像素,但级间寄存器引入2~3拍延迟。若下游DDR写入会背压,需加FIFO做缓存隔离。
4. 验证方法:别只靠目测颜色。用已知RGB值反推YUV作为激励,对比输出误差是否在±1 LSB以内,才能确认系数取整没写错、没有溢出。
总结与思考题
YUV转RGB在FPGA中核心就是"整数近似+流水切分",公式本身不难,工程细节决定最终画质。思考题:若输入是10-bit YUV422、目标输出10-bit RGB,系数该取×1024还是×256?对色偏影响有多大?
CTA
颜色空间转换只是FPGA图像处理的第一关。在宸极教育2026年FPGA就业班中,数字信号处理阶段会带你跑通从YUV解析、色彩转换到FIR滤波的完整链路,配合21个实战项目反复打磨。点击右下角客服窗口,说说你的基础和目标岗位,我们帮你规划最短学习路径。
未经许可,禁止转载!