亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

用于圖像壓縮中的比率控制的方法和系統(tǒng)的制作方法

文檔序號:6657014閱讀:216來源:國知局
專利名稱:用于圖像壓縮中的比率控制的方法和系統(tǒng)的制作方法
技術領域
本發(fā)明的實施例一般涉及圖像壓縮。
背景技術
可壓縮(編碼)圖像數(shù)據(jù)以減小與圖像相關聯(lián)的數(shù)據(jù)量而不明顯影響圖像的保真度。例如JPEG(聯(lián)合圖像專家組)壓縮標準的圖像壓縮標準良好地用于減小圖像數(shù)據(jù)量。
在JPEG編碼中,輸入圖像被分解為MCU(宏代碼單元或最小編碼單元),也被稱作宏塊。每一MCU包括許多塊,通常為8×8值的陣列。塊可與單獨圖像或圖像中的色彩組分中的每一者相關聯(lián)。舉例來說,MCU可包括亮度塊(例如,Y塊)和兩個色度塊(例如,U塊和V塊)。
執(zhí)行離散余弦變換(DCT)以將每一塊轉(zhuǎn)換到頻率空間(被稱作DCT系數(shù))。通常,多數(shù)圖像幾乎不含有高頻信息,且因此大多數(shù)經(jīng)變換的圖像數(shù)據(jù)都集中在低頻組分。對于每一8×8塊來說,產(chǎn)生64個DCT系數(shù)(一個“DC”系數(shù)和63個“AC”系數(shù))。DCT變換本身不減少數(shù)據(jù)量。
在量化中,某些頻率信息實質(zhì)上被丟棄,使得可使用較少的位來描述圖像。考慮到(例如)對于一像素來說可存在256個可能的著色水平(例如,從最亮到最暗)。因此,在量化之前,將通過八(8)位的唯一組合來識別每一水平。然而,通過使用量化,256個可能的水平可被量化為16個階,每一階有16個水平,每一階由僅四(4)位的唯一組合識別。
通過使用相對大量的位可更離散地量化較低頻率的DCT系數(shù),而使用相對小量的位可基于原始數(shù)據(jù)量化較高頻率的DCT系數(shù)。因此,可將較低頻率的系數(shù)量化為16個階,如上文所述,使用4位表示每一階,而可將較高頻率的系數(shù)量化為兩個階,通過一(1)位表示每一階。
應用到DCT系數(shù)的量化階布置在被稱作量化表的8×8陣列中,使得量化表中的條目對應于DCT系數(shù)陣列中的位置。量化表影響壓縮量(“壓縮比”),因為其指定量化階的大小。量化階越大,壓縮比越大,但在經(jīng)重新建構的(經(jīng)解壓縮或經(jīng)解碼的)圖像的質(zhì)量上存在等量減小。相反地,較小的量化階意味著更接近地表示未壓縮的數(shù)據(jù),進而增加了經(jīng)重新建構圖像的質(zhì)量,但減小了壓縮比。
在量化后,當游程長度編碼(例如,Huffman編碼)將量化的數(shù)據(jù)編碼并串行化為位流時,壓縮過程終止。位流的大小(以位或字節(jié)測量)作為量化量的函數(shù)而變化,且也是圖像數(shù)據(jù)的函數(shù)。
壓縮方案的一所需特征是對壓縮比的控制(被稱作“比率控制”)。比率控制意味著指定目標壓縮比,當根據(jù)目標壓縮比壓縮圖像數(shù)據(jù)時,所得的位流的長度等于或小于目標大小。在合適的比率控制下,可以有效地為壓縮數(shù)據(jù)分配文件空間,或分配帶寬來轉(zhuǎn)移壓縮數(shù)據(jù),因為大致已知所需的壓縮數(shù)據(jù)量。另外,如果分配了過小的文件空間,那么壓縮數(shù)據(jù)將不配合到所分配的文件空間中,或會超過可用的轉(zhuǎn)移帶寬。
如上文所提到,通過改變量化值來控制壓縮比和輸入質(zhì)量(例如,經(jīng)重新建構圖像的質(zhì)量)。在JPEG編碼中,在編碼之前選擇量化值,且將一組值應用到整個圖像。遺憾的是,對于數(shù)據(jù)(未經(jīng)壓縮)的輸入量和選定組的量化值來說,不可能精確地預測輸出數(shù)據(jù)量(經(jīng)壓縮)。實際上,對于不同的圖像,輸出位流的大小可有明顯變化,且在最糟糕的情況下可能甚至大于輸入位流。輸出位流的大小上的不確定性構成問題,因為如上文所提到,壓縮數(shù)據(jù)量可能過大而不能合適地配合到經(jīng)分配的文件空間中,或可能過大而不能以給定的經(jīng)分配的轉(zhuǎn)移帶寬進行轉(zhuǎn)移。
如果壓縮數(shù)據(jù)量過大,那么可選擇一組新的量化值,并再次壓縮數(shù)據(jù)。重復所述過程,直到實現(xiàn)目標壓縮比(例如,目標位流或文件大小)。因此,常規(guī)的技術可需要多個迭代,從而增加了編碼時間和計算資源(電能、存儲器、處理器循環(huán)等)的使用。通過選擇較大的量化值可減少超過目標位流或文件大小的風險,但這伴隨著以過分降低經(jīng)重新建構圖像的質(zhì)量為代價。

發(fā)明內(nèi)容
因此,可將圖像數(shù)據(jù)有效地壓縮到目標壓縮比的系統(tǒng)和/或方法將是有利的。根據(jù)本發(fā)明的實施例提供此優(yōu)勢和其它優(yōu)勢。
在本發(fā)明的一個實施例中,將界限或預算指派給每一經(jīng)變換和經(jīng)量化的圖像數(shù)據(jù)塊(例如,每一亮度和色度塊)。在一個所述實施例中,預算的大小是圖像內(nèi)的與塊相關聯(lián)的位置的函數(shù)。所述預算對于每一塊可相同或可不同。在一個實施例中,所有預算的總和不大于目標位流或文件的大小。
在一個實施例中,在塊中的經(jīng)變換和經(jīng)量化圖像數(shù)據(jù)的游程長度編碼期間,對經(jīng)編碼的位數(shù)(例如,經(jīng)串行化為位流)進行計數(shù)。當計數(shù)達到為塊指定的界限時,終止對所述塊的編碼。也就是說,如果在對全部塊編碼之前預算就已耗盡,那么通過強加塊末尾代碼而實質(zhì)上丟棄尚未被游程長度編碼的任何經(jīng)變換和經(jīng)量化的值。
在另一實施例中,如果在沒有消耗塊的全部預算的情況下將塊編碼,那么可將所述預算的任何剩余部分添加到另一塊的預算。
在又一實施例中,在每一預算內(nèi)界定一第一閾值。所述第一閾值實質(zhì)上對由預算強加的界限確立一裕度。在所述實施例中,如果達到所述第一閾值,那么不滿足第二閾值的任何剩余的(例如,尚未被編碼的)經(jīng)變換和經(jīng)量化的值被設定為零(實際上,它們被丟棄)。所述第二閾值與經(jīng)變換和經(jīng)量化的值的大小相關聯(lián)。所述第一和第二閾值是可編程的,且可在編碼過程期間改變。
總之,根據(jù)本發(fā)明的實施例,通過確立分布在圖像數(shù)據(jù)塊之間并基于逐塊而強加的預算,有效地實現(xiàn)比率控制。在一個實施例中,塊中的稍后被游程長度編碼的且一般對應于較少有助于圖像保真度的值的經(jīng)變換和經(jīng)量化的值被丟棄(不被編碼),從而減少了壓縮數(shù)據(jù)量而不明顯減少圖像保真度。在另一實施例中,一般不明顯有助于圖像保真度的“較小”的經(jīng)變換和經(jīng)量化的值(例如,不滿足上文提到的第二閾值的那些值)被丟棄(不被編碼),同樣減少壓縮數(shù)據(jù)量而不明顯減少圖像保真度。
在閱讀下文在各種圖式中說明的實施例的詳細描述后,所屬領域的普通技術人員將了解本發(fā)明的各種實施例的在上文提到的目的和優(yōu)勢,以及其它目的和優(yōu)勢。


并入在本說明書中并形成本發(fā)明的一部分的

本發(fā)明的實施例,且與描述內(nèi)容一起用以解釋本發(fā)明的原理圖1A是可用于實施根據(jù)本發(fā)明的實施例的系統(tǒng)的一個實例的方框圖。
圖1B是可用于實施根據(jù)本發(fā)明的實施例的系統(tǒng)的另一實例的方框圖。
圖2是展示根據(jù)本發(fā)明的一個實施例,數(shù)據(jù)在編碼和解碼過程中的流動的數(shù)據(jù)流程圖。
圖3是展示根據(jù)本發(fā)明的一個實施例,編碼過程中的步驟的數(shù)據(jù)流程圖。
圖4是展示根據(jù)本發(fā)明的一個實施例,編碼過程中的步驟的數(shù)據(jù)流程圖。
圖5是根據(jù)本發(fā)明的一個實施例,可用于實現(xiàn)比率控制的預算的實例的圖。
圖6A說明根據(jù)本發(fā)明的一個實施例的可被壓縮的圖像。
圖6B是根據(jù)本發(fā)明的一個實施例,可用于實現(xiàn)比率控制的預算的實例的圖。
圖7是根據(jù)本發(fā)明的一個實施例,用于壓縮數(shù)據(jù)的方法的流程圖。
圖8是根據(jù)本發(fā)明的另一實施例,用于壓縮數(shù)據(jù)的方法的流程圖。
除了有特別注釋之外,描述中涉及到的圖式不應被理解為是按比例繪制的。
具體實施例方式
現(xiàn)在將詳細參考本發(fā)明的各種實施例,在附圖中說明其實例。雖然將結合這些實施例描述本發(fā)明,但應了解,并不期望它們將本發(fā)明限于這些實施例。相反,期望本發(fā)明涵蓋可包括在由所附權利要求書界定的本發(fā)明的精神和范疇內(nèi)的替代物、修改和等效物。此外,在本發(fā)明的以下詳細描述中,陳述大量特定細節(jié)以提供對本發(fā)明的徹底理解。然而,應了解,可在沒有這些特定細節(jié)的情況下實踐本發(fā)明。在其它實例中,未詳細描述眾所周知的方法、程序、組件和電路從而不會不必要地混淆本發(fā)明的各方面。
下文的詳細描述的某些部分是以程序、邏輯塊、處理和對計算機存儲器內(nèi)的數(shù)據(jù)位操作的其它符號表示法的方式來展現(xiàn)的。這些描述和表示法是由數(shù)據(jù)處理技術領域中的技術人員用以向所屬領域中的其它技術人員最有效地傳達他們工作的實質(zhì)內(nèi)容的方法。在本申請案中,程序、邏輯塊、過程或類似物被構思為導向所需結果的步驟或指令的自洽序列。所述步驟為利用物理量的物理操縱的步驟。通常,盡管并非必要,但這些量采取能在計算機系統(tǒng)中存儲、轉(zhuǎn)移、組合、比較和另外操縱的電或磁信號的形式。主要出于共同使用的原因,已證明有時將這些信號稱作交易、位、值、元件、符號、特征、片段、像素或類似物是便利的。
然而,應了解,所有這些和類似的術語與適當?shù)奈锢砹肯嚓P聯(lián),且僅為應用于這些量的便利符號。從以下討論可明了,除非另有特定陳述,否則應了解,在本發(fā)明全文中利用例如“存取”、“維持”、“計數(shù)”、“壓縮”、“解壓縮”、“編碼”、“解碼”、“增加”、“結束”、“改變”、“變換”、“量化”、“接收”、“指派”、“選擇”、“減少”等的術語的討論涉及計算機系統(tǒng)或類似的電子計算裝置的動作和處理(例如,分別為圖7和圖8的流程圖700和800)。計算機系統(tǒng)或類似的電子計算裝置操縱并變換表示為計算機系統(tǒng)存儲器、寄存器或其它所述信息存儲、傳輸或顯示裝置中的物理(電子)量的數(shù)據(jù)。本發(fā)明良好地適合與其它計算機系統(tǒng)一起使用。
圖1A是可用于實施根據(jù)本發(fā)明的實施例的系統(tǒng)100的方框圖。系統(tǒng)100展示用于實施根據(jù)本發(fā)明的實施例的特定功能性的執(zhí)行平臺的組件。如圖1A中所描繪,系統(tǒng)100包括經(jīng)由主機接口101耦合到圖形處理器105的微處理器102。主機接口101將微處理器102與圖形處理器105之間傳遞的數(shù)據(jù)和命令翻譯成其各自的格式。微處理器102和圖形處理器105均經(jīng)由存儲器控制器106耦合到存儲器107。在系統(tǒng)100實施例中,存儲器107為共用存儲器,借此存儲器107存儲用于微處理器102和圖形處理器105兩者的指令和數(shù)據(jù)。對共用存儲器107的存取是通過存儲器控制器106。共用存儲器106還包括用于存儲驅(qū)動所耦合的顯示器108的像素數(shù)據(jù)的視頻幀緩沖器。
如上文所述,在一個實施例中,本發(fā)明的某些過程和步驟被實現(xiàn)為一系列指令(例如,軟件程序),其可駐存在計算機系統(tǒng)(系統(tǒng)100)的計算機可讀存儲器(例如,存儲器107)中,且可由系統(tǒng)100的微處理器102和圖形處理器105執(zhí)行。當執(zhí)行時,所述指令促使系統(tǒng)100實施本發(fā)明的實施例的功能性,如下文所述。在另一實施例中,在硬件中(例如,使用圖形處理器105)實現(xiàn)本發(fā)明的某些過程和步驟。
另外,盡管圖1A的組件被描繪為離散的組件,但所述組件中的若干組件可被實施為單個集成電路裝置(例如,單個集成電路晶粒),其經(jīng)配置以利用現(xiàn)代的半導體制造工藝所提供的高度集成。舉例來說,在一個實施例中,微處理器102、主機接口101、圖形處理器105和存儲器控制器106可被制造成單個集成電路晶粒。
圖1B展示根據(jù)本發(fā)明的替代實施例的系統(tǒng)120。系統(tǒng)120實質(zhì)上類似于圖1A的系統(tǒng)100。然而,系統(tǒng)120利用具有專用系統(tǒng)存儲器127的微處理器102以及具有專用圖形存儲器126的圖形處理器105。在一個實施例中,在系統(tǒng)120中,系統(tǒng)存儲器127存儲用于在微處理器102上執(zhí)行的過程/線程的指令和數(shù)據(jù),且圖形存儲器126存儲用于在圖形處理器105上執(zhí)行的那些過程/線程的指令和數(shù)據(jù)。圖形存儲器126將像素數(shù)據(jù)存儲在驅(qū)動顯示器108的幀緩沖器中。如圖1A的系統(tǒng)100,系統(tǒng)120的組件中的一者或一者以上可集成為單個集成電路晶粒。
圖2為展示根據(jù)本發(fā)明的一個實施例,數(shù)據(jù)在數(shù)據(jù)編碼過程222和數(shù)據(jù)解碼過程224中的流動的數(shù)據(jù)流程圖200。編碼過程222使用下文將更全面描述的編碼方案來壓縮(編碼)數(shù)據(jù)221。圖2的解碼過程224對經(jīng)壓縮的數(shù)據(jù)223解壓縮(重新建構)以產(chǎn)生經(jīng)重新建構的數(shù)據(jù)225。重要的是,根據(jù)本發(fā)明的實施例,經(jīng)壓縮的數(shù)據(jù)223的量將適合目標文件,或?qū)⒉怀^可用的轉(zhuǎn)移帶寬,如下文更全面的描述。可隨后檢索經(jīng)壓縮的數(shù)據(jù)223并使其流到解碼器。或者,在存儲裝置原位或與存儲裝置并行地對經(jīng)壓縮的數(shù)據(jù)223編碼時,其可流到解碼器。
圖3是根據(jù)本發(fā)明的一個實施例,展示編碼過程222中的步驟的數(shù)據(jù)流程圖。在一個實施例中,使用實質(zhì)上服從JPEG的壓縮方案來實施編碼過程222;然而,本發(fā)明并不受如此限制。
編碼過程222包括離散余弦變換(DCT)331、量化332和游程長度編碼333。在DCT331中,將每一數(shù)據(jù)塊221(圖2)轉(zhuǎn)換為DCT系數(shù)。對于每一8×8數(shù)據(jù)塊,產(chǎn)生64個DCT系數(shù)(一個DC系數(shù)和63個AC系數(shù))。
在量化332(圖3)中,頻率信息中的某些信息實質(zhì)上被丟棄,使得較少的位可用來描述圖像。通過使用相對大量的位,可更離散地量化較低頻率的DCT系數(shù),而通過使用相對小量的位,可基于原始數(shù)據(jù)量化較高頻率的DCT系數(shù)。
在量化332后,執(zhí)行游程長度編碼333(例如,Huffman編碼)以編碼并串行化經(jīng)量化的數(shù)據(jù)。在游程長度編碼期間,用代碼代替經(jīng)常重復的串,其中最常出現(xiàn)的串獲得較短的代碼。可將經(jīng)編碼的數(shù)據(jù)存儲在文件中,隨后可從所述文件將其讀取并使其流到解碼器。或者,在數(shù)據(jù)編碼時,可使經(jīng)編碼的數(shù)據(jù)流到解碼器。
顯然,根據(jù)本發(fā)明的實施例,可更可靠地實現(xiàn)比率控制(例如,目標文件或位流大小),且因此預期將減小量化332與游程長度編碼333之間的前后迭代的數(shù)目。
圖4是展示根據(jù)本發(fā)明的一個實施例,編碼過程(例如,圖2和圖3的編碼過程222)中的步驟的數(shù)據(jù)流程圖。在圖4的實例中,圖像401包括由圖像部分410表示的許多圖像部分。在一個實施例中,由包括許多數(shù)據(jù)塊的宏塊或MCU表示圖像部分410。在圖4的實例中,與圖像部分410關聯(lián)的是Y塊420(例如,亮度塊)和U塊421以及V塊422(例如,色度塊)。然而,本發(fā)明并不限于YUV格式的使用。作為替代,例如,可使用RGB(紅、綠、藍)格式或CMYK(青、洋紅、黃、黑)格式。
在本實施例中,塊420、421和422中的每一者均被布置為8×8的數(shù)據(jù)陣列。將Y塊422用作實例,每一塊中的數(shù)據(jù)被變換為DCT系數(shù)的8×8陣列(塊431)。在經(jīng)變換的塊431中,將第一值(例如,塊431的左上角中的值)稱作DC值(此值確立平均亮度)。將塊431中的剩余的值稱作AC值。AC值描述從DC值的變化。一般來說,塊431中的值被稱作DCT系數(shù)。
在本實施例中,對塊431中的DCT系數(shù)進行量化。塊432表示經(jīng)量化的DCT系數(shù)。接著可例如使用游程長度編碼對塊432中的經(jīng)變換和經(jīng)量化的數(shù)據(jù)進行編碼并串行化為位流??山又鴮⑺玫臄?shù)據(jù)寫入文件中,或使其流到解碼器。
在一個實施例中,如圖4中所說明,可以Z字形方式讀取或掃描塊432中的經(jīng)變換和經(jīng)量化的數(shù)據(jù)。然而,本發(fā)明并不受如此限制。舉例來說,可替代地逐行或逐列地讀取塊432中的數(shù)據(jù)。
根據(jù)本發(fā)明的實施例,將預算或界限指派給每一塊。預算限制可從塊432編碼的位的數(shù)目。在對塊432中的經(jīng)變換和經(jīng)量化的數(shù)據(jù)的游程長度編碼期間強加所述預算或界限。在一個實施例中,當讀取并編碼塊432中的值時,對與每一值相關聯(lián)的位數(shù)進行計數(shù)。當計數(shù)達到預算界限時,終止對塊432的編碼。在一個實施例中,將塊末尾代碼插入位流中,以指示來自塊432的經(jīng)編碼數(shù)據(jù)的末尾,且丟棄塊432中的任何剩余的(未經(jīng)編碼的)值。
所述預算對于與特定的圖像組分相關聯(lián)的所有塊來說可以是相同的,或可隨不同的塊而變化。因此,舉例來說,所有Y塊可具有相同的預算,或它們可具有不同的預算。同樣,與特定MCU或圖像部分相關聯(lián)的每一塊可具有相同的預算或不同的預算。也就是說,例如,盡管Y塊420、U塊421和V塊422均與同一圖像部分410相關聯(lián),但它們可具有不同的預算,或它們可具有相同的預算。
可能需要為與圖像401的某些部分相關聯(lián)的塊指派大于指派給與所述圖像的其它部分相關聯(lián)的塊的預算的預算。也就是說,圖像401的一個或一個以上區(qū)域可能被認為比所述圖像的其它區(qū)域更重要,且可能需要將較大的預算指派給與相對更重要的區(qū)域相關聯(lián)的塊。舉例來說,在肖像中,對于經(jīng)重新建構的圖像可能需要更精確地描繪肖像主體(通常朝著圖像中央處定位),而較不注意圖像的圍繞主體的那些部分(例如,特定來說,圖像的邊界)。如下文結合圖6A更詳細的討論,使用者可界定圖像的中心或其它某個焦點(沒有必要是中心),且根據(jù)塊距那個點的距離來為所述塊指派預算。
可用于編碼圖4的整個圖像401的總預算不大于目標文件或位流的大小。換句話說,指派給塊的個別的預算的總和(以位計)不大于目標文件或位流大小。因此,因為將每一塊在其各自的預算內(nèi)編碼,所以當壓縮圖像401時,經(jīng)編碼的圖像數(shù)據(jù)將適合為其分配的存儲空間量。
可使用至少兩種不同的方法來實施根據(jù)本發(fā)明的實施例。在一種方法中,單獨針對每一塊強加逐塊預算。也就是說,為一塊指派預算,且在所述塊的游程長度編碼期間,將僅針對所述塊對經(jīng)編碼的位數(shù)進行計數(shù)。塊的游程長度編碼持續(xù)進行,直到所述塊的所有數(shù)據(jù)都經(jīng)編碼,或直到達到預算界限為止。
在另一種方法中,從一塊到下一塊維持累積計數(shù),且相應地增加預算。當?shù)谝粔K中的數(shù)據(jù)被游程長度編碼時,對正被編碼的位數(shù)進行計數(shù)。第一塊的游程長度編碼將持續(xù)進行,直到所有數(shù)據(jù)都被串行化,或直到達到預算界限為止。在結束第一塊的游程長度編碼后,使預算增加指派給待編碼的第二塊的預算的量。當?shù)诙K中的數(shù)據(jù)被游程長度編碼時,對正被編碼的位數(shù)進行計數(shù),對第二塊的計數(shù)持續(xù)進行,而對第一塊的計數(shù)停止。
在上文所述的方法中的任一種方法中,可存在用于塊的預算沒有完全消耗掉的情況。也就是說,將存在在達到預算界限之前塊中的所有經(jīng)變換和經(jīng)量化的值就已被游程長度編碼的情形。
在上文討論的后一種方法中,用于第一塊的預算中尚未使用的任何部分將自動遺留到在第二塊的游程長度編碼期間應用的預算。
在上文討論的前一種方法中,用于一個塊的預算的任何剩余部分可用于增加另一塊的預算。舉例來說,一旦終止對一個塊的游程長度編碼,用于所述塊的預算的任何未使用部分可被添加到待編碼的下一塊的預算?;蛘?,用于一個塊的預算的未使用部分可替代地保存下來,且應用到其它塊中的任一者,而沒有必要是待編碼的下一塊。舉例來說,如上文所提到的,可能認為圖像的一個部分比另一部分更重要,且對于那個部分可能需要具有比所述圖像的其它部分更大的預算。因此,可將來自一個塊的預算的未使用部分添加到與圖像的相對更重要的部分相關聯(lián)的塊的預算。以類似的思路,未使用的預算部分可替代地積累保存下來,且在需要時,被認為是更重要的塊可利用所保存的預算。
應注意,來自與一種類型圖像組分相關聯(lián)的塊的未使用的預算可應用到與另一種類型圖像組分相關聯(lián)的塊的預算。也就是說,例如,Y塊編碼之后的任何剩余的預算可添加到另一Y塊的預算或添加到U塊或V塊的預算。
圖5是根據(jù)本發(fā)明的一個實施例,可用于實現(xiàn)比率控制的預算的實例圖。圖5的實例對應于上文所展現(xiàn)的從一個塊到下一塊維持累積計數(shù)并相應增加預算的方法。因此,圖5中所示的預算(以經(jīng)編碼的位數(shù)表達)是從一個塊積聚到下一塊的累積值。實際上,指派給塊1的預算量為B1,指派給塊2的預算量是B2減B1,指派給塊3的預算量是B3減B2等。
圖5說明向每一塊指派相同的預算量。然而,如上文所提到,本發(fā)明并不受如此限制,且可向塊指派不同的預算。
在一個實施例中,在每一塊的預算內(nèi)確定一閾值。在圖5的實例中,用于塊1的預算包括閾值T1,當以位來測量時,T1小于預算界限B1。所述閾值實質(zhì)上界定預算界限的裕度。所述閾值是可在編碼過程期間改變的可編程的值。
在一個實施例中,在塊的游程長度編碼期間,如果經(jīng)編碼的位數(shù)達到預算中的閾值(“第一閾值”),那么在所述塊的編碼的剩余部分期間,“小于”第二閾值的那些經(jīng)變換和經(jīng)量化的值就不被編碼。在一個所述實施例中,第二閾值對應于經(jīng)變換和經(jīng)量化的值的各自的量值。因此,例如,如果經(jīng)編碼的位數(shù)超過第一閾值,那么具有小于由第二閾值指定量值的量值的經(jīng)變換和經(jīng)量化的值就不被編碼(例如,其值被設定為零)?;蛘撸诙撝悼蓪诰幋a經(jīng)變換和經(jīng)量化的值所需的位數(shù)。在那種情況下,例如,如果經(jīng)編碼的位數(shù)超過第一閾值,那么具有不滿足第二閾值的位長度的經(jīng)變換和經(jīng)量化的值就不被編碼。
被應用到正被編碼的塊中的值大小的第二閾值是可編程的值??稍趯σ粔K進行游程長度編碼的過程期間改變第二閾值的值。舉例來說,一旦達到第一(預算)閾值,就可當經(jīng)編碼的位數(shù)接近預算界限時增加第二閾值的值,使得塊中的逐漸變大的經(jīng)變換和經(jīng)量化的值不被編碼,留下用于待編碼的剩余值中最大值的預算?;蛘?,在達到第一閾值后,如果沒有如預期那么快地消耗預算,那么就可減小第二閾值的值。也可在編碼從一塊進行到下一塊時改變第二閾值。因此,對于不同的塊,第二閾值可不同。
圖6A說明根據(jù)本發(fā)明的一個實施例,可被壓縮的圖像601。如上文所提到,可能需要為與圖像601的某些部分相關聯(lián)的塊指派大于向與圖像601的其它部分相關聯(lián)的塊指派的預算的預算。也就是說,圖像的一個或一個以上區(qū)域可能被認為比所述圖像的其它區(qū)域更重要,且可能需要向與相對更重要的區(qū)域相關聯(lián)的塊指派較大的預算。
在一個實施例中,可能由使用者在圖像601中指定位置615。所述位置615對應于圖像601中被認為是最終要的區(qū)域。位置615可以是圖像601中位于任何地方的任何位置。還可指定默認位置,例如圖像601的中心。
在一個實施例中,指派給塊的預算是圖像601中的塊位置的函數(shù)。在一個所述實施例中,由塊與位置615之間的距離界定塊的位置。因此,例如,可分別根據(jù)從圖像部分610到位置615的距離和從圖像部分611到位置615的距離向圖像部分(MCU)610中的塊和向圖像部分(MCU)611中的塊指派不同的預算。在圖6A的實例中,可向圖像部分611中的塊指派較大的預算,因為圖像部分611比圖像部分610更靠近位置615。
例如,由下式給出從圖像部分611到位置615的距離距離=sqrt[(x-x0)2+(y-y0)2];其中(x0,y0)是與位置615相關聯(lián)的坐標,且(x,y)是與圖像部分611相關聯(lián)的坐標,且其中“sqrt”指平方根。接著可使用下式向(x,y)處的塊指派預算預算=a-b*sqrt[(x-x0)2+(y-y0)2];其中“a”和“b”是可編程的常量??蛇x擇“a”和“b”的值,使得計算出正值的預算。
為簡化距離的計算,可代替地使用以下形式的公式
距離=c*abs(x-x0)+d*abs(y-y0);其中“abs”指絕對值,且其中“c”和“d”是可編程的常量。接著可使用下式向(x,y)處的塊指派預算預算=e-c*abs(x-x0)-d*abs(y-y0);其中“e”也是可編程的常量,且其中可選擇“c”、“d”和“e”,使得計算出正值的預算??梢罁?jù)圖像601的形狀選擇“c”和“d”值。舉例來說,對于正方形的圖像,“c”和“d”可以相同,但對于矩形的圖像可以不同。
可將不同的“a”、“b”、“c”、“d”和“e”值應用到不同的圖像組分。也就是說,例如,用于Y塊的“a”、“b”、“c”、“d”和“e”值可不同于用于U塊或V塊的“a”、“b”、“c”、“d”和“e”值。可使用其它計算距離的方法。同樣,可使用并不以與塊相關聯(lián)的圖像部分與位置615之間的距離為基礎的基礎來確定向塊指派的預算的大小。
圖6B是根據(jù)本發(fā)明的一個實施例,可用于實現(xiàn)比率控制的預算的實例的圖。圖6B所說明的預算是累積預算(其中,預算是從一個塊積聚到下一塊的累積值)的實例。在圖6A的實例中,指派給圖像部分中的塊的預算是與所述塊相關聯(lián)的圖像部分與圖6A的位置615之間的距離的函數(shù)。
圖6B的示范性預算對應于圖6A的行620。行620包括圖像部分(MCU)1到11;然而,在圖像中的一行中可具有任何數(shù)目的圖像部分。因為預算是累積預算,所以與用于行620的圖像部分1的塊相關聯(lián)的預算界限一般等于在行620之前編碼的行的末尾處的累積預算加上指派給用于圖像部分1的塊的預算量(假設是以逐行的方式對圖像601進行編碼)。用于行620中的每一連續(xù)的圖像部分的預算增加個別的量,其中所述量是圖像部分與位置615之間的距離的函數(shù)。因此,如圖6B所示,當接近位置615時,累積預算具有較陡的斜度,且距位置615的距離增加時,斜度變得較不陡。
圖7是根據(jù)本發(fā)明的一個實施例,用于壓縮數(shù)據(jù)的計算機實施的方法的流程圖700。圖8是根據(jù)本發(fā)明的另一實施例,用于壓縮數(shù)據(jù)的計算機實施的方法的流程圖800。盡管在流程圖700和800中揭示特定的步驟,但這些步驟是示范性的。也就是說,本發(fā)明良好地適合于執(zhí)行各種其它步驟或流程圖700和800中所述的步驟的變化。應了解,可以不同于所展現(xiàn)的次序的次序執(zhí)行流程圖700和800中的步驟,且沒有必要以所說明的順序執(zhí)行流程圖700和800中的步驟。
首先參考圖7,流程圖700開始于步驟702。在步驟702處,存取具有經(jīng)變換和經(jīng)量化的值的塊(例如,圖4的塊432)。
在圖7的步驟703中,計算塊的預算。所述預算包括指派給塊的預算量,且還可包括來自先前編碼的另一塊的預算的任何剩余部分,如本文先前所述。
在一個實施例中,塊中的值被游程長度編碼。在步驟704中,存取塊中的值,且對與所述值相關聯(lián)的位數(shù)進行計數(shù)。
在步驟706中,來自步驟704的計數(shù)可用于確定是否超過指派給所述塊的預算。如果沒有剩余的預算,或如果剩余的預算并不足以用于待編碼的在步驟704中存取的值,那么流程圖700進行到步驟707。否則,流程圖700進行到步驟708。
在步驟707中,在本實施例中,沒有編碼塊(例如,圖4的塊432)中的剩余值。實質(zhì)上,通過將塊末尾的代碼插入經(jīng)編碼的數(shù)據(jù)中而丟棄剩余的值。流程圖700接著進行到步驟716。
在圖7的步驟708中,在一個實施例中,作出是否已達到或超過預算中的第一閾值的確定。如上文所述,第一閾值確立預算界限的裕度。如果尚未達到或超過第一閾值,那么流程圖700進行到步驟712。否則,流程圖700進行到步驟710。
在步驟710中,作出是否滿足第二閾值的確定。如上文所述,第二閾值對應于與步驟704中存取的值相關聯(lián)的大小(例如,量值或位數(shù))。如果步驟704中存取的值不滿足第二閾值,那么流程圖700返回進行到步驟714。否則,流程圖700進行到步驟712。
在步驟712中,對步驟704中存取的值(“當前的值”)進行編碼,且對經(jīng)編碼的位數(shù)進行計數(shù)。所述計數(shù)包括與當前值相關聯(lián)的位數(shù)以及與塊中的在當前值之前被編碼的任何其它值相關聯(lián)的位數(shù)。所述計數(shù)用于上文的塊706中,以確定是否有足夠的預算剩余來對塊中的下一值進行編碼。
在步驟714中,作出關于當前值是否為塊中的最后的值的確定。如果不是,那么流程圖700返回到步驟704,其中針對塊中的新值開始編碼過程。否則流程圖700進行到步驟716。
在步驟716中,作出塊是否為待編碼的最后的塊的確定。如果是,那么結束流程圖700。否則流程圖700進行到步驟718。
在步驟718中,如果在對塊編碼后有任何的預算剩余,那么將預算的剩余部分添加到指派給具有經(jīng)變換和經(jīng)量化的數(shù)據(jù)值的另一塊(可能為待編碼的下一塊)的預算?;蛘?,預算的剩余部分可保存起來,且在需要時在稍后使用。因此結束對當前塊的編碼,且流程圖700返回到步驟702以進行下一塊的編碼。
現(xiàn)在參看圖8,在步驟802中,存取與第一圖像數(shù)據(jù)塊(例如,圖4的塊432)相關聯(lián)的第一多個經(jīng)變換和經(jīng)量化的值。所述第一塊與圖像中的第一位置相關聯(lián)。
在圖8的步驟804中,對在所述第一塊的游程長度編碼期間被編碼的位數(shù)進行計數(shù)。
在步驟806中,對第一塊的編碼持續(xù)進行,直到達到應用于所述第一塊的預算界限。也就是說,如果所述計數(shù)達到應用于所述第一塊的預算界限,那么對所述第一塊的游程長度編碼終止;如果未達到所述預算界限,那么可對第一數(shù)據(jù)塊的全部進行編碼。
在步驟810中,一旦對第一塊的編碼終止,便存取與第二圖像數(shù)據(jù)塊相關聯(lián)的第二多個經(jīng)變換和經(jīng)量化的值。所述第二塊與圖像中的第二位置相關聯(lián)。
在步驟812中,增加步驟806中提到的預算界限以確立新的界限用于第二塊的編碼。應注意,新界限將包括在第一塊的編碼期間未消耗的預算的任何部分。
在步驟814中,在第二塊的游程長度編碼期間繼續(xù)在步驟804中開始的計數(shù)。如果計數(shù)達到新的界限,那么對第二塊的游程長度編碼結束,否則可持續(xù)進行,直到第二數(shù)據(jù)塊的全部都被編碼。流程圖800以此方式針對待編碼的每一數(shù)據(jù)塊持續(xù)進行。
應了解,由流程圖800描述的方法可經(jīng)擴展以包括上文所述的本發(fā)明的其它特征。舉例來說,當編碼一塊中的經(jīng)變換和經(jīng)量化的值,并對經(jīng)編碼的位數(shù)進行計數(shù)時,可應用第一閾值(在應用于塊的預算界限內(nèi))和第二閾值(對應于被編碼的值的大小),如上文所述。
總之,本發(fā)明的實施例提供用于有效地將圖像數(shù)據(jù)壓縮為目標文件或位流大小,而不需要不必要的迭代且不明顯減少圖像保真度的方法和系統(tǒng)。在一個實施例中,塊中的在游程長度編碼過程中稍后被編碼的,以及一般對應于較少有助于圖像保真度的值的經(jīng)變換和經(jīng)量化的值被丟棄(不被編碼),從而減少壓縮數(shù)據(jù)的量而不明顯降低圖像保真度。在另一實施例中,一般不明顯有助于圖像保真度的“較小”的經(jīng)變換和經(jīng)量化的值(例如,不滿足上文提到的第二閾值的那些值)被丟棄(不被編碼),從而同樣減少壓縮數(shù)據(jù)的量,同時維持圖像保真度。
可在硬件或軟件或其組合中實施根據(jù)本發(fā)明的實施例。舉例來說,可存儲在圖像的編碼期間使用的某些類型的信息,且隨后在圖像的后續(xù)編碼期間使用所述信息,以便通過減少可能需要的迭代的數(shù)目來改進后續(xù)編碼的效率。
盡管針對JPEG編碼進行了描述,但本發(fā)明并不受如此限制。舉例來說,根據(jù)本發(fā)明的實施例還可應用于MPEG(運動圖像專家組)編碼中。
總而言之,本文揭示用于壓縮圖像的方法和系統(tǒng)。存取與圖像數(shù)據(jù)塊相關聯(lián)的多個經(jīng)變換和經(jīng)量化的值。所述塊對應于圖像中的位置。對在所述塊的游程長度編碼期間進行編碼的位數(shù)進行計數(shù)。如果計數(shù)達到界限,那么就終止對所述塊的游程長度編碼。
因此描述本發(fā)明的實施例。雖然已在特定實施例中描述了本發(fā)明,但應了解,不應將本發(fā)明理解為受這些實施例限制,而應根據(jù)所附權利要求書來理解。
權利要求
1.一種壓縮圖像的方法,所述方法包含存取與第一圖像數(shù)據(jù)塊相關聯(lián)的第一多個經(jīng)變換和經(jīng)量化的值,其中所述第一塊對應于所述圖像中的第一位置,所述值的每一者均被表示為位數(shù);和維持對在所述第一塊的游程長度編碼期間被編碼的所述位數(shù)的計數(shù),其中如果所述計數(shù)達到界限,那么終止對所述第一塊的所述游程長度編碼。
2.根據(jù)權利要求1所述的方法,其中所述界限具有根據(jù)所述第一位置確定的值。
3.根據(jù)權利要求1所述的方法,其進一步包含增加所述界限以編碼對應于所述圖像中的第二位置的第二數(shù)據(jù)塊。
4.根據(jù)權利要求1所述的方法,其進一步包含存取與第二圖像數(shù)據(jù)塊相關聯(lián)的第二多個經(jīng)變換和經(jīng)量化的值,其中所述第二塊對應于所述圖像中的第二位置;使所述界限增加一量以確立新的界限用于所述第二塊的編碼;和在所述第二塊的游程長度編碼期間增加所述計數(shù),其中如果所述計數(shù)達到所述新的界限,那么結束所述第二塊的所述游程長度編碼。
5.根據(jù)權利要求4所述的方法,其中根據(jù)所述第二位置來確定所述量。
6.根據(jù)權利要求1所述的方法,其進一步包含針對所述計數(shù)識別第一閾值,所述第一閾值確立所述界限的裕度,其中如果達到所述第一閾值,那么不對未滿足第二閾值的經(jīng)變換和經(jīng)量化的值進行編碼。
7.根據(jù)權利要求6所述的方法,其中將所述第二閾值應用于所述經(jīng)變換和經(jīng)量化的值的大小,其中將未滿足所述第二閾值的經(jīng)變換和經(jīng)量化的值設定為零。
8.根據(jù)權利要求6所述的方法,其中在所述游程長度編碼期間改變所述第二閾值。
9.根據(jù)權利要求1所述的方法,其中所述第一塊對應于所述圖像中的第一位置,其中所述第一塊是多個圖像數(shù)據(jù)塊中對應于所述第一位置的一個塊,其中在所述多個塊中的每一塊的游程長度編碼期間被編碼的位數(shù)服從各自的界限。
10.根據(jù)權利要求1所述的方法,其進一步包含接收未經(jīng)壓縮的圖像數(shù)據(jù)塊;使用離散余弦變換對所述未經(jīng)壓縮的圖像數(shù)據(jù)進行變換以產(chǎn)生經(jīng)變換的數(shù)據(jù);和對所述經(jīng)變換的數(shù)據(jù)進行量化以產(chǎn)生所述經(jīng)變換和經(jīng)量化的數(shù)據(jù)。
11.一種壓縮包含第一多個經(jīng)變換和經(jīng)量化的數(shù)據(jù)塊的圖像數(shù)據(jù)的方法,所述方法包含將第一預算指派給所述第一多個塊中的第一塊,其中所述第一預算包含對可用于編碼所述第一塊的位數(shù)的界限;和對所述第一塊進行編碼,其中如果沒有超過指派給所述第一塊的第一預算,那么對所述第一塊的所述編碼就持續(xù)進行,其中否則將停止對所述第一塊的所述編碼。
12.根據(jù)權利要求11所述的方法,其進一步包含將在對所述第一塊的所述編碼后剩余的所述第一預算的一部分添加到指派給所述第一多個塊中的第二塊的第二預算。
13.根據(jù)權利要求11所述的方法,其中所述第一塊包含多個經(jīng)變換和經(jīng)量化的值,所述經(jīng)變換和經(jīng)量化的值中每一者由各自的位數(shù)表示,其中所述編碼進一步包含選擇經(jīng)變換和經(jīng)量化的值;和使所述第一預算減少與所述經(jīng)變換和經(jīng)量化的值相關聯(lián)的位數(shù)。
14.根據(jù)權利要求13所述的方法,其進一步包含識別所述第一預算中的第一閾值,其中如果達到所述第一閾值,那么在所述游程長度編碼期間不選擇未滿足第二閾值的經(jīng)變換和經(jīng)量化的值。
15.根據(jù)權利要求14所述的方法,其中所述第二閾值對應于所述經(jīng)變換和經(jīng)量化的值的大小,且其中將未滿足所述第二閾值的經(jīng)變換和經(jīng)量化的值設定為零。
16.根據(jù)權利要求14所述的方法,其中相對于所述第二閾值測量所述經(jīng)變換和經(jīng)量化的值的大小,且其中將未滿足所述第二閾值的經(jīng)變換和經(jīng)量化的值設定為零。
17.根據(jù)權利要求14所述的方法,其進一步包含在所述編碼期間改變所述第二閾值。
18.根據(jù)權利要求11所述的方法,其中所述第一塊對應于圖像中的一位置,且其中所述第一預算具有對應于所述位置的值。
19.根據(jù)權利要求11所述的方法,其中所述第一塊對應于圖像中的一位置,其中所述第一塊是第二多個塊中的對應于所述位置的一個塊,且其中所述第二多個塊中的每一塊在編碼期間服從各自的預算。
20.一種系統(tǒng),其包含存儲器;和處理器,所述處理器用于執(zhí)行壓縮圖像的方法,所述方法包含存取與第一圖像數(shù)據(jù)塊相關聯(lián)的第一多個經(jīng)變換和經(jīng)量化的值,其中所述第一塊對應于所述圖像中的第一位置,所述值的每一者均被表示為位數(shù);和維持對所述第一塊的游程長度編碼期間被編碼的所述位數(shù)的計數(shù),其中如果所述計數(shù)達到界限,那么終止對所述第一塊的所述游程長度編碼。
21.根據(jù)權利要求20所述的系統(tǒng),其中所述界限具有根據(jù)所述第一位置確定的值。
22.根據(jù)權利要求20所述的系統(tǒng),其中增加所述界限以編碼對應于所述圖像中的第二位置的第二數(shù)據(jù)塊。
23.根據(jù)權利要求20所述的系統(tǒng),其中所述方法進一步包含存取與第二圖像數(shù)據(jù)塊相關聯(lián)的第二多個經(jīng)變換和經(jīng)量化的值,其中所述第二塊對應于所述圖像中的第二位置;使所述界限增加一量以確立新的界限用于所述第二塊的編碼;和在所述第二塊的游程長度編碼期間增加所述計數(shù),其中如果所述計數(shù)達到所述新的界限,那么結束所述第二塊的所述游程長度編碼。
24.根據(jù)權利要求23所述的系統(tǒng),其中根據(jù)所述第二位置來確定所述量。
25.根據(jù)權利要求20所述的系統(tǒng),其中所述方法進一步包含針對所述計數(shù)識別第一閾值,所述第一閾值確立所述界限的裕度,其中如果達到所述第一閾值,那么就不對未滿足第二閾值的經(jīng)變換和經(jīng)量化的值進行編碼。
26.根據(jù)權利要求25所述的系統(tǒng),其中將所述第二閾值應用于所述經(jīng)變換和經(jīng)量化的值的大小,其中未滿足所述第二閾值的經(jīng)變換和經(jīng)量化的值被設定為零。
27.根據(jù)權利要求25所述的系統(tǒng),其中在所述游程長度編碼期間改變所述第二閾值。
28.根據(jù)權利要求20所述的系統(tǒng),其中所述第一塊對應于所述圖像中的第一位置,其中所述第一塊是多個圖像數(shù)據(jù)塊中的對應于所述第一位置的一個塊,其中在所述多個塊中的每一塊的游程長度編碼期間被編碼的所述位數(shù)服從各自的界限。
全文摘要
本發(fā)明描述用于壓縮圖像的方法和系統(tǒng)(100)。存取與圖像數(shù)據(jù)塊相關聯(lián)的多個經(jīng)變換和經(jīng)量化的值。所述塊對應于所述圖像內(nèi)的位置。對在所述塊的游程長度編碼(333)期間被編碼的位數(shù)進行計數(shù)。如果所述計數(shù)達到界限,那么就終止所述塊的游程長度編碼(333)。
文檔編號G06K9/46GK101036151SQ200580033535
公開日2007年9月12日 申請日期2005年10月5日 優(yōu)先權日2004年10月8日
發(fā)明者伊格內(nèi)修斯·B·錢德拉蘇維塔, 鐘樂凡 申請人:輝達公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1