問題タブ [srgb]

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.

0 投票する
1 に答える
1535 参照

video - scRGB色空間でHDRビデオからフレームを取得するには?

HDR TV で HDR ビデオを表示するシンプルなビデオ プレーヤーを作成したいと考えています。例えば、この「LG Chess HDR」の動画。HEVC でエンコードされ、ビット深度は 10 ビット、ピクセル形式は YUV420P10LE で、BT2020 色空間と PQ 伝達関数に関するメタデータが含まれています。

このNVIDIA の記事で、次のことがわかりました。

ディスプレイ ドライバーは、scRGB バック バッファーを取得し、現在接続されているディスプレイが期待する標準に変換します。一般に、これは色空間を sRGB 原色から BT に変換することを意味します。2020 プライマリー、適切なレベルへのスケーリング、および PQ のようなメカニズムによるエンコード。また、そのディスプレイ接続が必要な場合は、RGB から YCC などの変換を実行する可能性があります。

これは、プレーヤーがscRGB 色空間でピクセルをレンダリングする必要があることを意味します(線形エンコーディング、sRGB 原色、全範囲は -0.5 から +7.5 未満)。したがって、ソース ビデオからこの色空間で、できれば FP16 ピクセル形式 (ハーフ フロート、1 つのカラー チャネルあたり 16 ビット) でフレームを取得する必要があります。ビデオを HDR にレンダリングするための次の単純なパイプラインにたどり着きました。

このライブラリとして FFmpeg を使用しようとしていますが、scRGB 色空間でソース HDR ビデオからフレームを取得する方法がわかりません

フレームを取得し、フィルター API について知るために、現在はsws_scale FFmpeg メソッドを使用しています。しかし、すべてのソース ビデオのメタデータを解析せずにこれらの機能を使用して scRGB で透過的にフレームを取得し、それらのカスタム ビデオ フィルタを作成する方法に関する情報やヘルプは見つかりませんでした。

FFmpeg を使用して scRGB 色空間でフレームを取得するために何ができるか教えてください。誰かが私がそれを行うことができる他のライブラリを教えてもらえますか?

0 投票する
2 に答える
4616 参照

opencv - opencv sRGB から RGB への変換

非線形sRGB形式のiPhone写真があります。リニア RGB が必要です。それらを線形RGBに変換する方法をopencv(python)で見つけることができませんでした。

ImageMagick convert も試しました:

それでも同じsRGBは効果がありません。

何か案は ?

0 投票する
1 に答える
2539 参照

python-3.x - 画像Pythonのimdecode時にOpenCVがsRGBプロファイルを削除

以下のように、インターネットから取得した画像を読み込んでから、すぐにPythonでOpenCVに読み込みます。

libpng の警告が表示されます。

imread の前に sRGB プロファイルを削除するにはどうすればよいですか? PNGファイルを読む前に、imagemagickを介してそれを行うことを人々は提案していますが、これは私には不可能です。Pythonで直接これを行う方法はありませんか?

編集:

https://uploadfiles.io/m1w2lのファイルで実行し、コードを使用すると、問題を解決するための以下の回答のコードを取得できません。

同じ警告が表示されます

0 投票する
0 に答える
495 参照

opengl - GL_FRAMEBUFFER_SRGB による OpenGL ガンマ補正

私は Blinn Phong (LearnOpenGL チュートリアル) ライティングを作成しており、ガンマ補正された色を最終結果として取得しようとしています。

ガンマ補正について掘り下げる前に、私の照明は次のようになります。

画像1

それから私は一日中sRgb色空間とその意味について読んでいます。ガンマ補正された色を使用すると、ライティングの品質が向上するという結論に達しました。

フラグメント シェーダーでガンマを手動で調整するのは面倒です。GL_FRAMEBUFFER_SRGB を有効にして、sRgb 対応のフレームバッファを要求することで、opengl にそれをさせることができます。(?)

これは、GL_FRAMEBUFFER_SRGB を有効にし、テクスチャを GL_RGB 形式でロードした場合です。

画像2

これは期待される結果です。サンプリングされたテクスチャが 2 回色補正されるため、色がより明るくなります。(?)

これは、GL_FRAMEBUFFER_SRGB を有効にし、テクスチャを GL_SRGB 形式でロードした場合です。

画像3 これは予想外の結果です。すべてが暗すぎて、拡散色が見えず、スペキュラーのみです。

私の質問は:

(LearnOpenGL チュートリアルに従って) OpenGL が独自にガンマ補正を実行できるようにするには、次のことを行う必要があります。

• SRGB をサポートするフレームバッファを持っている。

• SRGB フラグを使用してテクスチャをロードします。

何が間違っているのですか、それとも何か重要なことを見逃しているのでしょうか?

更新: GL_SRGB 形式でロードされたディフューズ テクスチャ、GL_RGB のスペキュラ。最後の画像では、拡散反射光が期待どおりにサンプリングされているのに対し、拡散反射光の色は完全に減衰 (?) されているように見えます。私の減衰関数は次のとおりです。

float attenuation = max(1.0 - distance / light.radius, 0.0);

0 投票する
1 に答える
493 参照

python-3.x - skimage.color.rgb2lab への入力は何ですか?

rgb2lab でリニア RGB (ガンマ補正なし) を使用しています。ただし、 rgb2lab は実際には rgb2xyz の後に xyz2lab が続き、 rgb2xyz は実際には sRGB を期待していることに気付きました。したがって、RGB が (0,255) の sRGB 画像がある場合、image/255 を rgb2lab に渡す必要があるように思われます。そうですか?