白平衡相关内容,算法

简介: 色温: 讨论白平衡,就要从色温谈起,色温顾名思义就是色彩的温度,它指的是绝对黑体从绝对零度开始持续加热所呈现出来的颜色。温度升高,颜色开始从红、橙、黄、绿、蓝、靛、紫,逐渐变化。这些颜色的差异来自于不同波长光线的比例不同,色温越低,波长较长的光线比例大,红色成分就多。色温越高,波长较短的光线比例大,蓝色的成分就多。

色温:


       讨论白平衡,就要从色温谈起,色温顾名思义就是色彩的温度,它指的是绝对黑体从绝对零度开始持续加热所呈现出来的颜色。温度升高,颜色开始从红、橙、黄、绿、蓝、靛、紫,逐渐变化。这些颜色的差异来自于不同波长光线的比例不同,色温越低,波长较长的光线比例大,红色成分就多。色温越高,波长较短的光线比例大,蓝色的成分就多。


       白平衡的目的就是让物体从在不同光源下所呈现出来的颜色,恢复到物体的固有色,以达到减少色偏或者无色偏的效果 若图像中绿色较强,蓝色和红色较弱,则用了灰度世界算法后,绿色会适当减弱,蓝色和红色会适当加强,这样就使原本偏色严重的情况得到了缓解。


       该算法的优点是简单快捷,能应用于一般场景的处理,但是当图片颜色比较单一或者单一色块的面积较大时,灰度世界法不成立,处理结果会出现偏差。


        基于灰度世界假设为前提 (在一副色彩多样的图像中,最终所有颜色的平均统计值应该是一致的,也就是灰色的。)认为对于一副有大量色彩的场景,R,G,B分量的平均值趋于同一个灰度。算法大致可分为三步:


1.计算三个通道的平均灰度

2.计算三个通道的增益系数

3.原始值乘上增益系数

%%白平衡与色温紧密相关,不同色温光源下图像会呈现不同程度的偏色
%%由于人眼独特的适应性,在不同光照条件下观看物体时不会出现偏色,而就没这么先进了
%%蓝色光色温高,红色光色温低
clc;
clear all;
close all;
tic;
imgSrc = imread('E:\picture\03-work\02-imgProc\00-ISP\wb_sardmen-incorrect.jpg');
imgDst = imgSrc;
%%第一步,计算三个通道的平均灰度
imgR = imgSrc(:,:,1);
imgG = imgSrc(:,:,2);
imgB = imgSrc(:,:,3);
RAve = mean2(imgR);
GAve = mean2(imgG);
BAve = mean2(imgB);
aveGray = (RAve + GAve + BAve) / 3;
%%第二步,计算三个通道的增益系数
RCoef = aveGray / RAve;
GCoef = aveGray / GAve;
BCoef = aveGray / BAve;
%%第三步,使用增益系数来调整原始图像
RCorrection = RCoef * imgR;
GCorrection = GCoef * imgG;
BCorrection = BCoef * imgB;
imgDst(:,:,1) = RCorrection;
imgDst(:,:,2) = GCorrection;
imgDst(:,:,3) = BCorrection;
figure,subplot(1,2,1),imshow(imgSrc),title('original image');
subplot(1,2,2),imshow(imgDst),title('white balanced image');
toc;


   

       全反射理论:一幅图像中亮度最大的点就是白点, 即假设在 YCbCr 空间中Y值最大的点为白色, 以此来校正整幅图像。特点是只考虑色彩最亮的那部分, 跟上面的灰度世界理论正好相反, 在处理色彩偏单调的图像时效果好些, 但面对颜色丰富的图片时, 因为最亮的点不一定是白色的, 可能会出现偏色的情况


       完美反射算法基本原理:假设图像中最亮的点就是白点,并以此白点为参考对图像进行自动白平衡,最亮点定义为R+G+B的最大值。


       算法步骤:计算每个像素点的R+G+B之和并保存;按照值的大小计算出其前10%或其他比例的白色参考点阈值T;遍历图像计算其中R+G+B值大于T的所有点的R、G、B分量的累积和的平均值;将每个像素量化到[0,255]。


       完美反射算法优点是比灰度世界算法稍好,但是依赖比例值的选取,并且对亮度最亮区域不是白色的图像效果不佳。


             

%% 完美反射法
clear all
close all
clc
% 输入图像(存在颜色偏差的原始图像)
I=im2double(imread('Test.jpg'));
% 分离各个通道
R=I(:,:,1);     G=I(:,:,2);    B=I(:,:,3);
% 计算每个RGB灰度值之和
sumRGB=R+G+B;
% 将RGB值的大小进行排序
sumsort=sort(sumRGB(:)');
count=round(size(sumsort,2)*0.9);
T=sumsort(count);
index=sumRGB>T;
KR=max(R(:))/mean(R(index));
KG=max(G(:))/mean(G(index));
KB=max(B(:))/mean(B(index));
R1=R*KR;G1=G*KG;B1=B*KB;
out=cat(3,R1,G1,B1);
figure;imshow([I out]);


相关文章
|
算法 C++
OpenCV-白平衡(完美反射算法)
OpenCV-白平衡(完美反射算法)
487 0
|
算法 C++
OpenCV-白平衡(灰度世界算法)
OpenCV-白平衡(灰度世界算法)
435 0
|
算法 计算机视觉
OpenCV3 自动白平衡:灰度世界和完美反射算法
最近加入了一个无人机团队,任务是参加第六届国际无人机飞行器创新大奖赛(UAVGP)。由于需要跑视觉算法,团队买了块英伟达的TX2(壕...)。我做的方案是用色域分割,但是室外环境变化可能会比较大(冷暖,亮暗),所以需要用到白平衡算法让图片直方图保持正常。
4889 0
|
1天前
|
传感器 算法
基于GA遗传算法的多机无源定位系统GDOP优化matlab仿真
本项目基于遗传算法(GA)优化多机无源定位系统的GDOP,使用MATLAB2022A进行仿真。通过遗传算法的选择、交叉和变异操作,迭代优化传感器配置,最小化GDOP值,提高定位精度。仿真输出包括GDOP优化结果、遗传算法收敛曲线及三维空间坐标点分布图。核心程序实现了染色体编码、适应度评估、遗传操作等关键步骤,最终展示优化后的传感器布局及其性能。
|
2天前
|
机器学习/深度学习 算法 安全
基于深度学习的路面裂缝检测算法matlab仿真
本项目基于YOLOv2算法实现高效的路面裂缝检测,使用Matlab 2022a开发。完整程序运行效果无水印,核心代码配有详细中文注释及操作视频。通过深度学习技术,将目标检测转化为回归问题,直接预测裂缝位置和类别,大幅提升检测效率与准确性。适用于实时检测任务,确保道路安全维护。 简介涵盖了算法理论、数据集准备、网络训练及检测过程,采用Darknet-19卷积神经网络结构,结合随机梯度下降算法进行训练。
|
3天前
|
算法 数据可视化 数据安全/隐私保护
一级倒立摆平衡控制系统MATLAB仿真,可显示倒立摆平衡动画,对比极点配置,线性二次型,PID,PI及PD五种算法
本课题基于MATLAB对一级倒立摆控制系统进行升级仿真,增加了PI、PD控制器,并对比了极点配置、线性二次型、PID、PI及PD五种算法的控制效果。通过GUI界面显示倒立摆动画和控制输出曲线,展示了不同控制器在偏转角和小车位移变化上的性能差异。理论部分介绍了倒立摆系统的力学模型,包括小车和杆的动力学方程。核心程序实现了不同控制算法的选择与仿真结果的可视化。
31 15
|
3天前
|
算法
基于SOA海鸥优化算法的三维曲面最高点搜索matlab仿真
本程序基于海鸥优化算法(SOA)进行三维曲面最高点搜索的MATLAB仿真,输出收敛曲线和搜索结果。使用MATLAB2022A版本运行,核心代码实现种群初始化、适应度计算、交叉变异等操作。SOA模拟海鸥觅食行为,通过搜索飞行、跟随飞行和掠食飞行三种策略高效探索解空间,找到全局最优解。
|
4天前
|
算法 数据安全/隐私保护 计算机视觉
基于FPGA的图像双线性插值算法verilog实现,包括tb测试文件和MATLAB辅助验证
本项目展示了256×256图像通过双线性插值放大至512×512的效果,无水印展示。使用Matlab 2022a和Vivado 2019.2开发,提供完整代码及详细中文注释、操作视频。核心程序实现图像缩放,并在Matlab中验证效果。双线性插值算法通过FPGA高效实现图像缩放,确保质量。
|
5天前
|
机器学习/深度学习 数据采集 算法
基于GWO灰狼优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目基于MATLAB2022a,展示了时间序列预测算法的运行效果(无水印)。核心程序包含详细中文注释和操作视频。算法采用CNN-GRU-SAM网络,结合灰狼优化(GWO),通过卷积层提取局部特征、GRU处理长期依赖、自注意力机制捕捉全局特征,最终实现复杂非线性时间序列的高效预测。
|
5天前
|
传感器 算法 物联网
基于粒子群算法的网络最优节点部署优化matlab仿真
本项目基于粒子群优化(PSO)算法,实现WSN网络节点的最优部署,以最大化节点覆盖范围。使用MATLAB2022A进行开发与测试,展示了优化后的节点分布及其覆盖范围。核心代码通过定义目标函数和约束条件,利用PSO算法迭代搜索最佳节点位置,并绘制优化结果图。PSO算法灵感源于鸟群觅食行为,适用于连续和离散空间的优化问题,在通信网络、物联网等领域有广泛应用。该算法通过模拟粒子群体智慧,高效逼近最优解,提升网络性能。

热门文章

最新文章