为了账号安全,请及时绑定邮箱和手机立即绑定

OpenCV3 自动白平衡:灰度世界和完美反射算法

标签:
Java

最近加入了一个无人机团队,任务是参加第六届国际无人机飞行器创新大奖赛(UAVGP)。由于需要跑视觉算法,团队买了块英伟达的TX2(壕...)。我做的方案是用色域分割,但是室外环境变化可能会比较大(冷暖,亮暗),所以需要用到白平衡算法让图片直方图保持正常。

webp

TX2

1.算法原理

  • 灰度世界算法假定图片具有大量的色彩变化,于是RGB分量趋近于同一个值K。一般令 K = (Raver+Gaver+Baver)/3,其中Raver,Gaver,Baver分别表示红、 绿、 蓝三个通道的平均值。第二步是计算各通道的增益,如Kr=K/Raver,最后图像中每一个像素点Rnew = R * Kr。意思大概就是如果某个通道平均强度大于三通道的平均强度,就令这个通道的整体强度按比例降低,反之亦然。

  • 另一个算法完美反射算法假设图片中最亮的点就是一面镜子,完美地反射了外部光照,并根据这些白点进行白平衡。它定义为R+G+B的最大值。让这些白点的RGB三个通道按照比例拉伸到255,并将其他的点的三个通道按照同样比例拉伸,超过255的设为255,是一个归一化过程。opencv中的完美反射大概是将白点的比例设为1%,改了个名字叫simpleWB,这样用户就不用调参数了。

2.算法实现

调用opencv中的白平衡算法十分简单(前提是安装了扩展包),只需要创造一个opencv封装好的智能指针,然后再调用相应的create方法,就可以使用了。

/****************************************************************
 * WBexample.cpp
 * Created by 杨帮杰 on 9/20/18.
 * Right to use this code in any way you want without warranty,
 * support or any guarantee of it working
 * E-mail: yangbangjie1998@qq.com
 * Assication: SCAU 华南农业大学
 *****************************************************************/#include <iostream>#include <opencv2/opencv.hpp>#include <opencv2/xphoto/white_balance.hpp>using namespace cv;using namespace std;#define PATH "/home/jacob/WBexample/testImage.jpg"int main(){
    Mat inputImage = imread(PATH);
    Mat grayWBImage = Mat::zeros(inputImage.size(),inputImage.type());
    Mat simpleWBImage = Mat::zeros(inputImage.size(),inputImage.type());    //灰度世界算法
    Ptr<xphoto::WhiteBalancer> grayWB = xphoto::createGrayworldWB();
    grayWB->balanceWhite(inputImage, grayWBImage);    //完美反射算法
    Ptr<xphoto::WhiteBalancer> simpleWB = xphoto::createSimpleWB();
    simpleWB->balanceWhite(inputImage, simpleWBImage);

    imshow("inputImage",inputImage);
    imshow("grayWBImage",grayWBImage);
    imshow("simpleWBImage",simpleWBImage);
    waitKey();    return 0;
}

3.结果分析

结果如下


webp

原图像

webp

灰度世界

webp

完美反射



作者:Jacob杨帮帮
链接:https://www.jianshu.com/p/f24ff203d5aa


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消