原文链接:https://blog.csdn.net/dcrmg/article/details/53545510
        彩色相机内部有三个CCD电子耦合元件,分别用来感受红绿蓝三中颜色的光线,默认情况下,三个颜色的感光电路信号的放大比例是1:1:1的。在理想的拍摄环境下,纯白色的RGB分量按照1:1:1的比例放大之后,得到的是没有偏色的白色,当在非理想的环境光条件下,白色成像出来的效果会偏向环境光的颜色,而不是纯白色。

相机的自动白平衡就是要通过改变RGB感光电路信号的放大比例,让受环境光影响的白色还原成纯白色,保证在各种光线条件下,成像色彩跟物体真实的色彩保持一致。

常用的一种自动白平衡算法是灰度世界法,它假设对于一副色彩丰富的图像,图像上RGB三个分量的平均值趋于同一个灰度值,一般取这个灰度值的大小为RGB三分量的平均值。

代码

public static void main(String[] args) {System.load("D:\\opencv-320\\opencv_java320.dll");JavaTest javaTest = new JavaTest();Mat src = Imgcodecs.imread("F:\\opencvPhoto\\oneWord\\test2.jpg");List<Mat> splitMat = new ArrayList<Mat>();Core.split(src, splitMat);double meanB = Core.mean(splitMat.get(0)).val[0];double meanG = Core.mean(splitMat.get(1)).val[0];double meanR = Core.mean(splitMat.get(2)).val[0];double kB = (meanB + meanG + meanR) / (3 * meanB);double kG = (meanB + meanG + meanR) / (3 * meanG);double kR = (meanB + meanG + meanR) / (3 * meanR);List<Mat> mergeMatList = new ArrayList<Mat>();Mat merge = new Mat();mergeMatList.add(javaTest.changeRGB(splitMat.get(0), kB));mergeMatList.add(javaTest.changeRGB(splitMat.get(1), kG));mergeMatList.add(javaTest.changeRGB(splitMat.get(2), kR));Core.merge(mergeMatList, merge);Imgcodecs.imwrite("F:\\opencvPhoto\\oneWord\\xx.jpg", merge);
}public Mat changeRGB(Mat mat, double k) {Mat newMat = new Mat(mat.size(), CvType.CV_8UC1);for (int i = 0; i < mat.rows(); i++) {for (int j = 0; j < mat.cols(); j++) {double[] color = mat.get(i, j);color[0] *= k;newMat.put(i, j, color);}}return newMat;
}

原图1
效果1

图片2

效果2

Java OpenCV 图像白平衡算法相关推荐

  1. opencv 图像 抠图 算法_opencv提取轮廓与抠图

    自然图像抠图/视频抠像技术梳理(image matting, video matting)-计算机视视觉专题1 图像抠图算法学习 - Shared Sampling for Real-Time Alp ...

  2. matlab 图像白平衡算法,Matlab常用白平衡算法

    <Matlab常用白平衡算法>由会员分享,可在线阅读,更多相关<Matlab常用白平衡算法(21页珍藏版)>请在人人文库网上搜索. 1.1 灰色世界法灰色世界法(grey wo ...

  3. opencv 图像 抠图 算法_我讨厌这个绿油油的头像!我用opencv换一下背景

    更多精彩在[Opencv视觉实践] 大家好呀!大家不用疑惑啥时候关注了一个叫[Opencv视觉实践]的公众号呢?因为[行走的机械人]改名字了.本号想专注分享计算机视觉相关的有趣东西,虽然[行走的机械人 ...

  4. opencv 图像 抠图 算法_图像抠图算法学习 - Shared Sampling for Real-Time Alpha Matting

    一.序言 陆陆续续的如果累计起来,我估计至少有二十来位左右的朋友加我QQ,向我咨询有关抠图方面的算法,可惜的是,我对这方面之前一直是没有研究过的.除了利用和Photoshop中的魔棒一样的技术或者Ph ...

  5. opencv 图像 抠图 算法_摄影领域的OpenCV教程之“蓝幕抠图”

    玩opencv时候,肯定会接触色彩空间.最常用的是RGB色彩空间,用0~255表示每个通道. 摄影投效里有个技术,叫做蓝幕,也有绿幕.后期把蓝色区域扣掉,然后换成别的背景. 在上图中,细心的小伙伴会发 ...

  6. opencv 图像 抠图 算法_人人可用的在线抠图,AI自动化的那种!北大校友算法玩出新高度...

    杨净 发自 凹非寺 量子位 报道 | 公众号 QbitAI 现在人人可试可玩的图像分割来了. 在线API,只需输入图片网址,即可自动删除目标背景. 就拿今天凌晨刚夺得欧冠冠军的拜仁来试试手- 然后就变 ...

  7. opencv 图像 抠图 算法_人工智能 | 不用绿幕也能实时抠图,商汤等提出只需单张图像、单个模型的新方法MODNet...

    openEA开源周刊 openEA开源社区的官方运营载体 这里每天给大家呈现有价值的开源资讯,欢迎您的来稿与推荐,点击上方蓝色字,加入我们吧! 摘要:近日,香港城市大学和商汤提出一种新型人像抠图方法 ...

  8. 图像识别——(java)opencv(处理图像各种算法测试)

    https://note.youdao.com/ynoteshare/index.html?id=e0df335c7bba4d7633874375539c228a&type=note& ...

  9. java 图像刺绣算法_图像处理:OpenCV3源代码文件解析

    引言 结合冈萨雷斯的<数字图像处理>和Opencv3.0,学习图像处理算法有一段时间了,知道了函数怎么使用,但不知道opencv所用的函数源代码是如何编写的,"知其然,也要知其所 ...

最新文章

  1. JPA中实现双向一对多的关联关系
  2. 2019测试指南-测试测试原理
  3. js中replace的用法
  4. JavaScript-操作DOM对象-获得dom节点
  5. Numpy 之 copies and Views
  6. 2014/08/11 – Backbonejs
  7. spring Quartz基于配置文件和注解的实现
  8. oracle erp整体流程,图解ORACLE ERP流程:轻松掌握ERP技术概念
  9. oracle 密码过期处理
  10. asio几种异步编程模型
  11. C++制作一个连点器
  12. 网易有道词典识别不了adobe打开的pdf
  13. 无痕HOOK方式=硬断+VEH
  14. idea 2021 IDEA的Persistence 窗口 查看ERD关系图
  15. LinuxMint 桌面美化
  16. 机器学习里面的基函数_机器学习系列(一)——基础概念及分类
  17. 文本分词并统计出现次数最高的几个词Python
  18. MCU-LCD屏与RGB-LCD屏的区别?
  19. 方案设计阶段目标成本形成过程
  20. Semi-Supervised Semantic Segmentation with Pixel-Level Contrastive Learning from a Class-wise Memory

热门文章

  1. Gait Part论文阅读笔记
  2. 闲鱼卖家待发货在哪看
  3. iPayLinks艾贝盈CEO与马中青年企业家共话数字未来
  4. Java培训:为什么java如此流行且经久不衰?
  5. 建设智能温室大棚的条件
  6. Top-K Off-Policy Correction for a REINFORCE Recommender System
  7. 编写一个程序,此程序在运行时要求用户输入一个 整数,代表某门课的考试成绩,程序接着给出“不及格”、“及格”、“中”、“良”、“优”的结论。...
  8. 紫外 LED 灯生产厂家调研
  9. 算法训练 大等于n的最小完全平方数 python
  10. 动词、名词、形容词还有什么词