算法原理
完美反射理论假设图像中最亮的点就是白点,并以此白点为参考对图像进行自动白平衡,最亮点定义为R+G+B的最大值。
算法过程
1.计算每个像素R,G,B之后,并保存
2.按照R+G+B的值的大小计算出其前10%或其他Ratio的白色参考点的阈值T
3.遍历图像中的每个点,计算其中R+G+B值大于T的所有点的R\G\B分量的累积和的平均值
4.将每个像素量化到[0, 255]
代码实现
//////自动白平衡
int AutoBlance(Mat& src, Mat& dst)
{
int ret = PreDealSource(src, dst);
if (-1 == ret)
return -1;
vector<int>vHistRGB(767, 0);
uchar iMaxVal = 0;
int iSum = 0;
uchar utemp;
int nrows = src.rows;
int ncols = src.cols;
int jMax = ncols*src.channels();
int i = 0;
int j = 0;
for (i = 0; i < nrows; i++)
{
uchar *psrc = src.ptr<uchar>(i);
for (j = 0; j < jMax;)
{
iSum = 0;
utemp = psrc[j++];
iMaxVal = iMaxVal > utemp ? iMaxVal : utemp

本文深入探讨了自动白平衡算法的原理与实现,通过完美反射理论确定图像中的白点,以此作为基准调整图像颜色,达到自然真实的色彩还原效果。算法包括计算像素值、确定白色参考点、计算平均值并调整像素值等步骤。

1241

被折叠的 条评论
为什么被折叠?



