ISP自动白平衡:动态阈值算法Opencv C++实现

本文介绍了使用OpenCV C++实现ISP自动白平衡的动态阈值算法,包括白点检测与白点调整两个步骤,详细阐述了算法过程,并展示了不同算法的运行结果。在实现过程中,通过对比发现,采用方差计算Dcr和Dcb能够得到较好的图像矫正效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

最近学习了ISP自动白平衡-动态阈值算法,这里分享给大家。


1. 动态阈值算法步骤

动态阈值算法主要分为两步:白点检测与白点调整。

白点检测:

  1. 将图像转换到YCrCb颜色空间,然后对图像进行分块, 3 × 4 3\times 4 3×4共12块;
  2. 对每块统计Cr, Cb均值 M c r , M c b M_{cr}, M_{cb} Mcr,Mcb;
  3. 根据步骤2计算的均值统计每块Cr, Cb的方差 D c r , D c b D_{cr}, D_{cb} Dcr,Dcb,计算公式:
    D c r = 1 N ∑ ( C r ( i , j ) − M c r ) 2 D_{cr} = \frac{1}{N}\sum(Cr(i,j) - M_{cr})^{2} Dcr=N1(Cr(i,j)Mcr)2
    D c b = 1 N ∑ ( C b ( i , j ) − M c b ) 2 D_{cb} = \frac{1}{N}\sum(Cb(i,j) - M_{cb})^{2} Dcb=N1(Cb(i,j)Mcb)2
    上式 N N N表示当前分块的像素数量, C r ( i , j ) Cr(i,j) Cr(i,j)表示Cr通道像素位置 ( i , j ) (i,j) (i,j)的像素值
  4. 过滤掉 D c r , D c b D_{cr}, D_{cb} Dcr,Dcb数值较小的分块(这里数值为 0.01 0.01 0.01);
  5. 统计所有分块的 M c r , M c b , D c r , D c b M_{cr}, M_{cb}, D_{cr}, D_{cb} Mcr,Mcb,Dcr,Dcb的均值作为图像的均值和方差;
  6. 根据如下条件筛选候选白点并记录该白点的在图像上的索引:
    ∣ C r ( i , j ) − ( 1.5 ∗ M c r + D c r ) ∣ ≤ 1.5 ∗ D c r \lvert Cr(i,j) - (1.5*M_{cr} + D_{cr}) \rvert \leq 1.5*D_{cr} Cr(i,j)(1.5Mcr+Dcr)1.5D
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值