Loading src/main/java/com/elphel/imagej/tileprocessor/Interscene.java +6 −5 Original line number Diff line number Diff line Loading @@ -437,7 +437,8 @@ public class Interscene { // int search_rad = clt_parameters.imp.search_rad; // 10; boolean scale_ims_velocities = true; Did_ins_2 d2_ref = quadCLTs[ref_index].did_ins_2; // apply correction to orientation // apply correction to orientation - better not to prevent extra loops. // And it only applies to rotations double [] cam_quat_ref_enu =Imx5.quaternionImsToCam(d2_ref.getQEnu() , ims_mount_atr, ims_ortho); Loading @@ -450,7 +451,7 @@ public class Interscene { ers_reference.addScene(quadCLTs[ref_index].getImageName(), // add reference scene (itself) too scenes_xyzatr[ref_index][0], scenes_xyzatr[ref_index][1], cam_dxyzatr_ref[0], // ZERO3, // ers_scene.getErsXYZ_dt(), cam_dxyzatr_ref[0], // later may overwrite from overlap cam_dxyzatr_ref[1]); // ZERO3);// ers_scene.getErsATR_dt() // Will be used in prepareLMA() quadCLTs[ref_index].getErsCorrection().setErsDt( // set for ref also (should be set before non-ref!) Loading Loading @@ -488,7 +489,7 @@ public class Interscene { double [] scene_abs_atr_enu = Imx5.quatToCamAtr(cam_quat_enu); double [][] ims_scene_xyzatr_enu = {cam_xyz_enu, scene_abs_atr_enu }; // try with xyz? // set initial approximation from IMS, subtract reference XYZATR // predicted bny IMU from the reference scene // predicted by IMU from the reference scene double [][] pose_ims = ErsCorrection.combineXYZATR( ims_scene_xyzatr_enu, ErsCorrection.invertXYZATR(ims_ref_xyzatr_enu)); Loading Loading @@ -613,7 +614,7 @@ public class Interscene { last_corr_xyzatr = ErsCorrection.combineXYZATR ( last_corr_xyzatr, corr_diff); // not used here with IMS: after_spiral == false if (after_spiral && (scene_index < (ref_index-1))) { // need to interpolate skipped scenes // here we expect very small translations/angles, so linear scaling is OK double s = 1.0 / (ref_index - scene_index); Loading Loading @@ -1303,11 +1304,11 @@ public class Interscene { scaled_dxyzatr_dt[0], // (ers_use_xyz? dxyzatr_dt[nscene][0]: ZERO3), //, // dxyzatr_dt[nscene][0], // double [] ers_xyz_dt, scaled_dxyzatr_dt[1]); // dxyzatr_dt[nscene][1]); // double [] ers_atr_dt)(ers_scene_original_xyz_dt); */ quadCLTs[nscene].getErsCorrection().setErsDt( // set for ref also (should be set before non-ref!) QuadCLTCPU.scaleDtToErs( clt_parameters, dxyzatr_dt[nscene])); */ if (dbg_mb_img != null) { boolean show_corrected = false; if (nscene == debug_scene) { Loading src/main/java/com/elphel/imagej/tileprocessor/OpticalFlow.java +8 −2 Original line number Diff line number Diff line Loading @@ -5088,7 +5088,7 @@ public class OpticalFlow { // double [][] combo_dsn_final = null; // below ref_index is not necessary the last (fix all where it is supposed to be the last ErsCorrection ers_reference = quadCLTs[ref_index].getErsCorrection(); ErsCorrection ers_reference = quadCLTs[ref_index].getErsCorrection(); // only used in ml_export while (!reuse_video && ((quadCLTs[ref_index].getNumOrient() < min_num_orient) || (quadCLTs[ref_index].getNumAccum() < min_num_interscene))) { if ((quadCLTs[ref_index].getNumAccum() < min_num_interscene) && ((quadCLTs[ref_index].getNumAccum() < quadCLTs[ref_index].getNumOrient())|| Loading Loading @@ -5224,12 +5224,18 @@ public class OpticalFlow { mb_max_gain = clt_parameters.imp.mb_max_gain_inter; } boolean disable_ers = (quadCLTs[ref_index].getNumOrient() < 2); // first orient - no ERS! boolean ers_from_ims = false; // change later boolean ers_from_ims = true; // false; // change later // int ers_mode = (quadCLTs[ref_index].getNumOrient() < 2) ? (ers_from_ims? 2 : 1):0; int ers_mode = 0; // keep // with IMS it is already set during initial orientation. In non-IMS mode if (!ers_from_ims && (quadCLTs[ref_index].getNumOrient() < 2)) { ers_mode = 1; // calculate velocity if (debugLevel > -3) { System.out.println("Setting ERS data from velocity"); } } if (debugLevel > -3) { System.out.println("ers_mode="+ers_mode); } earliest_scene = Interscene.reAdjustPairsLMAInterscene( // after combo dsi is available and preliminary poses are known clt_parameters, // CLTParameters clt_parameters, Loading Loading
src/main/java/com/elphel/imagej/tileprocessor/Interscene.java +6 −5 Original line number Diff line number Diff line Loading @@ -437,7 +437,8 @@ public class Interscene { // int search_rad = clt_parameters.imp.search_rad; // 10; boolean scale_ims_velocities = true; Did_ins_2 d2_ref = quadCLTs[ref_index].did_ins_2; // apply correction to orientation // apply correction to orientation - better not to prevent extra loops. // And it only applies to rotations double [] cam_quat_ref_enu =Imx5.quaternionImsToCam(d2_ref.getQEnu() , ims_mount_atr, ims_ortho); Loading @@ -450,7 +451,7 @@ public class Interscene { ers_reference.addScene(quadCLTs[ref_index].getImageName(), // add reference scene (itself) too scenes_xyzatr[ref_index][0], scenes_xyzatr[ref_index][1], cam_dxyzatr_ref[0], // ZERO3, // ers_scene.getErsXYZ_dt(), cam_dxyzatr_ref[0], // later may overwrite from overlap cam_dxyzatr_ref[1]); // ZERO3);// ers_scene.getErsATR_dt() // Will be used in prepareLMA() quadCLTs[ref_index].getErsCorrection().setErsDt( // set for ref also (should be set before non-ref!) Loading Loading @@ -488,7 +489,7 @@ public class Interscene { double [] scene_abs_atr_enu = Imx5.quatToCamAtr(cam_quat_enu); double [][] ims_scene_xyzatr_enu = {cam_xyz_enu, scene_abs_atr_enu }; // try with xyz? // set initial approximation from IMS, subtract reference XYZATR // predicted bny IMU from the reference scene // predicted by IMU from the reference scene double [][] pose_ims = ErsCorrection.combineXYZATR( ims_scene_xyzatr_enu, ErsCorrection.invertXYZATR(ims_ref_xyzatr_enu)); Loading Loading @@ -613,7 +614,7 @@ public class Interscene { last_corr_xyzatr = ErsCorrection.combineXYZATR ( last_corr_xyzatr, corr_diff); // not used here with IMS: after_spiral == false if (after_spiral && (scene_index < (ref_index-1))) { // need to interpolate skipped scenes // here we expect very small translations/angles, so linear scaling is OK double s = 1.0 / (ref_index - scene_index); Loading Loading @@ -1303,11 +1304,11 @@ public class Interscene { scaled_dxyzatr_dt[0], // (ers_use_xyz? dxyzatr_dt[nscene][0]: ZERO3), //, // dxyzatr_dt[nscene][0], // double [] ers_xyz_dt, scaled_dxyzatr_dt[1]); // dxyzatr_dt[nscene][1]); // double [] ers_atr_dt)(ers_scene_original_xyz_dt); */ quadCLTs[nscene].getErsCorrection().setErsDt( // set for ref also (should be set before non-ref!) QuadCLTCPU.scaleDtToErs( clt_parameters, dxyzatr_dt[nscene])); */ if (dbg_mb_img != null) { boolean show_corrected = false; if (nscene == debug_scene) { Loading
src/main/java/com/elphel/imagej/tileprocessor/OpticalFlow.java +8 −2 Original line number Diff line number Diff line Loading @@ -5088,7 +5088,7 @@ public class OpticalFlow { // double [][] combo_dsn_final = null; // below ref_index is not necessary the last (fix all where it is supposed to be the last ErsCorrection ers_reference = quadCLTs[ref_index].getErsCorrection(); ErsCorrection ers_reference = quadCLTs[ref_index].getErsCorrection(); // only used in ml_export while (!reuse_video && ((quadCLTs[ref_index].getNumOrient() < min_num_orient) || (quadCLTs[ref_index].getNumAccum() < min_num_interscene))) { if ((quadCLTs[ref_index].getNumAccum() < min_num_interscene) && ((quadCLTs[ref_index].getNumAccum() < quadCLTs[ref_index].getNumOrient())|| Loading Loading @@ -5224,12 +5224,18 @@ public class OpticalFlow { mb_max_gain = clt_parameters.imp.mb_max_gain_inter; } boolean disable_ers = (quadCLTs[ref_index].getNumOrient() < 2); // first orient - no ERS! boolean ers_from_ims = false; // change later boolean ers_from_ims = true; // false; // change later // int ers_mode = (quadCLTs[ref_index].getNumOrient() < 2) ? (ers_from_ims? 2 : 1):0; int ers_mode = 0; // keep // with IMS it is already set during initial orientation. In non-IMS mode if (!ers_from_ims && (quadCLTs[ref_index].getNumOrient() < 2)) { ers_mode = 1; // calculate velocity if (debugLevel > -3) { System.out.println("Setting ERS data from velocity"); } } if (debugLevel > -3) { System.out.println("ers_mode="+ers_mode); } earliest_scene = Interscene.reAdjustPairsLMAInterscene( // after combo dsi is available and preliminary poses are known clt_parameters, // CLTParameters clt_parameters, Loading