RGB / LAB转换的快速近似算法?

我正在使用OpenGL开发数据可视化工具,LAB颜色空间是我可以处理的数据可视化最容易理解的颜色空间(3轴数据被映射到颜色空间的3个轴).是否存在快速(例如,没有非整数取幂,适合在着色器中执行)算法,用于将LAB值近似地转换为RGB值和从RGB值转换?

解决方法

如果在着色器中进行实际转换计算过于复杂/昂贵,则可以始终使用查找表.由于两个颜色空间都有3个组件,因此您可以使用3D RGB纹理来表示查找表.

使用3D纹理可能听起来像很多开销.由于8位/分量通常用于表示OpenGL中的颜色,因此需要256x256x256 3D纹理.在4字节/纹素,这是一个64 MB的纹理,这不是令人发指的,但非常重要.

但是,根据转换表中值的平滑程度,您可能会以较低的分辨率逃脱.请记住,纹理采样使用线性插值.如果分段线性插值对于查找表的某个基本分辨率足够好,则可以大大减小大小.

如果你朝着这个方向前进,并且不能使用64 MB的LUT,那么你将不得不使用LUT的大小,并且可以进行尺寸/性能与质量的权衡.

相关文章

Css3如何实现鼠标移上变长特效?(图文+视频)
css3怎么实现鼠标悬停图片时缓慢变大效果?(图文+视频)
jquery如何实现点击网页回到顶部效果?(图文+视频)
css3边框阴影效果怎么做?(图文+视频)
css怎么实现圆角边框和圆形效果?(图文+视频教程)
Css3如何实现旋转移动动画特效