前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python图像基础处理和优化的整体流程介绍

Python图像基础处理和优化的整体流程介绍

作者头像
HawkWang
发布2022-11-30 16:24:34
6840
发布2022-11-30 16:24:34
举报
文章被收录于专栏:计算摄影学

可以看下面这篇文章,了解我正在编写的这套教程:

如何编程实现图像后期处理与优化

从今天开始,我们来学习更加完整的图像后处理和优化流程,这一课我们首先对流程做一个梗概的介绍。

我把基础的摄影图像后处理和优化分为了如下的几个层次:

下面做一些简单的介绍:

一. 镜头相关的处理

镜头相关的处理主要包括了去除畸变和色差。

我们理想中的镜头是满足薄透镜模型的:

然而,真实的镜头由多个透镜组合而成,即便已经做了精密的设计,镜头组也无法完全遵循薄透镜模型。导致的不完美结果很多,我们重点需要处理的是几类情况:

1. 镜头畸变

在制造过程中,透镜的实际曲面和理想曲面之间存在一定的误差,这种误差会改变光的折射方向,使得成像点的位置发生偏差,通常这会导致“径向畸变”

根据透镜曲面的不同情况,径向畸变会导致画面出现桶形失真或枕形失真。

与此同时,实际相机通常采用多个透镜组成镜头组,各透镜中心与光轴是否重合、镜片与光轴是否垂直、各镜片沿光轴方向的位置偏差等都会使光线偏离理论路径。虽然透镜的组合可以相互抵消一些性质相反的非线性畸变,但是也会叠加一些性质相同的非线性畸变。通常,这会导致“切向畸变”

实际成像过程中,这两种畸变通常混杂在一起,尤其是广角镜头组很难避免它们。如下图所示:

下面这张图很典型,因为镜头的畸变,后方的门框出现了弯曲现象

我会在后续的文章中介绍如何通过如何自动通过图像的Exif信息获取到相机的畸变校正参数,从而对图像进行校正。

2. 透视畸变

事实上,不仅仅因为镜头原因会产生畸变,成像时候的近大远小的透视效应,一样会导致畸变,这叫做透视畸变。当使用广角镜头时,透视畸变比较明显。比如我们拍一个大楼时,或者俯拍一个平面时,由于相机和目标并不能保证是平行关系,所以拍出来总感觉是倾斜的。在这个倾斜的图像上,原本平行的直线变得不是平行的了。这有时候也是我们希望纠正的。

3. 色差

由于透镜对不同波长的光的折射率不同,因此它们的焦距也不同,这将意味着不同颜色的光无法对焦到同一点上,这个现象就是色差。

比如同一张图像上,我们还可以观察到色差

我会介绍如何编程实现自动获取相机的参数,从而减轻色差,以及手动对色差进行优化的方法。

二. 传感器相关的处理

2.1 校正颜色

之前讲过,因为传感器对不同波长的光的响应不同,以及CFA的存在,使得我们得到的图像的颜色是需要校正白平衡的。

我们已经在第一部分文章中学习了基础的通过相机自带白平衡参数来校正白平衡的方法。但本质上,这是相机内部自身做了白平衡校正得到了参数,我们仅仅是应用而已。在实际的摄影图像优化过程中 ,很可能我们不信任相机自身的白平衡参数,而希望自己调整出一个更加准确的效果。我将介绍如何通过立方灰卡,就是刚才图中的这个小玩意儿来获取到场景的准确白平衡参数。重要的是,我们将编写代码来处理包含立方灰卡的图像。

我还会介绍另外一个很便携的色卡工具,它一样可以帮助我们获取到场景中准确的白平衡参数。我们将编写代码,来处理包含色卡的图像,进而准确的获取场景的白平衡参数。有了准确的白平衡参数,我们就可以得到更加准确的颜色。

2.2 调整曝光

准确的曝光也很重要。我们已经知道,传感器有一个重要组件是势阱。当势阱饱和(过曝)或者光线过暗(噪声淹没了信号)时,传感器对入射光线的响应将不再是线性的。我们已经在第一部分学习了如何通过RAW图像的元数据获取到黑电平和饱和值,从而处理过暗和过曝。但有时候,我们还需要进行更加精细的处理,比如处理每一种颜色通道的过暗和过曝现象,也可能因为摄影质感的需要,对图像整体的曝光做某种调整,这也是我之后会介绍的内容,我们会学习如何用Python来绘制直方图和计算出图像的统计信息,并且从这些信息中观察、分析出合理的曝光区间。

三. 主观影调的调整

3.1 饱和度优化

饱和度是指色彩的鲜艳程度,也叫做色彩的纯度。我们将学习如何调整色相中灰色成分所占的比例,从而调整饱和度。比如下面就是两张不同饱和度的图像,带给我们的感觉是完全不同的。饱和度的调整是一种主观的调整,与前面讲的由于镜头和传感器的原因导致的客观的问题不一样。这个过程中,和一般的摄影优化书籍和教程不同的是,我也会教大家如何编程获取到图像的统计信息,并学习更多关于颜色的知识,然后通过这些信息和知识来进行饱和度的调整。尽量在这种偏主观的图像优化过程中插入科学、客观的成分。

3.2 反差调整

当我们提到反差调整时,我们是指调整画面的层次。层次简单的图像,其反差会很高,而层次丰富的图像,反差会较低。为了调整反差,我们一方面需要准确的确定曝光参数,还需要根据情况适当的调整对比度、高光、阴影,甚至对通过锐化、去噪等操作对图像做一定程度的清晰度调整。

有的系统自带工具,可以很方便的对这些图像属性进行调整,比如我的Macbook Pro上的Mac OS操作系统就可以这样

但我会教你如何编程来实现这些调整,最重要的是我们的调整会基于解析出的RAW图像进行,这一部分我们会进一步深化对图像的统计信息和直方图的认识,还会加强对图像画质的理解。虽然这些调整可能是偏主观的,但最终调整的效果的好坏背后却一定隐藏着某种客观的规律。

四. 高级效果

有了前面的介绍,我们就可以进一步对图像做一些高级效果的优化调整了。比如说提升画面的纹理细节和清晰度、去雾来增加画面通透性、对画面加入颗粒感从而获取电影胶片感、甚至为画面加入晕影从而突出主体等等。我们到时候再仔细讲解这些如何实现,最好是通过编程来实现~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 计算摄影学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一. 镜头相关的处理
    • 1. 镜头畸变
      • 2. 透视畸变
        • 3. 色差
        • 二. 传感器相关的处理
          • 2.1 校正颜色
            • 2.2 调整曝光
            • 三. 主观影调的调整
              • 3.1 饱和度优化
                • 3.2 反差调整
                • 四. 高级效果
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档