3D Lut 电影级调色算法 附完整C代码
- 作者: 五速梦信息网
- 时间: 2026年04月04日 13:54
在前面的文章,我提到过VSCO Cam 的胶片滤镜算法实现是3d lut。
那么3d lut 到底是个什么东西呢?
或者说它是用来做什么的?
长话短说,3d lut(全称 : 3D Lookup table )它是通过建立一个颜色映射表,对图像的色调进行重调的算法。
有用于摄像机的效果美化润色,例如一些所谓的数码相机之类的。
也有用于影视后期调色,渲染影视作品的颜色基调等等。
简单的说,你想要把图片上的一些颜色通过你自己的预设给替换掉。
例如红色换成白色,白色换成绿色。
当然这在现实中操作起来非常复杂。
因为 RGB888(8+8+8=24位色):
(2^8)*(2^8)*(2^8)=
256*256*256=16777216
有16M 种颜色,如果采用手工操作的方式一个一个颜色地换,那人还活不活了。
所以就有通过建立映射表进行插值达到逼近这种效果的算法。
它就是3d lut,当然也有2d lut,1d lut。
精度不一,效果不一。
例如:
调节亮度 可以认为是1d lut.
调节对比度 可以认为是 2d lut.
而调节整体的色调最佳肯定是3d lut.
当然2d lut 也是可以做到,但是精度就没有那么高了。
我之前也提到过,市面有不少app是采用2d LUT,毕竟精度不需要那么高。
2d够用了。
但是在摄影界,影视后期这一行当里,3d lut是标配。
相关资料可以参阅:
在VSCO Cam APP中滤镜效果每一档都是一个17*17*17的3d lut预设。
先上个图,大家感受一下。


只是一个例子,效果是看做预设的功底的。
那么3d lut 的实现具体是什么算法呢?
当然据我所知,Trilinear_interpolation 是用得最广泛的一种。
之前做APP滤镜的时候,调研过不少资料。
但是当时发现一些开源项目的实现是有问题的,插值算错坐标之类的。
有一次心血来潮,去翻了翻FFmpeg的代码,居然发现了它也有实现3d lut算法。
嗯,站在巨人的肩膀上。
抽了点时间对FFmpeg中的3d lut 进行了整理。
提取出它的算法,并编写示例。
当然未经过严格验证,应该存在一些小Bugs。
完整示例代码献上:
项目地址:
命令行参数:
lut3d 3d预设文件 图片路径
例如: lut3d ../god.cube ../sample.jpg
用cmake即可进行编译示例代码,详情见CMakeLists.txt。
算法细节就不展开说了,
若有其他相关问题或者需求也可以邮件联系俺探讨。
邮箱地址是:
gaozhihan@vip.qq.com
- 上一篇: 3ds Max学习日记(十一)——如何给模型上贴图
- 下一篇: 3.STM32复位系统
相关文章
-
3ds Max学习日记(十一)——如何给模型上贴图
3ds Max学习日记(十一)——如何给模型上贴图
- 互联网
- 2026年04月04日
-
4 个独特的 Linux 终端模拟器(转)
4 个独特的 Linux 终端模拟器(转)
- 互联网
- 2026年04月04日
-
4.3 Windows驱动开发:监控进程与线程对象操作
4.3 Windows驱动开发:监控进程与线程对象操作
- 互联网
- 2026年04月04日
-
3.STM32复位系统
3.STM32复位系统
- 互联网
- 2026年04月04日
-
3.Android高仿网易云音乐
3.Android高仿网易云音乐
- 互联网
- 2026年04月04日
-
3. volatile型变量
3. volatile型变量
- 互联网
- 2026年04月04日






