灰度世界白平衡算法
一、灰度世界法概述1.gray_world灰度世界法是白平衡中基础的算法2.白平衡的目的是消除光源色温的影响使得白色物体在图像中呈现白色3.灰度世界法的假设条件就是这张图像的色彩要足够丰富R,G,B三通道的平均值接近相等。也就是假设图像平均是灰色的R_meanG_meanB_mean;4.灰度世界法不要求图像存在白色像素而是要求全图R/G/B三通道均值相等,图像整体平均反射率为灰色的二、灰度世界法是如何对图像进行白平衡校正1.读取被校正图像2.对图像进行去噪--》下采样---》排除过曝/欠曝像素----》排除高饱和/低饱和区域3.计算R,G,B通道的均值4.计算目标灰度值5.计算各个通道增益6.输出图像注意如何让计算的各个通道增益值比较合理是非常重要的一件事情。mean_R, mean_G, mean_B R.mean(), G.mean(), B.mean()mean_gray (mean_R mean_G mean_B) / 3.0gain_R mean_gray / (mean_R eps)gain_G mean_gray / (mean_G eps)gain_B mean_gray / (mean_B eps)三、灰度世界法的缺陷1.单色场景容易失效蓝天、草地2、大色块、饱和度低、过曝欠曝容易失效3、混合光源下容易失效4、夜景容易失效四、改进灰度世界法1.将RGB域通过颜色空间转到YUV域或者Lab域进行处理2.结合鲁棒性统计比如中位数或者截尾均值以及区域选择排除高亮或者暗部或者低饱和度3.可以结合白点检测4.动态阈值5.理想情况的白平衡应该是在RAW来进行增益的计算五、白平衡增益校正参数计算方法1.平均法\bar gray (\bar R\bar G\bar B)/3使亮度保持平均。2.绿色法\bar gray \bar G使绿色通道不变因为人眼对绿色敏感且绿色通常包含最多亮度信息。3.亮度法\bar gray 0.299\bar R0.587\bar G0.114\bar B但校正后三通道均值等于该亮度可能不直观。4.最大法\bar gray max(\bar R,\bar G,\bar B)避免增益1不如果目标最大增益都≤1不会溢出但整体变暗。六、灰度世界法的总结1.不需要检测白点2.对色彩丰富包含大量中性色的场景效果比较好3.假设条件优点苛刻需要色彩丰富并且包含大量中性色彩的场景或者色彩平均灰度接近灰色4.混合光源下效果会比较差5.大面积高饱和色块会导致校正出问题适用场景1.适用室内彩色场景2.消费类相机快速白平衡3.作为比较粗糙的图像白平衡校正不适用场景1.大面积蓝天、草地、雪地2.单色或低色彩丰富度场景3.夜景、混合光源4.对颜色准确性要求极高的场景七、灰度世界法的本质1.假设的是场景的平均反射率接近灰色ˉ​2.一切画面的平均反射率接近灰色的场景是适合适用灰度世界法的3.灰度世界法不是要求画面色彩丰富而是色彩丰富的画面更加接近场景的平均放射率接近灰色这个条件4.画面颜色丰富也就是说没有某一种颜色长期作为绝对主导地位。八、灰度世界法的多融合策略算法1.核心思路是引入额外的信息或者约束来弥补灰度世界假设的不足2.将灰度世界法 白点检测结合3.将灰度世界法 完美反射法结合4.图像特征自适应选择和融合算法5.自适应控制流程首先判断图像是否有明显白色区域是否色彩足够丰富来判断是否采用灰度世界法是否合适如果灰度世界法不合适就转而采用基于白点检测的完美反射法6.算法会同时计算完美反射法得到的白点平均色度Cw_ave和灰度世界法得到的参考点平均色度Ch_ave并以两者之比作为调整因子K对两种算法的结果进行加权融合从而实现更平滑的过渡7.灰度世界法和色温估计法融合算法灰度世界法完美反射色温估计融合算法灰度世界法完美反射色温估计色温曲线法融合算法《一种CMOS图像传感器信号处理自动白平衡算法》​九、灰度世界法注意事项1.灰度世界法必须在线性域进行处理可以在RAW域线性RGB空间域线性YUV域来处理不要在SRGB域或者Gamma之后处理。2.尽量不要使用全局均值鲁棒性太差全图均值容易被异常像素带偏所以要做些像素的过滤和排除比如过曝像素欠曝相机高饱和度像素插值伪影紫边污染等。如果镜头有暗角区域这个最好做阴影校正。3.均值统计鲁棒性灰度世界法默认用算术平均但均值对极端值非常敏感。大面积单色、高光、死黑都会严重拉偏均值。更鲁棒的选择中位数截尾均值去掉最高/最低若干百分比再平均低饱和像素均值M 估计等鲁棒统计4.时域稳定性

相关新闻

Vibe Coding 项目上线后越用越慢?手把手教你排查修复全流程

Vibe Coding 项目上线后越用越慢?手把手教你排查修复全流程

最近很多用 Vibe Coding 做出来的项目,上线初期跑起来飞快,但随着用户和数据量增长,速度越来越慢,甚至出现页面超时无响应的情况。这篇文章就结合实战经验,给你一套完整的排查和修复方案,帮你解决项目 “越…

2026/10/4 20:03:55 阅读更多 →
《AI 时代 FPGA 的全栈开发实战・从入门到精通》筑基篇|第 5 课时

《AI 时代 FPGA 的全栈开发实战・从入门到精通》筑基篇|第 5 课时

第 5 课时正文|Vivado开发环境搭建 课时导读 欢迎来到筑基篇的动手环节了。前 4 课时我们完成了认知升级(第 1 课)、数字电路补课(第 2 课)、AI 工具全景扫描(第 3 课)、Prompt 工程方法论(第 4 课)。从本课时开始,一切开始落到手上:把 Vivado、Gowin、trea等工具…

2026/10/4 20:03:55 阅读更多 →
Cursor插件加载失败真相:web boot阶段深度解析

Cursor插件加载失败真相:web boot阶段深度解析

1. 项目概述:从“plugins”这个词开始,我们到底在谈什么?“plugins”不是某个具体软件的专属名词,而是一套通用的、被现代开发工具广泛采纳的扩展机制设计范式。它背后代表的是一种“能力解耦按需加载生态共建”的工程哲学。你看到…

2026/10/4 20:03:55 阅读更多 →

最新新闻

Python人脸表情识别全流程:数据准备、CNN训练到ONNX部署

Python人脸表情识别全流程:数据准备、CNN训练到ONNX部署

简介:这是一套基于Python实现的人脸表情识别项目资源,面向具备Python基础、希望深入计算机视觉与后端开发场景的开发者。项目围绕人脸68个关键点定位展开,涵盖眼睛、眉毛、鼻子、嘴唇等部位的特征提取,这些关键点的准确检测是表情…

2026/10/4 22:19:47 阅读更多 →
插件机制详解:从 failed to load plugins 报错到通用排查思路

插件机制详解:从 failed to load plugins 报错到通用排查思路

在搜索框里敲下“plugins”的人,多半不是想研究这个英文单词的拼写,而是正在某个软件里跟插件较劲:要么看到了failed to load plugins这种报错,要么在问“某个工具里的 plugins 是干什么的”,要么就是刚接触插件机制&a…

2026/10/4 22:18:47 阅读更多 →
人体姿势识别YOLOv8预训练模型:从环境搭建到关键点提取

人体姿势识别YOLOv8预训练模型:从环境搭建到关键点提取

简介:这是一份可直接运行的YOLOv8人体姿势识别预训练模型资源,面向Python开发者和计算机视觉初学者,解决从零搭建姿势识别环境门槛高的问题。包内含1个pt格式的yolov8s-pose模型文件、1个完整Python运行脚本及2张效果展示图片,压缩…

2026/10/4 22:18:47 阅读更多 →
STM32 C++实战:超声波测距+LCD+USB虚拟串口系统整合

STM32 C++实战:超声波测距+LCD+USB虚拟串口系统整合

哟哟哟,咱们还差活滴——看到这个标题别笑,这是我写完上一期之后最真实的内心活动。前面几期我们拿着 STM32 和 C 把点灯、按键扫描、串口回显这些基础模块都过了一遍,但心里一直不踏实:独立 demo 能跑,不等于能把它们…

2026/10/4 22:18:47 阅读更多 →
ins5699驱动源码集成实战:从设备树到sysfs的数据链路

ins5699驱动源码集成实战:从设备树到sysfs的数据链路

简介:面向嵌入式开发者的 INS5699 实时时钟芯片驱动源码与集成方法,适用于需要精确时间基准的产品项目,适合驱动工程师参考,可作为内核移植与调试的参考资料。压缩包内共包含两个文件,整体仅 45KB,其中一份…

2026/10/4 22:18:46 阅读更多 →
嵌入式C++实战:STM32从VSCode到CAN总线排坑全记录

嵌入式C++实战:STM32从VSCode到CAN总线排坑全记录

这个系列写到第六篇,我本来觉得离收工不远了。结果周末把功能清单摊开一看,哟哟哟,咱们还差活滴——这句带着点方言味的感叹,就是我当时的真实状态。差哪些活?VSCode里的C工程还只能编译不能顺畅调试;超声波…

2026/10/4 22:18:46 阅读更多 →

日新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 11:40:45 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 9:43:54 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 20:14:29 阅读更多 →