用于編碼視頻的方法和編碼器系統的制作方法
【技術領域】
[0001] 本發明涉及數字圖像壓縮領域,具體地涉及用于編碼視頻的方法和用于編碼視頻 的編碼器系統。
【背景技術】
[0002] 在數字視頻系統中,如在網絡相機監控系統中,視頻序列在進行傳輸之前使用各 種視頻編碼方法進行壓縮。在許多數字視頻編碼系統中,兩個主要模式用于壓縮視頻幀序 列中的視頻幀:幀內模式和幀間模式。在幀內模式中,通過經由預測、變換和熵編碼而利用 單個幀的特定通道內的像素的空間冗余,對亮度通道和色度通道進行編碼。經編碼的幀被 稱為幀內編碼幀,還可以被稱為1-幀。相反,幀間模式利用分離的幀之間的時間冗余,并且 依賴于運動補償預測技術,運動補償預測技術針對所選擇的像素塊而通過編碼一個幀到另 一幀的像素中的運動來根據之前的一個或多個先前幀預測幀的多個部分。經編碼的幀被稱 為幀間編碼幀,并且可以被稱為P-幀(前向預測幀),p-幀可以指解碼順序中的先前幀,或 者指B-幀(雙向預測幀),B-幀可以指兩個或更多個先前解碼的幀,并且可以具有這些幀 的用于預測的任意顯示順序關系。進一步,經編碼的幀被布置成圖片組或G0P,其中每組圖 片起始于1-幀,并且后續幀是P-幀或B-幀。圖片組中的幀的數量通常指GOP長度。GOP 長度可以從1變化到例如255變化,1意味著在一組圖片中僅存在幀內編碼幀而沒有幀間編 碼幀,255意味著在一組圖片中存在一個幀內編碼幀而之后是254個幀間編碼幀。因為與幀 間編碼幀相比,幀內編碼幀通常需要更多比特來表示圖像,所以與具有較短GOP長度的運 動視頻相比,具有更長GOP長度的運動視頻通常將產生低的輸出比特率。
[0003] 在經編碼的視頻序列的接收位置,解碼經編碼的幀。對網絡相機監控系統的關注 是用于傳輸經編碼的視頻的可用帶寬。這在采用大量相機的系統中是尤其正確的。進一步, 這種關注在可用帶寬低的情況中尤其重要,如當視頻序列要被傳輸給移動設備(例如移動 電話、PDA或平板計算機)時。關于圖像存儲,產生相似問題,例如當將圖像存儲在相機中 攜帶的SD卡上時。在相對于高質量視頻圖像的興趣而平衡可用帶寬或存儲的情況中,必須 進行折衷。已經使用多種方法和系統來控制編碼,從而降低從相機傳輸的比特率。這些已 知方法和系統通常應用比特率限制,并且控制編碼,以使相機的輸出比特率總是低于比特 率限制。以這種方式,可以確保可用帶寬是足夠的,以使系統中的所有相機都可以將其視頻 序列傳輸至接收位置,例如控制中心,在這里操作者可以監控來自系統的相機的視頻,并且 可以記錄視頻以供后期使用。然而,向所有相機應用比特率限制可能經常導致不期望低的 圖像質量,因為比特率限制可能需要對包含眾多細節的圖像進行嚴重壓縮,而不管在監控 的場景中正在發生什么。通常,與靜態場景的圖像相比,操作者對具有運動的場景的圖像更 加感興趣。仍然,當應用比特率限制時,具有運動的圖像可能需要被嚴重地壓縮,從而不超 過該限制,由此導致低圖像質量。如上所述的,另一種降低輸出比特率的方式是使用更長的 GOP長度。然而,因為這隱含著幀內編碼幀的頻率被降低,所以由在編碼幀內編碼幀時采用 的預測導致的錯誤可以進一步傳播,從而導致在顯示的圖像中存在惱人的編碼偽影。
【發明內容】
[0004] 本發明的目的是提供一種用于編碼視頻的方法,該方法使得能夠降低輸出比特 率,同時在捕捉的場景中仍然允許運動的高質量視頻圖像。
[0005] 根據第一方面,該目的完全地或至少部分地通過用于編碼視頻的方法來實現,該 方法包括:接收表示待編碼的視頻的當前數字圖像幀中的像素的信息;基于接收到的所述 當前數字圖像幀中的相鄰像素組的所述信息,計算每個相鄰像素組的組值;對第一序列的 數字圖像幀中的對應相鄰像素組的組值進行累加,形成累加組值的第一累加,所述第一序 列的數字圖像幀包括所述當前幀和第一數量的先前圖像幀;對第二序列的數字圖像幀中的 對應相鄰像素組的組值進行累加,以形成累加組值的第二累加,所述第二序列的數字圖像 幀包括所述當前幀和第二數量的先前數字圖像幀;其中所述第二序列的數字圖像幀與所述 第一序列的圖像幀相比包括在更長的時間段內捕捉到的數字圖像幀;將所述第一累加的累 加組值與所述第二累加中的對應相鄰像素組的累加組值進行比較;基于組值的第一累加和 組值的第二累加的比較,計算全局變化值;基于所述全局變化值,將GOP長度設置為在圖片 組中待編碼的幀的數量;以及基于所述GOP長度,將所述當前圖像幀編碼為幀內編碼幀或 幀間編碼幀。利用這種方法,有可能在通過使用不太頻繁的幀內編碼幀編碼靜態場景的圖 像時降低比特率,而可以用更頻繁的幀內編碼幀來編碼具有運動的場景的圖像,由此降低 編碼偽影。
[0006] 計算全局變化值的步驟可以包括基于所述第一累加的對應累加組值和第二累加 的對應累加組值之間的差異而計算每個相鄰像素組的變化值。這可以提供計算全局變化值 的實用且可靠的方式。
[0007] 在變型中,該方法進一步包括:將所述全局變化值與高閾值進行比較,以及如果所 述全局變化值超過所述高閾值,那么從當前GOP長度減小所述GOP長度。以這種方式,可以 調整GOP長度,以使當在捕捉到的場景中存在運動時使用較短的GOP長度。
[0008] 高閾值可以對應于如下全局變化值:該全局變化值表示所述當前圖像幀中捕捉到 的場景中關注對象的運動。
[0009] 該方法可以進一步包括:將所述全局變化值與低閾值比較,以及如果所述全局變 化值低于所述低閾值,那么從當前GOP長度增加所述GOP長度。以這種方式,可以調整所述 GOP長度,以使在捕捉到的場景是靜態的時使用更長的GOP長度,由此降低輸出比特率。 [0010] 低閾值可以對應于如下全局變化值:該全局變化值表示所述當前圖像幀中捕捉到 的場景中基本沒有運動。
[0011] 在變型中,該方法進一步包括:將所述GOP長度限制為由最大容許GOP長度和最小 容許GOP長度限定的預定GOP范圍內。由此,可以確保GOP長度不變得太長,太長的后續風 險是惱人的編碼偽影,GOP長度也不變得太短,太短導致不能接受的高傳輸比特率。
[0012] 該方法可以包括:將所述全局變化值與全局變化限度進行比較,其中所述全局變 化限度是具有比所述高閾值更高的值的閾值,以及如果所述全局變化值超過所述全局變化 限度,則獨立于GOP長度而將所述當前圖像幀編碼為幀內編碼幀。以這種方式,可以確保當 前圖像幀被編碼為幀內編碼幀,否則其將必須被編碼為幀間編碼幀,但是宏塊中的許多是 在幀內模式下編碼的。
[0013] 全局變化限度可以對應于以下全局變化值:該全局變化值表示所述當前圖像幀中 捕捉到的場景中實質場景變化。實質變化例如可以是由在房間內打開或關閉燈而產生的, 由快速移動的云而產生的、或者由占據圖像大部分的對象移動穿過所捕捉的場景而產生 的。
[0014] 組值累加的步驟可以包括將所述第一序列的數字圖像幀的對應像素組的組值和 所述第二序列的數字圖像幀中的對應像素組的組值分別相加。
[0015] 每個相鄰像素組可以包括與編碼步驟中使用的宏塊中的像素的數量相等的像素 的數量。這可以使基于全局變化值和/或局部變化值的計算來設置壓縮值變得特別方便。
[0016] 根據第二方面,上述目的完全地或至少部分地通過用于編碼視頻的編碼器系統來 實現,該編碼器系統包括:接收模塊,被設置成接收表示待編碼的視頻的當前數字圖像幀中 的像素的信息;組值模塊,被設置成基于接收到的所述當前數字圖像幀中的相鄰像素組的 所述信息,計算每個相鄰像素組的組值;累加模塊,被設置成對第一序列的數字圖像幀中 的對應相鄰像素組的組值進行累加,以形成累加組值的第一累加,所述第一序列的數字圖 像幀包括所述當前圖像幀和第一數量的先前圖像幀,并且所述累加模塊被設置成對第二序 列的數字圖像幀中的對應相鄰像素組的組值進行累加,以形成累加組值的第二累加,所述 第二序列的數字圖像幀包括所述當前圖像幀和第二數量的先前數字圖像幀,所述第二序列 的數字圖像幀與所述第一序列的圖像幀相比包括在更長的時間段內捕捉的數字圖像幀;比 較模塊,被設置成將所述第一累加的累加組值與所述第二累加的對應相鄰像素組的累加組 值進行比較;全局變化值模塊,被設置成基于組值的第一累加和第二累加的比較,計算全局 變化值;GOP長度模塊,被設置成基于所述全局變化值,將GOP長度設置為圖片組中待編碼 的幀的數量;以及編碼模塊,被