案例介绍

RGB888转YCbCr模块

作者[Author]:chen1111 验证[Verified]:FPGA 浏览次数 [Views]:437
字体大小 [Fonts]: 14px 16px 18px

概要[Abstract]将RGB格式转为YCbCr格式对于图像的处理更为方便。在集创赛作品中,几乎所有的参赛项目都涉及到图像处理领域,比较常见的有颜色识别、图像二值化、膨胀腐蚀算法消除多余的阴影、边缘检测等等。

实现功能: 此模块实现将RGB888色彩格式转为YCbCr格式。 实现原理: RGB888转YCbCr的数学公式里涉及到较多的浮点运算,这并非FPGA所擅长的领域,因此我们需要将标准数学公式转换和化简: 以下为RGB888转YCbCr的标准数学公式: Y = 0.299R +0.587G + 0.114B Cb = 0.568(B - Y) + 128 = -0.172R - 0.339G + 0.511B + 128 Cr = 0.713(R - Y) + 128 = 0.511R-0.428G -0.083B + 128 我们通过先乘后除的方式将小数部分去掉,注意这里乘与除的值最好是2n, 方便除法可以直接转化为移位运算,效率更高。去掉小数的公式如下: Y = (77*R + 150*G + 29 *B) >> 8 Cb = (-43*R - 85 *G + 128*B) >> 8 + 128 Cr = (128*R - 107*G - 21*B) >> 8 + 128 我们将公式形式化简为一致,方便后续使用三级流水将加法、乘法和除法(移位运算)分开同时计算,保证FPGA处理的速度。化简后的公式如下: Y = (77 *R + 150*G + 29 *B) >> 8 Cb = (-43*R - 85*G + 128*B + 32768) >> 8 Cr = (128*R - 107*G - 21*B + 32768) >> 8 最后,使用Verilog代码将公式实现即可,具体实现参考模块源码。
近似设计 [Similar] 更多 [More]

 
Copyright © Robei | | 鲁ICP备14018662号 |