现在越来越多的视频或者图像拍摄设备支持log模式,比如大疆无人机的D-Log模式等等,log模式的起源和发展就不多做介绍,其在普通显示器上显示画面通常看起来是平坦的灰色,因此也常被称为log灰视频。

由于其能记录更多的图像细节,动态范围更广,使得后期调色可操作空间更大,所以今天就来说一说怎么用3Dlut表实现log图的调色。

首先,要准备Log图、3DLut表,如下:

1.Log图长酱紫的:

看起来确实是灰灰的,妹子也显得如此的忧郁。

2.  3DLut表内容是酱紫的:

用adobe的调色软件PR或者PS啥的都可以自己手动调色,然后保存一个lut表出来,以后所有图片都可以直接载入这个lut表自动实现调色,非常之方便。

以Adobe 的PR软件或者PhotoShop保存的.cube文件为例,当然我只是截取的一部分,下面还有很长很长,都是如下形式排布。

第一行是lut表的名称,第二行是lut表三个维度的尺寸,64就是指R,G, B三个分量分别只保存64个值。

3. 调色原理是酱紫的:

Lut全称是look up table,没错就是你熟悉的查找表,3D LUT就只指三维的查找表,这个三维是指RGB三个通道是独立的,查找的时候也是独立查找。那么怎么个查找法,简单来说就是给你一个像素点的RGB三个值,我从表里面找到新的RGB三个值,调色过程至此完成。

如果真有这个简单就好了,细想一下如果要把0-255所有三个通道的颜色值保存下来,数据量是256*256*256个,文件有点庞大了。因此为了减小数据的存储量,通常将256阶缩放到16阶或者64阶保存下来。上面的lut表就是64阶,存储的点个数就是64*64*64个。

lut表的具体排布含义如下:

R     G       B

0      0        0

0      0         1

0       0        2

0       0        3

........

0       0         63

0        1          0

0         1         1

0         1          2

0         1          3

......

0          1         63

.......

.......

.......

0          63          63

......

......

......

63         63          63

敲空格好难受,不过聪明的你一定看出来规律了,没错就是依次把三个通道的值一一列出来,想象一个三维的坐标轴,分别是R G B,取值范围都是0-63.  那么这个立方体内整点的个数就是64*64*64个。而表里面的值是将 0-63 归一化到 0-1,存为浮点数而已。

当我们得到一张log妹纸图片后,每次取一个像素点,假如RGB三个值(50,100,200),然后将其量化到0-63范围,其实简单做法就是直接除以4,得到(12.5, 25, 50),那么从查找表中找到R = 12, G=25 , B=50位置的三个浮点值(这个预先把lut表读入三维数组就可以了,根据索引下标取很简单),将三个浮点值再乘以255,扩展到0-255范围,得到一组新的RGB值,这个就是调色后的颜色值。

没错,就是酱紫。当然上面用的是最简单的最近邻插值方法,因为(12.5, 25, 50)直接取整是不准确的,输出的图片会有比较明显的条纹断层现象。可以使用稍微复杂点的三线性插值(三维空间中浮点周围的8个整数点插值)或者四面体插值,能够得到比较平滑的输出图。

4.  忧郁的妹纸调色后是酱紫的:

最近邻插值:

三线性插值:

四面体插值:

可以看到最近邻插值妹纸的衣服上有明显的条纹,后两种插值方法要改善很多,突然感觉也没那么忧郁了。

放两张其他LUT文件调色出的忧郁妹纸:

上面是博主用OpenCVC++写代码实现的,并不麻烦。

FFmpeg中集成有3DLutFilter,同样也是有这三种插值算法,命令行调用也非常方便,命令如下:

ffmpeg -i log.mp4 -vf lut3d="file=DK79.cube"  out.mp4

3DLut表实现log视频的后期调色原理的更多相关文章

  1. 如何使用Camtasia给视频或者图片调色

    喜欢摄影过着做视频的朋友一定知道,一张好看的照片或者一段精美视频的构成因素很多,取景本身肯定是个很重要的条件,相机的素质是非常重要的硬件条件,接下来的就是后期的编辑和处理了,而在后期处理过程中调色就显 ...

  2. 使用Camtasia来给视频或者图片调色

    喜欢摄影和制作视频的朋友可能知道,一张好看的照片或一段精美视频的构成要素很多,取景本身就是很重要的条件,相机的硬件水平也是一个重要因素,接下来的就是后期的编辑和处理了,而在后期处理过程中调色是十分重要 ...

  3. 第三百七十四节,Django+Xadmin打造上线标准的在线教育平台—创建课程app,在models.py文件生成4张表,课程表、课程章节表、课程视频表、课程资源表

    第三百七十四节,Django+Xadmin打造上线标准的在线教育平台—创建课程app,在models.py文件生成4张表,课程表.课程章节表.课程视频表.课程资源表 创建名称为app_courses的 ...

  4. QQ视频直播架构及原理 流畅与低延迟之间做平衡 音画如何做同步?

    QQ视频直播架构及原理 - tianyu的专栏 - CSDN博客 https://blog.csdn.net/wishfly/article/details/53035342 作者:王宇(腾讯音视频高 ...

  5. QT5 QSS QML界面美化视频课程系列 QT原理 项目实战 C++1X STL

    QT5 QSS QML界面美化视频课程系列 QT原理 项目实战 C++1X STL 课程1   C语言程序设计高级实用速成课程 基础+进阶+自学 课程2   C语言程序设计Windows GDI图形绘 ...

  6. Atitit 视频编码与动画原理attilax总结

    Atitit 视频编码与动画原理attilax总结 1.1. 第一步:实现有损图像压缩和解压1 1.2. 接着将其量化,所谓量化,就是信号采样的步长,1 1.3. 第二步:实现宏块误差计算2 1.4. ...

  7. atittit.表单验证的实现方式以及原理本质以及选型以及自定义兼容easyui dsl规则的表单验证

    atittit.表单验证的实现方式以及原理本质以及选型以及自定义兼容easyui dsl规则的表单验证 1. 需求,表单验证需要弹框式,但目前easyui ms绑定死了tooltip式样 1 2. 表 ...

  8. MS Sql Server 数据库或表修复(Log日志文件损坏的修复方法)

    ----------------- [1] use master go sp_configure reconfigure with override go ----------------- [2] ...

  9. 顺序线性表 ---- ArrayList 源码解析及实现原理分析

    原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7738888.html ------------------------------------ ...

随机推荐

  1. ad_imh

    1. stc15    ad_1.7  9600 1t #include < #include <absacc.h> #include <stdio.h> #includ ...

  2. Java 日志体系

    Java 日志体系 <java 日志和 SLF4J 随想>:http://ifeve.com/java-slf4j-think/ 一.常用的日志组件 名称 jar 描述 log4j log ...

  3. font-smoothing使用后字体看起来会更清晰舒服

    CSS3里面加入了一个“-webkit-font-smoothing”属性. 这个属性可以使页面上的字体抗锯齿,使用后字体看起来会更清晰舒服. 加上之后就顿时感觉页面小清晰了. 淘宝也在用哦! 它有三 ...

  4. JavaScript 数组

    JavaScript的Array可以包含任意数据类型,并通过索引来访问每个元素. 要取得Array的长度,直接访问length属性: var arr = [1, 2, 3.14, 'Hello', n ...

  5. VS“新建网站”与“新建Asp.Net Web 应用程序”的区别

    WebApplication(新建Asp.Net Web 应用程序)编程模型的优点:针对大型网站 1.编译速度网站编译速度快,使用了增量编译模式,仅仅只有文件被修改后,这部分才会被增量编译进去. 2. ...

  6. idea执行mapreduce报错 Could not locate Hadoop executable: C:\hadoop-3.1.1\bin\winutils.exe

    window执行mapreduce报错 Exception in thread "main" java.lang.RuntimeException: java.io.FileNot ...

  7. s4 Docker 网络1

    网络基础 Docker Network 单机网络 Bridge Network Host Network None Network 多机网络:overlay Network 网络的分层 公有IP和私有 ...

  8. Python开发——4.集合和字符串拼接

    一.集合(set) 1.集合的特性: 不同元素组成.元素是无序排列的可hash值 2.集合转为列表 s1 = {11,"hechouzi",(11,22,33)} names = ...

  9. 2.第一个ASP.NET MVC 5.0应用程序

    大家好,上一篇对ASP.NET MVC 有了一个基本的认识之后,这一篇,我们来看下怎么从头到尾创建一个ASP.NET MVC 应用程序吧.[PS:返回上一篇文章:1.开始学习ASP.NET MVC] ...

  10. [BOT]自定义ViewPagerStripIndicator

    效果图 app中下面这样的控件很常见,像默认的TabHost表现上不够灵活,下面就简单写一个可以结合ViewPager切换内容显示,提供底部"滑动条"指示所显示页签的效果. 这里控 ...