【投稿】ID:LIMA
超纲申明:本文包含大量python 以及 matplotlib代码
事情的起因是这样的,在学习调色的是时候,总觉得自己的照片颜色发灰,跟500px上大神的作品差点意思,于是准备系统的分析一下数据~
像直方图、波形图、矢量示波器之类的就是很好的分析工具。
很遗憾的是PS内部只有直方图这个功能,像矢量示波器之类的多数得用插件,并且需要一张图一张图拖进去看,比较麻烦。
我看图还有个习惯,希望能有大量的图一起看,于是决定用python写个小工具,事实上效果相当不错。
可以实现直方图、矢量示波器等分析工具的图表展示,对照片影调有更加直观深入的了解。
不过这个工具主要是用来浏览,可以对一个文件夹里的照片批量生成拼在一起的分析图表,追色找思路的时候很好使。
对于调色的具体操作,还是需要用到PS及其各种插件,不可越俎代庖。
多说一句,摄影审美还是需要多看多感受,主观成分占主导,客观的量化分析只能起辅助作用,难以面面俱到,通过某几个参数来真正量化照片的好坏多少有些勉强。
提示:以下为编程内容,运行代码需要搭建Python编程环境,感兴趣的小伙伴可以自行尝试,完整的代码文件和代码运行视频教程也会打包分享给大家~
「明度直方图」
既然主要目标是分析影调,那么明度直方图是必不可少的。明度直方图的绘制相当简单,只需通过公式——
L = R ∗ 299/1000 + G ∗ 587/1000 + B ∗ 114/1000
求出所有像素的明度,然后再生成直方图就可以了。
需要注意的是这里的L其实是指Luminance或Luma,对应于YUV颜色空间。
需要和HSB/HSV颜色空间的Brightness/Value;HSL颜色空间的Lightness;以及Lab颜色空间的Lightness区分开。
生成代码:
「矢量示波器」
矢量示波器显示的是极坐标矢量图形,矢量的幅度代表色度信号的幅度,即饱和度;相角代表色度信号的相位,即色相。
矢量示波器很好的显示了照片在某个色相上的峰值,即主色调;以及这个颜色对应的饱和度。
比如这张示例图,整张图的色调都是统一的黄色,但是饱和度不高,显得单调又带着些许沉闷。
生成代码绘制外面的色环:
绘制矢量示波器:
同样还可以绘制一张色相与Brightness关系的图(右图):
「波形图」
最右边的几个空位给了波形图。波形图与直方图以及示波器最大的区别在于波形图包含了空间信息!示波器以及直方图仅仅提供了图片的统计信息,但是重要的位置信息却被省略了。
波形图则引入了位置信息,可以观察照片不同位置的影调、对比度,以及色调。其横轴是照片的宽度,纵轴是照片这一列像素所对应的明暗/颜色分布。
以这张图为例,上半部分代表高光,下半部分代表阴影,上下两部分落差大,说明反差大,可以看出照片确实有强烈的明暗对比。
下面的RGB分量波形图可以看出上半部分红色更亮一些,说明亮部偏暖;但是下半部分基本混在一起,则与照片暗部死黑相符合。
生成代码:
RGB通道的同样如此,L换成相应的通道即可:
更多的一些展示~
其他一些代码的细节:绘制图表运用了大量matplotlib图表。
另外多张子图很适合使用grid函数来规定子图的排列关系:
然后使用argparse模块来处理命令行参数,对路径下的图片进行批量处理。
领取专属 10元无门槛券
私享最新 技术干货