二次查表法实现真彩色图像YUV/RGB格式转换

作者: 田扬林 许志祥

摘要】 提出了一种基于二次查表实现真彩色图像YUV/RGB格式转换的快速有效算法,并将其应用于H.263编解码中。采用这种二次查表相加法能提高运算速度近4倍而没有任何图像质量的损失。
【关键词】 查表法; YUV/RGB格式转换; 真彩色图像; H.263编解码

1 引言

  按照H.263标准规定,亮度和色度信号Y,Cb,Cr(即后面的Y,U,V)应符合国际无线电咨询委员会CCIR601文件。按此文件Y,U,V的计算公式为

901.gif (2570 字节) (1)

  式中各系数分母均为256是因为R,G,B信号经8 bit量化后,电平有256个等级。式中色度信号减128就是把零电平上移到128,即总电平的一半。因为色度信号经常有正有负,这里先上移,以后在离散余弦变换前和亮度信号Y一起下移,色度信号恢复原来电平,对传输时降低码率有利。将式(1)展开并推导可得到式(2)和(3)。

902.gif (2676 字节)  (2)
     903.gif (2264 字节) (3)
      904.gif (2525 字节)  (4)
      905.gif (1519 字节)  (5)

  按照CCIR601规定,量化后色度信号峰峰值为224等级电平,最低电平为16,最高电平为240,亮度信号Y量化后的电平有220级电平,最高电平为235,最低电平为16。但是在文中编码器取值范围均为0~255。
  因为Windows是位图(RGB)环境,而H.263标准要求输入的是YUV信号,因此在编码前进行RGB→YUV转换通常是必需的,如果要求显示重建图像YUV→RGB也是必需的。更重要的是有不少视频采集卡仅支持RGB32,RGB24,RGB16等图像格式,而不支持YUV16,YUV12格式,此时进行RGB→YUV转换就是不可避免的了。因为这两次转化均是通过大量的循环浮点运算来实现的(对QCIF图像来说是176×144次循环),如果按照式(2)及(3)来进行运算,那么每帧图像编码将为此耗费近60 ms的时间,这对于用软件实现实时编解码来说是难以忍受的。因此,提高转换速度是非常必要的。

2 实现过程

  引入MMX汇编能有效地提高上述各表达式的运算速度,但是会引入较大的误差且并不能得到理想的运算速度。为此,这里采用查表同MMX汇编相结合的方法,较好地解决了这一问题,现描述如下:
  (1)首先,初始化12个三维数组H_Y[16][16][16],H_U[16][16][16],H_V[16][16][16],L_Y[16][16][16],L_U[16][16][16],L_V[16][16][16],H_R[16][16][16],H_G[16][16][16],H_B[16][16][16],L_R[16][16][16],L_G[16][16][16],L_B[16][16][16]。其中,H_X[Rh][Gh][Bh],H_X[Yh][Uh][Vh]的值是先将Rh,Gh,Bh,Yh,Uh,Vh乘以16后再按式(2),(3)计算所得的结果,而L_X[R1][G1][B1],L_X[Y1][U1][V1]的值就是将R1,G1,B1,Y1,U1,V1直接代入式(4)和(5)计算得到的;0≤Rh,Gh,Bh,Yh,Uh,Vh;R1,G1,B1,Y1,U1,V1≤15。Rh,R1分别表示某一像素8 bit R分量的高四位和低四位值,其余依次类推。
  (2)求出输入RGB/YUV序列的高4位和低4位值,分别查询相应的6个表。
  (3)将查询得到的相关的两个结果相加便得到各转换分量值。
  在第二步中,从8 bit量中得到高、低4 bit量所涉及的移位和与操作均可用MMX指令来实现,因而更能加快转换的速度。建立上面所提及的12个表共消耗48 kB的内存空间,这对于当前计算机配置来说简直不值一提。然而,如果要一次查表达到目的那么必须建立6个256×256×256的表,此时的内存消耗将达到96 MB,这在目前来说当然是不能忍受的,故不会得到采用。实验表明,采用这种二次查表相加法能提高运算速度4倍而没有任何图像质量的损失。算法的具体实现如图1所示(RGB→YUV)。

t1001.gif (4786 字节)

图1 RGB-YUV转换算法流程图

3 结论

  查表法是一种既简单又实用的算法,其速度是任何其它算法不可比拟的,但是它的致命缺点是内存消耗较大。然而,随着电子技术的飞速发展,以前一直困扰着编程人员的内存消耗问题基本得到了解决,其价格变得极为便宜,一台计算机配置32 MB,64 MB,128 MB内存已是极为平常的一件事情。再加上Windows95/98/NT操作系统完善的内存管理机制,查表法便获得了一个较为宽松的应用环境。实验表明,采用上述二次查表相加法能提高运算速度近4倍而没有任何图像质量的损失。在图像处理和图像编解码中,查表法是一种非常实用的快速有效算法,值得大家去研究并推广应用。

田扬林(上海大学 通信与信息工程学院, 上海 201800)
许志祥(上海大学 通信与信息工程学院, 上海 201800)

参考文献

1, Draft ITU-T Recommendation H.263-1995,Video Coding for Low Bitrate Communication.

摘自: http://elec.wanfangdata.com.cn/qikan/periodical.articles/dsjs/dsjs2000/0001/000102.htm

发布了136 篇原创文章 · 获赞 5 · 访问量 10万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章