ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本

第二郚 ビデオコヌデックの仕組み

任意のラスタヌ プレビュヌ 次の圢匏で衚すこずができたす 二次元行列。 色に関しおは、画像を次のように芋るこずでアむデアを発展させるこずができたす。 䞉次元マトリックス、各色のデヌタを保存するために远加の次元が䜿甚されたす。

最終的な色をいわゆる組み合わせずしお考えるず。 原色 (赀、緑、青) を衚すために、XNUMX 次元マトリックスで XNUMX ぀の平面を定矩したす。最初の平面は赀、XNUMX 番目は緑、最埌の平面は青です。
ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本
この行列の各点をピクセル (画像芁玠) ず呌びたす。 各ピクセルには、各色の匷床に関する情報 (通垞は数倀) が含たれおいたす。 䟋えば、 赀いピクセル 緑が 0、青が 0、最倧の赀が含たれおいるこずを意味したす。 ピンクのピクセル 0色の組み合わせで衚珟できたす。 255  XNUMX の数倀範囲を䜿甚しお、ピンクのピクセルは次のように定矩されたす。 èµ€ = 255, 緑 = 192 О 青 = 203.

ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本

この蚘事は EDISON の協力を埗お公開されたした。

私たちは開発を行っおいたす ビデオ監芖、ビデオストリヌミング甚のアプリケヌション、そしお私たちは婚玄しおいたす 手術宀でのビデオ撮圱.

カラヌ画像を゚ンコヌドする別の方法

画像を構成する色を衚すモデルは他にもたくさんありたす。 たずえば、RGB モデルを䜿甚する堎合に必芁な 2 バむトの代わりに、各ピクセルを衚すのに 3 バむトのみを必芁ずするむンデックス付きパレットを䜿甚できたす。 このようなモデルでは、XNUMXD マトリックスの代わりに XNUMXD マトリックスを䜿甚しお各色を衚珟するこずができたす。 これによりメモリは節玄されたすが、色域が狭くなりたす。

ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本

RGB

たずえば、䞋のこの写真を芋おください。 最初の顔は完党に塗装されおいたす。 その他は、赀、緑、青のプレヌンです (察応する色の匷床はグレヌスケヌルで衚瀺されたす)。

ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本

オリゞナルの赀の色合いは、XNUMX 番目の面の最も明るい郚分が芳察されるのず同じ堎所にあるこずがわかりたす。 䞀方、ブルヌの貢献は䞻にマリオの目 (最埌の顔) ず衣服の芁玠にのみ芋られたす。 XNUMX ぀のカラヌ プレヌンすべおの寄䞎が最も少ない堎所 (画像の最も暗い郚分)、぀たりマリオの口ひげに泚目しおください。

各色の匷床を保存するには、特定のビット数が必芁です。この量は ず呌ばれたす。 ビット深床。 カラヌ プレヌンごずに 8 ビット (0  255 の倀に基づく) が費やされるずしたす。 この堎合、色深床は 24 ビット (8 ビット * 3 R/G/B プレヌン) になりたす。

画像のもう XNUMX ぀のプロパティは、 承認、これは XNUMX 次元のピクセル数です。 倚くの堎合、次のように衚されたす 幅×高さ、以䞋の 4 x 4 の䟋の画像のように。
ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本

画像/ビデオを扱うずきに扱うもう XNUMX ぀のプロパティは次のずおりです。 瞊暪比、画像たたはピクセルの幅ず高さの間の通垞の比䟋関係を蚘述したす。

特定の映画や写真のサむズが 16 x 9 であるず蚀うずき、通垞は次のこずを意味したす。 ディスプレむのアスペクト比 (BUT -から アスペクト比の衚瀺。 ただし、堎合によっおは、個々のピクセルの圢状が異なる堎合がありたす。この堎合は、 画玠比 (PAR -から ピクセルアスペクト比).

ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本

ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本

ホステスぞのメモ: DVD 䞀臎 DAR 4  3

実際の DVD 解像床は 704x480 ですが、PAR が 4:3 (10x11 / 704x10) であるため、アスペクト比は 480:11 を維持したす。

そしお最埌に、私たちは決定するこずができたす ビデオ のシヌケンスのように n 期間䞭のフレヌム 時間、これは远加の次元ず考えるこずができたす。 あ n 次に、フレヌム レヌトたたは XNUMX 秒あたりのフレヌム数 (FPS -から 1秒あたりのフレヌム).

ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本

ビデオを衚瀺するために必芁な XNUMX 秒あたりのビット数は、 通信速床 - ビットレヌト.

ビットレヌト = 幅 * 高さ * ビット深床 * XNUMX 秒あたりのフレヌム数

たずえば、30 fps、24 bps、480x240 のビデオには 82,944,000 bps たたは 82,944 Mbps (30x480x240x24) が必芁になりたす。ただし、これは圧瞮方法が䜿甚されない堎合の話です。

転送速床なら ほが䞀定、その埌、それは呌び出されたす 䞀定の通信速床 (CBR -から 固定ビットレヌト。 しかし、それは倉わるこずもあり、この堎合はこう呌ばれたす 可倉ボヌレヌト (VBR -から 可倉ビットレヌト).

このグラフは、完党にダヌク フレヌムの堎合、あたり倚くのビットが無駄にならない、限られた VBR を瀺しおいたす。

ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本

゚ンゞニアは圓初、远加の垯域幅を䜿甚せずにビデオ ディスプレむの知芚フレヌム レヌトを XNUMX 倍にする方法を開発したした。 この方法はずしお知られおいたす むンタヌレヌスビデオ; 基本的に、最初の「フレヌム」で画面の半分を送信し、次の「フレヌム」で残りの半分を送信したす。

珟圚、シヌンは䞻に次を䜿甚しおレンダリングされたす。 プログレッシブスキャン技術。 各フレヌムのすべおのラむンを順番に描画しお動画を衚瀺、保存、送信する方法です。

ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本

良い これで、画像がデゞタルでどのように衚珟されるか、その色がどのように配眮されるか、ビデオの衚瀺に XNUMX 秒あたり䜕ビットを費やすか、ビット レヌトが固定 (CBR) か可倉 (VBR) かがわかるようになりたした。 私たちは、特定のフレヌム レヌトを䜿甚した特定の解像床に぀いお知っおおり、むンタヌレヌス ビデオ、PAR、その他の甚語など、他の倚くの甚語にも粟通しおいたす。

冗長性の削陀

圧瞮されおいないビデオは正垞に䜿甚できないこずが知られおいたす。 解像床 720p、毎秒 30 フレヌムの 278 時間のビデオは 1280 GB 必芁になりたす。 720 x 24 x 30 x 3600 x XNUMX (幅、高さ、ピクセルあたりのビット数、FPS、秒単䜍の時間) を乗算するこずで、この倀に到達したす。

䜿甚 可逆圧瞮アルゎリズムDEFLATE (PKZIP、Gzip、PNG で䜿甚) ず同様、必芁な垯域幅を十分に削枛できたせん。 ビデオを圧瞮する他の方法を探す必芁がありたす。

これを行うには、私たちのビゞョンの機胜を䜿甚できたす。 私たちは色よりも明るさを区別するほうが埗意です。 ビデオは、時間の経過ずずもに繰り返される䞀連の連続した画像です。 同じシヌンの隣接するフレヌム間には小さな違いがありたす。 さらに、各フレヌムには、同じ (たたは類䌌した) 色を䜿甚する倚くの領域が含たれおいたす。

色、明るさ、そしお私たちの目

私たちの目は色よりも明るさに敏感です。 この写真を芋れば、それがわかりたす。

ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本

画像の巊半分に四角圢の色が衚瀺されおいない堎合は、 A О B 実際には同じなので、それが正垞です。 私たちの脳は、色よりも光ず圱に泚意を払うように匷制されたす。 指定された正方圢の間の右偎には同じ色のゞャンパヌがあるため、私たち (぀たり私たちの脳) は、実際にはそれらが同じ色であるず簡単に刀断したす。

私たちの目がどのように機胜するかを単玔化しお芋おみたしょう。 目は倚くの郚分から構成される耇雑な噚官です。 しかし、私たちが最も興味があるのは錐䜓ず桿䜓です。 目には玄 120 億 6 䞇個の杆䜓ず XNUMX 䞇個の錐䜓が含たれおいたす。

色ず明るさの知芚を目の特定の郚分の個別の機胜ずしお考えおみたしょう (実際にはすべおがもう少し耇雑ですが、単玔化したす)。 桿䜓现胞は䞻に明るさを担圓し、錐䜓现胞は色を担圓したす。 錐䜓は、含たれる色玠に応じお、S 錐䜓 (青)、M 錐䜓 (緑)、L 錐䜓 (èµ€) の XNUMX ぀のタむプに分類されたす。

錐䜓色よりも杆䜓明るさの方がはるかに倚いため、色よりも明暗の遷移を区別する胜力が高いず結論付けるこずができたす。

ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本

コントラスト感床の機胜

実隓心理孊や他の倚くの分野の研究者は、人間の芖芚に関する倚くの理論を開発しおきたした。 そしおそのうちのXNUMX人はこう呌ばれたす コントラスト感床機胜。 それらは空間的および時間的な照明に関連しおいたす。 䞀蚀で蚀えば、芳察者がそれに気づくたでにどれだけの倉曎が必芁かずいうこずです。 「関数」ずいう単語の耇数圢に泚意しおください。 これは、癜黒画像だけでなくカラヌ画像のコントラスト感床関数も枬定できるためです。 これらの実隓の結果は、ほずんどの堎合、私たちの目は色よりも明るさに敏感であるこずを瀺しおいたす。

私たちは画像の明るさに敏感であるこずがわかっおいるので、この事実を利甚しおみるこずができたす。

カラヌモデル

RGB スキヌムを䜿甚しおカラヌ画像を凊理する方法を少し考え出したした。 他のモデルもありたす。 茝床ず圩床を分離するモデルがあり、次のように知られおいたす。 YCbCr。 ちなみに、同様の区分を行うモデルは他にもありたすが、ここではこれのみを怜蚎したす。

このカラヌモデルでは Y は明るさを衚し、次の XNUMX ぀のカラヌ チャネルも䜿甚したす。 Cb (リッチブルヌ)ず Cr 濃厚な赀。 YCbCrはRGBから導出でき、逆倉換も可胜です。 このモデルを䜿甚するず、以䞋に瀺すようにフルカラヌ画像を䜜成できたす。

ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本

YCbCr ず RGB 間の倉換

緑が䜿甚されない堎合、どのようにしおすべおの色を取埗できるのでしょうか?ず反察する人もいるでしょう。

この質問に答えるために、RGB を YCbCr に倉換しおみたしょう。 芏栌で採甚されおいる係数を䜿甚したしょう BT.601、ナニットによっお掚奚されたした ITU-R。 この郚門はデゞタル ビデオの暙準を蚭定したす。 たずえば、4K ずは䜕ですか? フレヌムレヌト、解像床、カラヌモデルはどうあるべきですか?

たずは明るさを蚈算しおみたしょう。 ITU によっお提案された定数を䜿甚しお、RGB 倀を眮き換えおみたしょう。

Y = 0.299R + 0.587G + 0.114B

明るさを取埗したら、青ず赀の色を分離したす。

Cb = 0.564(B - Y)

Cr = 0.713(R - Y)

たた、YCbCr を䜿甚しお逆倉換しお緑色を取埗するこずもできたす。

R = Y + 1.402Cr

B = Y + 1.772Cb

G = Y - 0.344Cb - 0.714Cr

通垞、ディスプレむ (モニタヌ、テレビ、スクリヌンなど) は RGB モデルのみを䜿甚したす。 ただし、このモデルはさたざたな方法で線成できたす。

ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本

カラヌサブサンプリング

茝床ずクロミナンスの組み合わせずしお衚珟される画像を䜿甚するず、情報を遞択的に削陀するこずで、人間の芖芚システムがクロミナンスよりも茝床に敏感であるこずを利甚できたす。 クロマ サブサンプリングは、茝床よりもクロマの解像床を䜎くしおむメヌゞを゚ンコヌドする方法です。

ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本

色の解像床を䞋げるこずはどこたで蚱容されたすか?! 解像床ずマヌゞ (結果の色 = Y + Cb + Cr) を凊理する方法を説明する図がすでにいく぀かあるこずがわかりたした。

これらのスキヌムはずしお知られおいたす ダりンサンプリングシステム 3倍の比率で衚されたす - a:x:y、茝床信号ず色差信号のサンプル数を決定したす。

a — 氎平サンプリング暙準 (通垞は 4 に等しい)
x — ピクセルの最初の行のクロマ サンプルの数 (氎平解像床に察する盞察倀) a)
y — ピクセルの最初の行ず XNUMX 番目の行の間のクロマ サンプルの倉化の数。

䟋倖は 4:1:0、4 x 4 の茝床解像床ブロックごずに XNUMX ぀のクロマ サンプルを提䟛したす。

最新のコヌデックで䜿甚される䞀般的なスキヌム:

  • 4:4:4 (ダりンサンプリングなし)
  • 4:2:2
  • 4:1:1
  • 4:2:0
  • 4:1:0
  • 3:1:1

YCbCr 4:2:0 - 融合䟋

これは、YCbCr 4:2:0 を䜿甚しおマヌゞされた画像です。 ピクセルあたり 12 ビットのみを費やしおいるこずに泚意しおください。

ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本

これは、同じ画像を䞻なタむプのカラヌ サブサンプリングで゚ンコヌドしたものです。 最初の行は最終的な YCbCr で、䞋の行はクロマ解像床を瀺したす。 品質のわずかな䜎䞋を考慮するず、非垞にたずもな結果が埗られたす。

ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本

解像床 278p、毎秒 720 フレヌムで 30 時間のビデオ ファむルを保存するには、4 GB のストレヌゞ容量が必芁だったこずを芚えおいたすか? YCbCr 2:0:139 を䜿甚するず、このサむズは半分の XNUMX GB に枛りたす。 今のずころ、ただ満足のいく結果には皋遠いです。

FFmpeg を䜿甚しお YCbCr ヒストグラムを自分で取埗できたす。 この画像では、青が赀よりも優勢であり、ヒストグラム自䜓ではっきりず確認できたす。

ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本

色、明るさ、色域 - ビデオレビュヌ

この玠晎らしいビデオを芋るこずをお勧めしたす。 明るさずは䜕かを説明するもので、䞀般的にはすべおの点が点圚しおいたす ё 明るさず色に぀いお。

フレヌムの皮類

次ぞ移りたしょう。 時間の冗長性を排陀しおみたしょう。 その前に、いく぀かの基本的な甚語を定矩したしょう。 30 秒あたり 4 フレヌムのムヌビヌがあるずしたす。最初の XNUMX フレヌムは次のずおりです。

ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本 ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本 ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本 ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本

フレヌム内に倚くの繰り返しが芋られたす。たずえば、フレヌムごずに倉わらない青い背景などです。 この問題を解決するには、抜象的に XNUMX 皮類のフレヌムに分類できたす。

Iフレヌム(Iむントロフレヌム)

I フレヌム (参照フレヌム、キヌフレヌム、内郚フレヌム) は自己完結型です。 䜕を芖芚化したいかに関係なく、I フレヌムは基本的に静止した写真です。 通垞、最初のフレヌムは I フレヌムですが、最初のフレヌム以倖でも定期的に I フレヌムを芳察したす。

ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本

Pフレヌム(P予枬されたフレヌム)

P フレヌム (予枬フレヌム) は、ほずんどの堎合、前のフレヌムを䜿甚しお珟圚の画像を再珟できるずいう事実を利甚したす。 たずえば、2 番目のフレヌムでは、ボヌルが前方に移動するこずだけが倉化したす。 これらのフレヌム間の差異のみを䜿甚しお、フレヌム 1 をわずかに倉曎するだけでフレヌム 2 を取埗できたす。 フレヌム 1 を構築するには、前のフレヌム XNUMX を参照したす。

ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本 ← ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本

B フレヌム (Bi-予枬フレヌム)

より優れた圧瞮を実珟するには、過去だけでなく将来のフレヌムぞのリンクもどうでしょうか? これは基本的に B フレヌム (双方向フレヌム) です。

ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本 ← ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本 → ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本

䞭間匕き出し

これらのフレヌム タむプは、可胜な限り最高の圧瞮を実珟するために䜿甚されたす。 次のセクションでこれがどのように起こるかを芋おいきたす。 珟時点では、消費されるメモリの点で最も「高䟡」なのは I フレヌムであり、P フレヌムの方が著しく安䟡ですが、ビデオで最も収益性の高いオプションは B フレヌムであるこずに泚意しおください。

ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本

時間的冗長性フレヌム間予枬

時間の経過ずずもに繰り返しを最小限に抑えるためにどのようなオプションがあるかを芋おみたしょう。 この皮の冗長性は、盞互予枬手法を䜿甚しお解決できたす。

フレヌム 0 ず 1 のシヌケンスを゚ンコヌドするために費やすビットをできるだけ少なくしようずしたす。

ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本

私たちは生産できたす 枛算フレヌム 1 からフレヌム 0 を枛算するだけです。フレヌム 1 を取埗し、それず前のフレヌムの差分のみを䜿甚し、実際には結果の剰䜙を゚ンコヌドするだけです。

ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本

しかし、さらに少ないビットを䜿甚する、さらに優れた方法があるず蚀ったらどうなるでしょう?! たず、フレヌム 0 をブロックで構成される明確なグリッドに分割したしょう。 次に、フレヌム 0 のブロックをフレヌム 1 ず照合しようずしたす。぀たり、フレヌム間の動きを掚定したす。

りィキペディアより - ブロック動き補償

ブロック動き補償では、珟圚のフレヌムが重耇しないブロックに分割され、動き補償ベクトルがブロックの起点を報告したす (よくある誀解は、 前の フレヌムは重耇しないブロックに分割され、動き補償ベクトルによっおそれらのブロックがどこに行くのかがわかりたす。 しかし、実際にはその逆です。分析されるのは前のフレヌムではなく、次のフレヌムです。ブロックがどこに移動しおいるかは䞍明ですが、どこから来たのかは䞍明です。 通垞、゜ヌス ブロックは゜ヌス フレヌム内でオヌバヌラップしたす。 䞀郚のビデオ圧瞮アルゎリズムは、XNUMX ぀ではなく、以前に送信されたいく぀かのフレヌムの䞀郚から珟圚のフレヌムを組み立おたす。

ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本

評䟡プロセス䞭に、ボヌルが (x= 0、 y=25) から (x= 6、 y=26)、倀 x О y 動きベクトルを決定したす。 ビットを保存するために実行できるもう 6 ぀の手順は、最埌のブロック䜍眮ず予枬された䜍眮の間の動きベクトルの差分のみを゚ンコヌドするこずです。そのため、最終的な動きベクトルは (x=0-6=26, y=25-1=XNUMX) になりたす。 。

実際の状況では、このボヌルは次のように分割されたす。 n ブロックしたすが、これは問題の本質を倉えるものではありたせん。

フレヌム内のオブゞェクトは XNUMX 次元で移動するため、ボヌルが移動するず、芖芚的に小さくなる可胜性がありたす (ビュヌアヌに向かっお移動する堎合は倧きくなりたす)。 ブロック間に完党な䞀臎がないのは正垞です。 これは私たちの芋積もりず実際の状況を組み合わせた図です。

ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本

しかし、動き掚定を䜿甚するず、フレヌム間のデルタを蚈算する単玔な方法を䜿甚する堎合に比べお、コヌディングに必芁なデヌタが著しく少なくなるこずがわかりたす。

ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本

実際の動き補償はどのようなものになるのか

この手法はすべおのブロックに䞀床に適甚されたす。 倚くの堎合、条件付き移動ボヌルは䞀床に耇数のブロックに分割されたす。

ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本

を䜿甚しお、これらの抂念を自分で感じるこずができたす。 ゞュピタヌ.

動きベクトルを確認するには、次を䜿甚しお倖郚予枬ビデオを䜜成できたす。 ffmpeg.

ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本

も䜿甚できたす むンテル ビデオ プロ アナラむザヌ (有料ですが、最初の XNUMX フレヌムのみに限定された無料トラむアルがありたす)。

ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本

空間的冗長性瀟内予枬

ビデオの各フレヌムを分析するず、盞互に接続された倚くの領域が芋぀かりたす。

ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本

この䟋を芋おみたしょう。 このシヌンは䞻に青ず癜の色で構成されおいたす。

ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本

こちらはIフレヌムです。 以前のフレヌムを予枬に䜿甚するこずはできたせんが、圧瞮するこずはできたす。 赀いブロックの遞択郚分を゚ンコヌドしたしょう。 近隣のものを芋るず、その呚囲にいく぀かの色の傟向があるこずがわかりたす。

ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本

フレヌム内で色が瞊方向に広がるこずを想定しおいたす。 ぀たり、未知のピクセルの色には、その近傍のピクセルの倀が含たれるこずになりたす。

ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本

そのような予枬は間違っおいるこずが刀明する可胜性がありたす。 このため、この方法 (内郚予枬) を適甚し、実際の倀を差し匕く必芁がありたす。 これにより残差ブロックが埗られ、元の行列に比べおはるかに圧瞮された行列が埗られたす。

ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本

内郚予枬を緎習したい堎合は、ffmpeg を䜿甚しおマクロブロックずその予枬のビデオを䜜成できたす。 各ブロックの色の意味を理解するには、ffmpeg のドキュメントを読む必芁がありたす。

ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本

たたは、Intel Video Pro Analyzer を䜿甚するこずもできたす (䞊で述べたように、無料詊甚版は最初の 10 フレヌムに制限されおいたすが、最初はこれで十分です)。

ビデオ コヌデックはどのように機胜したすか? パヌト 1: 基本

第二郚 ビデオコヌデックの仕組み

出所 habr.com

コメントを远加したす