Commit 278bb738 authored by Andrey Filippov's avatar Andrey Filippov

Debugging correlateInterscene for cuas

parent f6017348
...@@ -812,6 +812,27 @@ public class ImageDtt extends ImageDttCPU { ...@@ -812,6 +812,27 @@ public class ImageDtt extends ImageDttCPU {
} }
public void updateTasksGPU (TpTask [] tp_tasks) {
gpuQuad.setTasks( // copy tp_tasks to the GPU memory
tp_tasks, // TpTask [] tile_tasks,
false, // use_aux); // boolean use_aux)
imgdtt_params.gpu_verify); // boolean verify
// used alternative method to prepare tasks, not centered in the tile centers
// FIXME: change back to false !!!!
// Testing, remove when done
// gpuQuad.resetGeometryCorrection();
// gpuQuad.setConvolutionKernels(true); // set kernels if they are not set already
// gpuQuad.setBayerImages(true); // set Bayer images if this.quadCLT instance has new ones
// Why always NON-UNIFORM grid? Already set in tp_tasks
gpuQuad.execSetTilesOffsets(false); // false); // prepare tiles offsets in GPU memory, using NON-UNIFORM grid (pre-calculated)
// update tp_tasks
gpuQuad.updateTasks(
tp_tasks,
false); // boolean use_aux // while is it in class member? - just to be able to free
}
public void quadCorrTD( public void quadCorrTD(
final ImageDttParameters imgdtt_params, // Now just extra correlation parameters, later will include, most others final ImageDttParameters imgdtt_params, // Now just extra correlation parameters, later will include, most others
final TpTask[] tp_tasks, final TpTask[] tp_tasks,
...@@ -3052,6 +3073,10 @@ public class ImageDtt extends ImageDttCPU { ...@@ -3052,6 +3073,10 @@ public class ImageDtt extends ImageDttCPU {
// This version obeys tp_task order and fills fcorr_td gaps (should be none_) with zeros. // This version obeys tp_task order and fills fcorr_td gaps (should be none_) with zeros.
int [] corr_indices; int [] corr_indices;
if (tp_tasks == null) {
System.out.println("BUG: clt_process_tl_correlations() tp_tasks=null");
return;
}
if (num_acc != null) { // version with float [][][] num_acc, // number of accumulated tiles [tilesY][tilesX][pair] (or null) if (num_acc != null) { // version with float [][][] num_acc, // number of accumulated tiles [tilesY][tilesX][pair] (or null)
corr_indices = gpuQuad.setCorrTilesTd( // .length = 295866 should set num_corr_tiles! corr_indices = gpuQuad.setCorrTilesTd( // .length = 295866 should set num_corr_tiles!
tp_tasks, // final TpTask [] tp_tasks, // data from the reference frame - will be applied to LMW for the integrated correlations tp_tasks, // final TpTask [] tp_tasks, // data from the reference frame - will be applied to LMW for the integrated correlations
......
...@@ -181,10 +181,14 @@ public class Interscene { ...@@ -181,10 +181,14 @@ public class Interscene {
boolean reused_overlap = false; boolean reused_overlap = false;
if (overlap_sequences) { if (overlap_sequences) {
int adjusted_scene_index = ref_index - 1; int adjusted_scene_index = ref_index - 1;
boolean changed = quadCLTs[ref_index].isPhotometricUpdatedAndReset();
if (debugLevel > -3) {
System.out.println("SetInitialOrientationsCenterIms(): Before spawnNoModelQuadCLT() changed = "+changed);
}
for (; adjusted_scene_index >= 0 ; adjusted_scene_index--) { for (; adjusted_scene_index >= 0 ; adjusted_scene_index--) {
// to include ref scene photometric calibration // to include ref scene photometric calibration
// added 05.21.2024: skip if was spawn already // added 05.21.2024: skip if was spawn already
if (quadCLTs[adjusted_scene_index] == null) { if (changed || (quadCLTs[adjusted_scene_index] == null)) {
quadCLTs[adjusted_scene_index] = quadCLTs[ref_index].spawnNoModelQuadCLT( quadCLTs[adjusted_scene_index] = quadCLTs[ref_index].spawnNoModelQuadCLT(
set_channels[adjusted_scene_index].set_name, set_channels[adjusted_scene_index].set_name,
clt_parameters, clt_parameters,
...@@ -910,10 +914,14 @@ public class Interscene { ...@@ -910,10 +914,14 @@ public class Interscene {
false); // boolean use_ERS_roll); false); // boolean use_ERS_roll);
int [] fail_reason = new int[1]; // null or int[1]: 0 - OK, 2 - LMA, 3 - min, 4 - max int [] fail_reason = new int[1]; // null or int[1]: 0 - OK, 2 - LMA, 3 - min, 4 - max
boolean changed = quadCLTs[ref_index].isPhotometricUpdatedAndReset();
if (debugLevel > -3) {
System.out.println("SetInitialOrientationsIms(): Before spawnNoModelQuadCLT() changed = "+changed);
}
for (int scene_index = ref_index - 1; scene_index >= 0 ; scene_index--) { for (int scene_index = ref_index - 1; scene_index >= 0 ; scene_index--) {
// to include ref scene photometric calibration // to include ref scene photometric calibration
// added 05.21.2024: skip if was spawn already // added 05.21.2024: skip if was spawn already
if (quadCLTs[scene_index] == null) { if (changed || (quadCLTs[scene_index] == null)) {
quadCLTs[scene_index] = quadCLTs[ref_index].spawnNoModelQuadCLT( quadCLTs[scene_index] = quadCLTs[ref_index].spawnNoModelQuadCLT(
set_channels[scene_index].set_name, set_channels[scene_index].set_name,
clt_parameters, clt_parameters,
...@@ -1487,10 +1495,14 @@ public class Interscene { ...@@ -1487,10 +1495,14 @@ public class Interscene {
false); // boolean use_ERS_roll); false); // boolean use_ERS_roll);
int [] fail_reason = new int[1]; // null or int[1]: 0 - OK, 2 - LMA, 3 - min, 4 - max int [] fail_reason = new int[1]; // null or int[1]: 0 - OK, 2 - LMA, 3 - min, 4 - max
boolean changed = center_CLT.isPhotometricUpdatedAndReset();
if (debugLevel > -3) {
System.out.println("SetInitialOrientationsCuas(): Before spawnNoModelQuadCLT() changed = "+changed);
}
for (int scene_index = last_index; scene_index >= 0 ; scene_index--) { for (int scene_index = last_index; scene_index >= 0 ; scene_index--) {
// to include ref scene photometric calibration // to include ref scene photometric calibration
// added 05.21.2024: skip if was spawn already // added 05.21.2024: skip if was spawn already
if (quadCLTs[scene_index] == null) { if (changed || (quadCLTs[scene_index] == null)) {
// quadCLTs[scene_index] = quadCLTs[last_index].spawnNoModelQuadCLT( // quadCLTs[scene_index] = quadCLTs[last_index].spawnNoModelQuadCLT(
quadCLTs[scene_index] = center_CLT.spawnNoModelQuadCLT( quadCLTs[scene_index] = center_CLT.spawnNoModelQuadCLT(
set_channels[scene_index].set_name, set_channels[scene_index].set_name,
...@@ -2079,10 +2091,14 @@ public class Interscene { ...@@ -2079,10 +2091,14 @@ public class Interscene {
boolean fpn_rematch = clt_parameters.imp.fpn_rematch; // if false - keep previous boolean fpn_rematch = clt_parameters.imp.fpn_rematch; // if false - keep previous
double [] min_max = {min_offset, max_offset, 0.0} ; // {min, max, actual rms) double [] min_max = {min_offset, max_offset, 0.0} ; // {min, max, actual rms)
int [] fail_reason = new int[1]; // null or int[1]: 0 - OK, 2 - LMA, 3 - min, 4 - max int [] fail_reason = new int[1]; // null or int[1]: 0 - OK, 2 - LMA, 3 - min, 4 - max
boolean changed = quadCLTs[ref_index].isPhotometricUpdatedAndReset();
if (debugLevel > -3) {
System.out.println("SetInitialOrientations(): Before spawnNoModelQuadCLT() changed = "+changed);
}
for (int scene_index = ref_index - 1; scene_index >= 0 ; scene_index--) { for (int scene_index = ref_index - 1; scene_index >= 0 ; scene_index--) {
// to include ref scene photometric calibration // to include ref scene photometric calibration
// added 05.21.2024: skip if was spawn already // added 05.21.2024: skip if was spawn already
if (quadCLTs[scene_index] == null) { if (changed || (quadCLTs[scene_index] == null)) {
quadCLTs[scene_index] = quadCLTs[ref_index].spawnNoModelQuadCLT( quadCLTs[scene_index] = quadCLTs[ref_index].spawnNoModelQuadCLT(
set_channels[scene_index].set_name, set_channels[scene_index].set_name,
clt_parameters, clt_parameters,
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -171,6 +171,7 @@ public class QuadCLTCPU { ...@@ -171,6 +171,7 @@ public class QuadCLTCPU {
double [] lwir_offsets = null; // per image subtracted values double [] lwir_offsets = null; // per image subtracted values
double [] lwir_scales = null; // per image scales double [] lwir_scales = null; // per image scales
double [] lwir_scales2 = null; // per image quadratic scales double [] lwir_scales2 = null; // per image quadratic scales
boolean photometric_updated = true; // first time - as if updated
@Deprecated @Deprecated
double lwir_offset = Double.NaN; // average of lwir_offsets[] double lwir_offset = Double.NaN; // average of lwir_offsets[]
// hot and cold are calculated during autoranging (when generating 4 images for restored (added lwir_offset) // hot and cold are calculated during autoranging (when generating 4 images for restored (added lwir_offset)
...@@ -214,6 +215,21 @@ public class QuadCLTCPU { ...@@ -214,6 +215,21 @@ public class QuadCLTCPU {
public int [] center_clt_num = null; // same size as combo_clt - number of accumulated scenes for this point public int [] center_clt_num = null; // same size as combo_clt - number of accumulated scenes for this point
public int center_clt_width = 0; // image width to save combo_clt (and combo_clt_num) as image public int center_clt_width = 0; // image width to save combo_clt (and combo_clt_num) as image
public boolean isPhotometricUpdated() {
return photometric_updated;
}
public boolean isPhotometricUpdatedAndReset() {
boolean changed = photometric_updated;
photometric_updated = false;
return changed;
}
public void setPhotometricUpdated(boolean updated) {
photometric_updated = updated;
}
public String getImagePath() { public String getImagePath() {
return image_path; return image_path;
} }
......
...@@ -9390,6 +9390,7 @@ if (debugLevel > -100) return true; // temporarily ! ...@@ -9390,6 +9390,7 @@ if (debugLevel > -100) return true; // temporarily !
-1); // debug_level); // int debugLevel) -1); // debug_level); // int debugLevel)
} }
// Does not need to specify reference scene - it is always the last even if out of timestamp order // Does not need to specify reference scene - it is always the last even if out of timestamp order
/*
OpticalFlow.intersceneExport( OpticalFlow.intersceneExport(
clt_parameters, // CLTParameters clt_parameters, clt_parameters, // CLTParameters clt_parameters,
false, // boolean compensate_dsi, false, // boolean compensate_dsi,
...@@ -9399,6 +9400,18 @@ if (debugLevel > -100) return true; // temporarily ! ...@@ -9399,6 +9400,18 @@ if (debugLevel > -100) return true; // temporarily !
colorProcParameters, // ColorProcParameters colorProcParameters, colorProcParameters, // ColorProcParameters colorProcParameters,
clt_parameters.inp.noise_debug_level // clt_parameters.ofp.debug_level_optical - 1); // 1); // -1); // int debug_level); clt_parameters.inp.noise_debug_level // clt_parameters.ofp.debug_level_optical - 1); // 1); // -1); // int debug_level);
); );
*/
OpticalFlow.intersceneExport( // result indexed by COMBO_DSN_TITLES, COMBO_DSN_INDX_***
true, // boolean save_result, // false - do not save
null, // int [] scene_range, // if null -> {0,scenes_in.length-1}
clt_parameters, // CLTParameters clt_parameters,
false, // boolean compensate_dsi,
//// ref_index, // int ref_index,
scenes[indx_ref], // QuadCLT ref_scene,
scenes, // QuadCLT [] scenes,
colorProcParameters, // ColorProcParameters colorProcParameters,
debugLevel); // int debug_level
if (ref_step == 0) { if (ref_step == 0) {
break; break;
} }
......
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