Commit 0063d548 authored by Andrey Filippov's avatar Andrey Filippov

CLAUDE: CuasPoseRT: wire motion-blur compensation (imp.mb_en gated)

Exercises the existing MB machinery in the RT iterator: when imp.mb_en is ON,
per-scene blur vectors from OpticalFlow.getMotionBlur (FD-based rates) send
interCorrPair down the setInterTasksMotionBlur/interCorrTDMotionBlur path -
convert_direct runs twice, the second run subtracting the shifted+scaled copy
via negative TpTask.scale (LWIR bolometer exponential-tail removal). mb_en OFF
keeps the single-run path, giving a one-checkbox A/B. Same getMotionBlur usage
as offline setInitialOrientationsCuas (stored truth was produced WITH MB on).

mvn compile clean (Eyesis closed).
Co-Authored-By: 's avatarClaude Fable 5 <noreply@anthropic.com>
parent 935e1dcd
...@@ -236,6 +236,24 @@ public class CuasPoseRT { ...@@ -236,6 +236,24 @@ public class CuasPoseRT {
} }
quadCLTs[nscene].getErsCorrection().setErsDt( quadCLTs[nscene].getErsCorrection().setErsDt(
QuadCLTCPU.scaleDtToErs(clt_parameters, dxyzatr_dt)); QuadCLTCPU.scaleDtToErs(clt_parameters, dxyzatr_dt));
// Motion-blur compensation (gated by the same imp.mb_en as offline): per-tile blur
// vectors from the finite-difference rates -> interCorrPair takes the
// setInterTasksMotionBlur/interCorrTDMotionBlur path (convert_direct runs twice,
// the second run subtracts the shifted+scaled copy via negative TpTask.scale -
// removes the LWIR bolometer exponential tail). mb_en OFF -> single-run path (A/B).
double [][] mb_vectors_scene = null;
if (clt_parameters.imp.mb_en) {
mb_vectors_scene = OpticalFlow.getMotionBlur(
center_CLT, // QuadCLT ref_scene,
quadCLTs[nscene], // QuadCLT scene,
pXpYD_center, // double [][] ref_pXpYD,
predicted[0], // double [] camera_xyz,
predicted[1], // double [] camera_atr,
dxyzatr_dt[0], // double [] camera_xyz_dt,
dxyzatr_dt[1], // double [] camera_atr_dt,
0, // int shrink_gaps,
debugLevel - 2); // int debug_level
}
fail_reason[0] = 0; fail_reason[0] = 0;
final double [][][] coord_motion_rslt = new double [3][][]; // [centers, vector_XYS, eigen] of the last LMA cycle final double [][][] coord_motion_rslt = new double [3][][]; // [centers, vector_XYS, eigen] of the last LMA cycle
double [][] pose = Interscene.adjustPairsLMAInterscene( double [][] pose = Interscene.adjustPairsLMAInterscene(
...@@ -263,7 +281,7 @@ public class CuasPoseRT { ...@@ -263,7 +281,7 @@ public class CuasPoseRT {
max_rms, // double max_rms, max_rms, // double max_rms,
mb_tau, // double mb_tau, mb_tau, // double mb_tau,
mb_max_gain, // double mb_max_gain, mb_max_gain, // double mb_max_gain,
null, // double [][] mb_vectors (MB off in phase A), mb_vectors_scene, // double [][] mb_vectors (null when imp.mb_en OFF - single-run path),
coord_motion_rslt, // double [][][] coord_motion_rslt (last-cycle measurement, for -POSE-RT-HYPER), coord_motion_rslt, // double [][][] coord_motion_rslt (last-cycle measurement, for -POSE-RT-HYPER),
debugLevel - 2); // int debug_level debugLevel - 2); // int debug_level
final boolean ok = (pose != null); final boolean ok = (pose != null);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment