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