该原创文章首发于微信公众号:字节流动
OpenGLES 相机 LUT 滤镜

什么是 LUT ? LUT 是 Look Up Table 的简称,称作颜色查找表,是一种针对色彩空间的管理和转换技术。它可以分为一维 LUT(1D LUT) 和 三维 LUT(3D LUT),其中三维 LUT 比较常用。简单来讲,LUT 就是一个 RGB 组合到另一个 RGB 组合的映射关系表。
LUT(R, G, B) = (R1, G1, B1)
LUT 滤镜是一种比较经典的滤镜,本质上属于独立像素点替换,即根据 OpenGL 采样器对纹理进行采样得到的像素点,再基于像素点的(R,G,B)分量查表,获得 LUT 映射的(R1,G1,B1),替换原来的输出。
一般 RGB 像素占用 3 个字节,包含 3 个分量,每个分量有 256 种取值,那么三维 LUT 模板就可以包含 256 X 256 X 256 种情况,占用 48MB 内存空间。这样一个 LUT 模板内存占用过大同时也降低了查找的效率,通常会采取下采样方式来降低数据量。
例如可以对三维 LUT 模板每个分量分别进行 64 次采样,这样就获得一个 64 X 64 X
本文介绍了OpenGL ES中使用LUT(颜色查找表)实现相机滤镜的技术。LUT是一种颜色管理和转换技术,通过映射关系表对RGB像素进行替换。在三维LUT中,64x64x64的映射关系表常由512x512的LUT图表示,通过下采样降低内存占用。在OpenGLES中,通过GLSL脚本应用LUT滤镜,实现像素颜色的转换。
订阅专栏 解锁全文
6724





