私は OpenGL を使用したデータ視覚化ツールに取り組んでおり、LAB 色空間は、扱っているデータを視覚化するための最もわかりやすい色空間です (データの 3 軸は色空間の 3 軸にマッピングされます)。LAB 値と RGB 値との間の近似変換のための高速 (たとえば、シェーダーでの実行に適した非整数累乗なし) アルゴリズムはありますか?
1976 次
1 に答える
1
シェーダーで実際の変換計算を行うのが複雑すぎる/費用がかかる場合は、いつでもルックアップ テーブルを使用できます。どちらのカラー スペースにも 3 つのコンポーネントがあるため、3D RGB テクスチャを使用してルックアップ テーブルを表すことができます。
3D テクスチャを使用すると、多くのオーバーヘッドがかかるように聞こえるかもしれません。OpenGL では 8 ビット/コンポーネントが色の表現によく使用されるため、256x256x256 の 3D テクスチャが必要になります。4 バイト/テクセルで、これは 64 MB のテクスチャであり、法外ではありませんが、非常に実質的です。
ただし、変換テーブルの値がどの程度滑らかかによっては、解像度を低くしても問題を解決できる場合があります。テクスチャ サンプリングでは線形補間が使用されることに注意してください。区分的線形補間がルックアップ テーブルの特定の基本解像度で十分である場合は、サイズを大幅に縮小できます。
この方向に進み、LUT に 64 MB を使用する余裕がない場合は、LUT のサイズを調整し、可能なサイズ/パフォーマンスと品質のトレードオフを行う必要があります。
于 2015-03-21T03:04:17.567 に答える