たとえば、4 * 4 の画像があります。Y、U、V コンポーネントを別々に抽出したい。画像が YUV 422、YUV 420、YUV444 の場合の方法。アクセスできるように、Y、U、および V が 422、420、および 444 にどのように格納されているか、配列の構造を知りたいと思っています。
2 に答える
このサイトでは、さまざまな YUV 形式の概要がよくわかります。与えられたピクセル構造もあります。
明確にするために: これらの数値は、色成分のサブサンプリングを決定するためのものです。たとえば、YUV 444 = 4:4:4 サブサンプリングは、3 つのコンポーネント (Y、U、および V) のすべてが同じサンプル レートを持つことを意味します。一方、4:2:2 は、U と V が Y の半分のレートでのみサンプリングされることを示しています。つまり、深度が 1 バイトの場合、Y は 2 バイト、U と V はそれぞれ 1 バイトです。これは、Y がより高いダイナミック レンジを持つことができることを意味します。
JPEG 標準では、各色成分の水平および垂直サンプリング係数が定義されていることに注意してください。人間の視覚系では、ルマ センサー (ロッド) とクロマ センサー (コーン) の比率は 20:1です。このため、通常、輝度コンポーネントはサブサンプリングされませんが、JPEG 規格ではそのようなコンテンツのエンコードが許可されています。
かなり古い質問ですが、YUV のデコードに関するいくつかの作業を終えたばかりなので、いくつかの情報を共有したいと思います。YUV スキーマには 3 つの主要な側面があります。
ソース YUV バッファーがパックされたバッファーまたは平面バッファーである場合。Packed は YUV ビットがグループ化されていることを意味し、planar は Y、U、および V バッファが 3 つの異なるメモリ領域に分離されていることを意味します。
YUV チャネル サイズ。単一の Y、U、V チャンネルは、8 ビット、10 ビット、12 ビットなどの可能性があります。
サンプリング比; A:B:C. 4:2:2 は、各ピクセルに 1 つの Y 値が水平方向にあり、2 つのナイトボード ピクセル間で共有される U 値と V 値が 1 つだけであることを意味します。
YUV 4:2:2 v210 のデコードに取り組んだところです。このリンクをたどると、デコードする GLSL ソース コードと参照したリソースがあります。どんなアドバイスでも大歓迎です。これは私の最初のデコーダーです。