AWB学习记录

news2025/1/4 16:34:38

主要参考食鱼者博客:https://blog.csdn.net/wtzhu_13/article/details/119301096,以及相关的论文,感谢食鱼者老师整理分享。

灰度世界和完全反射

灰度世界法和完全反射法分别是基于(Rmean, Gmean, Bmean)和(Rmax, Gmax, Bmax)来进行白平衡校正。具体校正公式也比较灵活,增益可以是Gmean/Rmean或者max(Rmax, Gmax, Bmax)/Rmax,应该没有很确切的方法定义,而只是两种校正思路。

QCGP

QCGP认为上述两种思路各有适用场景,所以希望融合。融合的方式是“二次正交”。

以往的校正都是线性增益,可以表示为R'=R_{gain}*R。我们现在想融合两种方法,最先想到的会是将灰度世界所得增益和完全反射所得增益求平均,作为融合的增益。但是这种方式事实上是丢失信息的,因为只考虑二者的平均,没考虑差异。于是不能用这种线性加权的方式。

QCGP中引入两个参数的方式是二次正交。定义全新校正公式为R'=uR^2+vR,且给这个融合的校正公式输入R_{mean},则输出应该为R'_{mean}=\frac{r_{mean}+g_{mean}+b_{mean}}{3}。而输入R_{max}也同理得到R'_{max}=\frac{r_{max}+g_{max}+b_{max}}{3}。如此可以列出如下二元二次方程组,解得u和v两个参数。

\left\{\begin{matrix}R_{mean}'=uR_{mean}^2+vR_{mean} \\R_{max}'=uR_{max}^2+vR_{max}\end{matrix}\right.

模糊逻辑算法

不仅算法名字比较模糊,原论文A Method Of Automatic White Balance Using Fuzzy Logic和食鱼者老师讲的也都很模糊。我仅总结思路和考虑的方面。

总的来说,需要在Cr-Cb空间中找一个点来评价当前图像,所谓的白平衡即Cr=Cb=0,我们的任务是通过调整增益来使得调整后的图像评价为Cr=Cb=0。

评价的方式原文给了很详细的说明,逻辑如下:

  1. 分为8块,每块求各像素点的Cr-Cb值加权平均(对应到Cr-Cb空间中的一个点)
  2. 将8块的值加权求和,得到的即为整张图像的平均值。
  3. 第2步所提到的权值考虑的方面有:1)本块Cr值与周围块的Cr值偏差小,则本块的权重小。因为同属于一个大物体,所以此做法可以避免过度补偿。2)暗部和亮部的权重小。这样可以防止饱和测量值和低亮度下的噪声影响白平衡校正。3)每个块内部算平均Cr-Cb的时候,暗色的权重比亮色的小。

不过原文中并未给出校正的具体形式(是Cr'=K*Cr吗?),也未说明如何调整增益(K增大还是减小?),我暂时也不加探究,只知道其是一种迭代算法,每次调整后计算评价指标,评价指标符合条件时退出。

基于白点的方法

使用YUV空间做白点检测,将白点矫正为r=g=b

基于色温的方法

食鱼者老师又没给我讲懂,感觉他的讲解没点透本质。以下内容是我根据论文自己重新总结的。

Digital camera auto white balance based on color temperature estimation clustering

估计小块的色温

论文认为一个色温T可以对应一种H=\frac{B}{R}的比例,记为H(T)。函数H(T)是根据不同色温下拍摄灰卡测定的,它是一个单调的曲线,所以对于给定的RGB值,其色温就等于T=H^{-1}(\frac{B}{R})

论文中提到一大堆公式,其本质就是H(T)的一种解析式。

估计图像的色温

如以上所示,得到若干小块色温。给常用灯光的色温列个表,用小块色温给列表中的色温投票,得票高者为最终估计的图像色温。

根据色温作白平衡校正

论文没提,所以即使把色温利用独立传感器准确测得,我也不知道怎么用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1604907.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nmap的下载与安装

目录 什么是nmap Nmap的下载 Nmap的安装 Nmap使用命令行打开 什么是nmap Nmap被誉为"扫描器之王",Nmap是一个开源工具,提供跨平台(Windows、linux、mac os) Nmap的下载 第一步:访问nmap的官网 第二步…

「小程序教程」如何将微信小程序转成短链/二维码?

本文介绍的方法,可能是全网最简单最快捷的方法了,无需输入复杂的appid/路径/秘钥。 小程序转成短链或者二维码的好处 场景一、产品线下活动海报推广,放一个小程序的二维码,用户扫码访问后,短链平台可以实时查看访问数…

从零构建生产级 AI 应用 ChatWithPDF

前言 目前 AIGC 的浪潮很火,不管你是什么方向的程序员,都可以通过大模型去构建自己的 App,但是搜索资料学习的时候发现: 目前构建 AI 应用的中文资源比较少,大多数都是英文的。教程大多是 demo 级别,没有…

冯喜运:4.18黄金原油晚间行情走势预测及操作策略

【 黄金消息面分析】:周四(4月18日)亚市盘尾,黄金价格宽幅震荡,目前交投于2378.60美元/盎司。金价周三回落0.9%,收报2361.14美元/盎司,美国降息希望减弱造成的压力盖过了中东地缘政治动荡引发的避险需求带来的提振。随…

精确号码比例放通算法的设计与实现

精确号码比例放通算法的设计与实现 引言背景问题定义算法设计1. 数据结构2. 算法流程3. 伪代码4. C语言实现 结论参考文献 引言 随着通信技术的飞速发展,呼叫中心和电信运营商面临着日益增长的呼叫管理需求。在某些情况下,为了确保服务质量或者遵守特定…

社区论坛小圈子小程序源码系统:自定义小程序管理社区圈子软件圈子系统系统开发-做社区圈子丨圈子论坛社区交友系统开源版小程序源码丨

简述 移动互联网的快速发展,微信小程序作为一种新型的应用形态,已经深入到人们的生活中。特别是对于社区论坛类应用,小程序版本可以更好地满足用户快速、便捷获取信息的需求。下面给大家分享一款社区论坛小圈子小程序源码系统。 在这个信息…

C++ | Leetcode C++题解之第30题串联所有单词的子串

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<int> findSubstring(string &s, vector<string> &words) {vector<int> res;int m words.size(), n words[0].size(), ls s.size();for (int i 0; i < n && i m …

【创建型模式】原型模式

一、原型模式概述 原型&#xff08;Prototype&#xff09;模式的定义&#xff1a;用一个已经创建的实例作为原型&#xff0c;通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里&#xff0c;原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效&#xf…

flask 应用程序

flask 程序示例 创建 hello.py 文件&#xff1a; # 导入 Flask 模块。Flask 类的一个对象是 wsgi 应用程序。 from flask import Flask# 创建app对象, Flask构造函数将当前模块的名称(__name__)作为参数。 app Flask(__name__)# route() 函数是一个装饰器&#xff0c;它告诉应…

使用Docker部署Node.js

第一步&#xff1a;在Node.js项目的根目录中新建Dockerfile文件 # 使用官方 Node.js 镜像作为基础镜像 FROM node:latest# 设置工作目录 WORKDIR /usr/src/app# 将项目文件复制到容器中 COPY . .# 将npm源设置为淘宝镜像 RUN npm config set registry https://registry.npmmir…

LeetCode-热题100:101. 对称二叉树

题目描述 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a; root [1,2,2,3,4,4,3] 输出&#xff1a; true 示例 2&#xff1a; 输入&#xff1a; root [1,2,2,null,3,null,3] 输出&#xff1a; false 提示&#xff1a;…

【UE 材质】表面湿润效果

效果 步骤 1. 创建一个材质函数&#xff0c;这里命名为“MF_Weather_Wetness”&#xff0c;打开材质函数添加如下节点 其中输入的默认值分别为&#xff1a; 其中&#xff0c;“Desaturation”节点用于控制饱和度&#xff0c;我们通过给“Fraction”引脚输入一个负值来增加饱和…

个人可以做视频号小店吗?当然可以,但我建议这么做

大家好&#xff0c;我是电商笨笨熊 视频号小店在推出之后就吸引了不少的玩家&#xff0c; 这其中有很多之前做过电商的老玩家&#xff0c;甚至是团队&#xff0c;也有很多是一个人&#xff0c;刚开始做电商的新手小白。 对于电商老玩家来说&#xff0c;做过的可能会更容易上…

正交实验设计及数据处理

文章目录 一、正交实验基础知识介绍1.1 认识正交表1.2 正交表的特点1.3 正交表的分类 二、数据分析 本次内容参考自高等教育本科教材《实验设计与数据处理》 一、正交实验基础知识介绍 1.1 认识正交表 先看一组正交表的构造 这个表的题头代表了这个表的构造&#xff0c;其中…

DRAM发展史

DRAM(Dynamic Random Access Memory,动态随机存取存储器)自其发明以来,历经半个多世纪的发展,已成为现代计算机系统中不可或缺的关键组件。 诞生与早期发展 1966年:IBM公司的罗伯特登纳德(Robert H. Dennard)发明了DRAM。这种新型存储器利用一个晶体管和一个电容器组…

为什么Linus不把国家反诈中心加入Linux内核?

所谓的反诈和反诈 app 都是应用层面的事儿吧。这些东西如果真要集成&#xff0c;也是集成到浏览器中&#xff08;监视你访问的内容和浏览记录&#xff09;&#xff0c;拨号和短信应用中&#xff08;监视通话和短信&#xff09;。还有微信之类的早就集成反诈了。如果你反复向一个…

Web3技术简介:重新定义互联网的未来

引言 在21世纪的数字时代&#xff0c;互联网已成为我们日常生活的不可或缺的一部分。然而&#xff0c;随着区块链和加密技术的快速发展&#xff0c;一个全新的互联网模型——Web3&#xff0c;正逐渐崭露头角。Web3不仅仅是技术的进步&#xff0c;它更是对传统互联网模型的挑战…

亚马逊测评自养号策略:手机与PC结合的重要性

亚马逊测评的核心关键技术在于精心培养买家账号&#xff0c;之所以称之为核心关键&#xff0c;原因在于测评下单的首要条件是拥有一个活跃的买家账号。买家账号并非一次性使用&#xff0c;因此&#xff0c;养号过程显得至关重要。然而&#xff0c;在养号的过程中&#xff0c;很…