目录

1.1 Ycrcb和RGB颜色模型

1.2 光源色温

1.3 算法实现


目前常用的灰度世界算法、完美反射算法、自适应白平衡算法、色域映射算法以及神经网络算法,这些算法在一般情况下都能够有效实现颜色矫正。其中,包域映射算法和神经网络算法这类基于先验知识基础上的算法模型结果较为精确,但是由于其算法比较复杂,难利用硬件实现,并且样本的完整性难保证。

因此在实际应用中主要使用的还是灰度世界算法和自适应白平衡算法模型。简单灰度世界算法是建立在一定假设基础上的,当拍摄纯色背景时,假设不成立,算法调整效果就会出现较大偏差。而标准差亮度加权灰度世界算法虽然能够克服这种缺陷,但其计算量大大增加了,也不适合硬件实现。因此此处提出基于色温估计的自动白平衡算法,它是利用图像的原始数据进行计算。首先通过大量的实验统计,找出常见光源下灰点的色度值分布规律,并进而根据图像素中的灰色点计算出图光源的色温,最后计算出对应的增益对图像进行调整。该算法能够有效地克服灰度世界算法在拍摄大面积色块时的算法失效问题,并且计算简单,利于硬件的实现,颜色调整效果良好。

1.1 Ycrcb和RGB颜色模型

(1)RGB颜色模型

颜色模型也称颜色空间,RGB颜色空间是一种加法混色成像系统,通过红绿蓝三基色按不同比例叠加混合出各种颜色。下图是RGB颜色空间简图。

RGB颜色模型符合人眼的光学特性,是最通用的面向硬件的颜色空间,但是在图像处理中,一般不采用RGB颜色空间,因为它将明度、色调和饱和度三个量放在一起表示,难化对细节进行数字化的调整。然而和色度相比,人眼对亮度更加敏感,RGB色彩模型的三个分量与亮度密切相关,亮度发生变化的话,三个分量的值也会改变。

(2)Ycrcb颜色模型

1.2 光源色温

通过研究发现,在一种色温下,灰色快的色度分量cb,cr的值是固定在一定的范围内的,因此可以根据图像中像素点的cb、cr值对像素进行分类统计,以此来判断图像光源的色温,并根据获得的采样灰色像素点,计算出相应的增益,从而实现对图像颜色矫正,在整个ISP图像处理流程当中,这里将白平衡放在颜色插值之前,是为了避免图像处理过程中CFA插值等过程带来的颜色串扰(color crosstalk)等问题的影响,因此这里的白平衡算法是在raw数据上进行处理。

通过实验发现,四个色块在同一色温值点的色度值cb、cr聚在一起,分布在一定范围内,从而获得各个色温点的cb、cr值参考范围窗口,根据这些窗口的上下阈值参数可以判断出拍摄光源的色温值,进而对图像进行白平衡处理。

1.3 算法实现

对于一副图像,在获得其像素值后,首先判断它的像素R、G、B值是否在合适的范围内,如果像素值过低,则其中包含了太多的噪声信息,像素值过高则已经过曝,以上两种情况都无法提供有效的颜色信息,接下来将有效的像素点值从RGB颜色空间转换到Ycrcb颜色空间,根据像素值cr、cb进行判断,当确定该像素点的灰度值位于某个色温窗口时,就将该像素点的cb、cr值添加到相应的像素和值寄存器中,同时该色温对应像素个数的寄存器加1,根据这个步骤将图像上的所有像素点进行处理。当一帧图像完毕之后,去像素个数最多的色温作为光源色温,对应像素点的亮度色度值用来计算RGB三通道的增益系数。过程如下:

假设判断出当前色温为4000K,将寄存器中的像素点值转换成R、G、B,并通过公式计算图像中灰色点的R、G、B均值。

再按照公式得到R、G、B三个通道的增益:


  将得到的增益应用到整幅图像,即可得到白平衡矫正之后的图像。

详情请参看论文《监控视频中的图像颜色评价与优化》

基于色温估计的白平衡算法相关推荐

  1. matlab 调图像色温,Matlab常用白平衡算法.pdf

    Matlab常用白平衡算法 灰色世界法 (grey world method ) 要计算未知光源的特性必须从图片中提取相关的统计特性.当我 们能够仅使用一个统计特性就获得未知光源特性时,算法就变得非常 ...

  2. ISP AWB自动白平衡包含一段简单的色温估计进行白平衡调节的程序

    What is WB(white balance)? 人的视觉和神经系统在看到白色物体的时候,基本不受环境的变化而出现严重的错觉.比如阴天,晴天,室内,室外,日光灯,白炽灯等的环境下,人依然会将白纸视 ...

  3. 基于深度学习和传统算法的人体姿态估计,技术细节都讲清楚了

    作者 | 站长 pursueYfuture 来源 | AI专栏(ID: pursue-Y-future) 计算机视觉的一大研究热点是人体姿态估计,还有很多问题急需解决,比如遮挡,交互等等.在最近的CV ...

  4. CV之MobiLenet:基于openpose利用CMU/MobilenetV2算法实现对多人体姿态(2019湖人勒布朗詹姆斯扣篮)实时估计检测

    CV之MobiLenet:基于openpose利用CMU/MobilenetV2算法实现对多人体姿态(2019湖人勒布朗詹姆斯扣篮)实时估计检测 目录 输出结果 设计思路 核心代码 输出结果 设计思路 ...

  5. 看完这篇AI算法和笔记,跟面试官扯皮没问题了 | 基于深度学习和传统算法的人体姿态估计

    点击蓝色"AI专栏"关注我哟 重磅干货,第一时间送达 这是站长的第 41 篇原创优质长文 前几天站长写的一篇的文章[基于深度学习算法和传统立体匹配算法的双目立体视觉]大受好评.这次 ...

  6. 基于卷积神经网络的密集人群估计/人群计数算法【内含教程和踩坑】

    文章目录 前言 一.什么是密集人群估计 二.实验前准备 1.Github开源项目--Awesome Crowd Counting 2.数据集下载 3.环境配置 三.ShanghaiTech数据集实验 ...

  7. 一种基于神经网络的由PPG信号估计连续血压算法【翻译】

    一种基于神经网络的由PPG信号估计连续血压算法 摘要 由光体积描记(PPG)信号得到的血压和脉搏持续时间之间存在关系,但并不总是线性的.为了从PPG信号中估计血压,本文采用了人工神经网络(ann).训 ...

  8. 看完这篇AI算法和笔记,跟面试官扯皮没问题了 | 基于深度学习和传统算法的人体姿态估计...

    点击蓝色"AI专栏"关注我哟 重磅干货,第一时间送达 这是站长的第 41 篇原创优质长文 前几天站长写的一篇的文章[基于深度学习算法和传统立体匹配算法的双目立体视觉]大受好评.这次 ...

  9. 看完这篇AI算法和笔记,让面试官刮目相看没问题了 | 基于深度学习和传统算法的人体姿态估计...

    点击蓝色"AI专栏"关注我哟 重磅干货,第一时间送达 这是站长的第 41 篇原创优质长文 前几天站长写的一篇的文章[基于深度学习算法和传统立体匹配算法的双目立体视觉]大受好评.这次 ...

最新文章

  1. Android Studio导出Jar包并混淆
  2. 021 设计模式之工厂方法模式,抽象工厂模式的区别
  3. Android使用VideoView播放本地视频及网络视频Demo
  4. SharePoint 2013 APP 开发示例 (六)服务端跨域访问 Web Service (REST API)
  5. 让你的对象跑出内存,写入到磁盘或者进行网络传输,一文掌握Java对象序列化
  6. C语言(CED)对于一个2行N列的走道。现在用1*2,2*2的砖去铺满。问有多少种不同的方式(递归求解)
  7. mysql容量性能测试_关于RDS for MySQL的各规格性能测试情况
  8. leetcode - 46. 全排列(对vector容器的元素进行搜索,判断是否存在vector中)
  9. ACR Code Pacs
  10. 三星核S5PV210AH-A0 SAMSUNG
  11. python画动态玫瑰花图片大全_【python】trutle绘制送给女神的玫瑰花图
  12. vscode不能跳转_vscode-goto-node-modules 一个快速定位 node 模块的 vscode 插件
  13. Linux基础命令---显示文本grep
  14. 50位中国女性科学家入选2022福布斯
  15. x64位call代码注入器1.0版
  16. 怎么给照片加眼镜(二):3D眼镜模型合成法
  17. python 海龟图
  18. @csrf_exempt 类的视图跨域
  19. AutoChain纷享车链背后的技术支撑——Higgs Chain 的生态体系解读
  20. Hibernate与JPA

热门文章

  1. python设计石头剪刀布游戏_用python制作剪刀石头布游戏
  2. java计算机毕业设计线上订餐系统MyBatis+系统+LW文档+源码+调试部署
  3. html+css实现了简单的注册页面
  4. 北斗卫星导航产业重大应用示范项目落户哈市
  5. Android播放音频工具类
  6. 文件 组织 服务器 数据库,nc文件服务器 数据库文件
  7. ARM Cortex-M 系列 MCU 芯片选型
  8. unity2022打开项目时报Fatal error显示无权访问d3dcompiler_47.dll, 解决方法很简单-还有ucrtbase.dll问题
  9. 美通社企业新闻汇总 | 2019.1.14 | 大陆旅客每次赴港平均消费超2万港元,欧舒丹9亿美元收购ELEMIS...
  10. BI 前端实践 15:基于语义层的自助查询