自动白平衡之完美反射算法原理及C++实现是怎样的
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,这篇文章给大家介绍自动白平衡之完美反射算法原理及C++实现是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。前言昨天介绍的灰度世界算法是最原始的处理白平衡的算法。今天要介绍的
千家信息网最后更新 2025年12月01日自动白平衡之完美反射算法原理及C++实现是怎样的
这篇文章给大家介绍自动白平衡之完美反射算法原理及C++实现是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
前言
昨天介绍的灰度世界算法是最原始的处理白平衡的算法。今天要介绍的完美反射算法也是自动白平衡常用的算法之一。一起来看看吧。
算法原理
完美反射理论假设图像中最亮的点就是白点,并以此白点为参考对图像进行自动白平衡,最亮点定义为R+G+B的最大值。
算法过程
计算每个像素R,G,B之后,并保存
按照R+G+B的值的大小计算出其前10%或其他Ratio的白色参考点的阈值T
遍历图像中的每个点,计算其中R+G+B值大于T的所有点的R\G\B分量的累积和的平均值
将每个像素量化到[0, 255]
代码实现
Mat PerfectReflectionAlgorithm(Mat src) { int row = src.rows; int col = src.cols; Mat dst(row, col, CV_8UC3); int HistRGB[767] = { 0 }; int MaxVal = 0; for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { MaxVal = max(MaxVal, (int)src.at(i, j)[0]); MaxVal = max(MaxVal, (int)src.at(i, j)[1]); MaxVal = max(MaxVal, (int)src.at(i, j)[2]); int sum = src.at(i, j)[0] + src.at(i, j)[1] + src.at(i, j)[2]; HistRGB[sum]++; } } int Threshold = 0; int sum = 0; for (int i = 766; i >= 0; i--) { sum += HistRGB[i]; if (sum > row * col * 0.1) { Threshold = i; break; } } int AvgB = 0; int AvgG = 0; int AvgR = 0; int cnt = 0; for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { int sumP = src.at(i, j)[0] + src.at(i, j)[1] + src.at(i, j)[2]; if (sumP > Threshold) { AvgB += src.at(i, j)[0]; AvgG += src.at(i, j)[1]; AvgR += src.at(i, j)[2]; cnt++; } } } AvgB /= cnt; AvgG /= cnt; AvgR /= cnt; for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { int Blue = src.at(i, j)[0] * MaxVal / AvgB; int Green = src.at(i, j)[1] * MaxVal / AvgG; int Red = src.at(i, j)[2] * MaxVal / AvgR; if (Red > 255) { Red = 255; } else if (Red < 0) { Red = 0; } if (Green > 255) { Green = 255; } else if (Green < 0) { Green = 0; } if (Blue > 255) { Blue = 255; } else if (Blue < 0) { Blue = 0; } dst.at(i, j)[0] = Blue; dst.at(i, j)[1] = Green; dst.at(i, j)[2] = Red; } } return dst;} 效果
关于自动白平衡之完美反射算法原理及C++实现是怎样的就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
算法
反射
原理
图像
j++
参考
C++
像素
内容
更多
白点
帮助
不错
原始
最大
世界
亮点
代码
兴趣
分量
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
适合于软件开发的职业
儿童网络安全
雷达币贵阳新增服务器
做物流软件开发的
网络安全遵循标准
1.16.5粘液科技服务器
数据库中的信息怎么读
网络安全法是什么实施
lpi信号数据库介绍
软件开发工具实践课怎么考
信云科技互联网
浙江方便软件开发销售
互联网设计科技公司经营范围
网诚网络技术有限公司怎么样
扫描ssr服务器
数据库视图方式的特点
统一软件开发过程 ppt
wdcp怎么导入数据库
汇丰软件开发技术
embase数据库检索式
学编程数据库怎么学
株洲网络安全红包
落实 网络安全法 总结
网络安全威胁应对策略
恒生互联网科技指数代码
观看网络安全线上直播
手机强制清楚数据库
计算机网络技术提纲
商铺网络安全管理制度
mac 搭建ftp服务器