3DLut表实现log视频的后期调色原理
现在越来越多的视频或者图像拍摄设备支持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视频的后期调色原理的更多相关文章
- 如何使用Camtasia给视频或者图片调色
喜欢摄影过着做视频的朋友一定知道,一张好看的照片或者一段精美视频的构成因素很多,取景本身肯定是个很重要的条件,相机的素质是非常重要的硬件条件,接下来的就是后期的编辑和处理了,而在后期处理过程中调色就显 ...
- 使用Camtasia来给视频或者图片调色
喜欢摄影和制作视频的朋友可能知道,一张好看的照片或一段精美视频的构成要素很多,取景本身就是很重要的条件,相机的硬件水平也是一个重要因素,接下来的就是后期的编辑和处理了,而在后期处理过程中调色是十分重要 ...
- 第三百七十四节,Django+Xadmin打造上线标准的在线教育平台—创建课程app,在models.py文件生成4张表,课程表、课程章节表、课程视频表、课程资源表
第三百七十四节,Django+Xadmin打造上线标准的在线教育平台—创建课程app,在models.py文件生成4张表,课程表.课程章节表.课程视频表.课程资源表 创建名称为app_courses的 ...
- QQ视频直播架构及原理 流畅与低延迟之间做平衡 音画如何做同步?
QQ视频直播架构及原理 - tianyu的专栏 - CSDN博客 https://blog.csdn.net/wishfly/article/details/53035342 作者:王宇(腾讯音视频高 ...
- QT5 QSS QML界面美化视频课程系列 QT原理 项目实战 C++1X STL
QT5 QSS QML界面美化视频课程系列 QT原理 项目实战 C++1X STL 课程1 C语言程序设计高级实用速成课程 基础+进阶+自学 课程2 C语言程序设计Windows GDI图形绘 ...
- Atitit 视频编码与动画原理attilax总结
Atitit 视频编码与动画原理attilax总结 1.1. 第一步:实现有损图像压缩和解压1 1.2. 接着将其量化,所谓量化,就是信号采样的步长,1 1.3. 第二步:实现宏块误差计算2 1.4. ...
- atittit.表单验证的实现方式以及原理本质以及选型以及自定义兼容easyui dsl规则的表单验证
atittit.表单验证的实现方式以及原理本质以及选型以及自定义兼容easyui dsl规则的表单验证 1. 需求,表单验证需要弹框式,但目前easyui ms绑定死了tooltip式样 1 2. 表 ...
- MS Sql Server 数据库或表修复(Log日志文件损坏的修复方法)
----------------- [1] use master go sp_configure reconfigure with override go ----------------- [2] ...
- 顺序线性表 ---- ArrayList 源码解析及实现原理分析
原创播客,如需转载请注明出处.原文地址:http://www.cnblogs.com/crawl/p/7738888.html ------------------------------------ ...
随机推荐
- HOOK NTFS 禁止格式化
if(bHooked == FALSE) { RtlInitUnicodeString (&HookDriverName, L"\\FileSystem\\Ntfs"); ...
- Alpha 冲刺 (10/10)
队名 火箭少男100 组长博客 林燊大哥 作业博客 Alpha 冲鸭鸭鸭鸭鸭鸭鸭鸭鸭鸭! 成员冲刺阶段情况 林燊(组长) 过去两天完成了哪些任务 协调各成员之间的工作 测试整体软件 展示GitHub当 ...
- 在cmd下可以import cv2,而Pycharm报错:找不到cv2
平台:win10 x64+Pycharm+Anaconda3+opencv 安装教程:参考博客——http://blog.sina.com.cn/s/blog_cca23c300102xiy4.htm ...
- jxl操作excel写入数据不覆盖原有数据示例
public void readTO() { Workbook wb = null; WritableWorkbook wwb = null; try { ...
- springsecurity 源码解读之 SecurityContext
在springsecurity 中,我们一般可以通过代码: SecurityContext securityContext = SecurityContextHolder.getContext(); ...
- Beta冲刺 (3/7)
Part.1 开篇 队名:彳艮彳亍团队 组长博客:戳我进入 作业博客:班级博客本次作业的链接 Part.2 成员汇报 组员1(组长)柯奇豪 过去两天完成了哪些任务 熟悉并编写小程序的自定义控件 编辑文 ...
- YUM仓库安装LAMP与LNMP
LAMP动态网站部署架构是由一套 Linux+Apache+MySQL+PHP 组成的动态网站系统解决方案. LNMP动态网站部署架构是由一套 Linux+Nginx+MySQL+PHP 组成的动态网 ...
- 浅谈css3长度单位rem,以及移动端布局技巧
rem是什么? rem是css3中新增加的一个单位属性(font size of the root element),根据页面的根节点的字体大小进行转变的单位.root!!!!!!!!!根节点,也就是 ...
- python实现线性排序算法-计数排序
计数排序假定输入元素的每一个都是介于0到k之间的整数,此处K为某个整数,当k=O(n)时,计数排序的运行时间为O(n) 它的基本思想是:根据每个输入元素x确定小于x的元素个数,根据这个信息把x直接放到 ...
- Linux - 参考链接
01 - Linux系统监控的Shell脚本 常用的主机监控Shell脚本 使用Shell脚本对Linux系统和进程资源进行监控 02 - Linux系统结构 Linux 系统结构详解 03 - Li ...