特許第6767488号(P6767488)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ グーグル インコーポレイテッドの特許一覧

特許6767488参照フレームのバッファ追跡を通じた動きベクトル参照の選択
<>
  • 特許6767488-参照フレームのバッファ追跡を通じた動きベクトル参照の選択 図000002
  • 特許6767488-参照フレームのバッファ追跡を通じた動きベクトル参照の選択 図000003
  • 特許6767488-参照フレームのバッファ追跡を通じた動きベクトル参照の選択 図000004
  • 特許6767488-参照フレームのバッファ追跡を通じた動きベクトル参照の選択 図000005
  • 特許6767488-参照フレームのバッファ追跡を通じた動きベクトル参照の選択 図000006
  • 特許6767488-参照フレームのバッファ追跡を通じた動きベクトル参照の選択 図000007
  • 特許6767488-参照フレームのバッファ追跡を通じた動きベクトル参照の選択 図000008
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6767488
(24)【登録日】2020年9月23日
(45)【発行日】2020年10月14日
(54)【発明の名称】参照フレームのバッファ追跡を通じた動きベクトル参照の選択
(51)【国際特許分類】
   H04N 19/52 20140101AFI20201005BHJP
   H04N 19/58 20140101ALI20201005BHJP
【FI】
   H04N19/52
   H04N19/58
【請求項の数】19
【全頁数】21
(21)【出願番号】特願2018-531153(P2018-531153)
(86)(22)【出願日】2016年12月21日
(65)【公表番号】特表2019-508918(P2019-508918A)
(43)【公表日】2019年3月28日
(86)【国際出願番号】US2016067980
(87)【国際公開番号】WO2017160366
(87)【国際公開日】20170921
【審査請求日】2018年8月10日
(31)【優先権主張番号】15/074,329
(32)【優先日】2016年3月18日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【弁理士】
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】リウ、ユーシン
(72)【発明者】
【氏名】ムケルジー、デバルガ
【審査官】 鉢呂 健
(56)【参考文献】
【文献】 特開2012−191298(JP,A)
【文献】 米国特許出願公開第2015/0055706(US,A1)
【文献】 大森 敏行、竹居 智久,第2部<コーデックの実像> H.264と共通点多いVP8 Web向けの工夫も一部に,日経エレクトロニクス,日経BP社,2011年 2月21日,第1050号,pp. 44-51
(58)【調査した分野】(Int.Cl.,DB名)
H04N 19/00−19/98
(57)【特許請求の範囲】
【請求項1】
コンピューティング装置を使用してビデオストリームを符号化する方法であって、前記ビデオストリームはフレームのシーケンスを有し、前記フレームはブロックを有し、前記ブロックは画素を有し、前記方法は、
フレームの前記シーケンスの第1フレームを符号化した後、前記第1フレームについての参照バッファインデックスマッピングを記憶する工程であって、前記参照バッファインデックスマッピングは、参照フレームの種類を識別する参照フレーム識別子を有する、参照フレームバッファ内複数の参照フレームの各々に対し、前記参照フレームを参照仮想インデックスに対してマッピングし、前記参照仮想インデックスをメモリ内の参照フレームに関するユニークな場所を表す参照バッファインデックスに対してマッピングする、記憶工程と、
前記記憶工程の後で、第2フレームの符号化に利用可能な複数の参照フレームを提供するべく、前記参照仮想インデックス内のそれぞれの参照フレーム識別子を有する1つまたは複数の参照フレームを更新することにより、前記参照フレームバッファを更新する、更新工程と、
前記更新工程の後で、前記第2フレームの現在ブロックに対する複数の動きベクトル候補を決定する工程であって、前記複数の動きベクトル候補は、前記第1フレーム内のコロケーテッドブロックを予測するために使用される第1動きベクトルを含む、工程と、
第2動きベクトルを生成するために、更新された前記参照フレームバッファの参照フレーム内で前記現在ブロックに対する動き検出を前記更新工程の後で実行する、動き検出実行工程と、
前記第1動きベクトルに関連付けられた前記参照フレームの前記参照仮想インデックスと共に記憶された前記参照バッファインデックスを、前記動き検出実行工程における前記参照フレームの参照バッファインデックスと比較する工程と、
前記動き検出実行工程における前記参照フレームの前記参照バッファインデックスが、前記第1動きベクトルに関連付けられた前記参照フレームの前記参照仮想インデックスと共に記憶された前記参照バッファインデックスに一致する場合、前記現在ブロックの符号化に関し、前記第1動きベクトルの優先度を、前記複数の動きベクトル候補のうちの残りの候補の優先度よりも高める工程と
備える、方法。
【請求項2】
前記第2フレームは、前記シーケンスにおいて前記第1フレームの後であり、
前記参照フレームバッファに保持される1つの参照フレームは、前記参照フレーム識別子として最終フレーム識別子を有する、符号化される現在フレームの前の前記シーケンスにおける最終フレームであり、
前記更新工程は、前記最終フレーム識別子に関連付けられた参照バッファインデックスを、前記第1フレームの参照バッファインデックスに更新する工程を含む、
請求項1に記載の方法。
【請求項3】
前記参照フレームバッファは、ゴールデンフレームと、代替参照フレームとを備え、
前記更新工程は、前記最終フレーム識別子に関連付けられた前記参照バッファインデックスのみを更新する工程を含む、
請求項2に記載の方法。
【請求項4】
前記参照フレームバッファは、前記参照フレーム識別子としてゴールデンフレーム識別子を有するゴールデンフレームと、前記参照フレーム識別子として代替参照フレーム識別子を有する代替参照フレームとを備え、さらに、
前記更新工程は、前記代替参照フレーム識別子に関連付けられた参照バッファインデックスを、新たな代替参照フレームの参照バッファインデックスに更新する代替参照フレーム参照バッファインデックス更新工程を含むか、
前記更新工程は、前記ゴールデンフレーム識別子に関連付けられた参照バッファインデックスを、新たなゴールデンフレームの参照バッファインデックスに更新するゴールデンフレーム参照バッファインデックス更新工程を含むか、
前記更新工程は、前記代替参照フレーム参照バッファインデックス更新工程と、前記ゴールデンフレーム参照バッファインデックス更新工程とを含む、
請求項2に記載の方法。
【請求項5】
前記第2動きベクトルを、前記第1動きベクトルを動きベクトル予測子として使用して符号化する工程をさらに備える請求項1乃至4のいずれか一項に記載の方法。
【請求項6】
前記第1動きベクトルの優先度を、前記複数の動きベクトル候補のうちの残りの候補の優先度よりも高める工程は、前記第1動きベクトルを使用して前記動き検出を初期化することにより、前記動き検出を実行する工程を含む請求項1乃至5のいずれか一項に記載の方法。
【請求項7】
前記第2動きベクトルを、前記第1動きベクトルを動きベクトル予測子として使用して符号化する工程をさらに備える請求項6に記載の方法。
【請求項8】
ビデオストリームを符号化する装置であって、前記ビデオストリームは、フレームのシーケンスを有し、前記フレームはブロックを有し、前記ブロックは画素を有し、前記装置は、
プロセッサと、
メモリと
を備え、前記プロセッサは、
フレームの前記シーケンスの第1フレームを符号化した後、前記第1フレームについての参照バッファインデックスマッピングを記憶する工程であって、前記参照バッファインデックスマッピングは、参照フレームの種類を識別する参照フレーム識別子を有する、参照フレームバッファ内複数の参照フレームの各々に対し、前記参照フレームを参照仮想インデックスに対してマッピングし、前記参照仮想インデックスを前記メモリ内の参照フレームに関するユニークな場所を表す参照バッファインデックスに対してマッピングする、記憶工程と、
前記記憶工程の後で、第2フレームの符号化に利用可能な複数の参照フレームを提供するべく、前記参照仮想インデックス内のそれぞれの参照フレーム識別子を有する1つまたは複数の参照フレームを更新することにより、前記参照フレームバッファを更新する、更新工程と、
前記更新工程の後で、前記第2フレームの現在ブロックに対する複数の動きベクトル候補を決定する工程であって、前記複数の動きベクトル候補は、前記第1フレーム内のコロケーテッドブロックを予測するために使用される第1動きベクトルを含む、工程と、
第2動きベクトルを生成するために、更新された前記参照フレームバッファの参照フレーム内で前記現在ブロックに対する動き検出を前記更新工程の後で実行する、動き検出実行工程と、
前記第1動きベクトルに関連付けられた前記参照フレームの前記参照仮想インデックスと共に記憶された前記参照バッファインデックスを、前記動き検出実行工程における前記参照フレームの参照バッファインデックスと比較する工程と、
前記動き検出実行工程における前記参照フレームの前記参照バッファインデックスが、前記第1動きベクトルに関連付けられた前記参照フレームの前記参照仮想インデックスと共に記憶された前記参照バッファインデックスに一致する場合、前記現在ブロックの符号化に関し、前記第1動きベクトルの優先度を、前記複数の動きベクトル候補のうちの残りの候補の優先度よりも高める工程と
を備える方法を実施するように構成される、装置。
【請求項9】
前記メモリと別個の第2メモリであって、前記プロセッサに前記方法を実施させる命令を記憶する、第2メモリをさらに備え、請求項8に記載の装置。
【請求項10】
記第1動きベクトルと、前記第1動きベクトルに関連付けられた前記参照フレームとを使用して、前記コロケーテッドブロックを符号化することにより、前記第1フレームを符号化済みのビデオビットストリームに符号化する工程と、
前記第1動きベクトルに関連付けられた前記参照フレームを、参照仮想インデックスに関連付け、前記参照仮想インデックスを、前記第1動きベクトルに関連付けられた前記参照フレームの前記参照バッファインデックスに関連付ける工程と、
前記符号化済みのビデオビットストリーム内の前記参照仮想インデックスを信号で送ることにより、前記第1動きベクトルに関連付けられた前記参照フレームをデコーダに信号で送る工程と
さらに含む、請求項8または9に記載の装置。
【請求項11】
前記参照フレームバッファは3つの参照フレームを備え、
前記3つの参照フレームの第1の参照フレームは、第1のユニークな参照フレーム識別子と、第1のユニークな参照バッファインデックスと、に関連付けられ、
前記3つの参照フレームの第2の参照フレームは、第2のユニークな参照フレーム識別子と、第2のユニークな参照バッファインデックスと、に関連付けられ、
前記3つの参照フレームの第3の参照フレームは、第3のユニークな参照フレーム識別子と、第3のユニークな参照バッファインデックスと、に関連付けられ、
前記記憶工程は、テーブルを記憶する工程を含み、前記テーブルは、前記3つの参照フレームの前記第1の参照フレームを前記第1のユニークな参照フレーム識別子と、前記第1のユニークな参照バッファインデックスと、に関連付け、前記3つの参照フレームの前記第2の参照フレームを前記第2のユニークな参照フレーム識別子と、前記第2のユニークな参照バッファインデックスと、に関連付け、前記3つの参照フレームの前記第3の参照フレームを前記第3のユニークな参照フレーム識別子と、前記第3のユニークな参照バッファインデックスと、に関連付ける、
請求項8に記載の装置。
【請求項12】
前記テーブルを記憶する工程が、前記メモリ内に前記テーブルを記憶する工程備える、請求項11に記載の装置。
【請求項13】
前記第2フレームは、前記シーケンスにおいて前記第1フレームの後であり、
前記参照フレームバッファは、
符号化される現在フレームの前の前記シーケンスにおける最終フレームであって、前記最終フレームは、前記参照フレーム識別子として最終フレーム識別子を有する最終フレームと、
前記参照フレーム識別子としてゴールデンフレーム識別子を有するゴールデンフレームと、
前記参照フレーム識別子として代替参照フレーム識別子を有する代替参照フレームと、を備え、さらに
前記更新工程は、
前記最終フレーム識別子に関連付けられた参照バッファインデックスを、前記第1フレームの参照バッファインデックスに更新する工程と、
前記代替参照フレーム識別子に関連付けられた参照バッファインデックスを、新たな代替参照フレームの参照バッファインデックスに更新する工程と、
前記ゴールデンフレーム識別子に関連付けられた参照バッファインデックスを、新たなゴールデンフレームの参照バッファインデックスに更新する工程と、のうちの1つ以上の工程を含む、
請求項8に記載の装置。
【請求項14】
記第2動きベクトルを、前記第1動きベクトルを動きベクトル予測子として使用して符号化する工程をさらに備える請求項8乃至13のいずれか一項に記載の装置。
【請求項15】
記第1動きベクトルを使用して前記動き検出を初期化することにより、前記現在ブロックを符号化することに関し、前記第1動きベクトルの優先度を、前記複数の動きベクトル候補のうちの残りの候補の優先度よりも高める工程をさらに備える請求項8乃至14のいずれか一項に記載の装置。
【請求項16】
符号化済みのビデオビットストリームを復号する装置であって、前記符号化済みのビデオビットストリームは、フレームのシーケンスを有し、前記フレームはブロックを有し、前記ブロックは画素を有し、前記装置は、
プロセッサと、
メモリとを備え、前記プロセッサは、
フレームの前記シーケンスの第1フレームを復号した後、前記第1フレームについての参照バッファインデックスマッピングを記憶する工程であって、前記参照バッファインデックスマッピングは、参照フレームの種類を識別する参照フレーム識別子を有する、参照フレームバッファ内複数の参照フレームの各々に対し、前記参照フレームを参照仮想インデックスに対してマッピングし、前記参照仮想インデックスを前記メモリ内の参照フレームに関するユニークな場所を表す参照バッファインデックスに対してマッピングする、記憶工程と、
前記記憶工程の後で、第2フレームの復号に利用可能な複数の参照フレームを提供するべく、前記参照仮想インデックス内のそれぞれの参照フレーム識別子を有する1つまたは複数の参照フレームを更新することにより、前記参照フレームバッファを更新する、更新工程と、
前記更新工程の後で、第2フレームの現在ブロックに対する複数の動きベクトル候補を決定する工程であって、前記複数の動きベクトル候補は、前記第1フレーム内のコロケーテッドブロックを予測するために使用される第1動きベクトルを含む、工程と、
前記第1動きベクトルに関連付けられた前記参照フレームの前記参照仮想インデックスと共に記憶された前記参照バッファインデックスを、前記第2フレームの前記現在ブロックを予測するために使用される前記参照フレームの参照バッファインデックスと比較する工程と、
前記第2フレームの前記現在ブロックを予測するために使用される前記参照フレームの前記参照バッファインデックスが、前記第1動きベクトルに関連付けられた前記参照フレームの前記参照仮想インデックスと共に記憶された前記参照バッファインデックスに一致する場合、前記現在ブロックの復号に関し、前記第1動きベクトルの優先度を、前記複数の動きベクトル候補のうちの残りの候補の優先度よりも高める工程と
を備える方法を実施するように構成される、装置。
【請求項17】
前記メモリと別個の第2メモリであって、前記プロセッサに前記方法を実施させる命令を記憶する、第2メモリをさらに備える請求項16に記載の装置。
【請求項18】
記符号化済みのビデオビットストリーム内の参照仮想インデックスを受信する工程であって、前記参照仮想インデックスは、前記第1動きベクトルに関連付けられた前記参照フレームに関連付けられる、工程と、
前記第1動きベクトルおよび前記第1動きベクトルに関連付けられた前記参照フレームを使用して、前記コロケーテッドブロックを復号することにより、前記第1フレームを復号する工程と、
前記参照仮想インデックスを、前記第1動きベクトルに関連付けられた前記参照フレームの前記参照バッファインデックスに関連付ける工程と
さらに備える請求項16または17に記載の装置。
【請求項19】
符号化済みのビデオビットストリームを復号する方法であって、前記符号化済みのビデオビットストリームは、フレームのシーケンスを有し、前記フレームはブロックを有し、前記ブロックは画素を有し、前記方法は、
フレームの前記シーケンスの第1フレームを復号した後、前記第1フレームについての参照バッファインデックスマッピングを記憶する工程であって、前記参照バッファインデックスマッピングは、参照フレームの種類を識別する参照フレーム識別子を有する、参照フレームバッファ内複数の参照フレームの各々に対し、前記参照フレームを参照仮想インデックスに対してマッピングし、前記参照仮想インデックスをメモリ内の参照フレームに関するユニークな場所を表す参照バッファインデックスに対してマッピングする、記憶工程と、
前記記憶工程の後で、第2フレームの復号に利用可能な複数の参照フレームを提供するべく、前記参照仮想インデックス内のそれぞれの参照フレーム識別子を有する1つまたは複数の参照フレームを更新することにより、前記参照フレームバッファを更新する、更新工程と、
前記更新工程の後で、前記第2フレームの現在ブロックに対する複数の動きベクトル候補を決定する工程であって、前記複数の動きベクトル候補は、前記第1フレーム内のコロケーテッドブロックを予測するために使用される第1動きベクトルを含む、工程と、
前記第1動きベクトルに関連付けられた前記参照フレームの前記参照仮想インデックスと共に記憶された前記参照バッファインデックスを、前記第2フレームの前記現在ブロックを予測するために使用される前記参照フレームの参照バッファインデックスと比較する工程と、
前記第2フレームの前記現在ブロックを予測するために使用される前記参照フレームの前記参照バッファインデックスが、前記第1動きベクトルに関連付けられた前記参照フレームの前記参照仮想インデックスと共に記憶された前記参照バッファインデックスに一致する場合、前記現在ブロックの復号に関し、前記第1動きベクトルの優先度を、前記複数の動きベクトル候補のうちの残りの候補の優先度よりも高める工程と
備える、方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、参照フレームのバッファ追跡を通じた動きベクトル参照の選択に関する。
【背景技術】
【0002】
デジタルビデオストリームは、フレームまたは静止画のシーケンスを用いるビデオを一般に表現する。各フレームは、複数のブロックを含んでよく、ブロックは明度、輝度、または画素に対する他の属性を記述する情報を含んでよい。典型的なビデオストリーム中のデータの量は大きく、ビデオの送信および記録は大量のコンピューティング資源または通信資源を使用し得る。ビデオデータに関連した多量のデータにより、送信および記録のために高性能の圧縮が必要である。ブロックベースのコーデックにおいては、この圧縮は動きベクトルを使用した予測を含む予測技術を伴う。
【図面の簡単な説明】
【0003】
図1】ビデオ符号化および復号システムの概略図。
図2】送信局または受信局を実装し得るコンピューティング装置の一例のブロック図。
図3】符号化され後に復号されるビデオストリームの図。
図4】本明細書に開示の一態様によるビデオ圧縮システムのブロック図。
図5】本明細書に開示の別の態様によるビデオ圧縮システムのブロック図。
図6】参照フレームのバッファ追跡を通じて動きベクトル参照を選択する処理のフローチャート図。
図7図6の処理を説明するために使用される参照バッファ更新の一例の図。
【発明を実施するための形態】
【0004】
本開示は、一般に、コンピューティング装置を使用したビデオストリームデータ等の画像データの符号化および復号に関し、ビデオストリームは、フレームのシーケンスを有し、各フレームはブロックを有し、および各ブロックは画素を有する。本開示は、フレームのシーケンスの第1フレームを符号化した後、複数の参照フレームの各々に対する参照フレーム識別子および参照バッファインデックスを記憶する工程と、記憶する工程の後で、参照フレーム識別子に関連付けられた参照フレームを更新することにより、複数の参照フレームを更新する工程と、更新する工程の後で、第2フレームの現在ブロックに対する複数の動きベクトル候補を決定する工程であって、複数の動きベクトル候補は、第1フレーム内のコロケーテッドブロックを予測するために使用される第1動きベクトルを含む、工程と、第2動きベクトルを生成するために複数の参照フレームの参照フレーム内で現在ブロックに対する動き検出を、更新する工程の後で実行する工程と、第1動きベクトルに関連付けられた参照フレームの参照フレーム識別子と共に記憶された参照バッファインデックスを、実行する工程に使用された参照フレームの参照バッファインデックスと比較する工程と、実行する工程に使用された参照フレームの参照バッファインデックスが、第1動きベクトルに関連付けられた参照フレームの参照フレーム識別子と共に記憶された参照バッファインデックスに一致する場合、第1動きベクトルを、現在ブロックの符号化に関する複数の動きベクトル候補のうちの残りの候補よりも、前に進める工程と、を含む。
【0005】
本明細書における開示の1つの態様は、画像データの符号化および復号を含み、第2フレームは、シーケンスにおいて第1フレームの後であり、複数の参照フレームの1つは、符号化される現在フレームの前のシーケンスにおける最終フレームを備え、また参照フレーム識別子として最終フレーム識別子を有し、複数の参照フレームを更新する工程は、最終フレーム識別子に関連付けられた参照バッファインデックスを、第1参照フレームの参照バッファインデックスに更新する工程を含む。複数の参照フレームは、ゴールデンフレームと、代替参照フレームとを備え、複数の参照フレームを更新する工程は、最終フレーム識別子に関連付けられた参照バッファインデックスのみを更新する工程を含む。複数の参照フレームは、参照フレーム識別子としてゴールデンフレーム識別子を有するゴールデンフレームと、参照フレーム識別子として代替参照フレーム識別子を有する代替参照フレームとを備え、さらに、複数の参照フレームを更新する工程は、代替参照フレーム識別子に関連付けられた参照バッファインデックスを、新たな代替参照フレームの参照バッファインデックスに更新する工程を含む、および複数の参照フレームを更新する工程は、ゴールデンフレーム識別子に関連付けられた参照バッファインデックスを、新たなゴールデンフレームの参照バッファインデックスに更新する工程を含む、のうちの1つ以上である。
【0006】
本明細書における開示の1つの態様は、画像データの符号化および復号を含み、複数の参照フレームを更新する工程は、それぞれの参照フレーム識別子に関連付けられた2つ以上の参照フレームを、記憶する工程の後に更新する工程を含み、複数の動きベクトル候補は、第1フレーム内のコロケーテッドブロックを予測するために使用される第3動きベクトルを含み、第4動きベクトルを生成するために、複数の参照フレームの異なる参照フレーム内で第2ブロックに対する第2動き検出を、更新する工程の後で実行する工程と、第3動きベクトルに関連付けられた参照フレームの参照フレーム識別子と共に記憶された参照バッファインデックスを、第2動き検出を実行する工程に使用された参照フレームの参照バッファインデックスと比較する工程と、第1動きベクトルを、現在ブロックの符号化に関する複数の動きベクトル候補のうちの残りの候補よりも、前に進める工程は、第1動きベクトルを、第3動きベクトルの符号化に関する複数の動きベクトル候補のうちの残りの候補よりも、前に進める工程と、第2動き検出を実行する工程に使用された参照フレームの参照バッファインデックスが、第3動きベクトルに関連付けられた参照フレームの参照フレーム識別子と共に記憶された参照バッファインデックスに一致する場合、第2動きベクトルを、第4動きベクトルの符号化に関する複数の動きベクトル候補のうちの残りの候補よりも、前に進める工程と、をさらに備える。
【0007】
本明細書に記載される装置の1つの態様は、プロセッサと、プロセッサに方法を実効させる命令を記憶する不揮発性メモリとを含む。方法は、フレームのシーケンスの第1フレームを符号化した後、複数の参照フレームの各々に対する参照フレーム識別子および参照バッファインデックスを記憶する工程と、記憶する工程の後で、参照フレーム識別子に関連付けられた参照フレームを更新することにより、複数の参照フレームを更新する工程と、更新する工程の後で、第2フレームの現在ブロックに対する複数の動きベクトル候補を決定する工程であって、複数の動きベクトル候補は、第1フレーム内のコロケーテッドブロックを予測するために使用される第1動きベクトルを含む、工程と、第2動きベクトルを生成するために複数の参照フレームの参照フレーム内で現在ブロックに対する動き検出を、更新する工程の後で実行する工程と、第1動きベクトルに関連付けられた参照フレームの参照フレーム識別子と共に記憶された参照バッファインデックスを、実行する工程に使用された参照フレームの参照バッファインデックスと比較する工程と、実行する工程に使用された参照フレームの参照バッファインデックスが、第1動きベクトルに関連付けられた参照フレームの参照フレーム識別子と共に記憶された参照バッファインデックスに一致する場合、第1動きベクトルを、現在ブロックの符号化に関する複数の動きベクトル候補のうちの残りの候補よりも、前に進める工程と、を含む。
【0008】
実施形態はまた、適切なコンピュータ装置上で実行された場合に、本明細書に記載される方法および装置を実施するよう構成されたコンピュータプログラムコードを備える1つまたは複数のコンピュータ可読媒体を提供する。
【0009】
本開示のこれらおよび他の態様は、以下の詳細な説明、添付の特許請求の範囲、および付随する図面において、より詳細に記載される。
本明細書の記載は、以下に記載される添付の図面を参照し、複数の図を通じて同様の符号は同様の部分を指す。
【0010】
ビデオストリームを送信または記憶するために必要な帯域幅を削減するため、ビデオストリームは様々な技術により圧縮され得る。ビデオストリームは、圧縮を伴い得るビットストリームに符号化されてよく、閲覧またはさらなる処理のための準備をするために、その後ビデオストリームを復号または復元し得るデコーダに対して送信されてよい。ビデオストリームの圧縮は、ビデオ信号の時空間的な相関関係を、空間的および/または動き補償予測を通じて、しばしば使用する。例えば、インター予測は、前回符号化および復号済みの画素を使用して符号化される現在ブロックに似たブロック(予測ブロックとも呼ばれる)を、1つまたは複数の動きベクトルを使用して生成する。動きベクトルおよび該2つのブロック間の差を符号化することで、符号化済みの信号を受信するデコーダは、現在ブロックを再生してよい。
【0011】
予測ブロックを生成するために使用される各動きベクトルは、現在フレーム以外のフレーム、すなわち参照フレームを参照する。参照フレームは、ビデオストリームのシーケンスにおける現在フレームの前または後に位置してよい。例えば、現在フレームを符号化するための1つの共通する参照フレームは、シーケンスにおける現在フレームの直前のフレームである、最終フレームである。予測ブロックを生成するために1つより多い動きベクトルが使用される場合、各動きベクトルは、別個の参照フレームを参照し得る。単一の予測ブロックを使用して予測されたブロック(例えば、単一の動きベクトルを使用して生成されたもの)は、本明細書では、単一参照の場合として言及され、一方、1つより多い予測ブロックを使用して予測されたブロック(例えば、2つ以上の動きベクトルを使用して生成されたもの)は、本明細書では、複合参照の場合として言及される。
【0012】
動きベクトル参照は、インター予測の処理において有効になり得る。一般に、動きベクトル参照は、現在ブロックより前の異なるブロックの符号化からすでに決定された動きベクトルである。動きベクトル参照は、現在ブロックを符号化するために使用された動きベクトルを差分によって符号化する(またしたがって復号する)ために使用されてよい。動きベクトルをこのように差動符号化することで、符号化済みの動きベクトルを、例えば小さい固定ビット数として、ビデオストリームに含むことが可能になる。これに代えてまたは加えて、動きベクトル参照は、現在ブロックを符号化するために使用される動きベクトルを決定するための、複数の動きベクトル候補のうちの1つとして使用されてよい。動きベクトル参照は、現在ブロックに空間的に隣接するブロックから取得されてよい。動きベクトル参照は、時間的に隣接するブロックから決定される一時的な動きベクトル参照であってもよく、符号化される現在ブロックとしてそのフレームに関して同じ画素位置に配置されているので、コロケーテッド(co−located)ブロックとも呼ばれる。
【0013】
上記のように、各動きベクトルは、複数の利用可能な参照フレームのうちの1つを参照し得る。したがって、各動きベクトル参照は、複数の利用可能な参照フレームのうちの1つを参照し得る。動きベクトル参照を含む参照フレームは利用可能な参照フレームのうちの1つであることを示す信号が、送信されてよい。比較的長い一連のビットになり得る、フレーム識別子自体を信号で送る代わりに、信号は参照フレームの種類を識別する短い一連のビットであってよい。いくつかのビデオコーデックでは、例えば、3つの種類の参照フレーム、つまり最終フレーム(LAST_FRAME)、ゴールデンフレーム(GOLDEN_FRAME)、および代替参照フレーム(ALTREF_FRAME)が存在する。
【0014】
開示される態様は、前回符号化済みのフレームにおけるコロケーテッドブロックを予測するために使用される動きベクトルの参照フレームが、現在ブロックに対して使用されている参照フレームと同じ種類かどうか確認してよい。参照フレームが同じ種類の場合、動きベクトルは、現在動きベクトルの符号化について、このテストに合格しなかった他の動きベクトルよりも高い優先度で考慮される。例えば、現在ブロックがLAST_FRAMEを選択し、前フレームにおけるそのコロケーテッドブロックもLAST_FRAMEを選択する場合、コロケーテッドブロックの動きベクトルは、現在動きベクトルの符号化のための動きベクトル参照として、より高い優先度で考慮されてよい。
【0015】
上記の手法には、各フレームを符号化した後に、参照バッファが更新されて、結果的に、参照バッファにおける1つまたは複数のフレームが新たに符号化済みのフレームに置き換わり得るという問題が存在し得る。したがって、前フレームおよび現在フレームにおける両ブロックがそれぞれ同じ参照フレーム、例えば、LAST_FRAMEを選択した場合でも、それは実際の同一の参照フレームバッファを指定できない。開示される実装の態様は、前フレームにおけるコロケーテッドブロックが同一の参照フレームを現在ブロックとして使用しているか識別することにより、この問題に取り組む。答えが真である場合にのみ、コロケーテッドブロックの1つまたは複数の動きベクトルは、現在動きベクトルの符号化について、他の動きベクトル参照よりも高い優先度で扱われる。
【0016】
さらなる詳細について、本明細書の教示が使用され得る環境を初めに検討した後に記載する。
図1は、ビデオ符号化および復号システム100の概略図である。送信局102は、例えば、図2に記載されるようなハードウェアの内部構成を有するコンピュータでよい。しかしながら、送信局102の他の適切な実装が可能である。例えば、送信局102の処理は複数の装置間に分散されてよい。
【0017】
ネットワーク104は、ビデオストリームの符号化および復号のため、送信局102および受信局106を接続してよい。具体的には、ビデオストリームは送信局102において符号化されてよく、また符号化済みのビデオストリームは、受信局106において復号されてよい。ネットワーク104は、例えばインターネットでよい。ネットワーク104は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、仮想プライベートネットワーク(VPN)、携帯電話ネットワーク、またはビデオストリームを送信局102から転送する、この例においては受信局106に転送する、任意の他の手段であってもよい。
【0018】
受信局106は、1つの例では、図2に記載されるようなハードウェアの内部構成を有するコンピュータでよい。しかしながら、受信局106の他の適切な実装が可能である。例えば、受信局106の処理は複数の装置間に分散されてよい。
【0019】
ビデオ符号化および復号システム100の他の実装が可能である。例えば、一実装においてはネットワーク104を省略してもよい。別の実装では、ビデオストリームは符号化され、その後、受信局106またはメモリを有する任意の他の装置に対して後で送信するために記憶されてよい。1つの実装では、受信局106は(例えば、ネットワーク104、コンピュータバス、および/またはある通信経路を介して)符号化済みビデオストリームを受信して、そのビデオストリームを後で復号するために記憶する。例示的な実装では、符号化済みのビデオをネットワーク104上で送信するために、リアルタイムトランスポートプロトコル(RTP)が使用される。別の実装では、例えば、ハイパーテキスト転送プロトコル(HTTP)ベースのビデオストリーミングプロトコル等のRTP以外のトランスポートプロトコルが使用されてよい。
【0020】
ビデオ会議システムで使用される場合、例えば、送信局102および/または受信局106は、以下に記載されるように、ビデオストリームを符号化および復号する能力を含んでよい。例えば、受信局106は、符号化済みのビデオビットストリームを復号および閲覧するためにビデオ会議サーバ(例えば送信局102)から受信して、他の参加者による復号および閲覧のために、それ自身のビデオビットストリームをさらに符号化しビデオ会議サーバに対して送信するビデオ会議参加者でよい。
【0021】
図2は送信局または受信局を実装し得るコンピューティング装置200の一例のブロック図である。例えば、コンピューティング装置200は、図1の送信局102および受信局106のうちの一方または両方を実装してよい。コンピューティング装置200は、複数のコンピューティング装置を含むコンピューティングシステムの形態であってよく、または、例えば、携帯電話、タブレットコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、デスクトップコンピュータ等の単一のコンピューティング装置の形態であってよい。
【0022】
コンピューティング装置200におけるCPU202は、中央処理装置でよい。あるいは、CPU202は情報を演算または処理することが可能な既存のまたは将来の任意の他の種類の装置、または複数の装置でよい。開示される実装は、例えばCPU202に示されるように単一のプロセッサで実施されてよいが、1つより多いプロセッサを使用して速度および効率における利点は達成され得る。
【0023】
コンピューティング装置200におけるメモリ204は、一実装においてはリードオンリーメモリ(ROM)装置またはランダムアクセスメモリ(RAM)装置でよい。任意の他の適切な種類の記憶装置がメモリ204として使用されてよい。メモリ204は、バス212を使用してCPU202によりアクセスされるコードおよびデータ206を含んでよい。メモリ204は、オペレーティングシステム208およびアプリケーションプログラム210をさらに含んでよい。アプリケーションプログラム210は、CPU202が本明細書に記載される方法を実行することを可能にする1つ以上のプログラムを含む。例えば、アプリケーションプログラム210は、アプリケーション1乃至Nを含んでよく、該アプリケーションは本明細書に記載される方法を実行するビデオ符号化アプリケーションをさらに含む。コンピューティング装置200はまた、二次記憶装置214を含んでもよく、該装置は、例えば、モバイルコンピューティング装置で使用されるメモリカードでよい。ビデオ通信セッションは大量の情報を含み得るので、セッションの全体または部分が二次記憶装置214に記憶され、処理のため必要に応じてメモリ204にロードされてよい。
【0024】
コンピューティング装置200はまた、ディスプレイ218等の1つまたは複数の出力装置を含んでもよい。ディスプレイ218は、1つの例では、ディスプレイとタッチ入力を検知可能なタッチセンシティブ要素とを組み合わせたタッチセンシティブディスプレイでよい。ディスプレイ218はバス212を介してCPU202に接続されてよい。ユーザがコンピューティング装置200をプログラムまたは使用することを可能にする他の出力装置は、ディスプレイ218に加えてまたはその代わりとして提供されてよい。出力装置がディスプレイであるかそれを含む場合、該ディスプレイは、液晶ディスプレイ(LCD)、陰極線管(CRT)ディスプレイ、または有機LED(OLED)ディスプレイ等の発光ダイオード(LED)ディスプレイを含む様々な方法で実装されてよい。
【0025】
コンピューティング装置200はまた、例えば、コンピューティング装置200を操作するユーザの画像等の画像を検知可能な、既存のまたは将来のカメラまたは任意の他の画像検知装置220である画像検知装置220を含むかそれと通信してもよい。画像検知装置220は、コンピューティング装置200を操作するユーザに向けられるように位置づけられてよい。一例では、画像検知装置220の位置および光軸は、ディスプレイ218に直接隣接しそこからディスプレイ218が見える領域を視野が含むように構成されてよい。
【0026】
コンピューティング装置200はまた、例えば、コンピューティング装置200付近の音声を検知可能な、既存のまたは将来のマイクまたは任意の他の音声検知装置である音声検知装置222を含むかそれと通信してもよい。音声検知装置222は、コンピューティング装置200を操作するユーザに向けられるように位置づけられてよく、また、例えばユーザがコンピューティング装置200を操作する間にユーザにより行われる話や他の発声等の音声を受信するように構成されてよい。
【0027】
図2はコンピューティング装置200のCPU202およびメモリ204を単一のユニットに一体化されたものとして示しているが、他の構成が使用されてよい。CPU202の演算は、直接またはローカルエリアもしくは他のネットワークを介して接続され得る複数の機械(各機械は1つまたは複数のプロセッサを有する)間に分散されてよい。メモリ204は、ネットワークベースのメモリまたはコンピューティング装置200の演算を行う複数の機械におけるメモリ等の複数の機械間に分散されてよい。本明細書においては単一のバスとして示されているが、コンピューティング装置200のバス212は複数のバスからなってよい。さらに、二次記憶装置214は、コンピューティング装置200の他の構成要素に直接接続されるか、またはネットワークを介してアクセスされてよい。二次記憶装置214はまた、1つのメモリカード等の単一の一体化されたユニットまたは複数のメモリカード等の複数のユニットを含んでよい。コンピューティング装置200は、したがって多種多様な構成で実装されてよい。
【0028】
図3は、符号化され後に復号されるビデオストリーム300の一例である。ビデオストリーム300はビデオシーケンス302を含む。次のレベルでは、ビデオシーケンス302は複数の隣接フレーム304を含む。3つのフレームが隣接フレーム304として示されているが、ビデオシーケンス302は任意の数の隣接フレーム304を含んでよい。隣接フレーム304はその後、例えばフレーム306等の個々のフレームにさらに細分化されてよい。次のレベルでは、フレーム306は一連のプレーンまたはセグメント308に分割されてよい。セグメント308は、例えば並行処理が可能なフレームのサブセットでよい。セグメント308はまた、ビデオデータを別個の色に分離するフレームのサブセットでよい。例えば、カラービデオデータのフレーム306は、1つの輝度プレーンおよび2つのクロミナンスプレーンを含んでよい。セグメント308は異なる解像度でサンプリングされてよい。
【0029】
フレーム306がセグメント308に分割されるかどうかによらず、フレーム306は、フレーム306における例えば16×16画素に対応するデータを含み得るブロック310にさらに細分化されてよい。ブロック310はまた、画素データの1つまたは複数のプレーンからのデータを含むように配列されてよい。ブロック310はまた、例えば4×4画素、8×8画素、16×8画素、8×16画素、16×16画素、またはそれより大きい任意の他の適切なサイズでよい。フレーム306を分割することによって生じるブロック310または他の領域は、以下により詳細に検討されるように、本明細書の開示によって分割されてよい。つまり、符号化される領域は、より小さいサブブロックまたは領域に分割される大きな領域でよい。より詳細には、符号化される現在領域は、例えば異なる予測モードを使用して符号化されたより小さい画素のグループに分割されてよい。これらの画素のグループは、本明細書では、予測サブブロック、予測サブ領域、または予測ユニットと称され得る。いくつかの場合では、領域は1つの予測モードのみを使用して符号化されるので、符号化される全体の領域を網羅する予測サブ領域が1つのみ存在する。特に明記しない限り、図4および5におけるブロック符号化および復号に関する以下の記載は、大きな領域の予測サブブロック、予測サブ領域、または予測ユニットに対しても同様に適用される。
【0030】
図4は、一実装によるエンコーダ400のブロック図である。エンコーダ400は、例えばメモリ204等のメモリに記憶されたコンピュータソフトウェアプログラムを提供すること等により、送信局102において上記のように実装されてよい。コンピュータソフトウェアプログラムは、CPU202等のプロセッサに実行された場合に、送信局102にビデオデータを図4に記載の方法で符号化させる機械命令を含んでよい。エンコーダ400はまた、例えば送信局102に含まれる専用ハードウェアとして実装されてよい。エンコーダ400は、入力としてビデオストリーム300を使用して、符号化済みまたは圧縮済みのビットストリーム420を生成する順方向経路(実線接続で示される)において様々な機能を実行する以下のステージを有する。つまり、イントラ/インター予測ステージ402、変換ステージ404、量子化ステージ406、およびエントロピー符号化ステージ408である。エンコーダ400はまた、将来のブロックの符号化のためのフレームを再構成する再構成経路(点線接続で示される)を含んでよい。図4において、エンコーダ400は、再構成路において様々な機能を実行する以下のステージを有する。つまり、逆量子化ステージ410、逆変換ステージ412、再構成ステージ414、およびループフィルタリングステージ416である。エンコーダ400の他の構造的変形例は、ビデオストリーム300を符号化するために使用されてよい。
【0031】
ビデオストリーム300が符号化のために与えられた場合、各フレーム306は例示によるブロック等の画素の単位(例えば領域)で処理されてよい。イントラ/インター予測ステージ402では、各ブロックは、フレーム内予測(イントラ予測とも呼ばれる)またはフレーム間予測(本明細書においてはインター予測またはインター・予測とも呼ばれる)を使用して符号化されてよい。いずれの場合でも、予測(または予測子)ブロックが形成されてよい。イントラ予測の場合、予測ブロックは、現在フレームにおける前回符号化および再構成されたサンプルから形成されてよい。インター予測の場合、予測ブロックは、1つまたは複数の前回構成された参照フレームにおけるサンプルから形成されてよい。
【0032】
次に、続けて図4を参照すると、イントラ/インター予測ステージ402において予測ブロックが現在ブロックから減じられて、残差ブロック(残差とも呼ばれる)が生成されてよい。変換ステージ404は、残差を、ブロックベースの変換を使用して、例えば周波数領域における変換係数に変換する。そのようなブロックベースの変換は、例えば、離散コサイン変換(DCT)および非対称離散サイン変換(ADST)を含む。他のブロックベースの変換も可能である。さらに、異なる変換の組み合わせが単一の残差に対して適用されてよい。変換を適用する1つの例では、DCTは、残差ブロックを、変換係数値が空間周波数に基づいた周波数領域に変換する。最低周波数(DC)係数は、行列の左上であり、最高周波数係数は、行列の右下である。予測ブロックおよび従って結果の残差ブロックのサイズは、変換ブロックのサイズとは異なり得ることは注目に値する。例えば、残差ブロックまたは領域は、より小さいブロック領域に分割されて別個の変換が適用されてよい。
【0033】
量子化ステージ406は、量子化器値または量子化レベルを使用して、変換係数を、量子化済み変換係数と呼ばれる離散的な量子値に変換する。例えば、変換係数は、量子化器値で除算され、切り捨てられてよい。量子化済み変換係数はその後、エントロピー符号化ステージ408によってエントロピー符号化される。エントロピー符号化は、トークンおよび2進木を含む任意の数の技術を使用して実行されてよい。エントロピー符号化済み係数は、例えば、使用された予測の種類、変換種類、動きベクトル、および量子化器値を含み得る、ブロックを復号するために使用した他の情報と共に、その後、圧縮済みのビットストリーム420に出力される。圧縮済みのビットストリーム420はまた、符号化済みのビデオストリームまたは符号化済みのビデオビットストリームとも呼ばれてよく、これらの用語は本明細書において交換可能に用いられる。
【0034】
図4における再構成経路(点線接続で示される)は、エンコーダ400およびデコーダ500(以下に記載)の両方が、圧縮済みのビットストリーム420を復号するために同じ参照フレームを使用することを確実にするために使用されてよい。再構成経路は、以下により詳細に検討される、復号処理中に行われる機能に類似する機能を実行する。該機能は、逆量子化ステージ410における、量子化済み変換係数の逆量子化、および逆変換ステージ412における、微分残差ブロック(微分残差とも呼ばれる)を生成するための逆量子化済み変換係数の逆変換を含む。再構成ステージ414において、イントラ/インター予測ステージ402で予測された予測ブロックが微分残差に追加されて、再構成済みブロックを生成してよい。ループフィルタリングステージ416は、ブロッキングアーチファクト等の歪みを減少させるために、再構成済みブロックに適用されてよい。
【0035】
エンコーダ400の他の変形例は、圧縮済みのビットストリーム420を符号化するために使用されてよい。例えば、非変換ベースのエンコーダ400は、いくつかのブロックまたはフレームに対する変換ステージ404を使わずに、残差信号を直接量子化してよい。別の実装では、エンコーダ400は、単一のステージに組み合わされた量子化ステージ406および逆量子化ステージ410を有してよい。本技術によれば、エンコーダ400は、画素の任意のサイズまたは形状グループを符号化してよい。符号化される画素のグループは、したがって、より一般的には領域と呼ばれることがある。
【0036】
図5は、別の実装によるデコーダ500のブロック図である。デコーダ500は、例えばメモリ204に記憶されたコンピュータソフトウェアプログラムを提供することにより、受信局106において実装されてよい。コンピュータソフトウェアプログラムは、CPU202等のプロセッサに実行された場合に、受信局106にビデオデータを図5に記載の方法で復号させる機械命令を含んでよいデコーダ500はまた、例えば、送信局102または受信局106に含まれるハードウェアにおいて実装されてよい。
【0037】
デコーダ500は、上記で検討したエンコーダ400の再構成経路に類似して、1つの例では、圧縮済みのビットストリーム420から出力ビデオストリーム516を生成するための様々な機能を実行する以下のステージを有する。つまり、エントロピー復号ステージ502、逆量子化ステージ504、逆変換ステージ506、イントラ/インター予測ステージ508、再構成ステージ510、ループフィルタリングステージ512、およびデブロッキングフィルタリングステージ514である。デコーダ500の他の構造的変形例は、圧縮済みのビットストリーム420を復号するために使用されてよい。
【0038】
圧縮済みのビットストリーム420が復号のために与えられた場合、圧縮済みのビットストリーム420内のデータ要素は、エントロピー復号ステージ502によって復号されて、量子化済み変換係数が生成されてよい。逆量子化ステージ504は、量子化済み変換係数を(例えば量子化済み変換係数を量子化器値で乗算することにより)逆量子化し、また逆変換ステージ506は、選択された変換種類を使用して、逆量子化済み変換係数を逆変換して、エンコーダ400における逆変換ステージ412により生成されるものと同一になり得る微分残差を生成する。圧縮済みのビットストリーム420から復号されるヘッダ情報を使用して、デコーダ500は、イントラ/インター予測ステージ508を使用して、エンコーダ400において例えばイントラ/インター予測ステージ402で生成されるのと同じ予測ブロックを、生成してよい。再構成ステージ510において、予測ブロックが微分残差に追加されて、再構成済みブロックを生成してよい。ループフィルタリングステージ512は、ブロッキングアーチファクトを減少させるために、再構成済みブロックに適用されてよい。他のフィルタリングが再構成済みブロックに適用されてよい。この例では、デブロッキングフィルタリングステージ514は、再構成済みブロックに適用されて、ブロッキング歪みをさせ、その結果が出力ビデオストリーム516として出力されてよい。出力ビデオストリーム516はまた、復号されたビデオストリームとして呼ばれてよい。これらの用語は本明細書において交換可能に用いられる。
【0039】
デコーダ500の他の変形例は、圧縮済みのビットストリーム420を復号するために使用されてよい。例えば、デコーダ500は、デブロッキングフィルタリングステージ514を使わずに、出力ビデオストリーム516を生成してよい。説明を簡単にするためにブロックを参照して記載されたが、本技術によれば、デコーダ500は画素の任意のサイズまたは形状グループ(例えば領域)を復号してよい。
【0040】
上で少し触れたように、フレームまたはフレームの領域は、最終フレーム動きベクトル分割によって、つまり、動きベクトルを使用して最終フレームの分割を調整することにより、符号化または復号のために分割されてよい。一般に、領域は、前回のフレーム分割を、新たな領域の動きベクトルに含まれる動きベクトルのうちの1つにより移行させることで別個の領域に分割される。
【0041】
図6は、本開示の1つの実装によるビデオストリームを符号化または復号する処理600のフローチャート図である。本方法または処理600は、ビデオストリームの符号化または復号を補助するためにコンピューティング装置200等のシステムに実装されてよい。処理600は、送信局102または受信局106等のコンピューティング装置により実行される、例えばソフトウェアプログラムとして実装されてよい。ソフトウェアプログラムは、CPU202等のプロセッサに実行された場合に、コンピューティング装置に処理600を実行させる、メモリ204等のメモリに記憶された機械可読命令を含んでよい。処理600はまた、ハードウェアを使用して全体または部分が実装されてよい。上記のように、いくつかのコンピューティング装置は、複数のメモリおよび複数のプロセッサを有してよく、工程または処理600の演算は、そのような場合、異なるプロセッサおよびメモリを使用して分散されてよい。本明細書における単数形の用語「プロセッサ」および「メモリ」の使用は、複数のプロセッサまたはメモリを有し、各々がいくつかのしかし必ずしも全ての記載された工程ではない実行に使用されてよい装置と同様に、1つのプロセッサまたは1つのメモリのみを有するコンピューティング装置を網羅する。
【0042】
説明を簡単にするために、処理600は、一連の工程または演算として示され、記載される。しかしながら、本開示による工程および演算は、様々な順番および/または同時に行われてよい。加えて、本開示による工程または演算は、本明細書に存在および記載のない他の工程または演算と行われてよい。さらに、図示されている工程または演算の全てが、開示された主題による方法の実装に必要とされているわけではない。処理600は、入力信号の各フレームの各ブロックに対して繰り返されてよい。いくつかの実装では、処理600に従って、1つまたは複数のフレームのうちのいくつかのブロックのみが処理される。例えば、処理600を実行する場合、イントラ予測モードを使用して符号化されたブロックは、省略されてよい。
【0043】
処理600が符号化処理である場合、入力信号は、例えば、ビデオストリーム300でよい。入力信号は、処理600を実行するコンピュータに任意の数の方法で受信されてよい。例えば、入力信号は、画像検知装置220にキャプチャ、またはバス212に接続された入力を通じて別の装置から受信されてよい。入力信号は、別の実装においては、二次記憶装置214から取得されてよい。他の受信方法および入力信号の他のソースが可能である。例えば、処理600が復号処理の場合、入力信号は、圧縮済みのビットストリーム420等の符号化済みのビデオストリームでよい。
【0044】
ビデオストリームを使用して、ステップ602で、処理600は、ビデオストリームのフレームのシーケンスの第1フレームを符号化した後、複数の参照フレームの各々について、参照バッファインデックスと共に参照フレーム識別子を記憶する。ステップ602は、図7を参照に説明され得る。図7は、LAST_FRAME702、GOLDEN_FRAME704、およびALTREF_FRAME706を含む参照フレーム700を示す。これら3つの参照フレーム700の1つが、ブロックヘッダ中に各ブロックの参照フレーム700を示すものとして記載される。フレームヘッダレベルでは、参照フレーム700から参照仮想識別子またはインデックス708の一対一マッピングがビデオストリームに記述される。別の一対一マッピングは、参照仮想インデックス708から参照バッファ識別子またはインデックス710にマッピングするため、各フレームについて維持される。2つの連続するインターフレームに対して、2つの参照フレーム700が同じ参照バッファインデックス710にマッピングされた場合、処理600はそれらが同じ参照であると示す。図7の例は8つの利用可能な参照仮想インデックス708および8つの参照バッファインデックス710を有している。
【0045】
前回のコロケーテッドブロックが現在ブロックと同一の参照を使用しているかどうかを追跡するため、エンコーダおよびデコーダの両方は、参照フレーム700バッファ更新を追跡して前回符号化済みのフレームに対する参照バッファインデックス710マッピングを保存してよい。したがって、エンコーダおよびデコーダは、コロケーテッドブロックおよび現在ブロックに使用された2つの参照フレームが同じ参照バッファインデックス710にマッピングされているかどうかを識別してよい。例えば、各フレームの符号化の終わりまでに、参照フレームバッファを更新する前に、各参照フレーム700に対応する参照バッファインデックス710テーブルはエンコーダおよびデコーダの両方に記憶されてよい。
【0046】
コロケーテッドブロックの動きベクトルを確認する場合、処理600は、コロケーテッドブロックに使用された参照フレーム700を初めに識別してよい。この参照フレーム700の値を現在ブロックとの直接的な比較に使用する代わりに、デコーダまたはエンコーダは参照バッファインデックス710を識別してよい。現在ブロックの参照フレーム700に対する参照バッファインデックス710は、コロケーテッドブロックに対する参照バッファインデックス710と比較される。それらが同一の場合、コロケーテッドブロックの動きベクトルは、現在動きベクトルに対する動きベクトル参照として、より高い優先度で考慮される。
【0047】
図6を再び参照すると、処理600は、参照フレーム700および参照フレーム700に関連付けられた参照仮想インデックス708をステップ604で更新する。ステップ606で、処理600は、第2フレームの現在ブロックに対する複数の動きベクトル候補を決定する。複数の動きベクトル候補は、第1フレーム内のコロケーテッドブロックを予測するために使用された第1動きベクトルを含む。ステップ608で、処理600は、更新後に、複数の参照フレーム700のうちの参照フレーム700内で現在ブロックに対する動き検出を実行して、第2動きベクトルを生成する。ステップ610で、処理600は、第1動きベクトルに関連付けられた参照フレーム700の参照仮想インデックス708と共に記憶された参照バッファインデックス710を、動き検出の実行に使用された参照フレーム700の参照バッファインデックス710と比較する。
【0048】
ステップ612で、処理600は、動き検出の実行に使用された参照フレーム700の参照仮想インデックス708が、第1動きベクトルに関連付けられた参照バッファインデックス710に一致するかどうかを判定する。一致が見られた場合、処理600はステップ614に進み、第1動きベクトルが、現在ブロックの符号化に対する複数の動きベクトル候補のうちの残りの候補よりも前に進められてよい。その他の場合、処理600はステップ602に戻り、別のブロックを処理する。
【0049】
現在ブロックの符号化に対する残りの動きベクトル候補よりも第1動きベクトルを前に進めることにより、選択された動きベクトルによって現在動きベクトルをより正確に予測することが可能となる。従って、予測された動きベクトルと現在動きベクトルとの間の差は小さく、ビデオストリーム中に少数のビットで表現され得ることにより、帯域幅を節約する。
【0050】
開示された実装の態様は、現在ブロックを予測するために2つの参照フレームを使用してよい双予測を使用して、現在フレームの現在ブロックが予測される場合、動きベクトルを予測してよい。双予測においては、動きベクトル予測に使用された現フレームおよび前フレームの両方は、LAST_FRAME702、GOLDEN_FRAME704、またはALTREF_FRAME706を使用して順方向予測されてよい。図6に関して上記したように、開示された態様は、動き予測に使用された前フレームは、現在フレームと同じ参照フレームを有し得るか判定してよい。現在フレームおよび前フレームが双予測を用いて予測された場合、前フレームにおけるコロケーテッドブロックからの動きベクトル候補は、以下のステップを使用する参照フレームバッファの更新の追跡を通じて判定されてよい。
(1)前フレームおよび前フレームの前のフレームに対する参照フレームバッファ更新を追跡することを通じて、3つの連続したフレームに渡って滑らかな動きが存在するかどうかを確認する。以下の確認ルールが使用される。現在ブロックおよびそのコロケーテッドブロックのペアに対しては、両ブロックは前回符号化済みのフレームを参照として使用し、両参照フレームが前方予測に対して同じサインバイアスを有する。
(2)現在ブロックに対する第2フレームが存在する場合、例えば、現在ブロックに対して複合モードが利用可能な場合は、第2フレームに対して滑らかな動きが存在するかどうかを確認するために、第2フレームに対してステップ(1)を繰り返す。
(3)サインバイアスが、現在ブロックおよびそのコロケーテッドブロックの両方に対する後方予測を示唆しているかどうか、また同一のフレームが両ブロックに対する参照として使用されているかどうかを確認する。以下のルールが使用される。始めに、現在ブロックがALTREF_FRAME706をその参照フレームとして使用しているかどうかを確認する。このことは、後方予想が考慮されていることを示唆する。確認できた場合は、その参照フレームのサインバイアスを識別することにより、次にコロケーテッドブロックもまた後方予想を使用しているかどうかを確認する。確認できた場合は、現在ブロックおよびそのコロケーテッドブロックが同一のフレームをそれらの参照として使用しているかを確認する。確認できた場合は、前フレームに関連付けられた動きベクトルを残りの動きベクトル候補よりも前に進める。
(4)現在ブロックに対する第2フレームが存在する場合、例えば、現在ブロックに対して複合モードが考慮される場合には、現在ブロックおよびコロケーテッドブロックの両方に対して後方予測が存在し、両ブロックが後方予測に対して同一のフレームを使用しているかどうかを確認するために、第2フレームに対してステップ(3)を繰り返す。確認できた場合は、前フレームに関連付けられた動きベクトルを残りの動きベクトル候補よりも前に進める。
(5)現在ブロックおよびコロケーテッドブロックが同一のフレームをそれらの参照フレームとして使用しているのかを確認する。確認できた場合は、前フレームに関連付けられた動きベクトルを残りの動きベクトル候補よりも前に進める。
(6)現在ブロックに対する第2フレームが存在する場合、例えば、現在ブロックに対して複合モードが考慮される場合には、現在ブロックおよびコロケーテッドブロックの両方に対してそれらの参照として使用された同一のフレームが存在しているかどうかを確認するために、第2フレームに対してステップ(5)を繰り返す。確認できた場合は、前フレームに関連付けられた動きベクトルを残りの動きベクトル候補よりも前に進める。
【0051】
上記の符号化および復号の態様は、符号化および復号技術のいくつかの実施例を説明する。しかしながら、符号化および復号は、それらの用語が特許請求の範囲において使用されるように、データの圧縮、復元、変換、または任意の他の処理もしくは変更を意味し得ることが理解されよう。
【0052】
「実施例」または「態様」の語は、例、具体例、または説明としての役割を果たすよう本明細書に使用されている。本明細書に「実施例」または「態様」として記載されたいかなる面または設計も、必ずしも他の面または設計より好ましいまたは有利であるとして解釈されるべきではない。むしろ、「実施例」または「態様」の語の使用は、概念を具体的な方法で提示するように意図されている。本明細書に使用されているように、「または」の用語は、排他的な「または」ではなく、包括的な「または」を意味するように意図されている。つまり、特に明記されるか、または文脈から明確でない限り、「XはAまたはBを含む」は、任意の自然な包括的順列を意味するように意図されている。つまり、XがAを含む場合、XがBを含む場合、またはXがAおよびBの両方を含む場合、「XはAまたはBを含む」は、上記の例のいずれの場合においても満足される。加えて、本明細書および添付の特許請求の範囲において使用された冠詞「a」および「an」は、特に明記されるか、または文脈から単数形に向けられていることが明確でない限り、「1つまたは複数の」を意味するように一般に解釈されるべきである。さらに、「実装」または「1つの実装」の用語の使用は、そのように記載されていない限り、全体を通して同じ実施形態または実装を意味するようには、意図されていない。
【0053】
送信局102および/または受信局106と、(そこに記憶されたおよび/またはそれらによって実行されるエンコーダ400およびデコーダ500を含むアルゴリズム、方法、命令等と)の実装は、ハードウェア、ソフトフェア、またはそれらの任意の組み合わせにより実現されてよい。ハードウェアは、例えば、コンピュータ、IP(intellectual property)コア、特定用途向け集積回路(ASIC)、プログラマブルロジックアレイ、光処理装置、プログラマブルロジックコントローラ、マイクロコード、マイクロコントローラ、サーバ、マイクロプロセッサ、デジタル信号処理装置、または任意の他の適切な回路を含んでよい。特許請求の範囲において、「プロセッサ」の用語は、前述のハードウェアの任意の単体または組み合わせを網羅するものとして理解されるべきである。「信号」および「データ」の用語は、交換可能に用いられる。また、送信局102および受信局106の部分は、必ずしも同様に実装されるべきではない。
【0054】
また、1つの態様では、例えば、送信局102または受信局106は、実行された場合に、本明細書に記載されたそれぞれの方法、アルゴリズム、および/または命令の任意のものを実行するコンピュータプログラムを有する汎用コンピュータまたは汎用プロセッサを用いて実装されてよい。加えてまたは代わりに、例えば、本明細書に記載された任意の方法、アルゴリズム、または命令を実行するための他のハードウェアを含み得る専用コンピュータ/プロセッサが利用されてよい。
【0055】
送信局102および受信局106は、例えば、ビデオ会議システムにおけるコンピュータ上に実装されてよい。あるいは、送信局102はサーバ上に実装されてよく、受信局106は、サーバとは別個の、ハンドヘルド通信装置等の装置に実装されてよい。この例においては、送信局102はエンコーダ400を使用して、符号化済みのビデオ信号にコンテンツを符号化し、その符号化済みのビデオ信号を通信装置に送信してよい。今度は、通信装置は、デコーダ500を使用して符号化済みビデオ信号を復号してよい。あるいは、通信装置は、通信装置上においてローカルに保存されたコンテンツ、例えば、送信局102によって送信されなかったコンテンツを復号してよい。他の適切な送信および受信を実装する仕組みが利用可能である。例えば、受信局106は携帯通信装置ではなく、一般に固定のパーソナルコンピュータでよく、および/またはエンコーダ400を含む装置はまたデコーダ500を含んでもよい。
【0056】
さらに、本開示の実装の全てまたは一部は、例えば、有形のコンピュータ使用可能なまたはコンピュータ可読な媒体からアクセス可能なコンピュータプログラム製品の形式を取ってもよい。コンピュータ使用可能なまたはコンピュータ可読な媒体は、例えば、任意のプロセッサによりまたはそれと通信して使用するプログラムを有形に含む、記憶する、通信する、または搬送し得る任意の装置でよい。媒体は、例えば電子的、磁気的、光学的、電磁的、または半導体素子でよい。他の適切な媒体も利用可能である。
【0057】
上記の実施形態、実装、および態様は、本発明の容易な理解を可能とするために記載されたものであり、本発明を限定するものではない。反対に、本発明は、添付の特許請求の範囲内に含まれる様々な変更例および同等の調整を網羅するように意図されており、法の下に許可される全てのそのような変更例および同等の構造を含むために、範囲には最大限に広い解釈が適用される。
図1
図2
図3
図4
図5
図6
図7