Jus*_*ntz 8 algorithm colors color-space pixel-shader function-approximation
我正在使用OpenGL开发数据可视化工具,LAB颜色空间是我可以处理的数据可视化最容易理解的颜色空间(3轴数据被映射到颜色空间的3个轴).是否存在快速(例如,没有非整数求幂,适合在着色器中执行)算法,用于将LAB值近似转换为RGB值和从RGB值转换?
如果在着色器中进行实际的转换计算过于复杂/昂贵,您始终可以使用查找表。由于两个颜色空间都有 3 个分量,因此您可以使用 3D RGB 纹理来表示查找表。
使用 3D 纹理听起来可能需要很大的开销。由于 OpenGL 中通常使用 8 位/分量来表示颜色,因此您需要 256x256x256 3D 纹理。按 4 字节/纹素计算,这是一个 64 MB 的纹理,虽然不算大,但非常大。
但是,根据转换表中的值的平滑程度,您可能可以使用较低的分辨率。请记住,纹理采样使用线性插值。如果分段线性插值对于查找表的特定基本分辨率来说足够好,则可以大大减小大小。
如果您朝这个方向发展,并且无法承担为 LUT 使用 64 MB 的费用,则您将不得不考虑 LUT 的大小,并做出可能的大小/性能与质量权衡。
| 归档时间: |
|
| 查看次数: |
1354 次 |
| 最近记录: |