專利名稱:基于圖像切片結(jié)構(gòu)的幀場自適應(yīng)編碼方法
技術(shù)領(lǐng)域:
本發(fā)明涉及視頻信號的編碼技術(shù),更具體地說,涉及一種基于圖像切片結(jié)構(gòu)的幀場自適應(yīng)編碼方法。
背景技術(shù):
傳統(tǒng)的視頻編碼標準如ITU制定的H.261,H.263,H.263+,H.264標準以及ISO的MPEG組織制定的MPEG-1,MPEG-2,MPEG-4等都是建立在混合編碼(Hybrid Coding)框架之上的。所謂混合編碼框架是一種混合時間空間視頻圖象編碼方法,這種方法包括先進行幀內(nèi)、幀間的預測,以消除時間域的相關(guān)性;然后對原始圖象與預測結(jié)果的殘差進行二維變換(采用離散余弦變換或其它線性變換),消除空間相關(guān)性;然后進行熵編碼,去除統(tǒng)計上的冗余度。
為了提高視頻信號的壓縮效率,預測是視頻編碼標準中最重要的技術(shù),預測方法一般分為幀內(nèi)預測和幀間預測。
在上述視頻編碼標準中,宏塊(16×16的圖象象素塊)是預測及編解碼的基本單位。幀間預測方法是用這些矩形塊大小的原始圖象(原始輸入的圖象),即原始圖象塊,在參考圖象(在以前編碼的重建幀中用作為參考的圖象)中進行運動估計,就得到原始圖象塊的最佳匹配圖象塊作為預測結(jié)果。幀內(nèi)預測方法是在當前編碼幀中利用需要編碼的矩形塊周圍已經(jīng)編碼的矩形塊,對需要編碼的矩形塊進行預測得到的預測矩形塊作為預測結(jié)果。
目前在視頻編碼標準中,主要存在四種預測編碼方法。因為視頻信號的輸入可以分為逐行掃描的和隔行掃描的。逐行掃描的視頻信號叫作幀圖象,隔行掃描的視頻信號叫作場圖象。幀圖象中的宏塊叫幀宏塊,場圖象中的宏塊叫場宏塊。以幀宏塊為單位的預測編碼方法叫幀預測編碼方法(簡稱幀編碼),以場宏塊為單位的預測編碼方法叫場預測編碼方法(簡稱場編碼)。在H.261,H.263,H.263+,H.264標準以及ISO的MPEG組織制定的MPEG-1,MPEG-2,MPEG-4標準等都包含的幀編碼,MPEG-2,MPEG-4,H.264還括場編碼。在H.264又提出了根據(jù)編碼代價進行自適應(yīng)選擇幀編碼或場編碼的自適應(yīng)幀場預測編碼方法,以及基于宏塊對的自適應(yīng)幀場預測編碼方法。
幀場自適應(yīng)預測編碼方法為對視頻信號首先分別進行幀編碼和場編碼然后根據(jù)兩者的編碼代價,決定采用幀編碼還是場編碼。這種預測編碼方法能夠適應(yīng)幀圖象和場圖象,但是這種方法是以整幀的編碼代價為依據(jù)進行選擇的,當圖像的一部分比較適合按幀編碼,而另一部分比較適合按場編碼時就無法找到最佳的編碼方法。
基于宏塊對的幀場自適應(yīng)預測編碼方法為編碼單位是32行×16列的象素塊,先進行基于宏塊對的幀編碼(分成上下兩個宏塊分別編碼)和場編碼(把奇數(shù)行和偶數(shù)行分別抽出來形成兩個宏塊再分別編碼),然后根據(jù)兩者的編碼代價,決定采用幀編碼還是場編碼。這種預測編碼方法能夠較好的適應(yīng)圖像的局部運動,但在按場編碼時編碼第二個宏塊時不利用第一個宏塊做預測,效率仍然不是很高,而且復雜度很大。
因此,就需要一種更加有效,更加靈活的圖像編碼方法。
發(fā)明內(nèi)容
由于現(xiàn)有技術(shù)中對整個圖像的幀場自適應(yīng)編碼和基于宏塊對的幀場自適應(yīng)編碼方法各有缺點,都不能很好的適應(yīng)圖像特性的變化。因此本發(fā)明提供一種新的圖像數(shù)據(jù)自適應(yīng)編碼方法。該方法中,將圖像分割為圖像切片,在將圖像切片進一步分割為宏塊,在進行編碼方式的選擇時,以圖像切片為單位選擇幀編碼還是場編碼,這樣即克服了整個圖像編碼方案靈活性不足的缺點,又避免了基于宏塊的方案運算量太大、復雜度太大的缺點。
本發(fā)明的技術(shù)方案提供一種基于圖像切片結(jié)構(gòu)的幀場自適應(yīng)編碼方法,包括如下的步驟a.將圖像劃分成一個或數(shù)個圖像切片;b.對所述每一個圖像切片,分別進行幀編碼和場編碼;其中,進行幀編碼時將所述圖像切片劃分成數(shù)個宏塊,之后對每一個宏塊進行編碼;進行場編碼時首先將所述圖像切片的奇數(shù)行象素和偶數(shù)行象素分別形成一子切片,之后再將所述兩個子切片劃分成數(shù)個宏塊,再對每一個宏塊進行編碼;c.根據(jù)所述幀編碼和場編碼的編碼代價,選擇代價較小的一個作為所述圖像切片的編碼方式;d.為所述每一個圖像切片添加一圖像切片頭,其與其中的數(shù)個宏塊的編碼數(shù)據(jù)一同組成圖像切片的編碼數(shù)據(jù),其中,所述圖像切片頭標示該圖像切片中的宏塊是采用幀編碼方式還是場編碼方式;e.為所述每一個圖像切片添加一宏塊索引,其不包括在所述圖像切片的編碼數(shù)據(jù)中;f.為所述每一個圖像添加一圖像頭,其與其中的一個或數(shù)個圖像切片的編碼數(shù)據(jù)以及所述宏塊索引一同組成圖像的編碼數(shù)據(jù)。
在上述的方法中,所述圖像的最小單位為采用逐行掃描序列的一幀或者采用隔行掃描的相鄰的兩場。而所述圖像切片為所述圖像中的矩形區(qū)域,其左上角象素到所述圖像上邊和左邊的距離都是16的整數(shù)倍,所述圖像切片的高度和寬度也是16的整數(shù)倍。所述圖像切片的最小單位是32×16象素。所述宏塊的大小為16×16象素。
較佳的,采用該方法對所述圖像切片進行場編碼時,首先選擇其中的一個子切片進行編碼,之后再選擇另一個子切片進行編碼。在對后一個子切片進行編碼時,進行運動補償,所述運動補償?shù)膮⒖挤秶上拗圃谒銮耙粋€子切片之內(nèi)。
本發(fā)明的方法中進行幀編碼和場編碼需要建立不同的宏塊索引,對所述圖像切片進行幀編碼時,所述建立宏塊索引按照如下的步驟按照光柵掃描的順序從0開始依次遞增,每次增加1。
而對所述圖像切片進行場編碼時,建立宏塊索引按照如下的步驟e1.第一個子切片的左上角宏塊的索引為0;e2.在同一個子切片內(nèi)按照光柵掃描的順序依次遞增,每次增加1;e3.第二個子切片的左上角宏塊的索引為第一個子切片的右下角宏塊的索引加1。
采用上述技術(shù)方案后,可以大大地提高圖像編碼的效率,和傳統(tǒng)的技術(shù)相比較,本發(fā)明的方法具有如下的優(yōu)勢(1)相對于整幀的幀場自適應(yīng)編碼方案來說,本發(fā)明的方法能夠更好的適應(yīng)圖像的局部運動。
(2)相對于基于宏塊對的幀場自適應(yīng)編碼方案來說,只需在圖像切片頭中標示(例如通過增加一個標志位來實現(xiàn))其中的宏塊是幀宏塊還是場宏塊,不需要再為每一個宏塊對傳送一個標志位來指出是幀宏塊還是場宏塊,從而提高了編碼效率。
(3)圖像切片可大可小,最大可以是整個圖像,最小可以是32行×16列的象素塊。因此只要適當設(shè)定圖像切片的大小,本發(fā)明的方法既可實現(xiàn)整幀的幀場自適應(yīng)編碼方案又可實現(xiàn)基于宏塊對的幀場自適應(yīng)編碼方案,具有更好的靈活性。
同時,采用上述的編碼方法還可以降低編解碼器的復雜度(1)解碼器每次解一個圖像切片。在圖像切片內(nèi)部宏塊的編碼模式是一致的,不需要像解碼基于宏塊對的幀場自適應(yīng)編碼方案那樣進行幀場切換,從而簡化了代碼的編寫和存儲器訪問的次數(shù)。
(2)編碼器可以做得很簡單,也可以做得很復雜。最簡單的就是退化到整幀的幀場自適應(yīng),即一個圖像只有一個圖像切片。對于非實時的應(yīng)用,編碼器可以實現(xiàn)復雜的優(yōu)化算法,在所有可能的圖像切片分割方式中尋找最佳的分割方式。但是編碼器的實現(xiàn)并不影響解碼器,無論編碼器怎么編碼,對于解碼器來說都是一樣的。
本發(fā)明的特征、本質(zhì)和優(yōu)勢將在下面結(jié)合附圖和實施例的描述之后變得更加明顯,其中圖1是按照本發(fā)明的圖像數(shù)據(jù)自適應(yīng)編碼方法的一個實施例的流程圖;圖2是按照本發(fā)明的圖像數(shù)據(jù)自適應(yīng)編碼方法對一視頻流中的圖像進行編碼的過程的一個實施例的流程圖;
圖3是按照本發(fā)明的圖像數(shù)據(jù)自適應(yīng)編碼方法對一視頻流中的圖像進行解碼的過程的一個實施例的流程圖。
具體實施例方式
下面結(jié)合附圖和實施例來進一步說明本發(fā)明的技術(shù)方案。
本發(fā)明的主要設(shè)計思想是將圖像首先分割成圖像切片,圖像切片的大小是可以變化的,最大可以設(shè)定為整個圖像,而最小可以設(shè)定為一個宏塊的大小。在每一個圖像切片中,再分成若干個宏塊,在對圖像進行編碼時,以圖像切片為單位考慮所采用的編碼方式(幀編碼或者是場編碼),即同一個圖像切片中的宏塊都采用相同的編碼方式。通過設(shè)定圖像切片,就能將圖像進行合理的分割,比如,在圖像中,一部分的區(qū)域比較適合使用幀編碼的方式,而另一部分區(qū)域比較適合使用場編碼的方式,按照本發(fā)明的方法,就可以將它們劃分成不同的圖像切片,分別采用幀編碼和場編碼的方式進行編碼。這樣,就比傳統(tǒng)技術(shù)中對整個圖像統(tǒng)一編碼的技術(shù)方案更加有效率。同時,和傳統(tǒng)技術(shù)中基于宏塊的編碼方式相比,本發(fā)明中的圖像切片的面積較大,也就是說一個圖像中具有相對數(shù)量較少的圖像切片,這樣就使得編碼運算的運算量和復雜度都得到了有效的降低。
本發(fā)明的基于圖像切片結(jié)構(gòu)的幀場自適應(yīng)編碼方法包括如下的步驟a.將圖像劃分成一個或數(shù)個圖像切片。本發(fā)明中圖像的最小單位為采用逐行掃描序列的一幀或者采用隔行掃描的相鄰的兩場。而圖像切片為圖像中的矩形區(qū)域,其左上角象素到圖像上邊和左邊的距離都是16的整數(shù)倍,圖像切片的高度和寬度也是16的整數(shù)倍。如前面所述的,圖像切片的大小是可變的,最大可以為整個圖像,最小理論上可以為一個宏塊(16×16象素)的大小。但考慮到編碼的性能和效率的問題,本發(fā)明的方法中最小的圖像切片的大小為32×16象素(2個宏塊的大小)。
b.對每一個圖像切片,分別進行幀編碼和場編碼。其中,進行幀編碼時將圖像切片劃分成數(shù)個宏塊,每個宏塊的大小為16×16象素,之后對每一個宏塊進行編碼。進行場編碼時首先將圖像切片的奇數(shù)行象素和偶數(shù)行象素分別形成一子切片,之后再將兩個子切片劃分成數(shù)個宏塊,宏塊的大小同樣為16×16象素,再對每一個宏塊進行編碼。由于在進行場編碼是其實需要的最小單位為兩個宏塊,因此本發(fā)明中規(guī)定圖像切片的最小單位為2個宏塊的大小。對于編碼方式來說,無論幀編碼的方式還是場編碼的方式都是本領(lǐng)域中的成熟的技術(shù),所以此處就不再多說了,這里還要說明的是,在進行場編碼時,首先選擇兩個子切片其中的一個進行編碼,之后再選擇另一個子切片進行編碼,且在對后一個子切片進行編碼時,進行運動補償,運動補償?shù)膮⒖挤秶上拗圃谇耙粋€子切片之內(nèi),也可以不不限制參考的范圍。就運動補償技術(shù)本身而言,其在本領(lǐng)域內(nèi)是被廣泛地使用的,所以這里就不詳細介紹運動補償?shù)脑砹?。本發(fā)明的方法在對一圖像切片進行場編碼時使用前一切片的編碼結(jié)果對后一切片的編碼進行運動補償,克服了現(xiàn)有技術(shù)中前后宏塊之間沒有聯(lián)系而造成的運算量較大的缺點。
c.根據(jù)幀編碼和場編碼的編碼代價,選擇代價較小的一個作為所述圖像切片的編碼方式。步驟b完成后,以圖像切片為單位比較采用幀編碼和場編碼方式的編碼代價,選取代價較小的一個作為該圖像切片的編碼方式。
d.為每一個圖像切片添加一圖像切片頭,其與其中的數(shù)個宏塊的編碼數(shù)據(jù)一同組成圖像切片的編碼數(shù)據(jù),其中,圖像切片頭標示該圖像切片中的宏塊是采用幀編碼方式還是場編碼方式。經(jīng)編碼之后的圖像切片數(shù)據(jù)應(yīng)當包括圖像切片頭和其中各個宏塊的編碼數(shù)據(jù),按照本發(fā)明的方法,每個圖像切片頭表明了該圖像切片中的各個宏塊所采用的編碼方式。前面已經(jīng)說過了,本發(fā)明中每一個圖像切片中的所有宏塊采用的編碼方式相同。因此至需要在圖像切片頭中表明就可以了,例如在圖像切片頭中定義一個標志位,該標志位的值就表示了該圖像切片中的宏塊所采取的編碼方式。本發(fā)明采用以圖像切片為單位選擇編碼方式的方法,與傳統(tǒng)的基于宏塊的方式相比較,減少了分割區(qū)域的數(shù)量,減少了編碼以及解碼過程中的編解碼方式的轉(zhuǎn)換次數(shù),降低了運算復雜度和運算量。
e.為每一個圖像切片添加一宏塊索引,其不包括在圖像切片的編碼數(shù)據(jù)中。按照本發(fā)明,一個圖像切片中會具有數(shù)個宏塊,為了區(qū)分這些宏塊,建立一宏塊索引,對于采用幀編碼和場編碼的圖像切片而言,建立宏塊索引的方式是不同的對圖像切片進行幀編碼時,建立宏塊索引按照如下的步驟按照光柵掃描的順序從0開始依次遞增,每次增加1。
對所述圖像切片進行場編碼時,建立宏塊索引按照如下的步驟e1.第一個子切片的左上角宏塊的索引為0;e2.在同一個子切片內(nèi)按照光柵掃描的順序依次遞增,每次增加1;e3.第二個子切片的左上角宏塊的索引為第一個子切片的右下角宏塊的索引加1。
f.為每一個圖像添加一圖像頭,其與其中的一個或數(shù)個圖像切片的編碼數(shù)據(jù)以及宏塊索引一同組成圖像的編碼數(shù)據(jù)。圖像頭中包括了一些組成視頻流或者諸如網(wǎng)絡(luò)地址的信息。
采用了本發(fā)明的技術(shù)方案后,大大地提高了圖像編碼的效率,和傳統(tǒng)的兩種技術(shù)相比較,本發(fā)明的方法具有如下的優(yōu)勢相對于整幀的幀場自適應(yīng)編碼方案來說,本發(fā)明的方法能夠更好的適應(yīng)圖像的局部運動。
相對于基于宏塊的編碼方案來說,只需在圖像切片頭中標示(例如通過增加一個標志位來實現(xiàn))其中的宏塊是幀宏塊還是場宏塊,不需要再為每一個宏塊對傳送一個標志位來指出是幀宏塊還是場宏塊,從而提高了編碼效率。
同時,圖像切片可大可小,最大可以是整個圖像,最小可以是32行×16列的象素塊。因此只要適當設(shè)定圖像切片的大小,本發(fā)明的方法既可實現(xiàn)整幀的幀場自適應(yīng)編碼方案又可實現(xiàn)基于宏塊對的幀場自適應(yīng)方法方案,具有更好的靈活性。
在解碼采用本發(fā)明的方法進行編碼的圖像數(shù)據(jù)時,同樣具有如下的幾點優(yōu)勢解碼器每次解一個圖像切片。在圖像切片內(nèi)部宏塊的編碼模式是一致的,不需要像解碼基于宏塊的編碼方案那樣進行幀場切換,從而簡化了代碼的編寫和存儲器訪問的次數(shù)。
編碼器可以做得很簡單,也可以做得很復雜。最簡單的就是退化到整幀的幀場自適應(yīng),即一個圖像只有一個圖像切片。對于非實時的應(yīng)用,編碼器可以實現(xiàn)復雜的優(yōu)化算法,在所有可能的圖像切片分割方式中尋找最佳的分割方式。但是編碼器的實現(xiàn)并不影響解碼器,無論編碼器怎么編碼,對于解碼器來說都是一樣的。
下面結(jié)合圖2和圖3分別介紹一下采用本發(fā)明的方法對一視頻流中的圖像進行編碼和解碼的具體實施步驟。
圖2是按照本發(fā)明的圖像數(shù)據(jù)自適應(yīng)編碼方法對一視頻流中的圖像進行編碼的過程的一個實施例的流程圖。如圖2示,包括如下的步驟S21.獲得視頻序列中圖像的原始數(shù)據(jù);S22.判斷是否還有未編碼的圖像,如果沒有了的話轉(zhuǎn)S28;S23.把圖像劃分為一個或數(shù)個圖像切片;S24.判斷是否還有未編碼的圖像切片,如果沒有了的話轉(zhuǎn)S22,繼續(xù)判斷視頻流中的下一圖像;S25.判斷該圖像切片的編碼方式是不是按幀編碼,不是的話轉(zhuǎn)S27;S26.按幀編碼該圖像切片,并轉(zhuǎn)S24;S27.按場編碼該圖像切片,并轉(zhuǎn)S24S28.結(jié)束。
需要注意的是,該流程圖中只是說明了對視頻流中的圖像進行編碼的總體步驟,具體的實施細節(jié)請參見前面所述的步驟a-f。
圖3是按照本發(fā)明的圖像數(shù)據(jù)自適應(yīng)編碼方法對一視頻流中的圖像進行解碼的過程的一個實施例的流程圖。
S31.獲得經(jīng)編碼的視頻序列編碼數(shù)據(jù),例如是按照上述的步驟S21一S27所編碼的;S32.判斷是否還有未解碼的圖像,如果沒有的話轉(zhuǎn)S38;S33.判斷是否還有未編碼的圖像切片,如果沒有的話轉(zhuǎn)S32;S34.解碼一個圖像切片頭;S35.判斷該圖像切片的編碼方式是不是按幀編碼的,不是的話轉(zhuǎn)S37;S36.按幀編碼的方式解碼該圖像切片,轉(zhuǎn)S33;
S37.按場編碼的方式解碼該圖像切片,轉(zhuǎn)S33S38.結(jié)束。
上述實施例是提供給熟悉本領(lǐng)域內(nèi)的人員來實現(xiàn)或使用本發(fā)明的,熟悉本領(lǐng)域的人員可在不脫離本發(fā)明的發(fā)明思想的情況下,對上述實施例做出種種修改或變化,因而本發(fā)明的保護范圍并不被上述實施例所限,而應(yīng)該是符合權(quán)利要求書提到的創(chuàng)新性特征的最大范圍。
權(quán)利要求
1.一種基于圖像切片結(jié)構(gòu)的幀場自適應(yīng)編碼方法,包括如下的步驟a.將圖像劃分成一個或數(shù)個圖像切片;b.對所述每一個圖像切片,分別進行幀編碼和場編碼;其中,進行幀編碼時將所述圖像切片劃分成數(shù)個宏塊,之后對每一個宏塊進行編碼;進行場編碼時首先將所述圖像切片的奇數(shù)行象素和偶數(shù)行象素分別形成一子切片,之后再將所述兩個子切片劃分成數(shù)個宏塊,再對每一個宏塊進行編碼;c.根據(jù)所述幀編碼和場編碼的編碼代價,選擇代價較小的一個作為所述圖像切片的編碼方式;d.為所述每一個圖像切片添加一圖像切片頭,其與其中的數(shù)個宏塊的編碼數(shù)據(jù)一同組成圖像切片的編碼數(shù)據(jù),其中,所述圖像切片頭標示該圖像切片中的宏塊是采用幀編碼方式還是場編碼方式;e.為所述每一個圖像切片添加一宏塊索引,其不包括在所述圖像切片的編碼數(shù)據(jù)中;f.為所述每一個圖像添加一圖像頭,其與其中的一個或數(shù)個圖像切片的編碼數(shù)據(jù)以及所述宏塊索引一同組成圖像的編碼數(shù)據(jù)。
2.如權(quán)利要求1所述的方法,其特征在于,所述圖像的最小單位為采用逐行掃描序列的一幀或者采用隔行掃描的相鄰的兩場。
3.如權(quán)利要求2所述的方法,其特征在于,所述圖像切片為所述圖像中的矩形區(qū)域,其左上角象素到所述圖像上邊和左邊的距離都是16的整數(shù)倍,所述圖像切片的高度和寬度也是16的整數(shù)倍。
4.如權(quán)利要求3所述的方法,其特征在于,所述圖像切片的最小單位是32×16象素。
5.如權(quán)利要求1至4中任一項所述的方法,其特征在于,所述宏塊的大小為16×16象素。
6.如權(quán)利要求1所述的方法,其特征在于,對所述圖像切片進行場編碼時,首先選擇其中的一個子切片進行編碼,之后再選擇另一個子切片進行編碼。
7.如權(quán)利要求6所述的方法,其特征在于,在對后一個子切片進行編碼時,進行運動補償,所述運動補償?shù)膮⒖挤秶上拗圃谒銮耙粋€子切片之內(nèi)。
8.如權(quán)利要求1所述的方法,其特征在于,對所述圖像切片進行幀編碼時,所述建立宏塊索引按照如下的步驟按照光柵掃描的順序從0開始依次遞增,每次增加1。
9.如權(quán)利要求1所述的方法,其特征在于,對所述圖像切片進行場編碼時,建立宏塊索引按照如下的步驟e1.第一個子切片的左上角宏塊的索引為0;e2.在同一個子切片內(nèi)按照光柵掃描的順序依次遞增,每次增加1;e3.第二個子切片的左上角宏塊的索引為第一個子切片的右下角宏塊的索引加1。
全文摘要
本發(fā)明公開了一種基于圖像切片結(jié)構(gòu)的幀場自適應(yīng)編碼方法,包括如下的步驟將圖像劃分成圖像切片;對每一個圖像切片,分別進行幀編碼和場編碼;選擇代價較小的一個作為圖像切片的編碼方式;為每一個圖像切片添加一標示該圖像切片所采用的編碼方式的圖像切片頭;為每一個圖像切片添加一宏塊索引;為每一個圖像添加一圖像頭,其與其中的一個或數(shù)個圖像切片的編碼數(shù)據(jù)以及宏塊索引一同組成圖像的編碼數(shù)據(jù)。本發(fā)明的方法既克服了整個圖像幀場自適應(yīng)編碼方案靈活性不足的缺點,又克服了基于宏塊對的幀場自適應(yīng)編碼方案運算量太大、復雜度太大的缺點。
文檔編號H04N7/32GK1595990SQ20041002571
公開日2005年3月16日 申請日期2004年7月2日 優(yōu)先權(quán)日2004年7月2日
發(fā)明者趙海武 申請人:上海廣電(集團)有限公司中央研究院