問題タブ [nv12-nv21]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - YUVNV21からRGBへの変換に関する混乱
http://developer.android.com/reference/android/graphics/ImageFormat.html#NV21によると、NV21がデフォルトで使用される形式です。
YUV NV21からRGBへの変換に関しては、Web上にかなりの数のコードがあります。しかし、私がコードを調べているとき、私はコードの正確さに疑問を持っています。
最初のコンポーネントVが最初に来て、次に最初のコンポーネントUが来るはずです
http://wiki.videolan.org/YUV#NV21によると、NV21 is like NV12, but with U and V order reversed: it starts with V.
しかし、私がコードの実装を行ったとき
- http://pastebin.com/T0my7zSc-Uが最初に来ることを前提としています
- https://stackoverflow.com/a/8394202/72437-Uも最初に来ることを前提としています
- https://stackoverflow.com/a/10125048/72437-それはUも最初に来ることを暗示します
Rは最も重要な位置である必要がありますColor.java
の実装によるint argb
と、Rは最も重要な位置にあると想定されます。ただし、次のコード実装を実行しました
- http://pastebin.com/T0my7zSc-Rが最も重要でない位置にあると想定しています
- https://stackoverflow.com/a/8394202/72437-Rが最も重要でない位置にあると想定しています
私は疑問に思っていました、彼らはよくある間違いを犯していますか、それとも私は何かを見落としていますか?
現在、私の実装は次のとおりです。
format - ファイルが nv12 形式のファイルかどうかを判断する方法は?
NV12形式のファイルかどうか知りたいのですが、nv12形式のファイルかどうかを判断する方法を教えてください。ツールやテスト コードはありますか?
c# - NV12 フォーマットと UV プレーン
NV12 形式について少し混乱しています。形式を理解するためにこのページを見ています。私が現在理解しているのは、縮小の画像またはビデオがある場合640 x 480
、Y プレーンには 640 x 480
バイトがあり、U と V の両方のプレーンには640/2 x 480/2
. U プレーン640/2 x 480/2
と V プレーン640/2 x 480/2
の両方が640/2 x 480/2
バイトしかないという意味ではありません。したがって、出力バッファ配列の合計バイト数は次のようになります。(640/2) * (480/2)
uv プレーンは 2 バイトを使用するため、2 が乗算されます。
だから問題は、私がそれを正しい方法で理解しているということですか?そして、NV12フォーマットを指定するフォーマットでバイト配列を作っています。
c# - Bitmapimage C# での NV12 形式のサポート
フォーマットを実行BitmapImage
またはWriteableBitmapImage
サポートしNV12
ます。またはNV12 形式で配置されたバイト配列からBitmapImage
orを作成できますか?WriteableBitmapImage
ありがとう
image-processing - 画像フォーマット メモリ内の NV12 ストレージ
質問に記載されている NV12 フォーマットのサイズについて完全に理解しています
現在、この形式での UV プレーンのストレージに関する 2 つの情報源から読んでいます。
NV12
すべての Y サンプルは、偶数行の unsigned char 値の配列としてメモリに最初に表示されます。Y プレーンの直後には、パックされた U (Cb) および V (Cr) サンプルを含む unsigned char 値の配列が続きます。結合された UV 配列がリトル エンディアンの WORD 値の配列としてアドレス指定される場合、LSB には U 値が含まれ、MSB には V 値が含まれます。NV12 は、DirectX VA で推奨される 4:2:0 ピクセル形式です。これは、4:2:0 ビデオをサポートする DirectX VA アクセラレータの中期的な要件になると予想されます。次の図は、Y 平面と、パックされた U および V サンプルを含む配列を示しています。
私が理解しているのは、UV プレーンでは、各 U と V が single byte に格納されていることです。
これについてウィキペディアから読んだとき: https://wiki.videolan.org/YUV#NV12
それは言います:
NV12
I420 に関連して、NV12 には 1 つの輝度「ルミナンス」プレーン Y と、U 値と V 値がインターリーブされた 1 つのプレーンがあります。NV12 では、クロマ プレーン (青と赤) は、水平方向と垂直方向の両方の次元で 2 倍にサブサンプリングされます。ピクセルの 2x2 グループの場合、4 つの Y サンプルと 1 つの U および 1 つの V サンプルがあります。NV12 を、U プレーンと V プレーンがインターリーブされた I420 と考えると便利です。これは NV12 のグラフ表示です。各文字は 1 ビットを表します: 1 NV12 ピクセルの場合: YYYYYYYY UVUV 2 ピクセル NV12 フレームの場合: YYYYYYYYYYYYYYYY UVUVUVUV 50 ピクセル NV12 フレームの場合: Y*8*50 (UV)*2*50 n ピクセル NV12 フレームの場合: Y*8*n (UV)*2*n
ここで私が理解しているのは、各 U と V が各バイトでビットごとにインターリーブされていることです。したがって、UV プレーンの各バイトには、インターリーブされた 4U ビットと 4V ビットが含まれます。
誰かが私の疑問を明確にすることができますか?
android - NV21 形式と奇数の画像寸法
私は Android で NV21 イメージをしばらく使用しており、NV21 イメージの不適切なインデックス バイトが原因である可能性があるバグを追跡しています。
この質問の回答の画像には、Y、U、および V バイトが画像バッファーにどのように配置されているかがよくわかります。許可されているかどうかはわかりませんが、以下に埋め込みます。
- 画像の次元が奇数の場合 (パリティなど) はどうなりますか? それはこの形式でも可能ですか?
- この形式の公式仕様はどこかにありますか?
android - 画像フォーマット NV21 とそれが持っているように見えるさまざまなメモリ レイアウトに関する混乱
上記の形式の画像を処理する必要があります。しかし、私はそれについて相反する情報を見つけました。
別のスタックオーバーフローの回答によると、UV値は互いに続きますが、ウィキペディアによると、V値はメモリ内のU値の後にあります。どちらが正しいか、または両方が正しい場合、違いは何ですか?
NV12 対 NV21 の問題でしょうか? ただし、このサイトでは、単に切り替える必要があると述べています。
これらの用語が何を意味するのかはわかりませんが、画像が平面、半平面、または平面ではないことに関係しているのかもしれません。
誰かがこれを少し明確にすることができますか?
c - IPP を使用して RGB を NV12 色空間に変換する方法
Intel® Media SDK などのビデオ エンコーダーには、NV12 ビデオ入力形式が必要です。
NV12 フォーマットは YUV 4:2:0 フォーマットで、最初に Y プレーン、次にインターリーブされた UV プレーンにパックされたクロマ サンプルがメモリ内で順序付けられます。
例:
YYYYYY
YYYYYY
UVUVUV
RGB カラー形式は、Pixel-Order RGB (ピクセルごとのバイト、下位バイトは赤) を指します。
RGBRGBRGBRGBRGB
RGBRGBRGBRGBRGB
Web で調べたところ、NV12 に関して、YUVは YCbCr 色空間として定義されていることがわかりました。現在、NV12 を適用できる YCbCr 形式が少なくとも 2 つあります。
私の質問は: RGB 色空間を NV12 に変換するIPP機能はありますか?