二次查表法實現真彩色圖像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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章