NV12toRGB

バージョン名: NV12toRGB-8

カテゴリー: 画像処理

簡単な説明: NV12toRGB は、NV12 から RGB 形式への画像変換を実行します。

詳細な説明:

NV12 (YUV) から RGB 空間への各ピクセルの変換は、次の式で表されます。

\[\begin{split}\begin{aligned} & R = 1.164 \cdot (Y - 16) + 1.596 \cdot (V - 128) \\ & G = 1.164 \cdot (Y - 16) - 0.813 \cdot (V - 128) - 0.391 \cdot (U - 128) \\ & B = 1.164 \cdot (Y - 16) + 2.018 \cdot (U - 128) \end{aligned}\end{split}\]

次に、R、G、B の値が範囲 (0、255) にクリップされます。

入力:

入力 NV12 イメージテンソルは NHWC (NYXC としても知られる) レイアウトを持ち、次の 2 つの方法で表現できます。

  • シングルプレーン:

    • 1: T タイプのテンソル。必須。
      次元:

      • N - バッチ次元

      • H - 高さ次元は画像の高さの 1.5 倍です

      • W - 幅の次元は画像の幅と同じです

      • C - チャネルの次元は 1 (1 つの平面) に等しくなります

  • 2 つの別個の平面 - Y と UV:

    • 1: Y 平面を表す T タイプのテンソル。必須。
      次元:

      • N - バッチ次元

      • H - 高さ次元は画像の高さと同じです

      • W - 幅の次元は画像の幅と同じです

      • C - チャネルの次元は 1 に等しくなります (Y チャネルのみ)

    • 2: UV 平面を表す T タイプのテンソル。必須。
      次元:

      • N - バッチ次元。Y 平面のバッチ次元と同じである必要があります

      • H - 高さの次元は画像の高さの半分でなければなりません (例えば、image_height / 2)

      • W - 幅の次元は画像の幅の半分でなければなりません (例えば、image_width / 2)

      • C - チャネルの次元は 2 に等しいものとします (U チャネルと V チャネル)

出力:

  • 1: RGB 形式に変換されたイメージを表す T タイプのテンソル。
    次元:

    • N - バッチ次元

    • H - 高さ次元は画像の高さと同じです

    • W - 幅の次元は画像の幅と同じです

    • C - チャネルの次元は 3 に等しくなります。最初のチャネルは赤、2 番目のチャネルは緑、最後のチャネルは青です

タイプ:

  • T: uint8 またはサポートされている浮動小数点タイプ。

例:

例 1

 <layer ... type="NV12toRGB">
     <input>
         <port id="0">
             <dim>1</dim>
             <dim>720</dim>
             <dim>640</dim>
             <dim>1</dim>
         </port>
     </input>
     <output>
         <port id="1">
             <dim>1</dim>
             <dim>480</dim>
             <dim>640</dim>
             <dim>3</dim>
         </port>
     </output>
 </layer>

例 2

 <layer ... type="NV12toRGB">
     <input>
         <port id="0">  <!-- Y plane -->
             <dim>1</dim>
             <dim>480</dim>
             <dim>640</dim>
             <dim>1</dim>
         </port>
         <port id="1">  <!-- UV plane -->
             <dim>1</dim>
             <dim>240</dim>
             <dim>320</dim>
             <dim>2</dim>
         </port>
     </input>
     <output>
         <port id="1">
             <dim>1</dim>
             <dim>480</dim>
             <dim>640</dim>
             <dim>3</dim>
         </port>
     </output>
 </layer>