diff options
-rw-r--r-- | src/ipa/rkisp1/algorithms/awb.cpp | 5 | ||||
-rw-r--r-- | src/ipa/rkisp1/algorithms/ccm.cpp | 4 |
2 files changed, 3 insertions, 6 deletions
diff --git a/src/ipa/rkisp1/algorithms/awb.cpp b/src/ipa/rkisp1/algorithms/awb.cpp index 601de9c4..03c5fc99 100644 --- a/src/ipa/rkisp1/algorithms/awb.cpp +++ b/src/ipa/rkisp1/algorithms/awb.cpp @@ -324,8 +324,6 @@ void Awb::process(IPAContext &context, RkISP1AwbStats awbStats{ rgbMeans }; AwbResult awbResult = awbAlgo_->calculateAwb(awbStats, frameContext.lux.lux); - activeState.awb.automatic.temperatureK = awbResult.colourTemperature; - /* * Clamp the gain values to the hardware, which expresses gains as Q2.8 * unsigned integer values. Set the minimum just above zero to avoid @@ -336,9 +334,12 @@ void Awb::process(IPAContext &context, /* Filter the values to avoid oscillations. */ double speed = 0.2; + double ct = awbResult.colourTemperature; + ct = ct * speed + activeState.awb.automatic.temperatureK * (1 - speed); awbResult.gains = awbResult.gains * speed + activeState.awb.automatic.gains * (1 - speed); + activeState.awb.automatic.temperatureK = static_cast<unsigned int>(ct); activeState.awb.automatic.gains = awbResult.gains; LOG(RkISP1Awb, Debug) diff --git a/src/ipa/rkisp1/algorithms/ccm.cpp b/src/ipa/rkisp1/algorithms/ccm.cpp index 3a96a542..de2b6fe7 100644 --- a/src/ipa/rkisp1/algorithms/ccm.cpp +++ b/src/ipa/rkisp1/algorithms/ccm.cpp @@ -142,10 +142,6 @@ void Ccm::prepare(IPAContext &context, const uint32_t frame, } uint32_t ct = frameContext.awb.temperatureK; - /* - * \todo The colour temperature will likely be noisy, add filtering to - * avoid updating the CCM matrix all the time. - */ if (frame > 0 && ct == ct_) { frameContext.ccm.ccm = context.activeState.ccm.automatic; return; |