I420toRGB

バージョン名: I420toRGB-8

カテゴリー: 画像処理

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

詳細な説明:

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

\[\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}\]

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

入力:

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

  • シングルプレーン:

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

      • N - バッチ次元

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

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

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

  • 3 つの別個の平面 - Y、U および V:

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

      • N - バッチ次元

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

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

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

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

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

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

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

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

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

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

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

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

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

出力:

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

    • N - バッチ次元

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

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

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

タイプ:

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

例:

例 1

<layer ... type="I420toRGB">
    <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="I420toRGB">
    <input>
        <port id="0">  <!-- Y plane -->
            <dim>1</dim>
            <dim>480</dim>
            <dim>640</dim>
            <dim>1</dim>
        </port>
        <port id="1">  <!-- U plane -->
            <dim>1</dim>
            <dim>240</dim>
            <dim>320</dim>
            <dim>1</dim>
        </port>
        <port id="2">  <!-- V plane -->
          <dim>1</dim>
          <dim>240</dim>
          <dim>320</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>