專利名稱:用于圖像代碼轉(zhuǎn)換的位速率降低技術(shù)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及壓縮,且尤其涉及圖像的壓縮。
技術(shù)背景將圖像壓縮成圖像文件以用于傳輸及存儲已在包括因特網(wǎng)圖像傳輸、數(shù)字成像、圖 像消息接發(fā)(messaging)等等的許多不同應(yīng)用中成為必要。例如聯(lián)合圖像專家組標(biāo)準(zhǔn) (JPEG)的圖像壓縮技術(shù)可允許以相對小的圖像文件來存儲高分辨率圖像。隨著數(shù)碼相 機(jī)與無線通信裝置的聚合,這些圖像文件現(xiàn)在可經(jīng)由無線網(wǎng)絡(luò)得以共享。然而,此共享 在例如時間及帶寬的網(wǎng)絡(luò)資源方面可為昂貴的。為了降低或限制這些成本,無線網(wǎng)絡(luò)提 供者有時對可經(jīng)由網(wǎng)絡(luò)傳輸?shù)膱D像文件的文件大小強(qiáng)加限制。為符合這些文件大小限 定,將圖像壓縮到強(qiáng)加的文件大小限制可能會導(dǎo)致圖像質(zhì)量的顯著損耗。發(fā)明內(nèi)容本發(fā)明描述用于將數(shù)據(jù)編碼以將圖像數(shù)據(jù)壓縮到降低的大小的技術(shù)。所述技術(shù)對將 圖像代碼轉(zhuǎn)換到降低的大小以用于傳輸可尤其有效。本文中所描述的代碼轉(zhuǎn)換技術(shù)可用 于許多應(yīng)用中??衫盟黾夹g(shù)的一種此應(yīng)用是經(jīng)由無線網(wǎng)絡(luò)的傳輸。舉例來說,用戶 可使用具有圖像捕獲能力的移動電話(例如,所謂的相機(jī)電話或視頻電話)來拍攝數(shù)字 圖片。通常,所捕獲的數(shù)字圖片為高分辨率圖像,例如,高分辨率JPEG圖像。然而, 為了將所捕獲的圖像發(fā)送到另一電話,可能需要將高分辨率圖像的圖像文件代碼轉(zhuǎn)換到 較小的文件大小(例如,較低的分辨率)以符合無線網(wǎng)絡(luò)服務(wù)提供者的傳輸要求或更好 地適合接收裝置的屏幕大小及顏色限制。在一方面中, 一種處理數(shù)字圖像數(shù)據(jù)的方法包含依 計(jì)算出的比例因子(scaling factor)來按比例縮放一個或一個以上量化表,使用所述一個或一個以上按比例縮放的量 化表來編碼數(shù)字圖像數(shù)據(jù)的多個像素塊,追蹤在數(shù)字圖像數(shù)據(jù)的多個像素塊的第n個塊處經(jīng)編碼的位的數(shù)目與用以實(shí)現(xiàn)目標(biāo)位速率而理想地應(yīng)在第n個塊處編碼的位的數(shù)目之 間的差,及當(dāng)所述差大于或等于閾值時移除用來編碼圖像數(shù)據(jù)的多個塊的一部分的一個 或一個以上位。在另一方面中, 一種用于處理數(shù)字圖像數(shù)據(jù)的設(shè)備包含存儲器,其存儲在編碼數(shù) 字圖像數(shù)據(jù)的多個像素塊中使用的一個或一個以上量化表;及編碼模塊,其依據(jù)計(jì)算出 的比例因子來按比例縮放所述一個或一個以上量化表,使用所述一個或一個以上按比例 縮放的量化表來編碼數(shù)字圖像數(shù)據(jù)的多個像素塊,追蹤在數(shù)字圖像數(shù)據(jù)的多個像素塊的 第n個塊處經(jīng)編碼的位的數(shù)目與用以實(shí)現(xiàn)目標(biāo)位速率而理想地應(yīng)在第n個塊處編碼的位 的數(shù)目之間的差,且當(dāng)所述差大于或等于閥值時移除用于編碼圖像數(shù)據(jù)的多個塊的一部 分的一個或一個以上位。在另一方面中, 一種處理數(shù)字圖像數(shù)據(jù)的設(shè)備包含用于依據(jù)計(jì)算出的比例因子來 按比例縮放一個或一個以上量化表的裝置,用于使用所述一個或一個以上按比例縮放的 量化表來編碼數(shù)字圖像數(shù)據(jù)的多個像素塊的裝置,用于追蹤在數(shù)字圖像數(shù)據(jù)的多個像素 塊的第n個塊處經(jīng)編碼的位的數(shù)目與用以實(shí)現(xiàn)目標(biāo)位速率而理想地應(yīng)在第n個塊處編碼 的位的數(shù)目之間的差的裝置,及用于當(dāng)所述差大于或等于閾值時移除用來編碼圖像數(shù)據(jù) 的多個塊的一部分的一個或一個以上位的裝置。在另一方面中, 一種用于處理數(shù)字圖像數(shù)據(jù)的計(jì)算機(jī)程序產(chǎn)品包含計(jì)算機(jī)可讀媒 體,所述計(jì)算機(jī)可讀媒體上具有指令。所述指令包含用于依據(jù)計(jì)算出的比例因子來按比 例縮放一個或一個以上量化表的代碼,用于使用所述一個或一個以上按比例縮放的量化 表來編碼數(shù)字圖像數(shù)據(jù)的多個像素塊的代碼,用于追蹤在數(shù)字圖像數(shù)據(jù)的多個像素塊的 第n個塊處經(jīng)編碼的位的數(shù)目與用以實(shí)現(xiàn)目標(biāo)位速率而理想地應(yīng)在第n個塊處編碼的位 的數(shù)目之間的差的代碼,及用于當(dāng)所述差大于或等于閾值時移除用來編碼圖像數(shù)據(jù)的多 個塊的一部分的一個或一個以上位的代碼。在另一方面中, 一種用于處理數(shù)字圖像數(shù)據(jù)的無線通信裝置手持機(jī)包含編碼模塊, 其依據(jù)計(jì)算出的比例因子來按比例縮放一個或一個以上量化表,使用所述一個或一個以上按比例縮放的量化表來編碼數(shù)字圖像數(shù)據(jù)的多個像素塊,追蹤在數(shù)字圖像數(shù)據(jù)的多個 像素塊的第n個塊處經(jīng)編碼的位的數(shù)目與用以實(shí)現(xiàn)目標(biāo)位速率而理想地應(yīng)在第n個塊處 編碼的位的數(shù)目之間的差,且當(dāng)所述差大于或等于閾值時移除用來編碼圖像數(shù)據(jù)的多個 塊的一部分的一個或一個以上位;及發(fā)射器,其發(fā)射經(jīng)編碼的像素塊。在另一方面中, 一種用于處理數(shù)字圖像數(shù)據(jù)的集成電路裝置包含至少一個處理器, 其經(jīng)配置以依據(jù)計(jì)算出的比例因子來按比例縮放一個或一個以上量化表,使用所述一個目之間的差,且當(dāng)所述差大于或等于閾值時移除用來編碼圖像數(shù) 據(jù)的多個塊的一部分的一個或一個以上位。在另一方面中, 一種處理數(shù)字圖像數(shù)據(jù)的方法包含識別用以實(shí)現(xiàn)目標(biāo)位速率的零 值量化變換系數(shù)的所要數(shù)目,基于零值量化變換系數(shù)的所要數(shù)目來確定在按比例縮放一 個或一個以上量化表中使用的比例因子,依據(jù)所確定的比例因子來按比例縮放亮度 (luma)量化表及色度(chroma)量化表,其中所述色度量化表按比例縮放的程度大于 所述亮度量化表,及使用按比例縮放的亮度量化表及色度量化表來編碼數(shù)字圖像數(shù)據(jù)的 多個像素塊。在另一方面中, 一種處理數(shù)字圖像數(shù)據(jù)的方法包含獲得用于數(shù)字圖像數(shù)據(jù)的至少 一個像素塊的多個量化變換系數(shù),選擇具有為二的冪的值的多個量化變換系數(shù)中的至少 一者,從一個或一個以上選定的量化變換系數(shù)的值減去為一的值,及編碼多個量化變換 系數(shù)。在另一方面中, 一種處理數(shù)字圖像數(shù)據(jù)的方法包含編碼數(shù)字圖像數(shù)據(jù)的至少一個 像素塊以獲得位序列;識別所述位序列的多個位,所述多個位是以充當(dāng)需要添加一個零 字節(jié)的標(biāo)記的方式排列的;改變所述位序列的所述位中的一者以使得所述位序列不再充 當(dāng)標(biāo)記序列;及傳輸所述位序列。本發(fā)明中所描述的技術(shù)可以硬件、軟件、固件或其任何組合實(shí)施。當(dāng)以軟件實(shí)施時, 軟件可在處理器中被執(zhí)行,所述處理器可指一個或一個以上處理器,例如,微處理器、 專用集成電路(ASIC)、現(xiàn)場可編程門陣列(FPGA),或數(shù)字信號處理器(DSP),或其 它等效集成或離散邏輯電路。執(zhí)行所述技術(shù)的軟件可最初存儲于計(jì)算機(jī)可讀媒體中且由 處理器加載并執(zhí)行。因此,本發(fā)明還涵蓋包含致使處理器執(zhí)行如本發(fā)明中所描述的多種 技術(shù)中的任一者的指令的計(jì)算機(jī)可讀媒體。在一些狀況下,計(jì)算機(jī)可讀媒體可形成可銷 售給制造商及/或用于裝置中的計(jì)算機(jī)程序產(chǎn)品的部分。計(jì)算機(jī)程序產(chǎn)品可包括計(jì)算機(jī)可 讀媒體,且在一些狀況下還可包括封裝材料。一個或一個以上實(shí)例的細(xì)節(jié)陳述于附圖及以下描述中。其它特征、目標(biāo)及優(yōu)點(diǎn)將從 描述及圖式以及權(quán)利要求書而顯而易見。
圖1為說明實(shí)施本文中所描述的編碼技術(shù)的示范性系統(tǒng)的框圖。圖2為更詳細(xì)地說明示范性編碼模塊的框圖。圖3為說明編碼模塊根據(jù)本文中所描述的宏觀尺度位速率降低技術(shù)來對圖像進(jìn)行代 碼轉(zhuǎn)換的示范性操作的流程圖。圖4為說明編碼模塊使用宏觀尺度位速率降低技術(shù)與微觀尺度位速率降低技術(shù)的組 合來對圖像進(jìn)行代碼轉(zhuǎn)換的示范性操作的流程圖。圖5為說明編碼模塊實(shí)施微觀尺度位速率控制以進(jìn)一步降低圖像位速率的示范性操 作的流程圖。圖6為說明編碼模塊實(shí)施另一類型的微觀尺度位速率控制以進(jìn)一步降低圖像位速率 的示范性操作的流程圖。
具體實(shí)施方式
本發(fā)明描述用于將數(shù)據(jù)編碼以將圖像數(shù)據(jù)壓縮到降低的大小的技術(shù)。所述技術(shù)在將 圖像代碼轉(zhuǎn)換到降低的大小以用于傳輸方面可尤其有效。本文中所描述的代碼轉(zhuǎn)換技術(shù) 可用于許多應(yīng)用中。可利用所述技術(shù)的一種此應(yīng)用是經(jīng)由無線網(wǎng)絡(luò)的傳輸。舉例來說, 用戶可使用具有圖像捕獲能力的移動電話(例如,所謂的照相機(jī)電話或視頻電話)來拍 攝數(shù)字圖片。通常,所捕獲的數(shù)字圖片為高分辨率圖像,例如,高分辨率JPEG圖像。 然而,為了將所捕獲的圖像發(fā)送到另一電話,可能需要將高分辨率圖像的圖像文件代碼 轉(zhuǎn)換到較小的文件大小(例如,較低的分辨率)以符合無線網(wǎng)絡(luò)服務(wù)提供者的傳輸要求 或更好地適合接收裝置的屏幕大小及顏色限制。可使用均一地影響整個圖像以對所述圖像進(jìn)行代碼轉(zhuǎn)換的位速率控制技術(shù)將所捕 獲的圖像代碼轉(zhuǎn)換到可接受的文件大小。此類均一位速率控制技術(shù)本文中被稱為宏觀尺 度(macroscale)位速率控制技術(shù)。宏觀尺度位速率控制技術(shù)可例如包括作為實(shí)現(xiàn)宏觀 尺度位速率控制的主要手段的依據(jù)在位速率與零值量化變換系數(shù)的數(shù)目之間的近線性 關(guān)系對一個或一個以上量化表的修改。另外或其它,可使用僅影響圖像的特定局部區(qū)域的位速率控制技術(shù)來代碼轉(zhuǎn)換所捕 獲的圖像。這些局部位速率控制技術(shù)本文中被稱為微觀尺度(microscale)位速率控制技 術(shù)。在此狀況下,代碼轉(zhuǎn)換技術(shù)僅影響圖像的一部分,例如圖像的塊的子集。在一方面 中,微觀尺度技術(shù)包括選擇性地降低系數(shù)的值從而以較小數(shù)目個位表示所述系數(shù)。在另 一方面中,微觀尺度技術(shù)包括通過調(diào)整指示標(biāo)記的位序列來消除對填補(bǔ)字節(jié)的需要。圖l為說明實(shí)施本文中所描述的編碼技術(shù)的示范性系統(tǒng)2的框圖。系統(tǒng)2包括由網(wǎng) 絡(luò)8連接的編碼裝置4及解碼裝置6。編碼裝置4從源獲得圖像且根據(jù)以下描述的技術(shù)來編碼所述圖像從而降低圖像的大小以用于經(jīng)由網(wǎng)絡(luò)8傳輸?shù)浇獯a裝置6或用于存儲于 編碼裝置4的存儲器內(nèi)。編碼裝置4及解碼裝置6可包含任何有線或無線裝置,例如, 個人計(jì)算機(jī)、移動無線電話、服務(wù)器、網(wǎng)絡(luò)用具(network appliance)、集成于載具中的 計(jì)算機(jī)、視頻游戲平臺、便攜式視頻游戲裝置、計(jì)算機(jī)工作站、計(jì)算機(jī)信息站(computer kiosk)、數(shù)字標(biāo)牌(digital signage)、大型計(jì)算機(jī)(mainframe computer)、電視機(jī)頂盒 (television set-top box)、網(wǎng)絡(luò)電話、個人數(shù)字助理(PDA)、移動媒體播放器、家庭媒體 播放器、數(shù)字視頻投影儀或其它類型的電子裝置。作為一實(shí)例,編碼裝置4或解碼裝置 6可與接收組件、傳輸組件及其它適當(dāng)組件一起設(shè)于例如以上所描述的移動電話的無線 通信裝置手持機(jī)內(nèi)。
編碼裝置4可包括媒體源10以產(chǎn)生圖像數(shù)據(jù)。媒體源IO可為例如數(shù)字視頻攝像機(jī) 或靜態(tài)照相機(jī)以捕獲感興趣的場景的圖像數(shù)據(jù)。在一些方面中,媒體源10可集成于編 碼裝置4內(nèi)。作為一實(shí)例,媒體源10可集成于移動電話中以形成所謂的相機(jī)電話或視 頻電話?;蛘撸襟w源10可為經(jīng)由有線或無線鏈路耦合到編碼裝置4的獨(dú)立裝置,例 如獨(dú)立數(shù)碼相機(jī)。媒體源10的其它實(shí)例包括圖像存檔(image archive)、或來自內(nèi)容提 供者的圖像或視頻流。
媒體源10捕獲感興趣的場景的圖像數(shù)據(jù)。所捕獲的圖像數(shù)據(jù)可為靜態(tài)圖像或可能 為全運(yùn)動視頻序列,在為全運(yùn)動視頻序列的狀況下可對所產(chǎn)生的視頻序列的一個或一個 以上圖像幀執(zhí)行圖像處理。盡管本發(fā)明中所描述的編碼技術(shù)通??蛇m用于所捕獲的數(shù)字 視頻,但出于說明目的將描述此類技術(shù)對數(shù)字靜態(tài)圖像的應(yīng)用。媒體源10將所捕獲的 圖像數(shù)據(jù)提供到編碼模塊12。在一些方面中,例如當(dāng)編碼裝置4耦合到獨(dú)立媒體源時, 由媒體源10提供到編碼模塊12的圖像可能已被壓縮。舉例來說,獨(dú)立媒體源最初可例 如在捕獲圖像后便壓縮所述圖像?;蛘撸襟w源10可給編碼模塊12提供原始圖像數(shù)據(jù)。
當(dāng)媒體源10給編碼模塊12提供原始圖像數(shù)據(jù)時,編碼模塊12編碼所捕獲的圖像 以將圖像壓縮成特定圖像壓縮格式以用于存儲及/或傳輸。編碼模塊12可使用許多圖像 壓縮格式中的任一者來壓縮圖像,所述圖像壓縮格式包括JPEG、帶標(biāo)簽圖像文件格式 (TIFF)、位圖(BMP)或其它圖像壓縮格式。在視頻的狀況下,編碼模塊12可使用例 如運(yùn)動圖片專家組(MPEG)、國際電信聯(lián)盟(ITU) H.264等等的許多視頻壓縮格式來 壓縮視頻。然而,為了示范性目的,將在JPEG的情形下描述所述技術(shù)。
具體來說,編碼模塊12可對原始圖像數(shù)據(jù)執(zhí)行例如8x8整數(shù)變換或離散余弦變換 (DCT)的整數(shù)變換以產(chǎn)生呈系數(shù)矩陣的形式的頻域表示。編碼模塊12隨后可量化所述 系數(shù)矩陣的系數(shù)以降低與高頻率系數(shù)相關(guān)聯(lián)的信息的量。編碼模塊12使用例如熵編碼或游程長度(run-length)編碼算法的壓縮編碼算法來編碼量化系數(shù)。經(jīng)編碼的圖像可存 儲于編碼裝置4的存儲器中(圖l中未圖示)。
編碼模塊12可進(jìn)一步經(jīng)配置以通過將圖像分割成多個像素子集來壓縮所述圖像且 通過個別地編碼像素子集來壓縮所述子集中的每一者。這些像素子集可被稱為塊。例如, 在JPEG標(biāo)準(zhǔn)的狀況下,編碼模塊12可將圖像分割成8x8個塊且單獨(dú)地壓縮8x8個塊中 的每一者。大于或小于八行或八列的塊也是可能的。
如上所述,編碼裝置4的用戶可能希望將經(jīng)壓縮的圖像文件經(jīng)由網(wǎng)絡(luò)8傳輸?shù)浇獯a 裝置6。網(wǎng)絡(luò)8可包含一個或一個以上有線或無線通信網(wǎng)絡(luò)或其組合。在一些方面中, 網(wǎng)絡(luò)8的服務(wù)提供者可對經(jīng)由網(wǎng)絡(luò)8所傳輸?shù)膱D像強(qiáng)加文件大小限制。作為一實(shí)例,服 務(wù)提供者可強(qiáng)加300千字節(jié)(KB)的最大文件大小傳輸能力。另一方面,對于典型5 百萬像素(megapixel)圖像,當(dāng)最初由編碼模塊4或媒體源10壓縮時,文件大小可大 約為1到2百萬字節(jié)(MB)。因此,為了符合網(wǎng)絡(luò)8的服務(wù)提供者的傳輸要求,編碼裝 置4可能需要對所存儲的圖像進(jìn)行代碼轉(zhuǎn)換以產(chǎn)生較小圖像文件。
為了將所捕獲的圖像代碼轉(zhuǎn)換到可接受的文件大小,編碼裝置4可利用本文中所描 述的技術(shù)中的一者或一者以上來降低編碼位速率,從而降低文件大小。在一些方面中, 編碼模塊12可利用均一地影響整個圖像以對所述圖像進(jìn)行代碼轉(zhuǎn)換的位速率控制技術(shù)。 此類均一位速率控制技術(shù)本文中被稱為宏觀尺度位速率控制。編碼模塊12可例如作為 實(shí)現(xiàn)宏觀尺度位速率控制的主要手段而修改用于編碼所述圖像的一個或一個以上量化 表。如以下將詳細(xì)描述,編碼模塊12可依據(jù)在位速率(i )與零值量化變換系數(shù)的數(shù)目 之間的近線性關(guān)系來修改量化表。近線性關(guān)系可例如應(yīng)用于任何基于塊的變換編碼系 統(tǒng)。
另外或其它,編碼模塊12可使用僅影響圖像的特定局部區(qū)域的位速率控制技術(shù)來 將圖像代碼轉(zhuǎn)換到可接受的文件大小。這些局部位速率控制技術(shù)本文中被稱為微觀尺度 位速率控制。在此狀況下,代碼轉(zhuǎn)換技術(shù)并非均一地影響整個圖像,而是僅影響圖像的 一部分。舉例來說,宏觀尺度位速率控制技術(shù)可應(yīng)用于圖像的塊的僅一子集。在一方面 中,編碼模塊12可識別為二的冪的一個或一個以上量化變換系數(shù)且將所識別系數(shù)的值 降低一。此允許編碼模塊12以較小數(shù)目個位來表示系數(shù)同時對圖像的質(zhì)量僅有小的影 響。在另一方面中,編碼模塊12可識別需要填補(bǔ)字節(jié)的位序列的出現(xiàn)且改變所述序列 的位中的至少一者以使得不再需要填補(bǔ)字節(jié)。
在一些方面中,編碼模塊12可獨(dú)立于宏觀尺度位速率控制技術(shù)而利用微觀尺度位 速率控制技術(shù)中的一者或一者以上。舉例來說,編碼模塊12可僅利用微觀尺度位速率
13控制技術(shù)來降低位速率以將圖像代碼轉(zhuǎn)換到較小的文件大小。在另一實(shí)例中,編碼模塊 12可在對原始圖像數(shù)據(jù)的初始編碼期間利用微觀尺度位速率控制技術(shù)。因此,可在初始 壓縮期間使用微觀尺度位速率控制技術(shù)來降低圖像的文件大小。
或者,編碼模塊12可結(jié)合宏觀尺度位速率控制技術(shù)而使用微觀尺度位速率控制技 術(shù)以在必要時進(jìn)行進(jìn)一步位速率降低從而符合目標(biāo)位速率。換句話說,編碼模塊12可 實(shí)施兩個階層的位速率控制以對圖像進(jìn)行代碼轉(zhuǎn)換在宏觀尺度層級上的第一階層的位 速率控制,其中技術(shù)同等且均一地整體影響整個圖像;及在微觀尺度層級上的第二階層 的位速率控制,其中技術(shù)影響圖像的特定局部區(qū)域。此兩階層式策略允許編碼模塊12 首先粗略地降低位速率以接近目標(biāo)文件大小且隨后在必要時進(jìn)行精細(xì)調(diào)整到所述位速 率。以此方式,當(dāng)宏觀尺度位速率控制技術(shù)不足時,微觀尺度位速率控制可僅進(jìn)行進(jìn)一 步調(diào)整。舉例來說,當(dāng)在代碼轉(zhuǎn)換過程期間經(jīng)編碼的位的數(shù)目超過閾值時,微觀尺度位 速率控制可僅進(jìn)行進(jìn)一步位速率降低。
在降低圖像數(shù)據(jù)的位速率以產(chǎn)生較小的文件大小之后,發(fā)射器14或其它網(wǎng)絡(luò)接口 將圖像經(jīng)由網(wǎng)絡(luò)8發(fā)射到解碼裝置6。解碼裝置6經(jīng)由接收器16接收經(jīng)編碼的圖像且用 解碼模塊18來解碼經(jīng)編碼的圖像數(shù)據(jù)。解碼裝置6有可能可經(jīng)由媒體呈現(xiàn)單元20向解 碼裝置6的用戶呈現(xiàn)經(jīng)解碼的圖像,所述媒體呈現(xiàn)單元20可包括顯示器裝置及音頻裝 置(如果適用)。
本發(fā)明中所描述的技術(shù)可提供許多優(yōu)點(diǎn)。具體來說,代碼轉(zhuǎn)換技術(shù)降低圖像的文件 大小同時維持足夠的質(zhì)量。此外,代碼轉(zhuǎn)換技術(shù)可用來降低文件大小以符合由網(wǎng)絡(luò)服務(wù) 提供者強(qiáng)加的特定文件大小要求。以此方式,編碼裝置4可在一遍的代碼轉(zhuǎn)換中將圖像 代碼轉(zhuǎn)換到正確大小,而非對圖像執(zhí)行若干重新編碼或若干遍以達(dá)到最佳解決方案。此 外,使用所述技術(shù)來對圖像進(jìn)行代碼轉(zhuǎn)換允許編碼裝置4最初以高質(zhì)量壓縮圖像且僅在 必要時降低圖像的質(zhì)量以用于傳輸。以此方式,文件大小限制不會約束由用戶創(chuàng)建或存 儲的高質(zhì)量圖像。替代地,文件大小限制僅約束需要傳輸?shù)膱D像。然而,所述技術(shù)還可 用于約束圖像以用于壓縮的存儲。
圖2為更詳細(xì)地說明例如圖1的編碼模塊12的示范性編碼模塊的框圖。編碼模塊 12包括圖像處理模塊24、變換模塊26、量化模塊28、熵編碼模塊30、熵解碼模塊32、 反量化模塊34、代碼轉(zhuǎn)換模塊36及存儲器37。如本文中將更詳細(xì)地描述,編碼模塊12 的組件可用于最初編碼原始圖像數(shù)據(jù)以及對先前編碼的圖像數(shù)據(jù)進(jìn)行代碼轉(zhuǎn)換以降低 經(jīng)編碼的圖像數(shù)據(jù)的大小。在一些方面中,編碼模塊12可駐存于無線通信裝置手持機(jī) 內(nèi)以編碼圖像及/或視頻以用于經(jīng)由無線網(wǎng)絡(luò)傳輸?shù)搅硪粺o線通信裝置。圖像處理模塊24從媒體源18 (圖1)接收圖像數(shù)據(jù)。從媒體源18所接收的圖像數(shù)據(jù)可為直接來自多個圖像傳感器的原始圖像數(shù)據(jù)或最初壓縮的圖像數(shù)據(jù)的經(jīng)編碼的圖像文件。在為原始圖像數(shù)據(jù)的狀況下,圖像處理模塊24可將原始圖像數(shù)據(jù)轉(zhuǎn)換到Y(jié)CbCr色空間。YCbCr色空間中的圖像數(shù)據(jù)包括表示圖像的明亮度(brightness)的亮度分量Y及分別表示沿著藍(lán)軸及紅軸的顏色的兩個色度分量Cb及Cr。到Y(jié)CbCr色空間的轉(zhuǎn)換可為有利的,因?yàn)榫幋a模塊12可通過丟棄額外色度信息(即,Cb及Cr信息)而保留較多的亮度信息,艮卩,較多的Y分量。此可為有利的,因?yàn)槿祟愐曈X系統(tǒng)對名亮度(亮度Y)比對沿著藍(lán)軸或紅軸的顏色(色度Cb及Cr)更敏感。然而,類似的技術(shù)可用于例如RGB色空間的其它色空間中。
圖像處理模塊24另外可對所述顏色分量中的一者或一者以上進(jìn)行下取樣。下取樣通常是以因子二在水平方向(例如,沿著行)與垂直方向(例如,沿著列)中的任一者或兩者上進(jìn)行。常見的下取樣比率表示為H1V1 (無下取樣),對于H1V1,對每一組Cb及Cr樣本編碼一個Y樣本;H2V1 (在水平方向上沿著行對色度進(jìn)行下取樣),對于H2V1,對每一組Cb及Cr樣本編碼兩個Y樣本;及H2V2 (在垂直方向上沿著列與在水平方向上沿著行對色度進(jìn)行下取樣),對于H2V2,對每一組Cb及Cr樣本編碼四個Y樣本。在一些狀況下,編碼模塊12可僅對色度分量進(jìn)行下取樣。在其它狀況下,編碼模塊12可對亮度分量與色度分量兩者進(jìn)行下取樣,但下取樣色度分量的程度大于亮度分量,因?yàn)槿祟愐曈X系統(tǒng)對亮度較不易察覺。
不管圖像數(shù)據(jù)為原始圖像數(shù)據(jù)還是先前壓縮的圖像數(shù)據(jù),圖像處理模塊24均可將圖像數(shù)據(jù)分割成像素塊且獨(dú)立處理所述塊中的每一者。根據(jù)JPEG標(biāo)準(zhǔn),圖像處理模塊24可將圖像數(shù)據(jù)分割成8x8個塊。然而,大于或小于八行或八列的塊也為可能的。將圖像數(shù)據(jù)分割成塊且獨(dú)立處理所述塊中的每一者可降低編碼及/或代碼轉(zhuǎn)換所述圖像所需的存儲器空間及時間的量。
當(dāng)從媒體源18所接收的圖像數(shù)據(jù)為來自傳感器的陣列的原始圖像數(shù)據(jù)時,編碼模塊12可執(zhí)行圖像的初始壓縮。編碼模塊12最初可使用標(biāo)準(zhǔn)圖像壓縮技術(shù)來壓縮圖像?;蛘?,編碼模塊12可利用本文中所描述的技術(shù)中的一者或一者以上來最初壓縮圖像數(shù)據(jù)。在任一狀況下,變換模塊24將整數(shù)變換應(yīng)用于圖像數(shù)據(jù)的塊以產(chǎn)生呈變換系數(shù)的矩陣的形式的頻域表示。所述變換可為例如8x8整數(shù)變換或DCT。如上所述,所述變換的結(jié)果為系數(shù)的矩陣。例如,在JPEG標(biāo)準(zhǔn)的狀況下,8x8個塊中的每一者對應(yīng)于64個系數(shù)的矩陣,所述系數(shù)包括一個DC分量及63個AC分量。
在變換之后,量化模塊28量化經(jīng)變換的系數(shù)。量化模塊28可視所采用的編碼標(biāo)準(zhǔn)而定以各種方式量化所述系數(shù)。量化模塊28可例如將量化表應(yīng)用于變換系數(shù)以量化所述系數(shù)。量化按比例縮放所述變換系數(shù)以允許系數(shù)"層級"(而不是系數(shù)本身的實(shí)際值)的編碼。如下所述,具有較大值的量化表導(dǎo)致對變換系數(shù)的較大按比例縮放。由于人眼對低頻率分量更敏感,所以典型量化表對低頻率提供的層級多于對高頻率提供的層級。在一些方面中,量化模塊28可針對Y分量應(yīng)用亮度量化表38及對Cb及Cr分量中的一或兩者應(yīng)用色度量化表39。色度量化表39通常具有較大的按比例縮放步長,其導(dǎo)致量化模塊28丟棄較多的色度信息以允許編碼模塊12保持較多的亮度信息。可由所利用的特定壓縮標(biāo)準(zhǔn)來推薦量化表的默認(rèn)值?;蛘?,特定裝置(例如,數(shù)碼相機(jī)及/或圖像軟件)可利用其自身的自定義量化表。
熵編碼模塊30使用熵編碼方案來編碼量化的變換系數(shù)。為了使用熵編碼方案來壓縮量化系數(shù),熵編碼模塊30可通過采用系數(shù)的Z字形圖案以使得低頻率系數(shù)被分組在掃描開始處且高頻率分量分組在掃描結(jié)束處來將量化系數(shù)組織成向量。換句話說,熵編碼模塊30可將量化系數(shù)的二維矩陣中的所有量化系數(shù)排列為量化系數(shù)的一維向量。
熵編碼模塊30隨后可將例如霍夫曼(Huffman)編碼或算術(shù)編碼的熵編碼方案應(yīng)用于量化系數(shù)的向量。使用霍夫曼編碼作為實(shí)例,熵編碼模塊30將每一量化系數(shù)編碼為霍夫曼代碼及附加在霍夫曼代碼之后的余項(xiàng)(residue)。對于DC系數(shù),霍夫曼代碼指示在當(dāng)前DC值與先前圖像的DC值之間的差的量值的大小(以位為單位)。換句話說,霍夫曼代碼指示可由特定數(shù)目個位表示的DC差的量值。例如,如果DC差為-6,則霍夫曼代碼指示大小3,因?yàn)槠洳捎?個位來表示為6的值(即,量值)。然而,指示大小3的霍夫曼代碼還表示多個其它量值(即,-7、 -5、 -4、 4、 5、 6及7)。因此,熵編碼模塊30附加所述余項(xiàng)以唯一地識別為所述大小的多個DC差中的哪一者與DC差相對應(yīng)。熵編碼模塊30通過3位的余項(xiàng)"010" ("010"為2的二進(jìn)制)來識別數(shù)字-6,因?yàn)?6是大小3的第二低的差。因此,為了編碼為-6的DC差,熵編碼模塊30輸出大小3的霍夫曼代碼且隨后發(fā)出三個位"010"。
對于AC系數(shù),霍夫曼代碼指示"游程"及"大小"的級聯(lián)。"游程"為在AC系數(shù)的Z字形次序中的連續(xù)零的數(shù)目,且"大小"為后續(xù)非零系數(shù)的位的大小。余項(xiàng)與DC系數(shù)一起時表示唯一識別符,所述唯一識別符識別多個可能的值的值中的一者,其對應(yīng)于非零系數(shù)的大小。對于含有序列"0003"的Z字形掃描,熵編碼模塊30產(chǎn)生為三的游程及為二的大小以及余項(xiàng)"11"。熵編碼模塊30發(fā)出游程/大小為3/2的霍夫曼代碼,且隨后發(fā)出兩個余項(xiàng)位"11"。
根據(jù)JPEG標(biāo)準(zhǔn),熵編碼模塊30具有用于AC游程長度的編碼的兩個特殊符號。第一特殊符號為塊結(jié)束(EOB)符號,其指示塊的剩余部分僅由零組成且被指定了為0/0的游程/大小。由于大小為O,所以不編碼余項(xiàng)。第二特殊符號為零游程長度(ZRL)值,其意味著Z字形掃描中存在16個連續(xù)的零。由于游程及大小中的每一者由多達(dá)4個位表示,因此游程的最大值為15。于是明白,ZRL游程/大小符號為15/0 (即,15個零后接續(xù)一個0)。此外,由于大小為0,所以不編碼余項(xiàng)。
在JPEG標(biāo)準(zhǔn)中界定四個標(biāo)準(zhǔn)霍夫曼表,其每一者針對DC亮度分量、DC色度分量、AC亮度分量及AC色度分量。這些標(biāo)準(zhǔn)表定義每一可能的符號(例如,在JPEG狀況下為162個不同的可能的值)的霍夫曼代碼。熵編碼模塊30可使用由JPEG標(biāo)準(zhǔn)定義的標(biāo)準(zhǔn)霍夫曼表?;蛘?,熵編碼模塊30可界定自定義霍夫曼表。在一些情況下,這些自定義霍夫曼表可包括降低數(shù)目個霍夫曼代碼。舉例來說,自定義霍夫曼表可包括用于可能的162個值中的僅IOO個值的代碼。
在一些方面中,編碼方案可包括充當(dāng)標(biāo)記的特定位序列。標(biāo)記可用以例如識別元數(shù)據(jù)(metadata)的區(qū)域。元數(shù)據(jù)存儲關(guān)于圖像的信息(例如維度、下取樣比率、量化表及霍夫曼表)。在JPEG標(biāo)準(zhǔn)中,熵編碼模塊30可使用兩字節(jié)的標(biāo)記,所述標(biāo)記以識別元數(shù)據(jù)的區(qū)域的字節(jié)OxFF開始,其后接續(xù)指示隨后的元數(shù)據(jù)的類型的字節(jié)。在系數(shù)的熵編碼正巧產(chǎn)生字節(jié)對齊的OxFF的狀況下,熵編碼模塊30將零字節(jié)0x00填塞到位流中以消除系數(shù)位流有標(biāo)記的歧義。
當(dāng)最初壓縮的圖像數(shù)據(jù)太大而不能符合服務(wù)提供者的傳輸要求或解碼裝置的顯示器時,編碼模塊12可能需要對圖像進(jìn)行代碼轉(zhuǎn)換以產(chǎn)生較小的圖像文件。換句話說,編碼裝置12可重新壓縮圖像數(shù)據(jù)以符合服務(wù)提供者的要求或解碼裝置的顯示器。圖像處理模塊24從媒體源18 (圖l)接收經(jīng)編碼的圖像數(shù)據(jù)。如上所述,媒體源18可為存儲器38或例如數(shù)碼相機(jī)的外部裝置。在一些方面中,圖像數(shù)據(jù)處理模塊24可將經(jīng)編碼的圖像數(shù)據(jù)分割成像素塊,且編碼模塊12可單獨(dú)地對所述塊中的每一者進(jìn)行代碼轉(zhuǎn)換。單獨(dú)地對所述塊中的每一者進(jìn)行代碼轉(zhuǎn)換在速度及存儲器使用方面可引起增加的效率。
為了對圖像數(shù)據(jù)進(jìn)行代碼轉(zhuǎn)換,熵解碼模塊32使用霍夫曼解碼來解碼經(jīng)編碼的圖像數(shù)據(jù)。熵解碼模塊32可利用由熵編碼模塊30用以編碼圖像數(shù)據(jù)的相同的霍夫曼編碼表來解碼經(jīng)編碼的圖像數(shù)據(jù)?;舴蚵幋a表可例如存儲于存儲器38內(nèi)。反量化模塊34執(zhí)行反量化以產(chǎn)生用于圖像數(shù)據(jù)的變換系數(shù)。在一方面中,代碼轉(zhuǎn)換模塊36可在頻域中對圖像數(shù)據(jù)進(jìn)行代碼轉(zhuǎn)換。換句話說,編碼模塊12可對變換系數(shù)執(zhí)行代碼轉(zhuǎn)換而不是執(zhí)行反變換以獲得原始圖像數(shù)據(jù)。然而,在其它方面中,編碼模塊12可包括反變換模塊,反變換模塊獲得原始圖像數(shù)據(jù)且使用原始圖像數(shù)據(jù)來對圖像進(jìn)行代碼轉(zhuǎn)換。在頻
17域中對圖像數(shù)據(jù)進(jìn)行代碼轉(zhuǎn)換可通過消除將反變換函數(shù)應(yīng)用于變換系數(shù)的需要而降低 處理時間的量。
代碼轉(zhuǎn)換模塊36可利用宏觀尺度位速率降低技術(shù)(即,均一地影響整個圖像的位 速率降低技術(shù))來降低圖像數(shù)據(jù)的大小。舉例來說,代碼轉(zhuǎn)換模塊36可按比例縮放亮 度量化表38、色度量化表39或兩者,且使用經(jīng)按比例縮放的量化表來重新編碼圖像數(shù) 據(jù)。在一方面中,代碼轉(zhuǎn)換模塊36可依據(jù)p域分析來按比例縮放亮度量化表38及/或色 度量化表39, p域分析利用位速率(/ )與p (即,零值量化變換系數(shù)的百分比)之間的 近線性關(guān)系。具體來說,代碼轉(zhuǎn)換模塊36可發(fā)現(xiàn)p與位速率/ 之間的線性關(guān)系??稍趐 域中將位速率i 模擬為
/ = 6(1-/7), (1)
其中0為恒定斜率且由圖像內(nèi)容所確定。
為了使算術(shù)簡化,p可由z替換,z以整數(shù)形式表示零值量化變換系數(shù)的數(shù)目而非將
所述數(shù)目表示為比率。因此,可將方程式(1)重寫為
W《=l-z)' (2)
其中Zm。,為圖像的塊中的AC系數(shù)的總數(shù)目,且/ ^為可表示塊的AC位的最小數(shù) 目。由于方程式(2)應(yīng)僅反映受對AC量化分量的按比例縮放的影響的位,所以可不考 慮EOB符號。因此,如果圖像中的每一塊含有全零或等效地僅EOB符號,則/表示 / 的值。
代碼轉(zhuǎn)換模塊36可使用目標(biāo)位速率i r、最初編碼的圖像的位速率i 。及最初編碼的 圖像的零值量化變換系數(shù)的數(shù)目z。來計(jì)算零值量化變換系數(shù)的目標(biāo)數(shù)目(a)。在一方 面中,代碼轉(zhuǎn)換模塊36如方程式(3) - (5)中所示來計(jì)算zr。
<formula>formula see original document page 18</formula><formula>formula see original document page 19</formula>
代碼轉(zhuǎn)換模塊36可例如在圖像的初始編碼期間從最初編碼的圖像獲得/ 。及Z。。代 碼轉(zhuǎn)換模塊36可基于由用戶規(guī)定或從網(wǎng)絡(luò)服務(wù)提供者獲得的目標(biāo)文件大小(Fr)來計(jì) 算/ r。目標(biāo)文件大小Fr可例如以字節(jié)為單位來規(guī)定,且包括標(biāo)頭信息及DC位以及AC 位。為了計(jì)算目標(biāo)位速率/ r,將目標(biāo)文件大小Fr乘以常數(shù)且減去用于標(biāo)頭信息的位數(shù) 目(//)及DC信息的位數(shù)目(Z)C),即/ r=8*iVH-DC。
代碼轉(zhuǎn)換模塊36可使用對量化變換系數(shù)的值計(jì)數(shù)的直方圖來計(jì)算圖像的零值系數(shù) 的數(shù)目(。。量化變換系數(shù)的直方圖可定義為H (q,i,v) -在使用量化表q (零索引) 的z字形掃描條目i (零索引)中量化系數(shù)絕對值lvl的出現(xiàn)次數(shù)。因此,代碼轉(zhuǎn)換模塊 36可對于量化表的任何按比例縮放重新計(jì)算圖像的z。舉例來說,最初編碼的圖像的零
值量化變換系數(shù)的數(shù)目與^=2^=。5^1//(《,"=0)相對應(yīng)。作為另一實(shí)例,假設(shè)以四來
按比例縮放第一量化表的第十七個條目。于是,值z正好增加5^=1//( = 0,!' = 16,",因
為在第一表的第十七個條目中具有小于四的量值的所有量化變換系數(shù)將被重新量化為 零?;谥狈綀D,代碼轉(zhuǎn)換模塊36可選擇比例因子s以使得亮度量化表38及色度量化 表39的按比例縮放引起不超過^的z。作為一實(shí)例,假設(shè)圖像的直方圖指示存在1000 個具有為i的值的系數(shù)及2000個具有為2的值的系數(shù)。此外,假設(shè)目標(biāo)零值系數(shù)的數(shù) 目(a)為1500。代碼轉(zhuǎn)換模塊36選擇為2的比例因子,其是不會引起超過zr的z的 最大比例因子。更明確地說,選擇為2的比例因子引起1000個系數(shù)變?yōu)榱阒担藬?shù)目 小于zr。另一方面,為3的比例因子將引起3000個系數(shù)(即,所有"1"系數(shù)及所有"2" 系數(shù))變?yōu)榱阒?,此?shù)目超過zr。通過選擇不過調(diào)整zr的比例因子,代碼轉(zhuǎn)換模塊36 不會降低圖像的大小超過所需的量。
然而,在一些狀況下,代碼轉(zhuǎn)換模塊36可能需要進(jìn)一步降低零值系數(shù)的數(shù)目。在 以上所述的實(shí)例中,代碼轉(zhuǎn)換模塊36可能需要進(jìn)一步將零值系數(shù)的數(shù)目再降低500個 系數(shù)。為此,代碼轉(zhuǎn)換模塊36可將大于第一比例因子的第二比例因子應(yīng)用于所述量化 表中的一者或兩者的一部分。使用選定的比例因子s,代碼轉(zhuǎn)換模塊36可選擇位置索引 fc,以使得
<formula>formula see original document page 19</formula>200880017649.7 系數(shù)將 由于量化而變?yōu)榱?。在以上所述的?shí)例中,所有具有值"l"的系數(shù)將變?yōu)?0"。然而, 由于所得的零的數(shù)目小于零的目標(biāo)數(shù)目,所以代碼轉(zhuǎn)換模塊36開始迫使具有等于s的 值的那些系數(shù)為零,此是從序列的最后系數(shù)開始。換句話說,代碼轉(zhuǎn)換模塊36以比例 因子抖l來按比例縮放所述系數(shù)的至少一部分。代碼轉(zhuǎn)換模塊36可例如設(shè)定&等于127 且使&緩慢遞減,直到零的數(shù)目符合目標(biāo)為止。以此方式,以比例因子s來按比例縮放 最前面fc個系數(shù)且同時以比例因子s+l來按比例縮放剩余的(1274)個系數(shù)。如上所述, 比例因子s及s+l取大于或等于一的值。此外,比例因子s小于比例因子s+l。如下文 將更詳細(xì)地描述,所述序列的系數(shù)的最后部分(即,以比例因子wl按比例縮放的系數(shù)) 對應(yīng)于色度系數(shù)。.
代碼轉(zhuǎn)換模塊36可將亮度量化表38及色度量化表39的量化條目定序成單一序列, 且使用所述序列來確定it。在一些方面中,可定序量化表的量化條目以使得所述序列以 亮度量化表38的低頻率量化條目開始,其后接續(xù)亮度量化表38的高頻率量化條目,隨 后接續(xù)以色度量化表39的低頻率量化條目,且最后為色度量化表39的高頻率量化條目。 因此,代碼轉(zhuǎn)換模塊36可被認(rèn)為將亮度量化表38及色度量化表39兩者的AC量化條目 級聯(lián)成一個長序列,其中亮度條目首先定序于z字形掃描中,其后接續(xù)附加到亮度條目 的結(jié)束的色度條目。代碼轉(zhuǎn)換模塊36可使用其它定序技術(shù)來定序量化表的條目。舉例 來說,代碼轉(zhuǎn)換模塊36可產(chǎn)生條目的序列,其以低頻率亮度條目開始,其后接續(xù)一個 或一個以上低頻率色度條目,隨后接續(xù)高頻率亮度條目及高頻率色度條目。掃描中不包 括亮度量化表38及色度量化表39兩者的DC分量。因此,不按比例縮放亮度量化表38 及色度量化表39的DC分量。
因此,代碼轉(zhuǎn)換模塊36可以比例因子s來按比例縮放最前面fc個條目且以較大的比 例因子(例如,s+l)來按比例縮放剩余的條目(例如,在以上實(shí)例中為128-。。如上 所述,比例因子s與s+l兩者均大于或等于一,從而引起增加的數(shù)目個零值變換系數(shù)。 下一頁上的兩個矩陣為根據(jù)此技術(shù)將比例因子應(yīng)用于相應(yīng)量化表的實(shí)例矩陣。將第一比 例因子矩陣應(yīng)用于亮度量化表38且將第二矩陣應(yīng)用于色度量化表39。
表l:亮度按比例縮放矩陣<formula>formula see original document page 21</formula>層的位速率控制,其中整體代碼轉(zhuǎn)換技術(shù)同等且均一地影響整個圖像;及在微觀尺度上 的第二階層的位速率控制,其中代碼轉(zhuǎn)換操作的作用局限于圖像的特定區(qū)域。此兩階層 式策略允許代碼轉(zhuǎn)換模塊36首先粗略地接近目標(biāo)位速率且隨后在必要時進(jìn)行精細(xì)調(diào)整。 或者,可獨(dú)立于宏觀尺度速率控制技術(shù)而利用微觀尺度速率控制技術(shù)。
在圖像數(shù)據(jù)的代碼轉(zhuǎn)換期間,代碼轉(zhuǎn)換模塊36追蹤已被代碼轉(zhuǎn)換的位的數(shù)目以確 定代碼轉(zhuǎn)換是否正在達(dá)到目標(biāo)位速率i r的過程中。代碼轉(zhuǎn)換模塊36確定何時需要進(jìn)一 步位速率降低且在需要進(jìn)一步位速率降低時啟動微觀尺度位速率控制。對于具有原始位 速率/ 。的圖像,代碼轉(zhuǎn)換模塊30可確定針對原始圖像所解碼的位的數(shù)目i d (n)與針 對經(jīng)代碼轉(zhuǎn)換的圖像所編碼的位的數(shù)目& (n)的比率是否等于原始位速率與目標(biāo)位速 率之間的比率(即,/ 。 / r)。理想地,經(jīng)解碼的原始圖像中的位/^ ")與經(jīng)編碼的新 圖像中的位A (")的比率等于在系數(shù)的第n個塊處的i 。 i r,艮P,
7 t
(7)
其中& ")及/ e ")分別指示在第n個塊處已解碼的位的數(shù)目及已編碼的位的數(shù) 目,i 。為在圖像具有總共AT個塊時等于/^")的原始圖像位速率,且i r為代碼轉(zhuǎn)換圖 像的目標(biāo)位速率。
如果移除了位的最小數(shù)目的恒定偏差,則可使方程式(7)中的比例更準(zhǔn)確(正如 在方程式(2)中的/J域分析的狀況下),以獲得方程式
(8)
由于代碼轉(zhuǎn)換模塊36經(jīng)設(shè)計(jì)以控制在第n個塊處的目標(biāo)位速率以拒絕此比例,所 以用第n個塊處的目標(biāo)位速率^ (n)取代方程式(8)中的& (w)且求解尺(M)為可 能的。結(jié)果展示于方程式(9)中。代碼轉(zhuǎn)換模塊36根據(jù)方程式(10)來計(jì)算在^ ( ) 與/ , (n)之間的差(A)。此差表示誤差(e),即,在圖像的代碼轉(zhuǎn)換期間在第n個塊 處實(shí)際經(jīng)編碼的位的數(shù)目與理想地應(yīng)在第n個塊處編碼的位的數(shù)目之間的差。
/ t 一尺
W")-U")M血n(")
(9)
22<formula>formula see original document page 23</formula>
代碼轉(zhuǎn)換模塊36可在代碼轉(zhuǎn)換過程期間監(jiān)控所述差A(yù)以確定是否要啟動微觀尺度技 術(shù)中的一者或一者以上以進(jìn)一步降低位的數(shù)目。具體來說,當(dāng)A大于或等于閾值時,代 碼轉(zhuǎn)換模塊36可啟動一個或一個以上微觀尺度位速率控制技術(shù)。闞值可為例如目標(biāo)位 速率的函數(shù)(例如,目標(biāo)位速率的5%)。以此方式,代碼轉(zhuǎn)換模塊36將A用作是否應(yīng)調(diào) 用微觀尺度技術(shù)的指示符。代碼轉(zhuǎn)換模塊36可進(jìn)一步利用A的量值來確定需要從位流移 除以使A在適當(dāng)限值內(nèi)的位的數(shù)目。
代碼轉(zhuǎn)換模塊36可通過選擇性地降低一個或一個以上系數(shù)的值來降低位流中的位 的數(shù)目。如上所述,圖像的經(jīng)編碼位流主要包含用于AC系數(shù)的霍夫曼代碼及余項(xiàng)串。 通過選擇性地降低一個或一個以上系數(shù)的值,代碼轉(zhuǎn)換模塊36可減小經(jīng)降低的系數(shù)的 霍夫曼代碼的長度。此是因?yàn)?,較小系數(shù)值通常比較大系數(shù)值更頻繁,且因此通常被指 定較短的霍夫曼代碼。此外,代碼轉(zhuǎn)換模塊30可通過選擇性地降低系數(shù)值中的一者或 一者以上來節(jié)省余項(xiàng)中的位。如上所述,熵編碼模塊30基于零的游程長度及系數(shù)的二 進(jìn)制大小來指定用于AC系數(shù)的代碼。代碼轉(zhuǎn)換模塊36無法在不根本改變塊的情況下改 變零的游程長度,但其可精細(xì)地改變系數(shù)的二進(jìn)制大小。為進(jìn)行此改變,代碼轉(zhuǎn)換模塊 36可識別具有等于或至少接近于二的冪的值的系數(shù),且降低那些系數(shù)以使其小于二的 冪。舉例來說,如果待編碼的系數(shù)值為2的冪,則代碼轉(zhuǎn)換模塊36將系數(shù)值遞減1。例 如,對于為八的系數(shù)值,代碼轉(zhuǎn)換模塊36以四個位來編碼余項(xiàng)的長度。代碼轉(zhuǎn)換模塊 36將為八的系數(shù)值遞減一,從而引起為七的新系數(shù)值。為七的系數(shù)值由三個位的余項(xiàng)來 表示,從而將位流降低了一位。此外,表示游程大小的霍夫曼代碼可能也較短,從而引 起額外的位節(jié)省。類似地,將為九的系數(shù)值降低二引起為七的新系數(shù)值,所述新系數(shù)值 可由降低數(shù)目個位及較短霍夫曼代碼來表示。然而,將系數(shù)值降低二會引起額外失真。 因此,可將值降低的位數(shù)目視被認(rèn)為可接受的失真量而定。
在一些方面中,代碼轉(zhuǎn)換模塊36可省略選擇在被降低時將等于零的系數(shù)值。舉例 來說,在選擇為二的冪的系數(shù)的狀況下,代碼轉(zhuǎn)換模塊36可省略選擇為一的系數(shù)值(其 為二的冪)。如果代碼轉(zhuǎn)換模塊36選擇具有一的值的系數(shù)且將那些系數(shù)遞減到為零的值, 則完全消除了變換的所述特定分量。此引入了比預(yù)期更多的失真及/或假影(artifact)。 因此,代碼轉(zhuǎn)換模塊36可不降低具有為一的值的系數(shù)。
另外或其它,代碼轉(zhuǎn)換模塊36可通過降低填補(bǔ)字節(jié)的數(shù)目而進(jìn)一步降低位流的位
23數(shù)目。如上所述,代碼轉(zhuǎn)換模塊36可插入填補(bǔ)字節(jié),其在對應(yīng)于元數(shù)據(jù)的標(biāo)記的位序 列之后。在JPEG標(biāo)準(zhǔn)的狀況下,例如,可在熵編碼位流中在OxFF出現(xiàn)之后插入零字節(jié) 0x00以將實(shí)際系數(shù)位流與標(biāo)記予以區(qū)分。代碼轉(zhuǎn)換模塊36可通過消除將八個一的字節(jié) 對齊序列與標(biāo)記予以區(qū)分所需的填補(bǔ)字節(jié)而將位流的位數(shù)目降低一個字節(jié)(八個位)。 為了避免使用填補(bǔ)字節(jié),代碼轉(zhuǎn)換模塊36識別位流中存在表示標(biāo)記的位序列的位置。 例如,在JPEG標(biāo)準(zhǔn)中,代碼轉(zhuǎn)換模塊36可識別位流中存在0xFF (即,八個連續(xù)的一) 的位置。
在一方面中,代碼轉(zhuǎn)換模塊36可包括位緩沖器,其存儲包含寫入到位流的下一個 字節(jié)的最左邊位?;舴蚵a及余項(xiàng)被交替附加于右邊,其最高有效位為最左邊位。最 左邊的八個位可含有以下序列中的任一者(1)僅來自霍夫曼代碼的位(H), (2)僅來 自余項(xiàng)的位(R), (3)霍夫曼代碼的結(jié)束及余項(xiàng)的開始的位(HR), (4)余項(xiàng)的結(jié)束及 霍夫曼代碼的開始的位(RH), (5)霍夫曼代碼的結(jié)束的位及整個余項(xiàng)的位及下一個霍 夫曼代碼的開始的位(HRH), (6)余項(xiàng)的結(jié)束及整個霍夫曼代碼及下一個余項(xiàng)的開始 (RHR),或(7)項(xiàng)目(2)到(6)中的每一者,其中HR或RH對被插入于所述序列的 中間。
代碼轉(zhuǎn)換模塊36可改變表示余項(xiàng)的八個位中的一個或一個以上位。在改變余項(xiàng)時, 代碼轉(zhuǎn)換模塊36可改變余項(xiàng)的最低有效位,此舉防止將OxFF寫入到位流。以此方式, 代碼轉(zhuǎn)換模塊36確定八個位中的哪一者要改變以使得霍夫曼代碼得以保留且余項(xiàng)的改 變?yōu)樽钚 T谝陨掀邆€可能狀況的列表中,狀況(1)不可修改,因?yàn)椴幌M淖兓舴?曼代碼。然而,JPEG標(biāo)準(zhǔn)未界定全為1的位的霍夫曼代碼,因?yàn)榇嘶舴蚵a被保留 作為較長碼字的前綴。使用此信息,狀況(1)、 (6)及(7)在JPEG的狀況下將不產(chǎn)生 OxFF。在所有狀況(2)到(5)中,代碼轉(zhuǎn)換模塊36改變余項(xiàng)的最低有效位,所述最 低有效位仍在位緩沖器的最左邊的八個位內(nèi)。在改變此位后,位序列不再表示標(biāo)記且填 補(bǔ)字節(jié)為不必要的。以此方式,代碼轉(zhuǎn)換模塊36試圖以最少量的失真實(shí)現(xiàn)位速率的最 大降低。
代碼轉(zhuǎn)換模塊32繼續(xù)針對目前正被代碼轉(zhuǎn)換的個別像素塊實(shí)施微觀尺度位速率控 制技術(shù)中的一者或兩者,直到在圖像的代碼轉(zhuǎn)換期間在第n個塊處實(shí)際編碼的位的數(shù)目 與理想地應(yīng)在第n個塊處編碼的位的數(shù)目之間的差A(yù)降到閾值以下為止。在一些狀況下, 在使用微觀尺度位速率控制技術(shù)來降低當(dāng)前塊中的位后,A可降到閾值以下。然而,在 其它狀況下,在A降到閾值以下之前可能將微觀尺度位速率控制技術(shù)用于圖像的多個塊 上。在降到閾值以下后,除非誤差再次增加而超過閾值,否則代碼轉(zhuǎn)換模塊32停止實(shí)施微觀尺度位速率控制技術(shù)且僅實(shí)施宏觀尺度位速率控制技術(shù)。
本發(fā)明的代碼轉(zhuǎn)換框架可使用觀察程序設(shè)計(jì)圖案。在觀察程序設(shè)計(jì)圖案中,當(dāng)目標(biāo) 改變其狀態(tài)時,其引發(fā)事件且通知正在收聽所述特定事件的任何軟件觀察程序。目標(biāo)向 其訂戶公開所述事件。每一訂戶隨后執(zhí)行與事件中所含有的信息相關(guān)的動作。若千訂戶 可響應(yīng)于同一事件,所述訂戶各具有完全不同的功能性,且相關(guān)功能可封裝于一個模塊 中。又,觀察程序設(shè)計(jì)圖案允許以在線方式進(jìn)行代碼轉(zhuǎn)換而不在存儲器中保持過多狀態(tài)。 一旦塊被解碼,訂閱的編碼器便可立即編碼所述塊。
在圖2中所說明的實(shí)例中,在代碼轉(zhuǎn)換框架中存在四個基本模塊熵解碼模塊32、 代碼轉(zhuǎn)換模塊36、量化模塊28及熵編碼模塊30。解碼模塊32讀取原始位流且產(chǎn)生數(shù) 據(jù)以用于操控。解碼模塊32是對訂戶的主要的信息發(fā)行者。其它三個模塊可訂閱解碼 模塊32事件。在第一遍解碼期間,代碼轉(zhuǎn)換模塊36訂閱解碼模塊32且收集整體圖像 統(tǒng)計(jì)資料。代碼轉(zhuǎn)換在第二遍時發(fā)生。在第二遍期間,代碼轉(zhuǎn)換模塊36訂閱解碼模塊 32,且編碼模塊30訂閱代碼轉(zhuǎn)換模塊36。代碼轉(zhuǎn)換模塊36還訂閱編碼模塊30以追蹤 編碼統(tǒng)計(jì)資料。因此,解碼模塊32被運(yùn)行兩次,且僅改變訂閱。以下提供主程序的虛 擬代碼。
從原始文件創(chuàng)建解碼模塊
創(chuàng)建代碼轉(zhuǎn)換模塊
將代碼轉(zhuǎn)換模塊鏈接到解碼模塊
解碼整個圖像(收集統(tǒng)計(jì)資料)
重設(shè)解碼模塊
重設(shè)代碼轉(zhuǎn)換模塊
創(chuàng)建編碼模塊
將代碼轉(zhuǎn)換模塊鏈接到解碼模塊及編碼模塊
解碼整個圖像(代碼轉(zhuǎn)換且寫入新圖像)
破壞解碼模塊
破壞編碼模塊
破壞代碼轉(zhuǎn)換模塊
另一設(shè)計(jì)圖案可實(shí)施于代碼轉(zhuǎn)換模塊36中,其被稱為策略圖案。此圖案僅僅意味 著若干算法(或策略)可實(shí)施一個功能。策略圖案在針對其在實(shí)現(xiàn)準(zhǔn)確位速率控制方面 的有效性評估且比較不同的算法時變得有用。所述框架實(shí)施所討論的每一算法,且主程 序僅僅需要切換以插入正確的算法。200880017649.7
說明書第19/24頁
上述技術(shù)可個別地實(shí)施,或此類技術(shù)中的兩者或兩者以上或所有此類技術(shù)可一起實(shí) 施于編碼模塊12中。編碼模塊12中的組件為那些適用于實(shí)施本文中所描述的技術(shù)的示 范性組件。然而,編碼模塊12可包括許多其它組件(如果需要)以及將上述模塊中的 一者或一者以上的功能性相結(jié)合的較少的組件。編碼模塊12中的組件可實(shí)施為一個或 一個以上處理器、數(shù)字信號處理器、專用集成電路(ASIC)、現(xiàn)場可編程門陣列(FPGA)、 離散邏輯、軟件、硬件、固件或其任何組合。將不同特征描繪為模塊希望強(qiáng)調(diào)編碼模塊 12的不同功能方面,且未必暗示此類模塊必須由單獨(dú)的硬件或軟件組件來實(shí)現(xiàn)。而是, 與一個或一個以上模塊相關(guān)聯(lián)的功能性可集成于共用或單獨(dú)的硬件或軟件組件內(nèi)。
圖3為說明編碼模塊(例如圖2的編碼模塊12)根據(jù)本文中所描述的宏觀尺度位速 率降低技術(shù)來對圖像進(jìn)行代碼轉(zhuǎn)換的示范性操作的流程圖。最初,編碼模塊12獲得經(jīng) 編碼的圖像(40)。在一些方面中,編碼模塊12可從媒體源18獲得經(jīng)編碼的圖像。或 者,編碼模塊12可獲得原始圖像數(shù)據(jù)且執(zhí)行圖像數(shù)據(jù)的初始編碼以獲得經(jīng)編碼的圖像。
編碼模塊12解碼經(jīng)編碼的圖像(42)。熵解碼模塊32可使用與圖像相關(guān)聯(lián)的代碼 表來解碼經(jīng)編碼的圖像以獲得量化變換系數(shù),且反量化模塊34執(zhí)行反量化以產(chǎn)生用于 所述圖像的變換系數(shù)。
編碼模塊12確定最初編碼的圖像的位速率及零值量化變換系數(shù)的數(shù)目,即,i 。及 z。(44)。可基于經(jīng)編碼的圖像的文件大小來計(jì)算位速率。可通過分析在解碼期間所獲得 的量化系數(shù)的矩陣來確定零值量化變換系數(shù)的數(shù)目。在一方面中,代碼轉(zhuǎn)換過程可根據(jù) 觀察程序設(shè)計(jì)圖案而操作。在所述狀況下,零值系數(shù)的數(shù)目以及其它統(tǒng)計(jì)資料可在第一 遍解碼期間計(jì)算出且以下描述的代碼轉(zhuǎn)換可在第二遍期間發(fā)生。
編碼模塊12獲得目標(biāo)位速率(46)。編碼模塊12可例如從裝置的用戶或網(wǎng)絡(luò)服務(wù) 提供者獲得目標(biāo)位速率。或者,編碼模塊12可基于由用戶規(guī)定或從網(wǎng)絡(luò)服務(wù)提供者獲 得的目標(biāo)文件大小(F》來計(jì)算目標(biāo)位速率i r。目標(biāo)文件大小Fr可例如以字節(jié)為單位 來規(guī)定,且包括標(biāo)頭信息及DC位以及AC位。在一方面中,編碼模塊12可根據(jù)方程式 i 產(chǎn)8^^F廠/f-Z)C來計(jì)算目標(biāo)位速率i r,其中H為標(biāo)頭位的數(shù)目且DC為用以表示圖像的 DC分量的位的數(shù)目。
編碼模塊12確定實(shí)現(xiàn)目標(biāo)位速率(zr)所需的零值量化變換系數(shù)的數(shù)目(48)。舉 例來說,代碼轉(zhuǎn)換模塊36可使用目標(biāo)位速率i r、最初編碼的圖像的位速率/ 。及最初編 碼的圖像的零值量化變換系數(shù)的數(shù)目z。來計(jì)算零值量化變換系數(shù)的目標(biāo)數(shù)目a。在一方 面中,代碼轉(zhuǎn)換模塊36如以上方程式(3)到(5)中所示來計(jì)算zr。
編碼模塊12基于零值量化變換系數(shù)的目標(biāo)數(shù)目來確定比例因子s及位置索引it
26(50)。代碼轉(zhuǎn)換模塊36可使用系數(shù)值的直方圖來選擇比例因子"以使得由于亮度量化 表38及色度量化表39的按比例縮放而產(chǎn)生的零值系數(shù)的數(shù)目不超過^。作為一實(shí)例, 假設(shè)圖像的直方圖指示存在1000個具有為1的值的系數(shù)及2000個具有為2的值的系數(shù)。 此外,假設(shè)目標(biāo)零值系數(shù)的數(shù)目(a)為1500。代碼轉(zhuǎn)換模塊36選擇為2的比例因子, 其為不會引起超過a的z的最大比例因子。代碼轉(zhuǎn)換模塊36可進(jìn)一步確定位置索引&, 此處將第二、較大的比例因子應(yīng)用于在所述位置索引之后的系數(shù)引起零值系數(shù)的所要數(shù) 目。
編碼模塊12依據(jù)比例因子s及位置索引;t來按比例縮放亮度量化表38及色度量化 表39 (52)。代碼轉(zhuǎn)換模塊36可將亮度量化表38及色度量化表39的量化條目定序成若 干條目的單一序列,且以比例因子s來按比例縮放所述序列的最前面;t個條目,且以較 大的比例因子(例如,抖l)來按比例縮放所述序列的剩余的條目。以此方式,將色度 量化表39按比例縮放的程度大于亮度量化表38以更好地保留圖像的明亮度。此外,以 不同的比例因子來按比例縮放量化表的所述條目的部分降低了過調(diào)整目標(biāo)位速率或欠 調(diào)整目標(biāo)位速率的可能性。
編碼模塊12使用經(jīng)按比例縮放的量化表來重新編碼圖像(54)。舉例來說,量化模 塊28使用經(jīng)按比例縮放的量化表來量化變換系數(shù),且熵編碼模塊30編碼所述量化系數(shù) 以產(chǎn)生經(jīng)編碼的位流。在圖3的流程圖中所描述的實(shí)例中,編碼模塊12在頻域中(即, 使用變換系數(shù))對圖像進(jìn)行代碼轉(zhuǎn)換。在頻域中對圖像數(shù)據(jù)進(jìn)行代碼轉(zhuǎn)換可通過消除對 將反變換函數(shù)應(yīng)用于變換系數(shù)的需要來降低處理時間。然而,在其它方面中,編碼模塊 12可包括反變換模塊,所述反變換模塊獲得原始圖像數(shù)據(jù)且使用原始圖像數(shù)據(jù)來對圖像 進(jìn)行代碼轉(zhuǎn)換。
圖4為說明編碼模塊(例如圖2的編碼模塊12)使用宏觀尺度位速率降低技術(shù)及微 觀尺度位速率降低技術(shù)的組合來對圖像進(jìn)行代碼轉(zhuǎn)換的示范性操作的流程圖。最初,編 碼模塊12獲得經(jīng)編碼的圖像(60)。編碼模塊12可從媒體源18獲得先前編碼的圖像或 從媒體源18獲得原始圖像數(shù)據(jù)且執(zhí)行圖像數(shù)據(jù)的初始編碼以獲得經(jīng)編碼的圖像。
編碼模塊12解碼經(jīng)編碼的圖像(62)。編碼模塊12分別確定最初編碼的圖像的位 速率及零值量化變換系數(shù)的數(shù)目,即,i 。及z。 (64)??苫诮?jīng)編碼的圖像的文件大小 來計(jì)算位速率??稍诮獯a期間確定零值量化變換系數(shù)的數(shù)目。編碼模塊12獲得目標(biāo)位 速率(66)。編碼模塊12可例如從裝置的用戶或網(wǎng)絡(luò)服務(wù)提供者獲得目標(biāo)位速率。或者, 編碼模塊12可基于由用戶規(guī)定或從網(wǎng)絡(luò)服務(wù)提供者獲得的目標(biāo)文件大小(Fr)來計(jì)算 目標(biāo)位速率/ r。編碼模塊12確定實(shí)現(xiàn)目標(biāo)位速率所需的零值量化變換系數(shù)的目標(biāo)數(shù)目a (68)。舉 例來說,代碼轉(zhuǎn)換模塊36可使用目標(biāo)位速率i r、最初編碼的圖像的位速率/ 。及最初編 碼的圖像的零值量化變換系數(shù)的數(shù)目z。來計(jì)算零值量化變換系數(shù)的目標(biāo)數(shù)目(zr)。在 一方面中,代碼轉(zhuǎn)換模塊36如以上方程式(3)到(5)中所示來計(jì)算^。
編碼模塊12基于零值量化變換系數(shù)的目標(biāo)數(shù)目來確定比例因子s及位置索引)t (70)。代碼轉(zhuǎn)換模塊36可計(jì)算比例因子s及位置索引&以使得其滿足方程式
163卜l
4=0 (=1 v=l n=jt(n t64)
《=
/2 5
,/ = wmod64,v = 51
編碼模塊12依據(jù)比例因子s及位置索引yt來按比例縮放亮度量化表38及色度量化 表39 (72)。代碼轉(zhuǎn)換模塊36可例如將亮度量化表38及色度量化表39的量化條目定序 成所述條目的單一序列,且以比例因子s來按比例縮放最前面&個條目且以較大的比例 因子(例如,抖l)來按比例縮放剩余的條目。較大的比例因子導(dǎo)致較多的變換系數(shù)被 量化成零。以此方式,將色度量化表39按比例縮放的程度大于亮度量化表38,以更好 地保留圖像的明亮度。此外,以不同的比例因子來按比例縮放量化表的所述條目的部分 降低了過調(diào)整目標(biāo)位速率或欠調(diào)整目標(biāo)位速率的可能性。
編碼模塊12使用經(jīng)按比例縮放的量化表來重新編碼圖像塊(74)。舉例來說,量化 模塊28使用經(jīng)按比例縮放的量化表來量化所述塊的變換系數(shù),且熵編碼模塊30編碼所 述塊的量化系數(shù)以產(chǎn)生所述塊的經(jīng)編碼位流。編碼模塊12確定用以重新編碼圖像的n 個塊的位的數(shù)目i e (n)的總和(76)。換句話說,編碼模塊12保持用以重新編碼所述 圖像的塊的位的數(shù)目的運(yùn)行總數(shù)。舉例來說,代碼轉(zhuǎn)換模塊36可追蹤對于特定塊已代 碼轉(zhuǎn)換的位的數(shù)目且將其添加到其它塊的總數(shù)。代碼轉(zhuǎn)換模塊36計(jì)算在用以重新編碼 所述塊的位的數(shù)目& (M)的總和與應(yīng)在第n個塊處編碼的位的理想數(shù)目A (")之間的 差(A) (78)。
代碼轉(zhuǎn)換模塊36確定A是否大于或等于閾值(80)。閾值可為例如目標(biāo)位速率的函 數(shù)(例如,目標(biāo)位速率5%)。當(dāng)代碼轉(zhuǎn)換模塊36確定A大于或等于閾值時,代碼轉(zhuǎn)換模 塊36確定是否存在可使用一個或一個以上微觀尺度位速率控制技術(shù)從當(dāng)前塊移除的位 (82)。如上文所詳細(xì)描述,代碼轉(zhuǎn)換模塊36可確定當(dāng)前塊是否具有為二的冪的任何量 化變換系數(shù)或所述塊的位序列是否具有表示標(biāo)記的位序列。
當(dāng)代碼轉(zhuǎn)換模塊36確定存在可從當(dāng)前塊的位流移除的位時,代碼轉(zhuǎn)換模塊36進(jìn)一步降低位流的位數(shù)目(84)。如果經(jīng)識別為可移除的位是為二的冪或接近于二的冪的量 化變換系數(shù),則代碼轉(zhuǎn)換模塊36可將所述系數(shù)中的一者或一者以上遞減一值以使得系 數(shù)值降到對應(yīng)的二的冪以下,且重新編碼降低的系數(shù)。如上所述,將為二的冪的系數(shù)降 低為一的值會降低表示系數(shù)所需的位數(shù)目。具體來說,存在一個位的節(jié)省。如果經(jīng)識別 為可移除的位為表示標(biāo)記的塊的位序列的一部分,則代碼轉(zhuǎn)換模塊36可通過降低填補(bǔ) 字節(jié)的數(shù)目來降低位流的位數(shù)目。如上所述,代碼轉(zhuǎn)換模塊36可插入填補(bǔ)字節(jié),其在 對應(yīng)于元數(shù)據(jù)的標(biāo)記的位序列之后。在JPEG標(biāo)準(zhǔn)的狀況下,例如,可在OxFF出現(xiàn)之后 將零字節(jié)0x00插入于熵編碼位流中以將實(shí)際系數(shù)位流與標(biāo)記予以區(qū)分。當(dāng)位對應(yīng)于余 項(xiàng)時,代碼轉(zhuǎn)換模塊36可改變表示標(biāo)記的序列的至少一個位。舉例來說,代碼轉(zhuǎn)換模 塊36可改變余項(xiàng)的最低有效位,此舉防止對應(yīng)于標(biāo)記的序列寫入到系數(shù)位流。在改變 此位后,位序列不再表示標(biāo)記且填補(bǔ)字節(jié)為不必要的。
在降低位流的位數(shù)目之后,代碼轉(zhuǎn)換模塊36將經(jīng)調(diào)整的A (即,降低了所移除的位 的數(shù)目的A)與閾值進(jìn)行比較(80)。如果A仍超過閾值,則代碼轉(zhuǎn)換模塊36確定是否還 存在可從當(dāng)前塊移除的任何位(82)。如果存在可在維持適當(dāng)質(zhì)量的同時被移除的當(dāng)前 塊的額外位,則代碼轉(zhuǎn)換模塊36進(jìn)一步降低塊的位數(shù)目。如果不存在可在維持適當(dāng)質(zhì) 量的同時從當(dāng)前塊移除的位或A不再超過閾值,則代碼轉(zhuǎn)換模塊36傳輸經(jīng)代碼轉(zhuǎn)換的塊 (86)。然而,在一些狀況下,代碼轉(zhuǎn)換模塊36可不傳輸經(jīng)代碼轉(zhuǎn)換的塊,而是等待圖 像的所有塊得以編碼且隨后傳輸整個圖像。
代碼轉(zhuǎn)換模塊36確定是否存在待編碼的額外塊(88)。當(dāng)存在待編碼的額外塊時, 代碼轉(zhuǎn)換模塊36使用經(jīng)調(diào)整的量化表及(如果需要)微觀尺度位速率控制技術(shù)來繼續(xù) 重新編碼所述塊。以此方式,代碼轉(zhuǎn)換模塊36可實(shí)施兩個階層的位速率控制以對圖像 進(jìn)行代碼轉(zhuǎn)換在宏觀尺度上的第一階層的位速率控制,其中整體代碼轉(zhuǎn)換技術(shù)同等且 均一地影響整個圖像;及在微觀尺度上的第二階層的位速率控制,其中代碼轉(zhuǎn)換操作的 作用局限于圖像的特定區(qū)域。此兩階層式策略允許代碼轉(zhuǎn)換模塊36首先粗略地接近目 標(biāo)位速率且隨后在必要時進(jìn)行精細(xì)調(diào)整。
圖5為說明編碼模塊(例如圖2的編碼模塊12)實(shí)施微觀尺度位速率控制以進(jìn)一步 降低圖像位速率的示范性操作的流程圖。如上所述,熵編碼模塊30基于零的游程長度 及系數(shù)的二進(jìn)制大小來指定用于AC系數(shù)的代碼。代碼轉(zhuǎn)換模塊36無法在不根本改變塊 的情況下改變零的游程長度,但其可精細(xì)地改變系數(shù)的二進(jìn)制大小。具體來說,代碼轉(zhuǎn) 換模塊可識別為二的冪的塊的系數(shù)(90)。
代碼轉(zhuǎn)換模塊36確定所識別的系數(shù)是否等于一(92)。如果所識別的系數(shù)不等于一,
29則代碼轉(zhuǎn)換模塊36將所識別的系數(shù)遞減一 (94)。代碼轉(zhuǎn)換模塊36編碼新系數(shù)值(96)。 例如,對于為八的系數(shù)值,代碼轉(zhuǎn)換模塊36以四個位來編碼余項(xiàng)的長度。代碼轉(zhuǎn)換模 塊36可以僅三個位來編碼為七的經(jīng)降低系數(shù)值的余項(xiàng)的長度,從而將位流降低一個位。 此外,表示游程大小的霍夫曼代碼可能也較短,從而引起額外的位節(jié)省。
然而,如果所識別的系數(shù)等于一,則代碼轉(zhuǎn)換模塊36選擇為二的冪的塊的系數(shù)的 中的不同系數(shù)。遞減具有為一的值的系數(shù)將導(dǎo)致為零的新系數(shù)值。換句話說,完全消除 了變換的所述特殊分量,其引入了比預(yù)期更大的失真及/或假影。因此,代碼轉(zhuǎn)換模塊 36可不降低具有為一的值的系數(shù)。
以此方式,代碼轉(zhuǎn)換模塊36可通過選擇性地降低一個或一個以上系數(shù)的值來降低 位流中的位的數(shù)目。如上所述,圖像的經(jīng)編碼位流主要包含用于AC系數(shù)的霍夫曼代碼 及余項(xiàng)串。通過選擇性地降低一個或一個以上系數(shù)的值,代碼轉(zhuǎn)換模塊36可減小經(jīng)降 低的系數(shù)的霍夫曼代碼的長度。此是因?yàn)?,較小系數(shù)值通常比較大系數(shù)值更頻繁且因此 通常被指定較短的霍夫曼代碼。此外,代碼轉(zhuǎn)換模塊30可通過選擇性地降低系數(shù)值中 的一者或一者以上來節(jié)省余項(xiàng)中的位。盡管依據(jù)降低等于二的冪的系數(shù)來描述圖5,但 所述技術(shù)可經(jīng)擴(kuò)展而應(yīng)用于具有接近于二的冪的值的系數(shù)。舉例來說,可將為九的系數(shù) 值降低二,從而引起為七的新系數(shù)值,所述新系數(shù)值可由降低數(shù)目個位及較短的霍夫曼 代碼來表示。系數(shù)值應(yīng)接近于二的冪的程度視被認(rèn)為可接受的失真的量而定。
必要時,圖5中所描述的微觀尺度位速率控制技術(shù)可結(jié)合宏觀尺度位速率控制技術(shù) 而使用以進(jìn)一步降低圖像的大小?;蛘撸瑟?dú)立于宏觀尺度速率控制技術(shù)而利用微觀尺 度速率控制技術(shù)來對己編碼的圖像進(jìn)行代碼轉(zhuǎn)換或執(zhí)行圖像的初始編碼。
圖6為說明編碼模塊(例如圖2的編碼模塊12)實(shí)施微觀尺度位速率控制以進(jìn)一步 降低圖像位速率的示范性操作的流程圖。代碼轉(zhuǎn)換模塊36識別位流中的位置,在所述 位置處存在與標(biāo)記相對應(yīng)的位序列(100)。如上所述,圖像壓縮技術(shù)可使用特定的位序 列作為標(biāo)記,以識別元數(shù)據(jù)的區(qū)域。在JPEG標(biāo)準(zhǔn)中,以字節(jié)OxFF開始的兩字節(jié)的標(biāo)記 用以識別元數(shù)據(jù)的區(qū)域,所述字節(jié)0xFF后接續(xù)指示隨后的元數(shù)據(jù)的類型的字節(jié)。當(dāng)系 數(shù)的編碼引入了與標(biāo)記0xFF相對應(yīng)的位序列時,熵編碼模塊30將零字節(jié)0x00填塞到 位流中以消除系數(shù)位流有標(biāo)記的歧義。因此,代碼轉(zhuǎn)換模塊36可包括位緩沖器,其存 儲包含被寫入到位流的下一個字節(jié)的最左邊位;且代碼轉(zhuǎn)換模塊36針對與標(biāo)記相對應(yīng) 的位序列(例如,在JPEG標(biāo)準(zhǔn)的狀況下為OxFF)而監(jiān)控所述緩沖器。
代碼轉(zhuǎn)換模塊36確定位序列是否包括表示余項(xiàng)的至少一個位(102)。當(dāng)位序列包 括表示余項(xiàng)的至少一個位時,代碼轉(zhuǎn)換模塊36可改變表示余項(xiàng)的八個位中的一個或一
30個以上位(104)。舉例來說,代碼轉(zhuǎn)換模塊36可改變表示余項(xiàng)的位的最低有效位。此 又防止了表示標(biāo)記的位序列的出現(xiàn)且僅在最小的程度上改變余項(xiàng)值。代碼轉(zhuǎn)換模塊36 隨后編碼所述位序列而不插入填補(bǔ)位(106)。在一些狀況下,代碼轉(zhuǎn)換模塊36通???插入填補(bǔ)字節(jié)。在所述狀況下,保留了八個位。
當(dāng)位序列不包括表示余項(xiàng)的至少一個位時,代碼轉(zhuǎn)換模塊36不改變?nèi)魏挝?108), 且以所插入的填補(bǔ)位來編碼所述序列(110)。改變霍夫曼代碼的位將引起霍夫曼代碼的 改變,其隨后將引起解碼裝置處的誤差。
圖6中所描述的微觀尺度位速率控制技術(shù)必要時可結(jié)合宏觀尺度位速率控制技術(shù)而 使用以進(jìn)一步降低圖像的大小?;蛘?,可獨(dú)立于宏觀尺度速率控制技術(shù)而利用微觀尺度 速率控制技術(shù)來對已編碼的圖像進(jìn)行代碼轉(zhuǎn)換或執(zhí)行圖像的初始編碼。
本文中所描述的技術(shù)可以硬件、軟件、固件或其任何組合實(shí)施。描述為模塊或組件 的任何特征可一起實(shí)施于集成的邏輯裝置中或單獨(dú)實(shí)施為離散但可交互操作的邏輯裝 置。如果以軟件實(shí)施,則所述技術(shù)可至少部分地由包含指令的計(jì)算機(jī)可讀媒體來實(shí)現(xiàn), 所述指令在被執(zhí)行時執(zhí)行上述方法中的一者或一者以上。計(jì)算機(jī)可讀媒體可形成計(jì)算機(jī) 程序產(chǎn)品的一部分,計(jì)算機(jī)程序產(chǎn)品可包括封裝材料。計(jì)算機(jī)可讀媒體可包含例如同步 動態(tài)隨機(jī)存取存儲器(SDRAM)的隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM)、非 易失性隨機(jī)存取存儲器(NVRAM)、電可擦除可編程只讀存儲器(EEPROM)、快閃存 儲器、磁性或光學(xué)數(shù)據(jù)存儲媒體,等等。其它或另外,所述技術(shù)可至少部分地由計(jì)算機(jī) 可讀通信媒體來實(shí)現(xiàn),所述計(jì)算機(jī)可讀通信媒體攜載或傳送呈指令或數(shù)據(jù)結(jié)構(gòu)的形式的 代碼且可由計(jì)算機(jī)存取、讀取及/或執(zhí)行。
代碼可由一個或一個以上處理器執(zhí)行,所述處理器例如一個或一個以上DSP、通用 微處理器、ASIC、現(xiàn)場可編程邏輯陣列FPGA,或其它等效集成或離散邏輯電路。因此, 如本文中所使用的術(shù)語"處理器"可指上述結(jié)構(gòu)或適合于實(shí)施本文中所描述技術(shù)的任何 其它結(jié)構(gòu)中的任一者。另外,在一些方面中,本文中所描述的功能性可提供于經(jīng)配置以 用于編碼及解碼的專用軟件模塊或硬件模塊內(nèi)或并入于經(jīng)組合的視頻編碼器-解碼器(編 解碼器)中。因此,本發(fā)明還涵蓋多種集成電路裝置中的任一者,所述集成電路裝置包 括實(shí)施本發(fā)明中所描述的技術(shù)中的一者或一者以上的電路。此電路可提供于單一集成電 路芯片中或多個可交互操作的集成電路芯片中。
已描述各種實(shí)例。這些及其它實(shí)例在所附權(quán)利要求書的范圍內(nèi)。
權(quán)利要求
1.一種處理數(shù)字圖像數(shù)據(jù)的方法,其包含依據(jù)計(jì)算出的比例因子來按比例縮放一個或一個以上量化表;使用所述一個或一個以上按比例縮放的量化表來編碼所述數(shù)字圖像數(shù)據(jù)的多個像素塊;追蹤在所述數(shù)字圖像數(shù)據(jù)的所述多個像素塊的第n個塊處編碼的位的數(shù)目與用以實(shí)現(xiàn)目標(biāo)位速率而理想地應(yīng)在所述第n個塊處編碼的位的數(shù)目之間的差;以及當(dāng)所述差大于或等于閾值時,移除用以編碼所述圖像數(shù)據(jù)的所述多個塊的一部分的一個或一個以上位。
2. 根據(jù)權(quán)利要求l所述的方法,其進(jìn)一步包含基于在最初編碼時所述圖像數(shù)據(jù)的位速率、在最初編碼時所述圖像數(shù)據(jù)的零值量化變換系數(shù)的數(shù)目及所述目標(biāo)位速率來識別用以實(shí)現(xiàn)所述目標(biāo)位速率的零值量化變換系數(shù)的所要數(shù)目;以及基于零值量化變換系數(shù)的所述所要數(shù)目來計(jì)算在按比例縮放所述一個或一個以上量化表中使用的所述比例因子。
3. 根據(jù)權(quán)利要求1所述的方法,其中按比例縮放所述一個或一個以上量化表包含按比例縮放亮度量化表及色度量化表,其中所述色度量化表按比例縮放的程度大于所述亮度量化表。
4. 根據(jù)權(quán)利要求3所述的方法,其中按比例縮放所述亮度量化表及所述色度量化表包含以所述計(jì)算出的比例因子來按比例縮放所述亮度量化表的第一部分;以及以第二比例因子來按比例縮放所述亮度量化表的第二部分及所述色度量化表,其中依據(jù)所述計(jì)算出的比例因子來確定所述第二比例因子,其中所述計(jì)算出的比例因子及第二比例因子大于或等于一,且進(jìn)一步其中所述計(jì)算出的比例因子小于所述第二比例因子。
5. 根據(jù)權(quán)利要求4所述的方法,其進(jìn)一步包含-將所述亮度量化表及所述色度量化表的量化條目定序成單一序列,所述序列以所述亮度量化表的低頻率量化條目開始,其后接續(xù)所述亮度量化表的高頻率量化條目,隨后為所述色度量化表的低頻率量化條目,且隨后為所述色度量化表的高頻率量化條目;以所述計(jì)算出的比例因子來按比例縮放所述序列的最前面fc個量化條目;以及以所述第二比例因子來按比例縮放所述序列的剩余的個量化條目,其中iV為所述序列的量化條目的總數(shù)目。
6. 根據(jù)權(quán)利要求1所述的方法,其中移除所述一個或一個以上位包含-選擇具有等于或接近于二的冪的值的一個或一個以上量化變換系數(shù);以及遞減所述一個或一個以上選定的量化變換系數(shù),直到所述選定的量化變換系數(shù)小于相應(yīng)的二的冪為止。
7. 根據(jù)權(quán)利要求6所述的方法,其中選擇等于或接近于二的冪的一個或一個以上量化變換系數(shù)包含選擇當(dāng)被遞減到所述相應(yīng)的二的冪以下的值時將不等于零的一個或一個以上量化變換系數(shù)。
8. 根據(jù)權(quán)利要求1所述的方法,其中移除所述一個或一個以上位包含-識別包括多個位的至少一個位序列,所述多個位是以充當(dāng)需要填塞一個或一個以上位的標(biāo)記的方式排列的;以及改變所述位序列的對應(yīng)于余項(xiàng)的所述多個位中的至少一者,以使得所述位序列不再充當(dāng)所述標(biāo)記。
9. 根據(jù)權(quán)利要求1所述的方法,其進(jìn)一步包含當(dāng)所述差降到所述閾值以下時使用所述一個或一個以上按比例縮放的量化表來編碼所述圖像數(shù)據(jù)的所述塊而不移除一個或一個以上額外位。
10. —種用于處理數(shù)字圖像數(shù)據(jù)的設(shè)備,其包含-存儲器,其存儲在編碼所述數(shù)字圖像數(shù)據(jù)的多個像素塊中使用的一個或一個以上量化表;以及編碼模塊,其依據(jù)計(jì)算出的比例因子來按比例縮放所述一個或一個以上量化表,使用所述一個或一個以上按比例縮放的量化表來編碼所述數(shù)字圖像數(shù)據(jù)的多個像素塊,追蹤在所述數(shù)字圖像數(shù)據(jù)的所述多個像素塊的第n個塊處編碼的位的數(shù)目與用以實(shí)現(xiàn)目標(biāo)位速率而理想地應(yīng)在所述第n個塊處編碼的位的數(shù)目之間的差,且當(dāng)所述差大于或等于閾值時移除用以編碼所述圖像數(shù)據(jù)的所述多個塊的一部分的一個或一個以上位。
11. 根據(jù)權(quán)利要求IO所述的設(shè)備,其中所述編碼模塊將亮度量化表及色度量化表的量化條目定序成單一序列,所述序列以所述亮度量化表的低頻率量化條目開始,其后接續(xù)所述亮度量化表的高頻率量化條目,隨后為所述色度量化表的低頻率量化條目,且隨后為所述色度量化表的高頻率量化條目;以所述計(jì)算出的比例因子來按比例縮放所述序列的最前面&個量化條目;且以依據(jù)所述計(jì)算出的比例因子確定的第二比例因子來按比例縮放所述序列的剩余的iV-)t個量化條目,其中AT為所述序列的量化條目的總數(shù)目,且進(jìn)一步其中所述計(jì)算出的比例因子及第二比例因子大于或等于一,且所述計(jì)算出的比例因子小于所述第二比例因子。
12. 根據(jù)權(quán)利要求IO所述的設(shè)備,其中所述編碼模塊選擇具有等于或接近于二的冪的值的一個或一個以上量化變換系數(shù),且遞減所述一個或一個以上選定的量化變換系數(shù),直到所述選定的量化變換系數(shù)小于相應(yīng)的二的冪為止。
13. 根據(jù)權(quán)利要求IO所述的設(shè)備,其中所述編碼模塊識別包括以充當(dāng)需要填塞一個或一個以上位的標(biāo)記的方式排列的多個位的至少一個位序列,,且改變所述位序列的所述多個位中的至少一者以使得所述位序列不再充當(dāng)所述標(biāo)記。
14. 根據(jù)權(quán)利要求IO所述的設(shè)備,其中所述編碼模塊在所述差降到所述閾值以下時使用所述按比例縮放的量化表來重新開始所述圖像數(shù)據(jù)的所述塊的編碼而不移除一個或一個以上額外位。
15. 根據(jù)權(quán)利要求IO所述的設(shè)備,其中所述設(shè)備并入于無線通信裝置手持機(jī)內(nèi),所述無線通信裝置手持機(jī)進(jìn)一步包含用于發(fā)射所述經(jīng)編碼的像素塊的發(fā)射器。
16. —種用于處理數(shù)字圖像數(shù)據(jù)的設(shè)備,其包含-用于依據(jù)計(jì)算出的比例因子來按比例縮放一個或一個以上量化表的裝置; 用于使用所述一個或一個以上按比例縮放的量化表來編碼所述數(shù)字圖像數(shù)據(jù)的 多個像素塊的裝置;用于追蹤在所述數(shù)字圖像數(shù)據(jù)的所述多個像素塊的第n個塊處編碼的位的數(shù)目 與用以實(shí)現(xiàn)目標(biāo)位速率而理想地應(yīng)在所述第n個塊處編碼的位的數(shù)目之間的差的 裝置;以及用于當(dāng)所述差大于或等于閾值時移除用以編碼所述圖像數(shù)據(jù)的所述多個塊的一 部分的一個或一個以上位的裝置。
17. —種用于處理數(shù)字圖像數(shù)據(jù)的計(jì)算機(jī)程序產(chǎn)品,其包含計(jì)算機(jī)可讀媒體,所述計(jì)算 機(jī)可讀媒體上具有指令,所述指令包含-用于依據(jù)計(jì)算出的比例因子來按比例縮放一個或一個以上量化表的代碼; 用于使用所述一個或一個以上按比例縮放的量化表來編碼所述數(shù)字圖像數(shù)據(jù)的 多個像素塊的代碼;用于追蹤在所述數(shù)字圖像數(shù)據(jù)的所述多個像素塊的第n個塊處編碼的位的數(shù)目 與用以實(shí)現(xiàn)目標(biāo)位速率而理想地應(yīng)在所述第n個塊處編碼的位的數(shù)目之間的差的 代碼;以及用于當(dāng)所述差大于或等于闊值時移除用以編碼所述圖像數(shù)據(jù)的所述多個塊的一 部分的一個或一個以上位的代碼。
18. 根據(jù)權(quán)利要求17所述的計(jì)算機(jī)程序產(chǎn)品,其中所述指令進(jìn)一步包含-用于基于在最初編碼時所述圖像數(shù)據(jù)的位速率、在最初編碼時所述圖像數(shù)據(jù)的零 值量化變換系數(shù)的數(shù)目及所述目標(biāo)位速率來識別用以實(shí)現(xiàn)所述目標(biāo)位速率的零值 量化變換系數(shù)的所要數(shù)目的代碼;以及用于基于零值量化變換系數(shù)的所述所要數(shù)目來計(jì)算按比例縮放所述一個或一個 以上量化表中使用的所述比例因子的代碼。
19. 根據(jù)權(quán)利要求17所述的計(jì)算機(jī)程序產(chǎn)品,其中用于按比例縮放所述一個或一個以 上量化表的代碼包含用于按比例縮放亮度量化表及色度量化表的代碼,其中所述色 度量化表按比例縮放的程度大于所述亮度量化表。
20. 根據(jù)權(quán)利要求19所述的計(jì)算機(jī)程序產(chǎn)品,其中用于按比例縮放所述亮度量化表及 所述色度量化表的代碼包含用于以所述計(jì)算出的比例因子來按比例縮放所述亮度量化表的第一部分的代碼; 以及用于以第二比例因子來按比例縮放所述亮度量化表的第二部分及所述色度量化 表的代碼,其中所述第二比例因子是依據(jù)所述計(jì)算出的比例因子來確定的,其中所述計(jì)算出的比例因子及第二比例因子大于或等于一,且進(jìn)一步其中所述計(jì) 算出的比例因子小于所述第二比例因子。
21. 根據(jù)權(quán)利要求20所述的計(jì)算機(jī)程序產(chǎn)品,其中用于按比例縮放所述亮度量化表及 所述色度量化表的代碼包含-用于將所述亮度量化表及所述色度量化表的量化條目定序成單一序列的代碼,所 述序列以所述亮度量化表的低頻率量化條目開始,其后接續(xù)所述亮度量化表的髙頻 率量化條目,隨后為所述色度量化表的低頻率量化條目,且隨后為所述色度量化表 的高頻率量化條目;用于以所述計(jì)算出的比例因子來按比例縮放所述序列的最前面?zhèn)€量化條目的 代碼;以及用于以所述第二比例因子來按比例縮放所述序列的剩余的叢it個量化條目的代 碼,其中AT為所述序列的量化條目的總數(shù)目。
22. 根據(jù)權(quán)利要求17所述的計(jì)算機(jī)程序產(chǎn)品,其中用于移除所述一個或一個以上位的 代碼包含用于選擇具有等于或接近于二的冪的值的一個或一個以上量化變換系數(shù)的代碼; 以及用于遞減所述一個或一個以上選定的量化變換系數(shù)直到所述選定的量化變換系 數(shù)小于相應(yīng)的二的冪為止的代碼。
23. 根據(jù)權(quán)利要求22所述的計(jì)算機(jī)程序產(chǎn)品,其中用于選擇等于或接近于二的冪的一 個或一個以上量化變換系數(shù)的代碼包含用于選擇當(dāng)被遞減到所述相應(yīng)的二的冪以 下的值時將不等于零的一個或一個以上量化變換系數(shù)的代碼。
24. 根據(jù)權(quán)利要求17所述的計(jì)算機(jī)程序產(chǎn)品,其中用于移除所述一個或一個以上位的 代碼包含-用于識別包括多個位的至少一個位序列的代碼,所述多個位是以充當(dāng)需要填塞一 個或一個以上位的標(biāo)記的方式排列的;以及用于改變所述位序列的所述多個位中的至少一者以使得所述位序列不再充當(dāng)所 述標(biāo)記的代碼。
25. 根據(jù)權(quán)利要求17所述的計(jì)算機(jī)程序產(chǎn)品,其進(jìn)一步包含用于當(dāng)所述差降到所述閾 值以下時使用所述一個或一個以上按比例縮放的量化表來重新開始所述圖像數(shù)據(jù) 的所述塊的所述編碼而不移除一個或一個以上額外位的代碼。
全文摘要
本發(fā)明描述用于將數(shù)據(jù)編碼以將圖像數(shù)據(jù)壓縮到降低的大小的技術(shù)。所述技術(shù)在將圖像代碼轉(zhuǎn)換到降低的大小以用于傳輸方面可尤其有效。編碼裝置可使用均一地影響整個圖像以對所述圖像進(jìn)行代碼轉(zhuǎn)換的位速率控制技術(shù)將所述圖像代碼轉(zhuǎn)換到可接受的文件大小。舉例來說,所述編碼裝置可依據(jù)位速率(R)與零值量化變換系數(shù)的數(shù)目之間的近線性關(guān)系來修改一個或一個以上量化表以在整個圖像上均一地降低文件大小?;蛘?,或另外,所述編碼裝置可使用僅影響所述圖像的特定局部區(qū)域的位速率控制技術(shù)來對所述圖像進(jìn)行代碼轉(zhuǎn)換。
文檔編號H04N7/50GK101682764SQ200880017649
公開日2010年3月24日 申請日期2008年5月28日 優(yōu)先權(quán)日2007年5月31日
發(fā)明者劉石忠, 里基·阮 申請人:高通股份有限公司