这篇文章是一次课程作业,发到网上以供参考,由于时间有点紧张导致有些部分不够详尽以及有些方法没有实现,之后如果有机会再进行补充。
作业要求
以下两题任选一道完成,自选合适的测试图象,提交代码、实验结果和作业报告。
- 编程实现一种色调转移或饱和度调整算法。
- 使用彩色图像处理技术实现一种照片编辑算法。例如:白平衡/HDR多图融合/彩色图像风格化,等等……
本次作业中我对基本的白平衡算法进行了调研并实现了其中的部分,原理和实现在之后详述。
白平衡原理
白平衡(White Balance),或者称之为色彩恒常性(Color Constancy),即在光照变化的情况下保持景物色彩一致的能力。人类大脑拥有有关色彩恒常性的相关机制,可以使同一个物体(通常认为自然界中物品大多数不会变色,改变的是光源)在不同的光源条件下都被大脑识别为近似的颜色。而相机实际上是利用内部复杂的图像处理管线(image processing pipeline),将进入传感器的光强(准确来说是辐照度irradiance)变换到像素值。而由于不同的光源条件,导致同一个物体反射的光线会有所差别,这也导致了最终相机会认为同一个物品在不同光线条件下为不同的颜色。为了解决这一问题,现代相引入了白平衡调整的功能。
在了解白平衡之前还需要讲解色温的概念,色温是假定某一黑体,能够吸收外来的所有电磁辐射,随着温度的上升黑体辐射出的电磁波与光线则称作黑体辐射。随着温度的升高,黑体的颜色会从暗红到亮红、再到金黄色最后到蓝色。这一变化也符合可见光频率的分布。在日常生活中最重要的光源就是太阳,太阳发出的光很接近黑体光谱,其表面温度约为5500K,而这个温度对应黑体发出的光基本就为白色。
参考链接:
色温、白平衡与色彩恒常性 知乎专栏
色彩恒常性:你看到什么颜色的裙子?

据此相机可以对当前记录的数据进行处理,通过预设的补偿,对颜色进行偏移。也即下图中White Balance步骤,此时相机会对RAW文件(往往是12bit、14bit或更高)进行颜色上的偏移,由于RAW文件记录的数据远大于最终RGB图像8bit的范围,所以这种调整往往是无损的(但若偏移过大仍会有可能产生损失)。

以具体的画面为例,下图中相机白平衡设置为4500K,即认为4500K的色温为白色,此时色温高于这个数值的光线会显现出蓝色(色温高),低于这个数值会显现出红橙色(色温低)。

如果将白平衡设置为6500K,会呈现如下画面。此时色温低于6500K的光线都会呈现低色温的暖色。

同理,将色温设置为2800K,会有如下画面,所有色温高于2800K的光线都会呈现高色温的冷色。

以上所有图片来自于视频截图,链接如下。
White Balance & Kelvin Color temp explained
白平衡算法
灰色世界算法
灰色世界基于这样一种假设:对于一幅有着大量色彩变化的图片,RGB三个分量的平均值趋于同一个灰度值 G r a y ‾ \overline{Gray} Gray。即灰度世界法假设自然界景物对于光线的反射的平均值在总体上近似为“灰色”。通过这一假设,可以对RGB三个通道均值进行计算,并尽可能消除环境光的影响。
我 采 取 的 方 法 是 计 算 三 通 道 的 均 值 作 为 灰 色 , G r a y ‾ = R ‾ + G ‾ + B ‾ 3 计 算 三 通 道 的 增 益 系 数 , k R = G r a y ‾ R ‾ , k G = G r a y ‾ G ‾ , k B = G r a y ‾ B ‾ 对 于 每 一 个 像 素 C , 调 整 R G B 分 量 C ( R ′ ) = C ( R ) ∗ k R , C ( G ′ ) = C ( G ) ∗ k G , C ( B ′ ) = C ( B ) ∗ k B 我采取的方法是\\ 计算三通道的均值作为灰色,\overline{Gray}=\frac{\overline R+\overline G + \overline B}{3}\\ 计算三通道的增益系数,k_R = \frac{\overline{Gray}}{\overline R},k_G = \frac{\overline{Gray}}{\overline G},k_B = \frac{\overline{Gray}}{\overline B}\\ 对于每一个像素C,调整R G B分量\\C(R')=C(R)*k_R,C(G') = C(G)*k_G,C(B') = C(B)*k_B 我采取的方法是计算三通道的均值作为灰色,Gray=3R+G+B

1950

被折叠的 条评论
为什么被折叠?



