一种效果很好的自动白平衡技术(WhiteBalance) 

白平衡是图像处理的一个极重要概念。所谓白平衡(英文名称为White Balance),就是对白色物体的还原。当我们用肉眼观看这大千世界时,在不同的光线下,对相同的颜色的感觉基本是相同的,比如在早晨旭日初升时,我们看一个白色的物体,感到它是白的;而我们在夜晚昏暗的灯光下,看到的白色物体,感到它仍然是白的。这是由于人类从出生以后的成长过程中,人的大脑已经对不同光线下的物体的彩色还原有了适应性。但是,作为拍摄设备,如数码相机,可没有人眼的适应性,在不同的光线下,由于CCD输出的不平衡性,造成数码相机彩色还原失真。一般情况下,我们习惯性地认为太阳光是白色的,已知直射日光的色温是5200K左右,白炽灯的色温是3000K左右。用传统相机的日光片拍摄时,白炽灯光由于色温太低,所以偏黄偏红。所以通常现场光线的色温低于相机设定的色温时,往往偏黄偏红,现场光线的色温高于相机设定时,就会偏蓝。
     为了解决不同色温下,引起的白色漂移现象。由于白色对色温变化的响应最大,通常用白色来作为调整的基色。通常的白平衡技术有:自动白平衡、钨光白平衡、荧光白平衡、室内白平衡、手动调节。本文仅介绍其中的一种自动白平衡。
     白平衡算法通常分为两步:白色点的检测,白色点的调整。本方法采用一个动态的阀值来检测白色点。详细算法过程为:
          1.  把图像w*h从RGB空间转换到YCrCb空间。
          2.  选择参考白色点:
                    a. 把图像分成3*4个块(块数可选)。
                    b. 对每个块,分别计算Cr,Cb的平均值Mr,Mb。
                    c. 对每个块,根据Mr,Mb,分别计算Cr,Cb的方差Dr,Db。
                    d. 判定每个块的近白区域(near-white region)。
                        判别表达式为:Cb(i, j) − (Mb + Db × sign(Mb )) < 1.5× Db && Cr(i, j) − (1.5×Mr + Dr × sign(Mr )) < 1.5× Dr
                       设一个“参考白色点”的亮度矩阵RL,大小为w*h。
                         若符合判别式,则作为“参考白色点”,并把该点(i,j)的亮度(Y分量)值赋给RL(i,j);
                         若不符合,则该点的RL(i,j)值为0。
         3.  选取参考“参考白色点”中最大的10%的亮度(Y分量)值,并选取其中的最小值Lu_min.
         4.  调整RL,若RL(i,j)<Lu_min,  RL(i,j)=0; 否则,RL(i,j)=1;
         5.  分别把R,G,B与RL相乘,得到R2,G2,B2。  分别计算R2,G2,B2的平均值,Rav,Gav,Bav;
         6.  得到调整增益:  Ymax=double(max(max(Y)))/15;
                                    Rgain=Ymax/Rav;
                                    Ggain=Ymax/Gav;
                                    Bgain=Ymax/Bav;
        7.  调整原图像:Ro= R*Rgain; Go= G*Ggain; Bo= B*Bgain;

WhiteBalance相关推荐

  1. 一种效果很好的自动白平衡技术(WhiteBalance)

    from: http://www.cnblogs.com/haar/articles/1392227.html 一种效果很好的自动白平衡技术(WhiteBalance) 白平衡是图像处理的一个极重要概 ...

  2. 自动白平衡技术(WhiteBalance)(转自Harri的blog)

    一种效果很好的自动白平衡技术(WhiteBalance) 白平衡是图像处理的一个极重要概念.所谓白平衡(英文名称为White Balance),就是对白色物体的还原.当我们用肉眼观看这大千世界时,在不 ...

  3. OpenCV读写视频文件解析(二)

    OpenCV读写视频文件解析(二) VideoCapture::set 设置视频捕获中的属性. C++: bool VideoCapture::set(int propId, double value ...

  4. Expo大作战(三十六)--expo sdk api之 ImagePicker,ImageManipulator,Camera

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  5. iOS摄像头和相册-UIImagePickerController-浅析(转)

    iOS摄像头和相册-UIImagePickerController-浅析(转) 转自: http://blog.sina.com.cn/s/blog_7b9d64af0101cfd9.html 在一些 ...

  6. GAN和PS合体会怎样?东京大学图像增强新研究:无需配对图像,增强效果还可解释...

    十三 发自 凹非寺  量子位 报道 | 公众号 QbitAI GAN和PS合体,会擦出怎样的火花? 在让图像变美的这条道路上,方法可谓是层出不穷. 过去,若是有大量的原始图像和增强图像,那么我们就可以 ...

  7. Fedora 8中驱动ASUS6摄像头

    Fedora 8中驱动ASUS6摄像头 本文适用于Asus系列.A6J/A6K/A6T/AT6000/F2J/F3J//F9J/G1/S96J/Z96J/A7F/A7T/A7S 运转lsusb -v ...

  8. 利用Word将连着一起的字符按照自己指定的”字符串或者字换行“自动换行。

    1在写android的Camera代码一项是获取相机硬件的参数,打印出来就一行,即使利用记事本自动换行也是密密麻麻的不好观看如下 RDCameraSDK=true;capture-burst-inte ...

  9. 详解exif.js,应用于canvas照片倒转(海报H5)

    业务背景,苹果手机调用上传接口拍照没有问题但是上传到网页上照片倒转了解决方法利用exif.js读取图片参数并对图片进行元数据修改 window.btoa(str)转码 window.atob(base ...

最新文章

  1. Paddle内置的网络模型
  2. js 查找当前元素/this
  3. oracle转义字符
  4. 转载的SSO文章,很基础
  5. OSPF-5类LSA和4类LSA
  6. 基于阈值的损失函数_推荐 :常见损失函数和评价指标总结(附公式amp;代码)...
  7. idea一键加密部署springboot到docker容器
  8. Android学习笔记之AndroidManifest.xml文件解析(摘自皮狼的博客)
  9. 链表常见操作java实现一:链表初始化,求链表长度
  10. spring扩展点一:BeanDefinitionRegistryPostProcessor
  11. 简单迭代法和牛顿迭代法matlab程序设计(含例题)
  12. spss中有关独立样本T检验的详细介绍(包含操作过程和结果分析)
  13. Golang深拷贝浅拷贝
  14. JDBC 加载驱动报错解决办法
  15. 【基础知识】9、加州房价预测
  16. 基于WaterDetect的水域面积提取,以长江中上游水面为例
  17. 基于云的产品上线部署qqfarm
  18. 根据url动态生成二维码
  19. 《Spring系列》第15章 声明式事务(一) 基础使用
  20. 软件需求工程 高校教学平台 软件需求规格说明书 part 1 (重点!!!)

热门文章

  1. 中国金刚石工具产量和出口量均居于全球前列,市场广阔
  2. java 判断三角形计算面积
  3. canvas绘图 echarts 基本使用
  4. PDF转jpg工具(含注册码)
  5. 初识pytest框架及其应用原理
  6. 大批量其他经纬度转换为百度地图经纬度
  7. 猫哥教你写爬虫 000--开篇
  8. 生活小常识日常生活小常识
  9. 安卓市场ASO排名优化机制分析,安卓市场的aso优化
  10. 微信公众号自定义菜单跳转到历史消息页面