專利名稱:圖象處理方法和設備、計算機程序、以及存儲介質的制作方法
技術領域:
本發明的領域本發明涉及一種具有在預定的編碼量之內對圖象數據進行壓縮編碼的功能的圖象處理設備。
本發明的背景傳統上,作為靜止圖象壓縮方案,在許多情況下都采用利用離散余弦變換的JPEG方案和采用利用小波變換的一種方案。這種類型的編碼方案是一種可變長度的編碼方案,因而碼的量對于所要編碼的各個圖象是不同的。
根據作為一種內部標準化方案的JPEG方案,對于一個圖象只能定義一個量化矩陣。因而,如果這種方案被應用于在沒有預掃描的情況下不能對編碼量進行調節且把碼存儲在一個有限的存儲器中的系統,就可能發生存儲器的溢出。
為了防止這種情況,傳統的方案采用了其中當實際的編碼量超過了一個期望的編碼量且在壓縮率改變時對原件進行再讀取的一種方法、通過預掃描和再設定量化參數預先估計一個編碼量以調節該編碼量的一種方法等等。
作為采用預掃描的一種編碼量控制方案,例如,有在一個內部緩存存儲器中存儲預壓縮的數據、對該數據進行解壓縮、在改變壓縮參數使對其進行完全壓縮、以及把所產生的數據輸出到一個外部存儲器的方案。在此情況下,完全壓縮中的壓縮率比在預壓縮時的壓縮率高。
已知的還有另一種方案,其中獲得對各個象素塊的一個可允許的編碼量,且通過對DCT系數進行n次移動而獲得的系數受到Huffman編碼以減小編碼量。這種移動量n是從可允許的編碼量而確定的。
然而,傳統上,作為壓縮緩存器,需要容量比目標壓縮容量大的壓縮緩存器,且不可避免地需要具有足以記錄原始圖象數據的來容量的一個緩存器,以防止中間緩存器的溢出。
另外,在重復編碼操作的該方法中,由于對于所有壓縮數據進行解壓縮和再壓縮操作,不能期望連續處理的速度能夠提高。
本發明的概述本發明就是在考慮到上述現有技術而做出的,且本發明的目的是提供一種圖象處理設備-該設備能夠通過一次輸入圖象數據而有效地產生在一個設定的大小之內的編碼數據、一種計算機程序、以及一種存儲介質。
根據本發明,前述目的是通過提供一種圖象處理設備而實現的,該設備用于輸入圖象數據并對該數據進行壓縮-編碼,包括第一壓縮裝置,它能夠改變用于確定一個壓縮率的一個參數;第二壓縮裝置,它能夠改變用于確定一個壓縮率的一個參數、對被第一壓縮裝置所壓縮的編碼數據進行解碼、并對該數據進行再壓縮;監測裝置,用于在一個輸入頁的圖象數據被第一壓縮裝置所壓縮的同時對一個編碼數據進行監測并判定該編碼數據量是否已經達到一個預定的量;設定裝置,用于當該監測裝置探測到該編碼數據量已經在該頁的壓縮期間達到該預定量時設定一個參數以增大第一和第二壓縮裝置中的一個壓縮率;以及,控制裝置,用于當該參數被該設定裝置所改變時,使該第二壓縮裝置對在該參數被改變之前由該第一壓縮裝置所產生的編碼數據進行再編碼、在第一壓縮裝置中的該參數被改變之后把該再編碼的數據作為編碼數據而存儲起來、以及把在該參數被改變之后由第一編碼裝置產生的編碼數據作為隨后的編碼數據而存儲起來。
為了實現上述目的,本發明的圖象處理設備具有以下的設置。
從以下結合附圖所進行的描述,本發明的其他特征和優點將變得顯而易見;在以下的附圖中,相同的標號表示相同或類似的部分。
附圖的簡要描述
圖1是框圖,顯示了根據第一實施例的一種圖象處理設備的設置;圖2是框圖,顯示了根據第二實施例的一種圖象處理設備的設置;圖3是簡單地顯示第一實施例的處理的一個流程圖;圖4顯示了在第一實施例中在初始狀態下的一個編碼階段中存儲器的內容和數據流;圖5顯示了在第一實施例中在一種編碼/再編碼階段中存儲器的內容和數據流;圖6顯示了在第一實施例中在一種傳送階段中存儲器的內容和數據流;圖7顯示了在第一實施例中在該傳送階段之后的一個編碼階段中這些存儲器的內容和數據流;圖8是流程圖,顯示了第一實施例中的處理的細節;圖9顯示了在第一實施例的一種修正中在一種編碼/再編碼階段中這些存儲器的內容和數據流;圖10顯示了在第一實施例的該修正中在一種傳送階段中這些存儲器的內容和數據流;圖11顯示了在第一實施例的該修正中在該傳送碼階段之后這些存儲器的內容和數據流;圖12是流程圖,顯示了在第二實施例中的一個處理過程;圖13顯示了在第二實施例中的初始狀態下在一個編碼階段中的存儲器的內容和數據流;圖14顯示了在第二實施例的一個傳送階段中這些存儲器的內容和數據流;圖15顯示了在第二實施例中的一種編碼/再編碼階段中這些存儲器的內容和數據流;圖16顯示了在第二實施例中在該編碼/再編碼階段之后的一個編碼階段中這些存儲器的內容和數據流;圖17是框圖,顯示了根據第三實施例的一個圖象處理設備的設置;
圖18是框圖,顯示了根據第四實施例的一種圖象處理設備的設置;圖19是框圖,顯示了應用第三實施例的一種圖象處理設備的詳細設置;圖20顯示了第三實施例中在一個存儲器溢出時的一個場景表的內容;圖21是曲線圖,顯示了第三實施例中的一個編碼量的過渡;圖22A至22D用于說明用于在第三實施例中對直流成分進行編碼的一種結構的操作;圖23用于說明第三實施例中用于對交流成分進行處理的一種處理過程;圖24用于顯示用于DCT系數的一種之字形掃描;圖25用于顯示用于對交流成分進行分類的一個表;圖26用于顯示具有運行長度和大小的將要被查詢的一個Huffman編碼表的部分;圖27是曲線圖,顯示了第二實施例中編碼處理與存儲器占用比值之間的關系。
最佳實施例的詳細描述以下結合附圖詳細描述本發明的實施例。
圖1是根據一個實施例的一種圖象處理設備100的一種功能框圖。
在此實施例中的圖象處理設備100包括用于從一個圖象掃描儀輸入一個圖象的一個輸入單元101。在此實施例中,具體地,采用用于連續地讀取圖象的掃描儀。然而,輸入單元101也可以借助頁描述語言渲染(rendering)而輸入圖象數據,或讀取存儲在一個存儲介質中的圖象文檔。在某些情況下,輸入單元101可以從一個網絡接收圖象數據。
一個編碼單元102在幀(頁)的情況下對輸入的圖象數據進行編碼。要注意的是,在此實施例中,一種已知的JPEG編碼方案被用作編碼方案。另外,該圖象數據可以受到按照8×8象素的正交變換,且所產生的數據受到采用一個量化級(將要在后面描述)的量化處理和Huffman編碼處理。
一個第一存儲控制單元103和一個第二存儲控制單元105進行控制,從而把從編碼單元102輸出的上述編碼數據(相同的編碼數據)分別存儲在一個第一存儲器104和一個第二存儲器106中。在此情況下,第一存儲器104是用于保持最后確認(壓縮在一個目標數據量之內)的編碼數據的存儲器,以使該編碼數據能夠被輸出到一個網絡設備、圖象輸出設備、大體容量存儲設備、等等連接到圖1所示的基本設置的外部設備。第二存儲器106是一個工作存儲器,用于幫助進行壓縮編碼,以形成第一存儲器中的編碼數據。
一個計數器107對編碼單元102所壓縮-編碼的圖象數據的數據量進行計數,并保持該計數值。計數器107還把計數結果輸出到一個編碼序列控制單元108,用于對一個編碼序列進行控制。
編碼序列控制單元108按照頁對計數器107的計數值是否達到了一個設定值(目標值)進行探測。在探測到該計數值已經達到(超過)一頁的編碼數據長度的該設定值時,編碼序列控制單元108輸出一個控制信號給第一存儲控制單元103,從而放棄存儲在第一存儲器104中的數據。第一存儲控制單元103,通過根據這種控制信號而清除存儲器地址計數器或編碼數據管理表,而放棄存儲的數據。此時,編碼序列控制單元108把計數器107清除至零(從輸入單元101連續地輸入數據),并還對編碼單元102進行控制以便以更高的壓縮率對數據進行編碼。即,編碼序列控制單元108進行控制,以最終把通過在此設備中進行編碼處理而產生的編碼數據的數據量減小至1/2。顯然,這種值可以被設定為1/2以外的任何值。
在壓縮率被改變之后獲得的編碼數據(一頁的(n-100)%部分)也通過第一和第二存儲控制單元103和105而被存儲在第一和第二存儲器104和106中。
另外,編碼序列控制單元108使第二存儲控制單元105讀出存儲在第二存儲器106中的編碼數據(一頁的(0-n)%部分),并把一個控制信號輸出到作為一個編碼數據轉換裝置的一個再編碼單元109,從而輸出該編碼數據。
再編碼單元109對輸入的編碼數據進行解碼(只進行熵解碼)并進行再量化(刪除各個量化的值的較低的位)以減小數據量。再編碼單元109隨后再次進行編碼處理(熵編碼)并以與編碼單元102的壓縮率相同的壓縮率輸出一個數據量至一個第二計數器110,編碼單元102的該壓縮率已經被改變。
從這種再編碼單元109的輸出的編碼數據通過第一和第二存儲控制單元103和105而被存儲在第一和第二存儲器104和106中。
第二存儲控制單元105探測再編碼處理是否已經結束。更具體地說,當沒有需要讀出以進行再編碼處理的數據時,第二存儲控制單元105把再編碼處理的結束通知給編碼序列控制單元108。實際中,當再編碼單元109進行的處理和第二存儲控制單元105進行的處理結束時,編碼處理完成。
在再編碼處理完成時,第二計數器110所獲得的計數值被加到計數器107所保持的計數值上。這種相加的結果表示了剛好在再編碼處理完成之后第一存儲器104中的數據量的和。即,當對一個幀(頁)的編碼處理被編碼單元102和再編碼單元109所完成時,在上述相加之后第一計數器107中保持的計數值表示了當該設備編碼了一幀數據(以下在以下描述)時所產生的數據的總量。
只要還有來自輸入單元101的應該被編碼的數據,編碼單元102就繼續進行編碼處理,不論再編碼處理是否結束還是沒有結束。
第一計數器107的計數值是否已經達到一個給定的設定值被反復地檢查,直到從輸入單元101輸入的1幀(頁)圖象數據的編碼處理(編碼和再編碼)結束。上述的編碼/再編碼處理,是按照與這種操作所獲得的探測結果相應的控制操作,而得到執行的。
圖8是流程圖,顯示了圖1所示的設置中的處理的流程。為了描述的方便,將首先結合圖3的簡化流程圖而描述這種處理。
如已經描述的,本發明的圖象處理設備100用于把從諸如一個掃描儀的輸入單元101輸入的1幀(頁)圖象數據壓縮-編碼成具有一個預定的數據量或更少的數據。為了實現這種編碼處理,該設備包括編碼單元102、再編碼單元109、第一存儲器104、第二存儲器106、等等,以及輸入單元101。編碼處理是通過根據圖3所示的流程圖而利用這些功能塊進行的。
圖3的流程圖被大體分成以下三個處理階段(1)一個編碼階段,(2)一個編碼/再編碼階段,以及(3)一個傳送階段。
圖4至7可視且簡單地顯示了圖象數據、編碼數據、等等數據流是如何被處理的以及它們是如何在各處理階段中被存儲在存儲器中的。
圖4顯示了與圖3的流程圖中的步驟S303和S305相應的編碼階段的初始狀態。圖5顯示了與圖5中的步驟S305至S315相應的編碼/再編碼階段的處理狀態。圖6顯示了與步驟S317相應的傳送階段的處理狀態。圖7顯示了在傳送階段之后的編碼階段的處理狀態。以下描述各個階段。(編碼階段)1頁圖象數據的編碼處理開始于編碼參數的初始化(步驟S301)。在此情況下,將要被設定的參數包括一個編碼數據量的上限(它由受到編碼處理的一個圖象的大小(即從輸入單元101讀取的一張紙的大小)唯一地確定),且施加于編碼單元102的一個量化級(Q1)得到設定(假定在此實施例中單元102采用了一種已知的JPEG編碼方案),等等。
在步驟S303,實際的編碼處理(基于8×8象素的JPEG壓縮)得到進行,且第一計數器107對編碼數據的輸出的數據量進行累積計數。
在步驟S305,檢查數據量的計數值是否已經超過了上述上限。如果步驟S305為“否”,步驟S303的JPEG編碼處理繼續進行。這是在初始狀態下的編碼階段。
從編碼單元102輸出的編碼數據被存儲在第一和第二存儲器104和106中,如圖4所示。被縱向的條所表示的區域表示了存儲的編碼。(編碼/再編碼階段)隨著編碼單元102進行的一個編碼處理的進行和數據量的計數值超過了檢測至上限,第一存儲器104中的編碼數據在步驟S307被放棄。另外,編碼單元102的量化級在步驟S309被改變至Q2。
編碼數據的數據量的計數值超過了設定的上限,表明在壓縮之后的數據量到達了一個目標值之外。由于繼續利用相同的量化級進行編碼處理已經沒有用處,量化級被改變到量化級Q2-它的量化級比量化級Q1的大,從而進一步減小數據量。
在量化級被改變之后,編碼單元102所進行的編碼處理在步驟S311被恢復,且編碼數據只被存儲在第二存儲器106中,如圖5所示。與這種操作同時地,步驟S313中的再編碼處理得到進行。如果需要連續地處理多個頁,步驟S311和S313的并行處理變為本發明的一個非常重要的特征。這使得可以高速地產生由一頁的(0-n)%部分(再編碼數據)和(n-100)%部分(非再編碼數據)構成的編碼數據。在該再編碼處理中,已經被存儲在第二存儲器106中的編碼數據被讀出,且再編碼單元109對該數據進行再編碼并把編碼數據存儲在兩個存儲器104和106中。這種編碼處理和再編碼處理被連續進行,直到縱向的條I所表示的所有碼都被再編碼。從再編碼單元109輸出的再編碼的數據是與這樣的編碼數據相同的編碼數據,即該這樣的編碼數據是通過其量化級與在量化級被改變之后從編碼單元102輸出的編碼數據的量化級相同的編碼所獲得的。
更具體地說,在此再編碼處理中,通過對編碼數據進行Huffman解碼,對所獲得的各個量化值進行位移動處理,從而獲得與通過用2n除各個值而獲得的結果相同的結果。在這種操作之后,再次進行Huffman編碼。這種方法使得能夠進行高速的再編碼處理,因為量化級只由位移動改變且不進行逆正交變換或再次的正交變換。再編碼處理的結束在步驟S315被探測到。
由于在再編碼之后的數據量變得小于再編碼之前的編碼數據的數據量,再編碼的數據可被蓋寫到再編碼之前的碼所存儲到的存儲區上。在再編碼處理結束時,縱向條I所表示的編碼數據的數據量被減小至圖6的傾斜條I所表示的編碼數據的數據量。
上述的步驟S307和S315是在編碼/再編碼階段中進行的處理。(傳送階段)當再編碼處理結束時,在步驟S317進行傳送處理。在此傳送處理中,如圖6所示,傾斜條II所表示的、在編碼/再編碼階段中只被存儲在第二存儲器106中的編碼數據,被傳送到一個地址-在該地址數據與第一存儲器104中的由傾斜條I所表示的編碼數據相連接,并被存儲在該地址。同時,傾斜條II所表示的編碼數據被傳送到第二存儲器106,以得到連接從而使傾斜條I所表示的編碼數據和傾斜條II所表示的編碼數據-它們散布在第二存儲器106中-被連續地存儲在第一存儲器104中。這種處理是在傳送階段中進行的。
當上述傳送階段結束時,流程返回到步驟S303和S305的編碼階段以從編碼單元102輸出圖7中的傾斜條IV所表示的碼并把這些碼存儲在兩個存儲器104和106中。在此編碼階段,與初始狀態下的編碼階段(圖4)不同地,在利用編碼單元102的編碼數據中的量化級從Q1改變到Q2,且存儲在兩個存儲器104和106中的編碼數據是在各種階段中得到處理的一組碼。如果這些不同被忽略,剛好在傳送階段之后的編碼階段可被認為是與在初始階段的編碼階段相同。
通過重復這三個階段,即編碼階段、編碼/再編碼階段、以及傳送階段,通過把1頁的圖象數據壓縮成一個設定的數據量或更少而獲得的碼可被存儲在第一存儲器中。另外,輸入單元101只繼續進行輸入操作至一系列的操作的結束。即,一個圖象不需要被重新從頭輸入。
圖3所示的流程圖只描述了與圖4、5和6中所示的各個階段相應的處理。然而,在實際中,1頁圖象數據的輸入在某些階段結束。根據輸入操作的結束所在的階段,隨后的處理略微有所不同。圖8的流程圖顯示了考慮到這點的處理的流程。圖8的流程圖是基于1頁圖象數據的輸入的完成與結合圖3描述的各種處理的關系。在此情況下,步驟S801、S803、S805和S807被加到圖3的流程圖上。
在步驟S801、S803和S805,檢查從輸入單元101輸入的1頁圖象數據是在編碼階段、編碼/再編碼階段、和傳送階段中被完成。
如果探測到1頁圖象數據的輸入在編碼階段和傳送階段中被完成(步驟S801和S805),流程進行到步驟S807以結束對該頁的壓縮編碼處理。如果有將要隨后處理的1頁圖象數據或更多數據,對該下一個1頁圖象數據的壓縮編碼處理得到開始。如果沒有將要處理的數據,一個中止狀態得到設定。
如果在編碼/再編碼階段中探測到了1頁圖象數據的輸入的結束(步驟S803),編碼單元102的操作需要被停止,直到沒有需要被再編碼的圖象數據。因此,步驟S311中的編碼處理被通過,且只有再編碼處理在步驟S313被繼續以把已經被編碼單元102編碼的圖象數據壓縮到一個預定的編碼數據量之內。如果隨后的傳送處理在所有再編碼處理都結束之后不被結束,則1頁圖象數據的整個編碼數據不在第一存儲器中被匯集,在1頁圖象數據的輸入結束之后再編碼處理和隨后的傳送處理必須被繼續進行。在此情況下,如果在步驟S315探測到所有的再編碼處理都被結束,只存儲在第二存儲器106中的編碼數據在編碼/再編碼階段中被傳送到第一存儲器(步驟S317)。隨后,在步驟S805,1頁圖象數據的輸入的結束被探測到。流程隨后進行到步驟S807。
以上的描述是對在此實施例中的操作和圖8中的操作進行的。(存儲器存儲方法的修正)
圖9和10顯示了圖5和6的示意圖所表示的存儲器存儲方法的一種修正。
參見圖5的示意圖,在編碼/再編碼階段,從編碼單元102輸出的編碼數據只被存儲在第二存儲器106中。然而,如圖9所示,在編碼/再編碼階段,從編碼單元102輸出的編碼數據被直接存儲在第一和第二存儲器中。
當從編碼單元102看時,在任何階段中被編碼和輸出的數據被存儲在兩個存儲器中。與圖6的示意圖不同,在傳送階段中不需要進行這些存儲器之間的數據傳送,如圖10所示。另外,根據這種修正,在該編碼/再編碼階段,編碼數據和再編碼數據按照它們被傳送的順序而被依次存儲在第一存儲器104中。因此,兩種類型的數據被混合。
在此修正中,為了解決這個問題,編碼數據被分成一定的單元數據,以作為文檔或包而得到管理。更具體地說,這樣的單元數據通過分別形成例如一個文檔管理表或包管理表而得到管理。
根據一種技術,當來自編碼單元102的數據將要被存儲在第一存儲器104中時,從各適當的單元數據的開始處起,管理號被分配給圖象數據(例如,8×i(i=整數1,2,……)-行數據,因為正交變換的單位是8×8塊),且一個管理表被形成,該表能夠按照管理號的順序而存儲與相應的管理號相應的編碼數據的開始地址和相應的編碼數據量。
編碼單元102和再編碼單元109保持正在被處理的數據的管理號并根據該管理號把編碼數據的存儲開始地址和編碼數據量寫入管理表。借助這種操作,即使編碼單元102和再編碼單元109所處理的編碼數據是被隨機地存儲的,該編碼數據也能夠通過按照管理號的順序對管理表進行訪問并根據開始地址和此時讀出的編碼數據量,而從圖象的開始處起被依次地從第一存儲器104讀出。這樣的管理機制將不再需要把一個圖象的連續的數據以連續的順序存儲在一個存儲器中。
圖10的示意圖中的傳送階段之后的編碼階段幾乎與上述的兩個編碼階段(圖4和7)相同,只是在第一存儲器中的碼的存儲開始處略微不同于圖11所示的情況。因此,前述的描述和這種修正在重復這三個階段上是相同的。(第二實施例)以下結合圖2描述用于進行表征本發明的編碼處理的第二基本設置。
圖2是框圖,顯示了根據第二實施例的一種圖象處理設備200。
圖象處理設備200與圖1的圖象處理設備100的一個大的不同,是用于首先進行編碼的兩個編碼單元被彼此并聯。圖象處理設備200,通過使第一和第二編碼單元202和205同時對從輸入單元201輸入的圖象數據進行編碼,而產生具有不同的壓縮率的兩種編碼數據。在此實施例中,同樣地,一種已知的JPEG編碼方案被用作一個編碼方案,圖象數據受到基于8×8象素的正交變換,且所產生的數據受到利用量化級(將要在后面描述)的量化和Huffman編碼處理的。
應注意的是,第二實施例將示例性代表這樣的情況,即其中為第二編碼單元205設定了比第一編碼單元202高的一個壓縮率。更具體地說,設Q1為第一編碼單元202中的量化級,且Q2(=2×Q1)是第二編碼單元205中的量化級。
從第一編碼單元202輸出的編碼數據通過一個第一存儲控制單元203而被存儲在一個第一存儲204中。此時,一個第一計數器208對從第一編碼單元202輸出的編碼數據的數據量進行計數并存儲該數據量,并將其輸出到一個編碼序列控制單元209。
被第二編碼單元205編碼的數據通過一個第二存儲控制單元206而被存儲在一個第二存儲器207中。此時,一個第二計數器210對從第二編碼單元205輸出的編碼數據的數據量進行計數并將其保持。當存儲在第二存儲器207中的編碼數據被傳送到第一存儲204時,第二計數器210把上述計數值傳送到第一計數器208。
當第一計數器208的計數值達到一個一定的設定值且計數器208正在計數從第一編碼單元202輸出的編碼數據的數據量時,編碼序列控制單元209向第一存儲控制單元203輸出的控制信號,從而象在第一實施例中那樣排放存儲在第一存儲204中的數據。
編碼序列控制單元209隨后把控制信號輸出至存儲器控制單元206和存儲器控制單元203,從而讀出存儲在第二存儲器207中的編碼數據并將其傳送到第一存儲204。結果,第二計數器210的計數值被傳送到第一計數器208,且該值作為第一計數器的計數值而被裝載(蓋寫)。
總之,由于第二計數器210的計數值代表了存儲在第二存儲器207中的編碼數據的數據量,可以認為該計數值和編碼數據被直接復制到第一計數器和第一存儲器,而沒有改變它們的對應值或數據。
另外,編碼序列控制單元209把控制信號輸出到第一編碼單元202和第二編碼單元205,以對數據進行編碼從而減小數據量。
例如,第一編碼單元202和第二編碼單元205中的量化級S被加倍。結果,第一編碼單元202采用第二編碼單元205中的量化級Q2(=2×Q1),而第二編碼單元205在考慮到下一個溢出的情況下通過利用一個更大的量化級Q2×2而以高的壓縮率進行編碼處理。
在此情況下,這兩個量化級之間的放大率被設定為2。但顯然,該放大率可被設定為任意的值。在量化級的切換時從各編碼單元202和205輸出的編碼數據,通過相應的存儲器控制單元203和206,而分別被存儲在相應的存儲器204和207中。
編碼序列控制單元209把一個控制信號輸出至存儲器控制單元206,以讀出已經被存儲在第二存儲器中的編碼數據并將其送到一個再編碼單元211。再編碼單元211,以與圖1中的再編碼單元109相同的方式,對該編碼數據進行再編碼處理。
一個第三計數器212對從再編碼單元211輸出的數據的量進行計數。第三計數器212剛好在再編碼處理被開始之前被復位至零,并對再編碼處理期間的輸出數據的量進行計數。在該再編碼處理完成時,第三計數器212把所獲得的計數值傳送到第二計數器210。
第二計數器210,通過把傳送的數據量計數值和保持在第二計數器210中的計數值相加,而計算編碼數據和存儲在第二存儲器207中的再編碼數據的總數據量。即,存儲在存儲器207中的數據量與計數器210的計數值一致。
如果有來自輸入單元201的、將要被編碼的圖象數據,兩個編碼單元202和205所進行的編碼處理被繼續進行,而不論再編碼處理是否被終止。計數器208的計數值是否達到了一個一定的設定值被反復地監測,直到對從輸入單元201輸入的1頁圖象數據的編碼處理(編碼和再編碼)完成。上述的編碼/再編碼處理根據與在此操作中獲得的探測結果相應的控制操作而得到執行。
圖12是顯示圖2所示的設置中的處理的流程圖。
如果有結合圖2描述的兩個編碼單元,1頁圖象數據根據圖12的流程圖而得到編碼。應該注意的是,結合圖12所進行的大部分描述都與結合圖8所進行的描述類似(圖8是對其中采用一個編碼單元的情況的流程圖),且本領域的技術人員完全能夠從上述描述理解第二實施例的特征。因此,將分三個階段來描述該處理,就象其中采用一個編碼單元的情況那樣,且以下將主要描述與圖8的情況下不同點。
圖8的流程與本實施例的流程的最大不同,是步驟S317中的傳送處理被移到了步驟S307與步驟S309之間。即,可以認為是把編碼/再編碼階段與傳送階段進行了互換(除了步驟S307中的編碼數據的放棄處理之外)。
在步驟S301的初始化編碼參數中,量化級Q1和量化級(=2×Q1)分別被設定在第一編碼單元202和第二編碼單元205中。
在該編碼階段,步驟S801、S303和S305被重復地執行。雖然步驟S801和S305中的處理與一個編碼單元的情況下的相同,只有步驟S303中的編碼處理不同,如圖13所示。
為了以步進的方式增大所要存儲的編碼數據的壓縮率,以與最低壓縮率相應的量化級Q1得到編碼的數據,作為第一編碼數據,被存儲在第一存儲204中,且以量化級Q2編碼的數據被存儲在第二存儲器中。
如果存儲在第一存儲204中的數據的數據量超過了一個設定的上限(步驟S305),保持在第一存儲204中的編碼數據立即被放棄(步驟S307),且被保持在第二存儲器207中的具有高壓縮率的編碼數據被傳送到第一存儲204(見圖14中的步驟S317)。這使得可以迅速地把第二種適當的候選編碼數據(它不超過該上限)存儲在第一存儲204中,而不用等到第一實施例中描述的第一再編碼處理的結束(圖1)。這是采用圖2所示的設置-它與圖1的設置相比具有兩個編碼單元-的一個最大的優點。
該第二實施例是基于這樣的想法-即使具有相同的壓縮率的編碼數據處于兩個存儲器204和207中是無用的,因而其壓縮率比存儲在第一存儲204中的編碼數據的壓縮率高的編碼數據被存儲在第二存儲器207中。隨后的處理因而是根據這種想法進行的。在第二存儲器207中的編碼數據至第一存儲204的傳送被完成之后(傳送階段),第二存儲器207中的編碼數據被再編碼,以保持其壓縮率增大了一個量化級的編碼數據。
更具體地說,如圖15所示,在傳送階段之后的編碼/再編碼階段,在再編碼之前,在兩個編碼單元202和205中設定的量化級Q1和Q2分別被改變至Q2和Q3(步驟S309)。如果1頁圖象數據被不停地連續輸入(步驟S803),作為輸入數據的隨后的圖象數據被其中設定了新的量化級的兩個編碼單元所編碼(步驟S311),且所產生的數據被分別存儲在相應的存儲器204和207中。與上述編碼處理同時地,存儲在第二存儲器中的編碼數據(被傳送到第一存儲204中的數據)被再編碼單元211所再編碼(步驟S313),以把該數據改變成具有其壓縮率比第一存儲器中的編碼數據的壓縮率高一個量化級的數據,從而獲得以量化級Q3編碼的數據。該再編碼的數據隨后被存儲在第二存儲器207中。
在第二實施例中,象在第一實施例中一樣,在此再編碼處理中,通過對編碼數據進行臨時Huffman解碼,對所獲得的每一個量化值進行位移動處理,從而獲得與通過用2n除各個值而獲得的結果相同的結果。在此操作之后,Huffman編碼被再次進行。這種方法使得能夠進行高速的再編碼處理,因為量化級只通過位移動而得到改變,且既不進行反正交變換也不進行再正交變換。
應該注意的是,如果象第二實施例中那樣有兩個編碼單元,編碼數據和再編碼數據可被混合并存儲在第二存儲器207中,如圖15所示。因而,如上所述,編碼數據必須被分成一定的單元以作為文檔或包而在第二存儲器207中得到管理。為此,可提供與第一實施例的修正中相同的設置。
參見圖12,當在步驟S315探測到再編碼處理的結束時,流程移到編碼階段(步驟S801和S303)。應該注意的是,在編碼/再編碼階段之后的編碼階段,保持在兩個存儲器204和207中的編碼數據的壓縮率和它們的編碼數據混合方式(地址)是不同的,如圖16所示。因而,如果將要被存儲在第一存儲204中的數據的量超過了一個設定值,被保持在第二存儲器207中的編碼數據(在水平帶VI+VIII所表示的區域中的碼)需要被傳送到第一存儲204。考慮到這些,編碼數據必須以文檔或包的形式在第一存儲204和第二存儲器207中得到管理。因而第一存儲204要求采用上述管理表的一種管理機制。
圖16中所示的編碼階段的狀態與編碼階段的初始狀態(圖13)相同,只是量化級和編碼數據的混合方式在再編碼處理之前和之后有不同。因此,通過重復該編碼階段、傳送階段、以及編碼/再編碼階段,通過把1頁圖象數據壓縮到一個設定的上限或較小而獲得的編碼數據可被可靠地存儲在第一存儲204中。
由于傳送階段和編碼/再編碼階段是與在第一實施例中的順序相反的順序進行的,在圖8的傳送處理之后進行的1頁圖象數據的輸入的結束的探測(步驟S805),是在幾乎與在編碼/再編碼階段(步驟S803)中進行的1頁圖象數據的輸入的結束的探測相同的時序進行的。這兩個探測操作,在功能上幾乎與步驟S805相同,且在時序上幾乎與步驟S803相同。這兩個步驟因而被結合成探測1頁圖象數據的輸入的結束的一個新的步驟。這種步驟被表示為步驟S1201。
在第一和第二實施例中,第一和第二存儲器被描述為在物理上不同的存儲器。這使得可以對這兩個存儲器獨立地進行訪問。這種優點是本發明的一個特征。然而,本發明包括了其中第一和第二存儲器不是在物理上不同的存儲器的情況。假定與上述第一和第二存儲器對應的兩個區在物理上的一個存儲器中得到了保證。在此情況下,從上述描述所顯而易見的是,第一和第二存儲器可以被該第一和第二存儲區所代替,因而本發明能夠用一個存儲器來實現。
如果上述的各個實施例用一個存儲器實現,結合傳送階段描述的某些數據傳送操作變得不再必要。這些情況的每一個的細節是容易預期的,因而省略了對其的描述。當上述兩個區彼此嚴格分開并被采用時,數據傳送處理是必要的并象在采用兩個物理上不同的存儲器的情況下那樣。然而,如果在這兩個區之間共享相同的數據,則不需要數據傳送處理,且能夠實現存儲容量的降低。
假定保持在第二存儲區中的編碼數據將要被傳送第一存儲區。在此情況下,可以通過只從第二存儲控制單元向第一存儲控制單元傳送兩段信息而實現與傳送該編碼數據相同的結果,該兩段信息即編碼數據的存儲的起始地址和其數據大小。
如果編碼數據以文檔或包的形式得到存儲,將要在存儲器控制單元之間傳送的信息量略微增大;與編碼數據相關的管理表信息必須得到傳送。即使在此情況下,借助上述操作,也能夠獲得比通過傳送編碼數據高的效率。
如上所述,根據第一和第二實施例,一個設定的大小之內的編碼數據可通過輸入一個圖象一次而被有效地產生。(第三和第四實施例的前提條件)在上述第一和第二實施例中,輸入圖象是單色還是彩色的圖象是沒有關系的。然而,如果輸入圖象是彩色圖象,可以進行適合于彩色圖象的編碼。由于彩色圖象獲得了多個彩色分量,可以對各個彩色分量使用獨立的量化級。
圖17是第三實施例所應用到的一個圖象處理設備100的功能框圖。這種設置與圖1所示的相同,只是加了一個選擇器111。相同的標號表示相同的部分。然而,應該注意的是,編碼單元102和再編碼單元109都是為編碼彩色圖象而設計的。假定第三實施例中的編碼單元102和再編碼單元109每一個都包括用于把輸入的彩色圖象數據臨時轉換成一個亮度信號和色差信號的轉換電路,并對轉換的數據進行壓縮編碼。作為亮度和色差信號,可采用Y-Cr-Cb顏色空間或YIQ顏色空間中定義的信號。為了方便,在此實施例中,用Y表示亮度數據,且色差信號用C1和C2表示。
以下描述總體設置。
圖象處理設備100包括用于從一個圖象掃描儀輸入圖象的輸入單元101。應該注意的是,輸入單元101可以通過頁描述語言渲染輸入圖象數據或讀取存儲在一個存儲介質中的圖象文檔。在某些情況下,輸入單元101可以從一個網絡接收圖象數據。
編碼單元102對輸入的圖象數據進行編碼。應該注意的是,在此實施例中,一種已知的JPEG編碼方案被用作一個編碼方案。另外,該圖象數據受到基于8×8象素的正交變換,且所產生的數據受到利用一個量化級(將要在后面描述)的量化和Huffman編碼處理。
一個第一存儲控制單元103和第二存儲控制單元105進行控制,從而把從編碼單元102輸出的上述編碼數據(相同的編碼數據)分別存儲在一個第一存儲器104和一個第二存儲器106中。在此情況下,第一存儲器104是用于保持最后確認(壓縮在一個目標數據量之內)的編碼數據的存儲器,以使之能夠被輸出到一個網絡設備、圖象輸出設備、大容量存儲設備等等從外部與圖1所示的基本設置相連的設備。第二存儲器106是一個工作存儲器,用于幫助進行壓縮編碼以形成第一存儲器中的編碼數據。
一個計數器107對編碼單元102所壓縮-編碼的圖象數據的數據量進行計數,并保持該計數值。計數器107還把計數結果輸出到一個編碼序列控制單元108,以對一個編碼序列進行控制。
編碼序列控制單元108探測計數器107的計數值是否已經達到一個設定值。在探測到該計數值已經達到該設定值(超過目標值)時,編碼序列控制單元108把一個控制信號輸出到第一存儲控制單元103從而放棄存儲在第一存儲器104中的數據。第一存儲控制單元103,通過根據這種控制信號對存儲器地址計數器或編碼數據管理表進行清除,而放棄所存儲的數據。此時,編碼序列控制單元108把計數器107清除至零(從輸入單元101連續地輸入數據),并還對編碼單元102進行控制以便以更高的壓縮率對數據進行編碼。即,編碼序列控制單元108進行控制以最終把該設備的編碼處理所產生的編碼數據的數據量減小至1/2。顯然,該值可以設定為1/2以外的一個任意的值。
在該壓縮率被改變之后獲得的編碼數據也通過第一和第二存儲控制單元103和105而被存儲在第一和第二存儲器104和106中。
進一步地,編碼序列控制單元108使第二存儲控制單元105讀出存儲在第二存儲器106中的編碼數據,并把一個控制信號輸出到作為一個編碼數據轉換裝置的一個再編碼單元109,從而輸出該編碼數據。
再編碼單元109對輸入的編碼數據進行解碼并進行再量化,以減小數據量。再編碼單元109隨后再次進行編碼處理(熵編碼)并把具有與編碼單元102的壓縮率相同的壓縮率的一個數據量輸出到一個第二計數器110。,編碼單元102的該壓縮率已經被改變。
從該再編碼單元109輸出的編碼數據,通過第一和第二存儲控制單元103和105,而被存儲在第一和第二存儲器104和106中。
第二存儲控制單元105探測再編碼處理是否已經終止。更具體地說,當沒有需要讀出以進行再編碼處理的數據時,第二存儲控制單元105把再編碼處理的結束通知給編碼序列控制單元108。在實際中,編碼處理是當再編碼單元109所進行的處理以及第二存儲控制單元--05所進行的讀出處理被終止時得到完成的。
當再編碼處理完成時,由第二計數器110獲得的計數值被加到被保持在計數器107中的計數值上。這種相加的結果表示了剛好在再編碼處理完成之后第一存儲器104中的數據量的和。即,當對一幀的編碼處理被編碼單元102和再編碼單元109所完成時,在上述相加之后被保持在第一計數器107中的計數值表示了當該設備對一幀數據(將要在后面描述)進行編碼時所產生的數據的總量。
編碼單元102連續地進行編碼處理,只要有從輸入單元101來的、需要被編碼的圖象數據,而不論再編碼處理是否被終止。
第一計數器107的計數值是否達到了一個給定的設定值被反復地檢查,直到從輸入單元101輸入的1頁圖象數據的編碼處理被終止。上述編碼/再編碼處理是根據與在此操作中獲得的探測結果相應的控制操作而執行的。
從編碼序列控制單元108輸出的切換信號被提供給選擇器111。選擇器111隨后在把將要編碼的數據送到再編碼單元109和將其不作任何改變地送回到存儲器控制單元103和105之間進行切換。
與在上述第一實施例中一樣,這種設置中的處理內容包括(1)一個編碼階段,(2)一個編碼/再編碼階段,以及(3)一個傳送階段。
把數據存儲到第一和第二存儲器中的處理與圖4至7中所顯示的相同。
第三實施例與第一和第二實施例的不同,在于將要被壓縮-編碼的一個圖象是彩色圖象。第三實施例涉及一種方法-該方法用于適應其中第一計數器107計數了超過一個設定值的一個編碼量的情況。
雖然將要在后面詳細描述,如圖20所示,當從一個輸入圖象的壓縮編碼開始起編碼數據第一次以超過一個設定值的量被產生時,編碼單元102繼續對數據進行編碼,同時相對于色差數據C1和C2的交流分量(AC)把量化級增大至比初始狀態下的量化級更大的值。由于以初始狀態下的量化級進行編碼的彩色圖象數據已經被存儲在第二存儲器中,色差信號C1和C2的交流分量被選擇器111所選擇并被再編碼單元109所再編碼。所產生的數據隨后被存儲在第一和第二存儲器中。
如果判定該編碼量超過了該設定的值,用于亮度數據Y的一個交流分量AC的量化級根據圖20所示的表而被增大。
如上所述,該第三實施例能夠對通過在DCT處理時選擇一個亮度數據或色差數據-量化級將要為其改變-并選擇一個交流或直流成分所產生的數據的編碼量進行細調,而不是簡單地對所有彩色分量都增大量化級。
上述的描述是關于與第一實施例(圖1)相應的第三實施例(圖17)的一個輪廓。與第二實施例(圖2)相應的第四實施例具有象圖18所示的設置。圖18的設置與圖2的設置的不同,在于加了選擇器111。因此,其余的部分用相同的標號表示。關于在其中所產生的數據的編碼量超過了一個設定值的情況下的處理內容,數據被存儲在第一和第二存儲器中的方式與第二實施例中的相同。與第二實施例的不同,是量化級將要為其而被增大的一個目標分量是根據圖20所示的情況而被確定的。
以下根據上述輪廓來詳細描述第三實施例的一個應用例子。注意第四實施例(圖18)與第二實施例相同,只是所處理的是彩色圖象,且當編碼量超過了一個設定值時量化級為其改變的分量與將要在以下描述的第三實施例中的那些分量相同。因此,對第四實施例的描述將被省略。(第三實施例)圖19是框圖,顯示了第三實施例所應用于的一個數字圖象處理設備的設置。
參見圖19,標號1000表示一個用于彩色圖象數據的輸入端口(表示圖象區信息和彩色圖象數據)。如圖19所示,一個選擇器1023被連接到輸入端口1000。根據從一個主計算機輸出的打印數據(從一個操作面板(未顯示)選擇或根據輸入操作而自動地選擇),選擇器1023選擇一個圖象掃描儀1020或一個渲染引擎1021。假定彩色圖象數據1031和1032和圖象區信息1033和1034(用于標明各個象素是存在于一個字符/線圖象區還是半色調區中以及是彩色還是單色象素的信息)是從掃描儀和渲染引擎兩者輸出的。渲染引擎1021能夠根據打印數據(半色調圖象作為來自主計算機的圖象數據而被傳送,且字符/線圖象根據一個描繪命令而被描繪)。圖象掃描儀1020讀取一個原始圖象并表示根據讀取的圖象來判定該圖象是處于一個字符/線圖象區中還是在半色調區中以及是彩色還是單色圖象。因而假定圖象掃描儀1020包括用于產生這樣的圖象區信息的一個電路。
標號1001表示了具有多個輸入圖象的行的一個行緩存器(其容量大得足以提取圖象塊);且1002表示與圖1的編碼單元102相應的彩色圖象編碼器。然而,此實施例中的彩色圖象編碼器1002包括一個轉換電路,用于把輸入的彩色圖象數據臨時轉換成一個亮度信號和色差信號,并對轉換的數據進行壓縮-編碼。作為亮度和色差信號,可采用在Y-Cr-Cb彩色空間或YIQ彩色空間中定義的信號。為了方便,在此實施例中,亮度數據用Y表示,且色差數據用C1和C2表示。
標號1003表示用于臨時存儲編碼數據的一個內部緩存器。
標號1004表示一個外部存儲器(例如一個硬盤),用于存儲編碼的彩色圖象數據;1005表示一個解碼緩存器,用于臨時存儲讀出的編碼圖象數據以對其進行解碼;1006表示一個解碼器;1007表示一個行緩存器,用于臨時存儲解碼的圖象;且1008表示一個輸出端口,用于把存儲在輸出端口1008中的圖象輸出至與該端口相連的一個打印機單元1009。假定打印機單元1009包括一個轉換電路,用于把數據Y、C1和C2轉換成打印彩色分量Y、M和C(或Y、M、C和Bk)。另外,打印機單元1009不限于任何具體的打印方案。例如,可采用激光束打印機或用于排放墨滴的打印機。
標號1010表示一個編碼量監測單元,用于監測存儲在一個內部緩存器1003中的數據的編碼量;且1011表示一個碼轉換單元,用于進行再編碼。
與圖17相關地,內部緩存器1003被用作圖1中的第一和第二存儲器。另外,編碼序列控制單元108、第一計數器107、第二計數器110和選擇器111對應于編碼量監測單元1010,且再編碼單元109對應于碼轉換單元1011。
彩色圖象編碼器1002把存儲在行緩存器1001中的圖象數據分成圖象塊-每一個圖象塊具有8×8象素的大小(每一個圖象塊不限于8×8象素并可具有M×M個象素),并在8×8象素的基礎上對彩色信息進行編碼。一個彩色圖象借助離散余弦變換(JPEG)而得到編碼,而圖象區信息借助運行長度編碼(run-length encoding)而得到編碼。
圖象區信息被附在各個象素上。然而,當要為各個8×8象素塊而借助DCT進行數據處理時,圖象區標記被表示性地附在各個塊上。圖象區根據一個圖象的字符和照片區以及一個給予的區是彩色還是單色而被分類。然而,也可以采用其他方法,或者可以添加其他的部分。
編碼量監測單元1010對彩色圖象編碼器1002所產生的數據的編碼量進行監測。當預期該編碼量將超過一個設定量時,編碼量監測單元1010使編碼器1002以更高的編碼效率對隨后輸入的彩色圖象(以及屬性信息)進行編碼,并還使碼轉換單元1011以更高的編碼效率對前面已經編碼的數據進行再編碼。
在此第三實施例中,為了在每次編碼量超過設定值使都逐漸地增大編碼效率,進行了以下的操作。
如上所述,該第三實施例被適當配置以對彩色圖象進行編碼。彩色圖象數據是以顏色空間的形式而得到表示的,該空間由亮度數據Y和色差數據C1和C2定義。
當在對一個給定頁的編碼開始之后判定編碼單元102所產生的數據的編碼量已經超過了一個目標值時,編碼量監測單元1010(圖17中的編碼序列控制單元108)使得編碼單元102在把一個量化級設定在比之前更高的同時對色差數據C1和C2的通過正交變換而獲得的交流分量(AC)進行編碼。借助這種操作,在判定編碼量已經超過了目標值之后被輸入的彩色圖象,以一個更高的壓縮率,得到了編碼。
另外,由于直到判定編碼量已經超過了目標值時被編碼的數據被存儲在第二存儲器中,再編碼單元109受到控制而只把編碼的色差數據C1和C2輸出至第二存儲控制單元105,且一個控制命令被發至選擇器111以把該數據輸出至再編碼單元109。另外,編碼序列控制單元108使得再編碼單元109在增大編碼的色差數據C1和C2的量化級的同時對它們進行解碼并對它們的交流分量(AC分量)進行編碼。再編碼的色差數據被存儲在第一存儲器104和第二存儲器106中。借助這種操作,即使在編碼量已經超過目標值之前被編碼的數據也能夠以一個高的壓縮率得到編碼。
總之,當編碼量在輸入和編碼一個給定頁的彩色圖象數據時第一次超過了目標值時,色差數據C1和C2的交流分量以一個更高的量化級而被連續地編碼。
如果在上述處理期間編碼量再次超過了目標值,亮度數據Y的交流分量被判定為一個目標-量化級將要為其而改變。
以此方式,每次編碼量超過了目標值時,亮度數據Y和色差數據C1和C2的交流分量和直流成分的量化級都被改變(設定得更高)以逐漸地增大壓縮率。
因此,編碼序列控制單元108具有如圖20所示的場景表,并進行控制以按照第一場景、第二場景、第三場景、……的順序增大壓縮率,場景的數目與對于一個給定的頁編碼量超過目標值的計數次數相同。
因此,當編碼量在對一個給定頁進行編碼的過程中第一次超過目標值時,根據圖20所示的表,色差數據C1和C2的交流分量AC變為將要被選擇的目標因而上述的處理得到進行。
圖21是曲線圖,用于說明編碼的進行與存儲器的占用率之間的關系。以下結合圖21簡要地描述一個操作序列。
參見圖21,在初始值(初始階段的編碼參數)的條件下,在2/8的時間點編碼數據發生了溢出。根據本實施例,在此時間點之后,用于色差數據C1和C2的交流分量的量化級被增大,且彩色圖象數據被連續地編碼。對于已經被編碼的數據,數據的色差數據得到解碼,且用于交流分量的量化級被增大,從而開始再編碼處理。
在3/8時刻,在判定編碼量已經超過目標值之前的再編碼處理被完成,且第一存儲器104的傳送處理得到完成。
在4/8時刻,編碼的數據再次溢出,因而再編碼處理被啟動。由于該溢出是第二次溢出,亮度數據的交流分量根據圖20得到選擇并根據圖20所示的表而得到處理。在5/8時刻,再編碼處理終止,且傳送處理得到完成。
在8/8時刻,1頁圖象數據被完全編碼。
在上述情況下,在3/8時刻,編碼數據進行了約25%。該值是借助壓縮率和再編碼時間而確定的。在一種實際的設備中,這樣的一個值需要作為一個設計參數即緩存存儲器的一個余量而得到保證。然而,該值不會變得非常大。如從圖21可見,處理時間在編碼一個1頁圖象所需的時間內結束。
如從上述描述可見,在第三實施例中,由于色差數據和亮度數據的直流成分和交流分量可以被獨立地設定,用于亮度和色差數據的交流分量和直流分量的量化級的值被存儲在第一存儲器104中。
圖22A至22D用于說明DCT系數的直流系數(DC系數)。圖22B用于說明DC系數編碼。經歷了8×8象素DCT變換的DC系數值(圖22B中左上部的小正方形)與相鄰的塊的DC系數值之間的差被獲得并被進行可變長度編碼。
圖22A是顯示用于編碼的設置的框圖。一個差計算器1202計算一個DC系數1205與被一個塊延遲裝置1201所延遲的剛好在前面的一個塊的DC系數之間的差。該差值通過分組處理而被轉換成一個組號SSSS。
一個分組單元根據一個DC差值而確定附加的位的數目,如圖22C所示。該組號SSSS被一個一維Huffman編碼器1204根據圖22D所示的表而進行Huffman編碼。
如從這些表可見,隨著組號的減小,Huffman碼和附加位的數目減小(在某些情況下它們彼此相等)。
因而,當該DC差值減小至1/2時,組號減小一,且通過把一個Huffman碼和附加位相結合而獲得的可變長度編碼部分減小1至2位。
圖24用于說明對DC系數的交流系數(AC系數)進行編碼的一個方案。
交流系數1301按照一種之字形的順序而被重新排列。當一個判定裝置1302判定到一個0時,一個運行長度計數器1303計數相繼的0系數的數目(運行長度),并輸出一個運行長度NNNN 1306。對于0以外的一個系數值,一個分組裝置1304輸出一個組號1307和附加位1302,象在圖22A所示的情況中那樣。一個兩維Huffman編碼器1305,通過把運行長度NNNN和組號SSSS相結合,而進行Huffman編碼(見圖23)。
如果運行長度NNNN超過了15,各表示一個16的運行長度的ZRL被輸出一個所需的數目。例如,一個35的運行長度被轉換成所要編碼的ZRL+ZRL+運行長度3。
另外,在最后一個有效系數(0以外的系數)之后,EOB(塊的結束)被加上。
在此實施例中,8×8個塊受到DCT處理,之字形掃描以圖24所示的順序得到進行。
圖26顯示了借助一個運行長度和大小而得到查詢的一個Huffman碼表的部分。
顯然,當一個交流系數的值減小至1/2時,組數減小1,且通過把一個Huffman碼和附加位相結合而獲得的可變長度碼部分減小1或2位。
另外,由于系數值變為零且運行長度增大,將要編碼的主要符號的數目也減小。結果,碼的長度進一步地減小。
以下描述一種情況,其中一個指標根據再編碼的起始點而被置于一個彩色信號選擇表中。
圖27是曲線圖,用于說明編碼的進程與存儲器占用率之間的關系。
參見圖27,在6/8時刻,對于一個初始值在量化級中發生了一個編碼溢出,且再編碼處理得到啟動。另外,通過改變量化級,編碼被繼續進行。在此情況下,溢出發生在處理的結束附近的6/8時刻。因而,如果所有的彩色分量都被再編碼,編碼量將被減小至約1/2。即,預期編碼量將被過度地壓縮到一個預定的編碼量以下。因而,在此情況下,只有一個彩色選擇表中的色差數據的交流分量被再編碼,且編碼序列控制單元根據一個1頁圖象的處理量的計數而進行指標控制。這使得可以防止隨后的過度壓縮。(應用例子)上述實施例是以用于通過圖象掃描儀讀取一個圖象的設備為例子的,且該設備的功能運行已經得到描述。該設備的多數功能(包括編碼處理)可借助計算機程序而得到實施,如上所述。
因而本發明可被應用于在諸如個人計算機的一個通用圖象處理設備上運行的一個應用程序。當本發明被應用于一種應用程序時,可提供一個GUI以使用戶能夠例如指定作為壓縮源的圖象文檔并選擇一個目標大小。該目標值可由用戶任意設定。然而,用戶通過輸入一個數值來設定一個目標值是麻煩的。因而較好的是使用戶能夠通過從一個考慮到原始大小和圖象質量(例如高、中和低)的直觀的菜單來選擇并確定一個目標值。
雖然量化級是以編碼單元中的一個編碼參數為例子而得到描述的,其他的參數也可得到采用,只要它們被用來防止當壓縮率不同的數據被混合時在它們之間的圖象質量的不一致性的加重。例如,在圖1所示的設置中,為了使來自再編碼單元109的再編碼的數據基本上與一個參數被改變之后來自編碼單元102的編碼數據相同,增大量化級的技術被優選地得到采用,就象在上述實施例中那樣。
如上所述,根據第三和第四實施例,一個多值彩色圖象可在不進行再輸入操作的的情況下在一個目標大小之內得到編碼,且該彩色圖象的圖象質量的惡化能夠得到減小。
上述的實施例是以這樣的情況為例子的,即其中一個彩色圖象作為亮度和色差數據而得到壓縮-編碼。然而,用于表示彩色分量的彩色空間不限于亮度和色差。例如,可采用L*a*b*彩色空間。
雖然每次發生存儲器溢出時壓縮參數都被改變,優選的是量化級在給予人的視覺難于區分的彩色分量的情況下得到增大。因此,優選的是采用適合于一種彩色外觀模型的彩色空間,例如亮度和色差(色調和飽和)彩色空間,而不是RGB彩色空間。
如上所述,本發明還可借助在通用圖象處理設備上運行的一個應用程序而得到實施。因而本發明包括了該計算機程序。另外,一般地,該計算機程序通過諸如設置在該設備中的軟盤或CD-ROM的存儲介質而被復制或安裝到該設備中,并得到執行。因而,顯而易見的是,這樣的存儲介質也被包括在本發明中。
在上述實施例中,圖象數據從掃描儀輸入。然而,本發明也可被應用于在一個計算機上運行的一種打印機驅動器。假定本發明將要被應用于該打印機驅動器。在此情況下,當將要打印的數據被從上一級的處理(一個應用等)接收時,該數據可被鑒別出是半色調圖象還是字符/線圖象,用于圖象區信息產生的設置可被省略或簡化。
進一步地,本發明可被應用于一個計算機程序和適當的硬件(編碼電路等)的組合。
由于在不脫離本發明的精神或范圍的前提下可以作出本發明的許多非常不同的實施例,因而應該理解的是,本發明不限于其具體的實施例,而只由所附的定標書來限定。
權利要求
1.一種圖象處理設備,用于輸入圖象數據并對該數據進行壓縮-編碼,其特征在于第一壓縮裝置,它能夠改變用于確定一個壓縮率的一個參數;第二壓縮裝置,它能夠改變用于確定一個壓縮率的一個參數、對所述第一壓縮裝置所壓縮的編碼數據進行解碼、并對該數據進行再壓縮;監測裝置,用于在一個輸入頁的圖象數據被所述第一壓縮裝置所壓縮的同時對一個編碼數據量進行監測并判定該編碼數據量是否已經達到一個預定的量;設定裝置,用于當所述監測裝置在該頁的壓縮期間探測到該編碼數據量已經達到該預定量時在所述第一和第二壓縮裝置中設定用于增大一個壓縮率的一個參數;以及控制裝置,用于當該參數被所述設定裝置所改變時使所述第二壓縮裝置對在該參數被改變之前由所述第一壓縮裝置所產生的編碼數據進行再編碼、把該再編碼的數據作為在所述第一壓縮裝置中的該參數被改變之后的編碼數據而存儲起來、并把該參數被改變之后由所述第一壓縮裝置所產生的編碼數據作為后繼的編碼數據而存儲起來。
2.根據權利要求1的設備,其特征在于當所述第二壓縮裝置執行再編碼時,所述第一和第二壓縮裝置至少在一個間隔的一部分中同時工作。
3.根據權利要求1的設備,其特征在于該參數是定量處理中的一個量化級。
4.根據權利要求1的設備,其特征在于所述第一壓縮裝置所產生的該編碼數據被同時寫入到所述第一和第二存儲器中,且當所述監測裝置探測到該編碼數據量已經達到該預定的數據量時,所述控制裝置對所述第一存儲器進行清除,使所述第二壓縮裝置對存儲在所述第二存儲器中的編碼數據進行再編碼,并把該編碼數據存儲在所述第一存儲器中。
5.用于一種圖象處理設備的一種控制方法,該圖象處理設備用于輸入圖象數據并對該數據進行壓縮-編碼,其特征在于第一壓縮步驟,其中用于確定一個壓縮率的一個參數能夠得到改變;第二壓縮步驟,其中用于確定一個壓縮率的一個參數能夠得到改變、在第一壓縮步驟中被壓縮的編碼數據得到解碼、且該數據被再編碼;監測步驟,用于在第一壓縮步驟中在一個輸入頁被壓縮的同時對一個編碼數據量進行監測,并探測該編碼數據量是否已經達到了一個預定的量;設定步驟,用于當在該監測步驟中探測到該編碼數據量在該頁的壓縮期間已經達到該預定量時設定用于增大第一和第二壓縮步驟中的一個壓縮率的一個參數;以及控制步驟,用于當該參數在該設定步驟中被改變時在第二壓縮步驟中對在該參數被改變之前在第一壓縮步驟中產生的編碼數據進行再編碼、把該再編碼的數據作為在第一壓縮步驟中該參數被改變之后的編碼數據而存儲起來、并把在該參數被改變之后在第一壓縮步驟中產生的編碼數據作為后繼的編碼數據存儲起來。
6.根據權利要求5的方法,其特征在于當在第二壓縮步驟中執行再編碼時,第一和第二壓縮步驟至少在一個間隔的一部分被被同時執行。
7.一種計算機程序,它起著用于輸入圖象數據并對該數據進行壓縮-編碼的一種圖象處理設備的功能,其特征在于包括用于第一壓縮步驟的程序碼,在第一壓縮步驟中用于確定一個壓縮率的一個參數能夠得到改變;用于第二壓縮步驟的程序碼,在第二壓縮步驟中用于確定一個壓縮率的一個參數能夠得到改變、在第一壓縮步驟中被壓縮的編碼數據得到解碼、且該數據被再編碼;用于監測步驟的程序碼,該監測步驟用于在第一壓縮步驟中在一個輸入頁被壓縮的同時對一個編碼數據量進行監測,并探測該編碼數據量是否已經達到了一個預定的量;用于設定步驟的程序碼,該設定步驟用于當在該監測步驟中探測到該編碼數據量在該頁的壓縮期間已經達到該預定量時設定用于增大第一和第二壓縮步驟中的一個壓縮率的一個參數;以及用于控制步驟的程序碼,該控制步驟用于當該參數在該設定步驟中被改變時在第二壓縮步驟中對在該參數被改變之前在第一壓縮步驟中產生的編碼數據進行再編碼、把該再編碼的數據作為在第一壓縮步驟中該參數被改變之后的編碼數據而存儲起來、并把在該參數被改變之后在第一壓縮步驟中產生的編碼數據作為后繼的編碼數據存儲起來。
8.根據權利要求7的程序,其特征在于當在第二壓縮步驟中執行再編碼時,第一和第二壓縮步驟至少在一個間隔的一部分被被同時執行。
9.一種存儲介質,其特征在于它存儲有權利要求所定義的計算機程序。
10.一種圖象處理設備,該圖象處理設備用于輸入圖象數據并對該數據進行壓縮-編碼,其特征在于第一和第二壓縮裝置,它們能夠改變用于確定一個壓縮率的一個參數;第三壓縮裝置,它能夠改變用于確定一個壓縮率的一個參數,對所述第二壓縮裝置所壓縮的編碼數據進行解碼、并對該數據進行再編碼;設定裝置,用于設定使所述第二壓縮裝置的一個壓縮率比所述第一壓縮裝置的一個壓縮率高的不同的參數;監測裝置,用于在一個輸入頁的圖象數據被所述第一和第二壓縮裝置所壓縮的同時對所述第一壓縮裝置所產生的一個編碼數據量進行監測,并探測該編碼數據量是否已經達到了一個預定量;更新裝置,用于當所述監測裝置判定該編碼數據量已經達到該預定量時,把所述第二壓縮裝置中設定的該參數更新為在該頁的壓縮期間中用于所述第一壓縮裝置的一個參數,并更新所述第二壓縮裝置中的參數以進一步增大所述第二壓縮裝置的該壓縮率;以及控制裝置,用于當該參數被所述更新裝置所更新時使所述第三壓縮裝置對在該參數被改變之前由所述第二壓縮裝置所產生的該編碼數據進行再編碼、把所述第二壓縮裝置產生的編碼數據作為在該參數被改變之后由所述第一壓縮裝置所產生的編碼數據而存儲起來、并把由所述第一壓縮裝置所產生的編碼數據作為后繼編碼數據而存儲起來。
11.根據權利要求10的設備,其特征在于其中所述第三壓縮裝置執行再編碼時,所述第三壓縮裝置和所述第一和第二壓縮裝置至少在一個間隔的一部分中同時操作。
12.用于一種圖象處理設備的一種控制方法,該圖象處理設備用于輸入圖象數據并對該數據進行壓縮-編碼,其特征在于包括第一和第二壓縮步驟,其中用于確定一個壓縮率的一個參數能夠被改變;第三壓縮步驟,其中用于確定一個壓縮率的一個參數能夠被改變、在第二壓縮步驟中被壓縮的編碼數據被解碼、且該數據被再編碼;設定步驟,用于設定不同的參數以使在第二壓縮步驟中的一個壓縮率比在該第一壓縮步驟中的一個壓縮率高;監測步驟,用于在一個輸入頁的圖象數據在第一和第二壓縮步驟中被壓縮的同時對在第一壓縮步驟中產生的一個編碼數據量進行監測,并探測該編碼數據量是否已經達到了一個預定的量;更新步驟,用于當在該監測步驟判定該編碼數據量已經達到了該預定量時,把在第二壓縮步驟中設定的該參數更新為在該頁的壓縮期間在第一壓縮步驟中的一個參數,并對在第二壓縮步驟中的該參數進行更新以進一步增大第二壓縮步驟中的該壓縮率;以及控制步驟,用于當該參數在該更新步驟中得到更新時,在第三壓縮步驟中對在該參數被改變之前在第二壓縮步驟中產生的編碼數據進行再編碼、把在第二壓縮步驟中產生的編碼數據作為在該參數被改變之后在第一壓縮步驟中產生的編碼數據而存儲起來、并把在第一壓縮步驟中產生的編碼數據作為后繼的編碼數據而存儲起來。
13.根據權利要求12的設備,其特征在于當所述第三壓縮裝置執行再編碼時,所述第三壓縮裝置和所述第一和第二壓縮裝置至少在一個間隔的一部分中同時操作。
14.一種計算機程序,它起著用于輸入圖象數據并對該數據進行壓縮-編碼的一種圖象處理設備的功能,其特征在于包括用于第一和第二壓縮步驟的程序碼,在該第一和第二壓縮步驟中用于確定一個壓縮率的一個參數能夠被改變;用于第三壓縮步驟的程序碼,在該第三壓縮步驟中用于確定一個壓縮率的一個參數能夠被改變、在第二壓縮步驟中被壓縮的編碼數據被解碼、且該數據被再編碼;用于設定步驟的程序碼,該設定步驟用于設定不同的參數以使在第二壓縮步驟中的一個壓縮率比在該第一壓縮步驟中的一個壓縮率高;用于監測步驟的程序碼,該監測步驟用于在一個輸入頁的圖象數據在第一和第二壓縮步驟中被壓縮的同時對在第一壓縮步驟中產生的一個編碼數據量進行監測,并探測該編碼數據量是否已經達到了一個預定的量;用于更新步驟的程序碼,該更新步驟用于當在該監測步驟判定該編碼數據量已經達到了該預定量時,把在第二壓縮步驟中設定的該參數更新為在該頁的壓縮期間在第一壓縮步驟中的一個參數,并對在第二壓縮步驟中的該參數進行更新以進一步增大第二壓縮步驟中的該壓縮率;以及用于控制步驟的程序碼,該控制步驟用于當該參數在該更新步驟中得到更新時,在第三壓縮步驟中對在該參數被改變之前在第二壓縮步驟中產生的編碼數據進行再編碼、把在第二壓縮步驟中產生的編碼數據作為在該參數被改變之后在第一壓縮步驟中產生的編碼數據而存儲起來、并把在第一壓縮步驟中產生的編碼數據作為后繼的編碼數據而存儲起來。
15.一種存儲介質,其特征在于它存儲有權利要求14所限定的計算機程序。
16.一種圖象處理設備,用于對由多個彩色分量組成的多電平彩色圖象數據進行壓縮-編碼,其特征在于存儲裝置,用于存儲壓縮-編碼的數據;第一壓縮-編碼裝置,它能夠改變與一個量化級相關的一個參數;第二壓縮-編碼裝置,它能夠改變與一個量化級相關的一個參數、對由所述第一壓縮-編碼裝置所壓縮-編碼的該數據進行解碼、并對該數據進行再編碼;編碼量監測裝置,用于對由所述第一壓縮-編碼裝置產生的一個編碼量進行監測,并判定該編碼數據量是否已經達到了一個預定量;參數設定裝置,用于當所述編碼量監測裝置判定該編碼數據量已經達到該預定量時,確定一個彩色分量-所述第一和第二壓縮-編碼裝置中的量化級將要為該彩色分量而改變;以及控制裝置,用于當所述參數設定裝置改變這些參數時,使所述第二壓縮-編碼裝置對所述第一壓縮-編碼裝置在這些參數被改變之前所產生的編碼數據進行再編碼、把該再編碼的數據作為在所述第一壓縮-編碼裝置中的該參數被改變之后的編碼數據而存儲在所述存儲裝置中、并使所述存儲裝置把所述第一壓縮-編碼裝置在該參數被改變之后所產生的編碼數據作為后繼編碼數據而存儲起來。
17.根據權利要求16的設備,其特征在于所述參數設定裝置進一步判定用于一個交流分量和一個直流分量的量化級中的哪一個將要被改變。
18.根據權利要求17的設備,其特征在于該彩色分量是亮度信息和色差信息,且所述參數設定裝置,在每次所述編碼量監測裝置判定該編碼量超過了一個預定的量時,按照色差信息的一個交流分量、亮度信息的一個交流分量、一個色差數據的一個直流分量、以及亮度信息的一個直流分量的順序,增大一個量化級。
19.根據權利要求18的設備,其特征在于所述參數設定裝置通過查詢一個表而進行設定,該表表示了所述編碼量監測裝置判定該編碼量超過了該預定量的順序和相應的設定內容之間的關系。
20.用于一種圖象處理設備的一種控制方法,該圖象處理設備用于對由多個彩色分量組成的多電平彩色圖象數據進行壓縮-編碼,其特征在于第一壓縮-編碼步驟,其中與一個量化級相關的一個參數能夠得到改變;第二壓縮-編碼步驟,其中與一個量化級相關的一個參數能夠得到改變、在所述第一壓縮-編碼步驟中被壓縮-編碼的數據得到解碼、且該數據被再編碼;編碼量監測步驟,用于監測在該第一壓縮-編碼步驟中產生的一個編碼量,并判定該編碼數據量是否已經達到了一個預定的量;參數設定步驟,用于當在該編碼量監測步驟判定該編碼數據量已經達到了該預定量時,確定一個彩色分量-所述第一和第二壓縮-編碼步驟中的量化級將要為該彩色分量而改變;以及控制步驟,用于當在所述參數設定步驟改變這些參數時,在第二壓縮-編碼步驟中對在所述第一壓縮-編碼步驟在這些參數被改變之前所產生的編碼數據進行再編碼、在該存儲步驟中把該再編碼的數據作為在所述第一壓縮-編碼步驟中的該參數被改變之后的編碼數據而存儲起來、并在該存儲步驟中把第一壓縮-編碼步驟在該參數被改變之后所產生的編碼數據作為后繼編碼數據而存儲起來。
21.一種計算機程序,它起著用于對由多個彩色分量構成的多電平彩色圖象數據進行壓縮-編碼的一種圖象處理設備的功能,其特征在于包括用于第一壓縮-編碼步驟的程序碼,在該第一壓縮-編碼步驟中與一個量化級相關的一個參數能夠得到改變;用于第二壓縮-編碼步驟的程序碼,在該第二壓縮-編碼步驟中與一個量化級相關的一個參數能夠得到改變、在所述第一壓縮-編碼步驟中被壓縮-編碼的數據得到解碼、且該數據被再編碼;用于編碼量監測步驟的程序碼,該編碼量監測步驟用于監測在該第一壓縮-編碼步驟中產生的一個編碼量,并判定該編碼數據量是否已經達到了一個預定的量;用于參數設定步驟的程序碼,該參數設定步驟用于當在該編碼量監測步驟判定該編碼數據量已經達到了該預定量時,確定一個彩色分量-所述第一和第二壓縮-編碼步驟中的量化級將要為該彩色分量而改變;以及用于控制步驟的程序碼,該控制步驟用于當所述參數設定步驟改變這些參數時,在第二壓縮-編碼步驟中對所述第一壓縮-編碼步驟在這些參數被改變之前所產生的編碼數據進行再編碼、在該存儲步驟中把該再編碼的數據作為在所述第一壓縮-編碼步驟中的該參數被改變之后的編碼數據而存儲起來、并在該存儲步驟中把第一壓縮-編碼步驟在該參數被改變之后所產生的編碼數據作為后繼編碼數據而存儲起來。
22.一種計算機可讀的存儲介質,它存儲有權利要求21所限定的計算機程序。
全文摘要
本發明用于通過輸入圖象數據一次而有效地在一個設定的大小之內產生編碼數據。為此,通過一個輸入單元而輸入的圖象被一個編碼單元所壓縮并被存儲在第一和第二存儲器中。一個第一計數器對其編碼量進行計數。當所產生的編碼數據的量達到一個預定大小時,一個編碼序列控制單元對編碼單元和一個再編碼單元中的量化級進行設定以增大壓縮率。另外,編碼序列控制單元對第一存儲器進行清除,使再編碼單元對存儲在第二存儲器中的編碼數據進行再編碼,并把所產生的數據存儲在第一存儲器中。由于編碼單元以設定的量化級繼續對數據進行編碼,編碼數據從圖象的開始被存儲在第一存儲器中。隨后,每當存儲在第一存儲器中的數據量達到一個預定量時,量化級都被增大,且處理得到重復。
文檔編號H04N7/26GK1392725SQ02122650
公開日2003年1月22日 申請日期2002年6月18日 優先權日2001年6月18日
發明者太田健一, 中山忠義, 大澤秀史, 加藤進一, 伊藤直樹 申請人:佳能株式會社