现在越来越多的视频或者图像拍摄设备支持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. HOOK NTFS 禁止格式化

    if(bHooked == FALSE) { RtlInitUnicodeString (&HookDriverName, L"\\FileSystem\\Ntfs"); ...

  2. Alpha 冲刺 (10/10)

    队名 火箭少男100 组长博客 林燊大哥 作业博客 Alpha 冲鸭鸭鸭鸭鸭鸭鸭鸭鸭鸭! 成员冲刺阶段情况 林燊(组长) 过去两天完成了哪些任务 协调各成员之间的工作 测试整体软件 展示GitHub当 ...

  3. 在cmd下可以import cv2,而Pycharm报错:找不到cv2

    平台:win10 x64+Pycharm+Anaconda3+opencv 安装教程:参考博客——http://blog.sina.com.cn/s/blog_cca23c300102xiy4.htm ...

  4. jxl操作excel写入数据不覆盖原有数据示例

    public void readTO() {        Workbook wb = null;        WritableWorkbook wwb = null;        try {   ...

  5. springsecurity 源码解读之 SecurityContext

    在springsecurity 中,我们一般可以通过代码: SecurityContext securityContext = SecurityContextHolder.getContext(); ...

  6. Beta冲刺 (3/7)

    Part.1 开篇 队名:彳艮彳亍团队 组长博客:戳我进入 作业博客:班级博客本次作业的链接 Part.2 成员汇报 组员1(组长)柯奇豪 过去两天完成了哪些任务 熟悉并编写小程序的自定义控件 编辑文 ...

  7. YUM仓库安装LAMP与LNMP

    LAMP动态网站部署架构是由一套 Linux+Apache+MySQL+PHP 组成的动态网站系统解决方案. LNMP动态网站部署架构是由一套 Linux+Nginx+MySQL+PHP 组成的动态网 ...

  8. 浅谈css3长度单位rem,以及移动端布局技巧

    rem是什么? rem是css3中新增加的一个单位属性(font size of the root element),根据页面的根节点的字体大小进行转变的单位.root!!!!!!!!!根节点,也就是 ...

  9. python实现线性排序算法-计数排序

    计数排序假定输入元素的每一个都是介于0到k之间的整数,此处K为某个整数,当k=O(n)时,计数排序的运行时间为O(n) 它的基本思想是:根据每个输入元素x确定小于x的元素个数,根据这个信息把x直接放到 ...

  10. Linux - 参考链接

    01 - Linux系统监控的Shell脚本 常用的主机监控Shell脚本 使用Shell脚本对Linux系统和进程资源进行监控 02 - Linux系统结构 Linux 系统结构详解 03 - Li ...