使用三种不同的照明算法估计场景的照明和执行白平衡

简介: 使用三种不同的照明算法估计场景的照明和执行白平衡。眼睛非常善于判断不同照明条件下的白色。然而,数码相机如果不进行某种调整,就可以很容易地捕捉到具有强烈色偏的不真实图像。自动白平衡(AWB)算法试图以最少的用户输入来校正环境光,以便生成的图像看起来像我们眼睛看到的。

一、前言
此示例演示如何使用三种不同的照明算法估计场景的照明和执行白平衡。
眼睛非常善于判断不同照明条件下的白色。然而,数码相机如果不进行某种调整,就可以很容易地捕捉到具有强烈色偏的不真实图像。自动白平衡(AWB)算法试图以最少的用户输入来校正环境光,以便生成的图像看起来像我们眼睛看到的。
自动白平衡分两步完成:有几种不同的算法来估计场景光源。
每种算法的性能取决于场景、照明和成像条件。本示例通过将一个特定图像的三种算法与使用 控制图计算的地面真实场景光源进行比较来判断这些算法的质量。
二、读取和预处理原始相机数据
AWB算法通常在经过最少量的预处理后,在图像被压缩并保存到存储卡之前应用于原始图像数据。
将 16 位原始映像读入工作区。是一个图像文件,其中包含校正黑电平并将强度缩放到每像素 16 位后的原始传感器数据。此图像没有相机完成的白平衡以及其他预处理操作,例如去马赛克、去噪、色差补偿、色调调整和伽马校正。
2.1 插值以恢复丢失的颜色信息
数码相机使用叠加在成像传感器上的滤色阵列来模拟色觉,因此每个像素对红色、绿色或蓝色都很敏感。
2.2 用于检测和显示的伽马校正图像
图像包含线性 RGB 值。线性 RGB 值适用于估计场景光源和校正图像的色彩平衡。但是,如果您尝试显示线性RGB图像,由于显示设备的非线性特性,它将显得非常暗淡。显示伽马校正前后的去马赛克图像。
1.png

三、使用颜色检查器图表测量真实光源
使用场景中包含的颜色检查器控制图计算实际值光源。该图表由 24 个具有已知光谱反射率的中性和色块组成。

使用颜色检查器函数检测伽玛校正图像中的图表。线性 RGB 图像太暗,无法自动检测图表。确认正确检测到图表。
2.png

获取图表四个角的注册点的坐标。从线性 RGB 数据创建新对象。使用注册点的坐标指定图表的位置。测量线性 RGB 数据的地面真实光源。

四、创建颜色检查器图表的蒙版
测试 AWB 算法时,请通过屏蔽图表来防止算法不公平地利用图表。使用绘制多边形函数在图表上创建多边形 ROI。将多边形的顶点指定为注册点。
3.png

将多边形 ROI 转换为二进制掩码。反转蒙版。图表中的像素将从蒙版中排除,场景其余部分的像素包含在蒙版中。要确认蒙版的准确性,请在图像上显示蒙版。蒙版中包含的像素具有蓝色色调。
4.png

五、角度误差
您可以将光源视为 3-D RGB 色彩空间中的矢量。估计光源的大小与其方向无关紧要,因为光源的方向是用于白平衡图像的方向。
要评估估计光源的质量,请计算估计光源与实际值之间的角度误差。角度误差是由两个向量形成的角度(以度为单位)。角度误差越小,估计越好。
为了更好地理解角度误差的概念,请考虑以下任意光源的可视化和使用 ColorChecker 控制图测量的地面实况。帮助程序函数在 3-D RGB 颜色空间中绘制光源的单位矢量,并在示例末尾定义。
5.png

六、白色斑块视网膜
用于光源估计的白色斑块 Retinex 算法假定场景包含明亮的消色差斑块。此色块反射每个色带可能的最大光线,即场景光源的颜色。使用“亮白”函数通过白斑 Retinex 算法估计照明。
6.1 包括所有场景像素
使用场景中的所有像素估计光源。使用名称-值对参数从场景中排除颜色检查器图表。

计算使用白色斑块 Retinex 估计的光源的角度误差。使用色度调整功能对图像进行白平衡。指定估计光源,并指示颜色值位于线性 RGB 颜色空间中。
显示伽玛校正的白平衡图像。
6.png

6.2 排除最亮像素
当像素曝光过度时,白色斑块 Retinex 算法表现不佳。若要提高算法的性能,请排除最亮像素的前 1%。计算估计光源的角度误差。误差小于使用所有像素估计光源时。使用估计光源在线性 RGB 色彩空间中对图像进行白平衡。使用新光源显示伽玛校正的白平衡图像。
7.png

七、灰色世界
用于光源估计的灰色世界算法假定世界的平均颜色为灰色或消色差。因此,它将场景光源计算为图像中的平均RGB值。使用照明灰度函数通过灰色世界算法估计照明。

7.1 包括所有场景像素
首先,使用图像的所有像素(不包括与颜色检查器控制图对应的像素)估计场景光源。该函数提供了一个参数,用于指定要排除的底部和顶部值(按亮度排序)的百分位数。在这里,将百分位数指定为 0。

计算估计光源与地面实况光源之间的角度误差。使用估计光源在线性 RGB 色彩空间中对图像进行白平衡。显示伽玛校正的白平衡图像。
8.png

7.3 排除最亮和最暗的像素
当像素曝光不足或曝光过度时,灰色世界算法表现不佳。若要提高算法的性能,请排除最暗和最亮像素的前 1%。计算估计光源的角度误差。误差小于使用所有像素估计光源时。使用估计光源在线性 RGB 色彩空间中对图像进行白平衡。使用新光源显示伽玛校正的白平衡图像。
9.png

八、程氏主成分分析(PCA)方法
Cheng的光源估计方法从空间域方法中汲取灵感,该方法假设图像的梯度是消色差的。他们表明,可以通过打乱图像块人为地引入强渐变来改善灰边,并得出结论,最强的渐变遵循光源的方向。他们的方法包括根据像素沿平均图像颜色方向的投影规范对像素进行排序,并保留底部和顶部百分位数。这两组对应于图像中的强渐变。最后,他们对保留的像素执行主成分分析(PCA),并将第一个分量作为估计光源返回。

8.1 包括默认的底部和顶部 3.5% 的像素
首先,使用 Cheng PCA 方法的默认百分比值估计光源,不包括与颜色检查器控制图对应的光源。计算估计光源与地面实况光源之间的角度误差。使用估计光源在线性 RGB 色彩空间中对图像进行白平衡。显示伽玛校正的白平衡图像。

10.png

8.2 包括底部和顶部 5% 的像素
现在,使用沿平均颜色方向的底部和顶部 5% 像素估计场景光源。函数的第二个参数指定要排除的底部和顶部值(按亮度排序)的百分位数.

计算估计光源与地面实况光源之间的角度误差。该误差小于使用默认百分比估算光源时。使用估计光源在线性 RGB 色彩空间中对图像进行白平衡。显示伽玛校正的白平衡图像。
11.png

九、查找最佳参数
要找到用于每种算法的最佳参数,您可以扫描一个范围并计算每种算法的角度误差。三种算法的参数具有不同的含义,但这些参数的相似范围使得以编程方式搜索每种算法的最佳参数变得容易。

使用热图功能显示角度误差的热图。深蓝色表示角度误差低,而黄色表示角度误差高。最优参数的角度误差最小。
12.png

找到每种算法的最佳参数。显示 RGB 色彩空间中每个最佳光源的角度误差。
13.png

使用最佳光源计算每种算法的最佳白平衡图像。在蒙太奇中为每个算法显示最佳白平衡图像。
14.png

目录
相关文章
|
2月前
|
数据采集 算法 双11
高并发的场景下,不能不说的限流算法
高并发的场景下,不能不说的限流算法
53 1
|
2月前
|
机器学习/深度学习 算法
m基于深度学习的64QAM调制解调系统频偏估计和补偿算法matlab仿真
### 算法仿真结果 展示5张图像,描绘了基于深度学习的频偏估计和补偿在MATLAB 2022a中的仿真效果。 ### 理论概要 - 深度学习算法用于建立信号与频偏的非线性映射,无需导频,节省资源。 - 网络模型(如CNN或RNN)处理IQ数据,提取特征,简化估计补偿过程,降低复杂度。 - 64QAM系统中,通过神经网络实现精确频偏感知,增强通信性能。 ### MATLAB核心程序 - 代码生成64QAM信号,模拟不同SNR和频偏条件,使用深度学习进行相位估计和补偿。 - 仿真比较了有无补偿的误码率,显示补偿能显著改善通信质量。 ```
62 1
|
2月前
|
算法 数据挖掘 数据处理
【MATLAB】抗差估计算法
【MATLAB】抗差估计算法
35 0
|
2月前
|
算法 数据挖掘 定位技术
【MATLAB】赫尔默特方差分量估计算法
【MATLAB】赫尔默特方差分量估计算法
51 0
|
2月前
|
机器学习/深度学习 监控 算法
yolov8+多算法多目标追踪+实例分割+目标检测+姿态估计(代码+教程)
yolov8+多算法多目标追踪+实例分割+目标检测+姿态估计(代码+教程)
270 1
|
2月前
|
机器学习/深度学习 算法 Windows
m基于深度学习的OFDM通信系统频偏估计算法matlab仿真
m基于深度学习的OFDM通信系统频偏估计算法matlab仿真
63 1
|
15天前
|
算法 安全 数据库
基于结点电压法的配电网状态估计算法matlab仿真
**摘要** 该程序实现了基于结点电压法的配电网状态估计算法,旨在提升数据的准确性和可靠性。在MATLAB2022a中运行,显示了状态估计过程中的电压和相位估计值,以及误差随迭代变化的图表。算法通过迭代计算雅可比矩阵,结合基尔霍夫定律解决线性方程组,估算网络节点电压。状态估计过程中应用了高斯-牛顿或莱文贝格-马夸尔特法,处理量测数据并考虑约束条件,以提高估计精度。程序结果以图形形式展示电压幅值和角度估计的比较,以及估计误差的演变,体现了算法在处理配电网状态估计问题的有效性。
|
19天前
|
机器学习/深度学习 自然语言处理 算法
m基于深度学习的OFDM+QPSK链路信道估计和均衡算法误码率matlab仿真,对比LS,MMSE及LMMSE传统算法
**摘要:** 升级版MATLAB仿真对比了深度学习与LS、MMSE、LMMSE的OFDM信道估计算法,新增自动样本生成、复杂度分析及抗频偏性能评估。深度学习在无线通信中,尤其在OFDM的信道估计问题上展现潜力,解决了传统方法的局限。程序涉及信道估计器设计,深度学习模型通过学习导频信息估计信道响应,适应频域变化。核心代码展示了信号处理流程,包括编码、调制、信道模拟、降噪、信道估计和解调。
44 8
|
29天前
|
算法 前端开发 Linux
【常用技巧】C++ STL容器操作:6种常用场景算法
STL在Linux C++中使用的非常普遍,掌握并合适的使用各种容器至关重要!
42 10
|
16天前
|
算法
m基于GA遗传优化的高斯白噪声信道SNR估计算法matlab仿真
**MATLAB2022a模拟展示了遗传算法在AWGN信道中估计SNR的效能。该算法利用生物进化原理全局寻优,解决通信系统中复杂环境下的SNR估计问题。核心代码执行多代选择、重组和突变操作,逐步优化SNR估计。结果以图形形式对比了真实SNR与估计值,并显示了均方根误差(RMSE),体现了算法的准确性。**
18 0