專利名稱:一種圖像碼流的平滑方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及圖像處理技術(shù),特別是涉及一種圖像碼流的平滑方法和裝置。
背景技術(shù):
攝像頭中一般都帶有JPEG (Joint Picture Experts Group,聯(lián)合圖像專家組) 編碼器,用來對圖像或^L頻流進行壓縮,壓縮后的JPEG碼流通過USB或?qū)?帶/局域網(wǎng)傳送出去。在傳輸帶寬大致恒定的條件下,就需要一種控制碼率的 方法,來使JPEG碼率盡量平滑,避免忽快忽慢所導致的網(wǎng)絡擁塞、丟失數(shù) 據(jù)包、或者USB FIFO ( first in first out,先進先出)緩沖區(qū)溢出等問題。
現(xiàn)有的碼率控制方案一般是在整幀圖像的尺度上做調(diào)整,通過調(diào)整整幀的 量化系數(shù),從而可以改變一幀圖像壓縮之后的碼流大小。這個方法無法及時對
畫面某個或某些特別復雜的局部做出靈活調(diào)整,仍有潛在的風險。
另一種碼率控制方案是將圖像分為幾個小區(qū)域,對每個小區(qū)域之內(nèi),控制
其最多可以允許的DCT(離散余弦變換)系數(shù)的個數(shù)。這樣,相當于可以在 小區(qū)域的尺度上對碼流大小進行調(diào)整,從而使JPEG編碼器應對風險的能力有 了大大提升。但是這是以犧牲掉一些DCT系數(shù)為代價換來的,等于是犧牲部 分圖像細節(jié)內(nèi)容的信息。
因此,現(xiàn)有技術(shù)沒能提供一種即不損失圖像內(nèi)容,又使JPEG碼率均勻平 滑,以便適應恒定傳輸帶寬的JPEG碼流平滑方法。
發(fā)明內(nèi)容
本發(fā)明實施例的目的是提供一種圖像碼流的平滑方法和裝置,能夠即不損 失圖像內(nèi)容,又使JPEG碼率均勻平滑。
為了實現(xiàn)上述目的, 一方面,提供了一種圖像碼流的平滑方法,包括如下 步驟
步驟一 ,確定編碼器在處理緩沖區(qū)的圖像數(shù)據(jù)的過程中能夠分配的空閑時
鐘周期的總數(shù)T;
步驟二,將所述緩沖區(qū)的宏塊編碼后的比特數(shù)與預定門限進行比較,根據(jù) 比較結(jié)果動態(tài)調(diào)整宏塊之間插入的時鐘周期數(shù),所述緩沖區(qū)的宏塊之間所有插 入的時鐘周期的總數(shù)不大于所述空閑時鐘周期的總數(shù)T。 優(yōu)選地,所述的方法中,所述步驟一具體包括 確定為編碼器處理緩沖區(qū)的圖像數(shù)據(jù)所分配的時鐘周期數(shù); 確定編碼器處理緩沖區(qū)的圖像數(shù)據(jù)所實際需要的時鐘周期數(shù); 用所述分配的時鐘周期數(shù)減去所述實際需要的時鐘周期數(shù),獲得所述空閑 時鐘周期的總數(shù)T。
優(yōu)選地,所述的方法中,所述步驟二具體包括
步驟a,初始化變量MBs、 Total, MBs的初始值為所述緩沖區(qū)的宏塊的 總數(shù),Total的初始值為T;
步驟b,對當前宏塊進行編碼,得到當前宏塊碼流的比特數(shù)n,將所述比 特數(shù)n與第一預定門限thd進行比較,如果iK4hd,則在當前宏塊和下一個宏 塊之間插入的時鐘周期數(shù)1^0;如果n〉thd,則在當前宏塊和下一個宏塊之間 插入的時鐘周期數(shù)k= Total /MBs;使MBs=MBs-1 , Total = Total - k ;
步驟c,重復步驟b,直到完成所述緩沖區(qū)中所有宏塊的數(shù)據(jù)編碼。
優(yōu)選地,所述的方法中,所述步驟b中,還包括設置第二預定門限f, f^thd;如果n〉thd,將所述比特數(shù)n與f進行比較,如果n>f,則在當前宏塊 和下一個宏塊之間插入的時鐘周期數(shù)k= m x Total /MBs,然后使MBs=MBs-l, Total = Total - k;其中m為預設的大于1的系數(shù)。
優(yōu)選地,所述的方法中,還包括
步驟四,重復步驟一至步驟二,直到完成當前整個圖^f象的數(shù)據(jù)編碼。 本發(fā)明的另一個方面,提供一種圖像碼流的平滑裝置,包括 空閑時鐘周期總數(shù)的確定模塊,用于確定編碼器在處理緩沖區(qū)的圖像數(shù)
據(jù)的過程中能夠分配的空閑時鐘周期的總數(shù)T
時鐘周期插入模塊,用于將所述緩沖區(qū)的宏塊編碼后的比特數(shù)與預定門
限進行比較,才艮據(jù)比較結(jié)果動態(tài)調(diào)整宏塊之間插入的時鐘周期數(shù),所述緩沖區(qū)
的宏塊之間所有插入的時鐘周期的總和不大于所述空閑時鐘周期的總數(shù)T。 優(yōu)選地,所述的裝置中,所述空閑時鐘周期總數(shù)的確定模塊還包括 第一單元,用于確定為編碼器處理緩沖區(qū)的圖像數(shù)據(jù)所分配的時鐘周期
數(shù);
第二單元,用于確定編碼器處理緩沖區(qū)的圖像數(shù)據(jù)所實際需要的時鐘周期
數(shù);
第三單元,用所述分配的時鐘周期數(shù)減去所述實際需要的時鐘周期數(shù),獲 得所述空閑時鐘周期的總數(shù)T。
本發(fā)明實施例至少存在以下技術(shù)效果
1) 將T個空閑時鐘周期分散插入到宏塊之間,并通過動態(tài)調(diào)整JPEG編 碼器中前一個宏塊和后一個宏塊之間的插入的時鐘周期lt,來調(diào)整編碼器tr出 的碼流的速度,從而使得編碼器輸出碼流的瞬時速率上的波動幅度變小,起到 了平滑JPEG碼流的效果。
2) 設置多個比較門限,可以更為精確的平滑JPEG碼流。
圖1為本發(fā)明實施例提供的編碼器中兩個輪換緩沖區(qū)的示意圖; 圖2為本發(fā)明實施例提供的方法的步驟流程圖。
具體實施例方式
為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對 具體實施例進行詳細描述。
光學傳感器件一般是按固定的時鐘數(shù)來工作的,因此它連續(xù)輸出兩行的圖 像數(shù)據(jù)之間的間隔一經(jīng)配好后,就是固定的和已知的。以YUV422編碼格式 (其它編碼格式的處理過程相同)為例,JPEG編碼器中設有兩個輪換緩沖區(qū), 每個緩沖區(qū)有8行,如圖1所示
輪換緩沖區(qū)A從光學傳感器接收其按行輸出的數(shù)據(jù),存滿8行后,兩個 緩沖區(qū)A和B互相切換;這時,JPEG編碼器從緩沖區(qū)A取數(shù)據(jù)來壓縮,而 光學傳感器輸出的數(shù)據(jù)則送到緩沖區(qū)B中;依此類推。 按上述分析可知,JPEG編碼器需要在光學傳感器填滿8行緩沖區(qū)的時間 段之內(nèi),完成另外8行緩沖區(qū)中所有的數(shù)據(jù)壓縮過程。
以640x480 (其它尺寸,例如800x600,處理方式類似,只需將以下處理 步驟中的相應尺寸替換即可)大小的光學傳感器為例,它在輸出每一行的有效 數(shù)據(jù)(640個值)之后,還要經(jīng)過若干個水平空白(horizontal blank, HB )的 時鐘周期數(shù)(clock cycles)的時間間隔之后,才會開始輸出下一行的第一個有效 數(shù)據(jù)。而這個HB的值是事先根據(jù)光照條件、幀率要求等綜合考慮之后設定好 的一個固定值。因此,對8行緩沖區(qū)而言,就需要(640+HB^8個時鐘周期來 填滿,因此JPEG編碼器處理8行數(shù)據(jù)的壓縮任務必須在(640+1 )*8個時鐘 周期內(nèi)完成。從另一個角度講,JPEG編碼器處理完8行數(shù)據(jù)的壓縮任務,只 需在(640+HB) *8個時鐘周期內(nèi)完成就可以滿足要求。
一般而言,為了保證JPEG編碼器在最差情況下的性能,它實際上并不需 要(640+HB ) *8個時鐘周期即可完成這8行緩沖區(qū)數(shù)據(jù)的處理,因此會部分 時間是處于空閑狀態(tài)。假設處理每8行緩沖區(qū)時,JPEG編碼器有T個時鐘周 期的空閑。
本發(fā)明實施例,將所述T個空閑時鐘周期分散插入到宏塊之間,并通過 動態(tài)調(diào)整JPEG編碼器中前一個宏塊和后一個宏塊之間的插入的時鐘周期數(shù), 來調(diào)整編碼器輸出的碼流的速度,從而使得編碼器輸出碼流的瞬時速率上的波 動幅度變小,起到了平滑JPEG碼流的效果。
圖2為本發(fā)明方法實施例的步驟流程圖,如圖所示,包括如下步驟 步驟100,確定編碼器在處理緩沖區(qū)的圖像數(shù)據(jù)的過程中能夠分配的空閑 時鐘周期的總數(shù)T
步驟200,將所述緩沖區(qū)的宏塊編碼后的比特數(shù)與預定門限進行比較,根 據(jù)比較結(jié)果動態(tài)調(diào)整宏塊之間插入的時鐘周期數(shù),所述緩沖區(qū)的宏塊之間所有 插入的時鐘周期的總數(shù)不大于所述空閑時鐘周期的總數(shù)T。
其中,所述步驟100具體包括
確定為編碼器處理緩沖區(qū)的圖像數(shù)據(jù)所分配的時鐘周期數(shù);
確定編碼器處理緩沖區(qū)的圖像數(shù)據(jù)所實際需要的時鐘周期數(shù);
用所述分配的時鐘周期數(shù)減去所述實際需要的時鐘周期數(shù),獲得所述空閑
時鐘周期的總數(shù)T。
在所述步驟200中,本發(fā)明實施例通過一個變量n來記錄和跟蹤每個宏塊 編碼后產(chǎn)生的碼流大小(例如,字節(jié)數(shù),或比特數(shù)),并與事先設定的第一閾 值thd來比較,來動態(tài)調(diào)整連續(xù)兩個宏塊開始編碼的空閑時鐘間隔,從而以更 小的尺度(即更高的精度)來對碼流生成的速度進行干預,起到了較好的碼流 平滑效果。具體步驟如下(以VGA, 640x480為例)
1) 初始化。變量MBs代表還沒有插入時鐘周期的剩余宏塊的數(shù)量,初始 MBs=640/8=80;變量Total代表剩余的可用的空閑時鐘周期,初始Total二T;
2) 對當前宏塊進行編碼,得到碼流的比特數(shù)n.如果n<=thd,則在當前 宏塊和下一個宏塊之間不插入空閑時鐘數(shù)化=0);如果n〉thd,則在當前宏塊和 下一個宏塊之間插入k= Total /MBs個時鐘數(shù);
MBs=MBs-l; Total = Total — k ;
重復步驟2),直到完成當前8行緩沖區(qū)的數(shù)據(jù)編碼。
之后,需要重復步驟100和步驟200,直到完成當前整個圖像的數(shù)據(jù)編碼。
在本實施例中,丁 = 400個時鐘周期,而每8行緩沖區(qū)共有640/8=80個宏 塊(每個宏塊有8x8個像素)。事先設定的閾值thd二45比特,即每個宏塊編碼 后平均應該在45比特大小。
對前40個宏塊,假設每個宏塊編碼后產(chǎn)生的碼流大小均不超過45比特, 因此每兩個宏塊之間空閑間隔為0個時鐘周期。對后40個宏塊,假設每個宏 塊編碼后產(chǎn)生的碼流大小均為50比特,因此在每兩個宏塊之間都會插入 400/40= 10個時鐘周期的空閑間隔。
當然,本發(fā)明實施例是根據(jù)已編碼的一個或若干個宏塊的碼流比特數(shù),來 動態(tài)調(diào)整前一個宏塊和后一個宏塊之間插入的空閑時鐘數(shù),并保證在一個宏塊 行(8行緩沖數(shù)據(jù))的時間內(nèi),所有插入的累計空閑時鐘數(shù)不超過T。本領(lǐng)域 技術(shù)人員可以在不違背這個實質(zhì)精神的前提下,采用其他動態(tài)插入空閑時鐘數(shù) 的方法來達到類似的效果。例如,可以引入第二預定門限f, e>thd;如果n〉thd, 將所述比特數(shù)n與f進行比較,如果n〉f,說明當前宏塊過大,需要多插入時 鐘周期才能平滑碼流,因此在當前宏塊和下一個宏塊之間插入的時鐘周期數(shù)
8
k=mx Total/MBs,其中m為預設的大于1的系數(shù),然后使MBs=MBs-l , Total =Total - k。
對應以上方法,本發(fā)明實施例還提供了一種圖像碼流的平滑裝置,包括
空閑時鐘周期總數(shù)的確定模塊,用于確定編碼器在處理緩沖區(qū)的圖像數(shù) 據(jù)的過程中能夠分配的空閑時鐘周期的總數(shù)T
時鐘周期插入模塊,用于將所述緩沖區(qū)的宏塊編碼后的比特數(shù)與預定門 限進行比較,根據(jù)比較結(jié)果動態(tài)調(diào)整宏塊之間插入的時鐘周期數(shù),所述緩沖區(qū) 的宏塊之間所有插入的時鐘周期的總和不大于所述空閑時鐘周期的總數(shù)T。
其中,所述空閑時鐘周期總數(shù)的確定模塊還包括
第一單元,用于確定為編碼器處理緩沖區(qū)的圖像數(shù)據(jù)所分配的時鐘周期
數(shù);
第二單元,用于確定編碼器處理緩沖區(qū)的圖像數(shù)據(jù)所實際需要的時鐘周期
數(shù);
第三單元,用于將所述分配的時鐘周期數(shù)減去所述實際需要的時鐘周期 數(shù),獲得所述空閑時鐘周期的總數(shù)T。
由上可知,本發(fā)明實施例具有以下優(yōu)勢
1) 將T個空閑時鐘周期分散插入到宏塊之間,并通過動態(tài)調(diào)整JPEG編 碼器中前一個宏塊和后一個宏塊之間的插入的時鐘周期數(shù),來調(diào)整編碼器輸出 的碼流的速度,從而使得編碼器輸出碼流的瞬時速率上的波動幅度變小,起到 了平滑JPEG碼流的效果。
2) 設置多個比較門限,可以更為精確的平滑JPEG碼流。 以上所述僅是本發(fā)明的優(yōu)選實施方式,應當指出,對于本技術(shù)領(lǐng)域的普通
技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾, 這些改進和潤飾也應^L為本發(fā)明的保護范圍。
權(quán)利要求
1.一種圖像碼流的平滑方法,其特征在于,包括如下步驟步驟一,確定編碼器在處理緩沖區(qū)的圖像數(shù)據(jù)的過程中能夠分配的空閑時鐘周期的總數(shù)T;步驟二,將所述緩沖區(qū)的宏塊編碼后的比特數(shù)與預定門限進行比較,根據(jù)比較結(jié)果動態(tài)調(diào)整宏塊之間插入的時鐘周期數(shù),所述緩沖區(qū)的宏塊之間所有插入的時鐘周期的總數(shù)不大于所述空閑時鐘周期的總數(shù)T。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟一具體包括 確定為編碼器處理緩沖區(qū)的圖像數(shù)據(jù)所分配的時鐘周期數(shù);確定編碼器處理緩沖區(qū)的圖像數(shù)據(jù)所實際需要的時鐘周期數(shù); 用所述分配的時鐘周期數(shù)減去所述實際需要的時鐘周期數(shù),獲得所述空閑 時鐘周期的總數(shù)T。
3. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟二具體包括 步驟a,初始化變量MBs、 Total, MBs的初始值為所述緩沖區(qū)的宏塊的總數(shù),Total的初始值為T;步驟b,對當前宏塊進行編碼,得到當前宏塊碼流的比特數(shù)n,將所述比 特數(shù)n與第一預定門限thd進行比較,如果iK4hd,則在當前宏塊和下一個宏 塊之間插入的時鐘周期數(shù)k=0;如果n〉thd,則在當前宏塊和下一個宏塊之間 插入的時鐘周期數(shù)k= Total /MBs;使MBs=MBs-1, Total = Total - k ;步驟c,重復步驟b,直到完成所述緩沖區(qū)中所有宏塊的數(shù)據(jù)編碼。
4. 根據(jù)權(quán)利要求3所述的方法,其特征在于,所述步驟b中,還包括 設置第二預定門限f, f>thd;如果n〉thd,將所述比特數(shù)n與f進行比較,如 果n〉f,則在當前宏塊和下一個宏塊之間插入的時鐘周期數(shù)k-mx Total/MBs, 然后使MBs-MBs-l, Total = Total-k;其中m為預設的大于1的系數(shù)。
5. 根據(jù)權(quán)利要求3所述的方法,其特征在于,還包括步驟四,重復步驟一至步驟二,直到完成當前整個圖像的數(shù)據(jù)編碼。
6. —種圖像碼流的平滑裝置,其特征在于,包括空閑時鐘周期總數(shù)的確定模塊,用于確定編碼器在處理緩沖區(qū)的圖像數(shù) 據(jù)的過程中能夠分配的空閑時鐘周期的總數(shù)T時鐘周期插入模塊,用于將所述緩沖區(qū)的宏塊編碼后的比特數(shù)與預定門 限進行比較,根據(jù)比較結(jié)果動態(tài)調(diào)整宏塊之間插入的時鐘周期數(shù),所述緩沖區(qū) 的宏塊之間所有插入的時鐘周期的總和不大于所述空閑時鐘周期的總數(shù)T。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述空閑時鐘周期總數(shù)的 確定模塊還包括第一單元,用于確定為編碼器處理緩沖區(qū)的圖像數(shù)據(jù)所分配的時鐘周期數(shù);第二單元,用于確定編碼器處理緩沖區(qū)的圖像數(shù)據(jù)所實際需要的時鐘周期數(shù);第三單元,用所述分配的時鐘周期數(shù)減去所述實際需要的時鐘周期數(shù),獲 得所述空閑時鐘周期的總數(shù)T。
全文摘要
本發(fā)明提供一種圖像碼流的平滑方法和裝置,方法包括步驟一,確定編碼器在處理緩沖區(qū)的圖像數(shù)據(jù)的過程中能夠分配的空閑時鐘周期的總數(shù)T;步驟二,將所述緩沖區(qū)的宏塊編碼后的比特數(shù)與預定門限進行比較,根據(jù)比較結(jié)果動態(tài)調(diào)整宏塊之間插入的時鐘周期數(shù),所述緩沖區(qū)的宏塊之間所有插入的時鐘周期的總數(shù)不大于所述空閑時鐘周期的總數(shù)T。本發(fā)明能夠既不損失圖像內(nèi)容,又使JPEG碼率均勻平滑。
文檔編號H04N7/26GK101360229SQ200810119739
公開日2009年2月4日 申請日期2008年9月8日 優(yōu)先權(quán)日2008年9月8日
發(fā)明者浩 王 申請人:北京中星微電子有限公司