Commit 4e5e1f22 authored by Andrey Filippov's avatar Andrey Filippov

Fixed inter-scene correlation, updated 12.6.0 kernel sources

parent e08db32b
......@@ -78,7 +78,8 @@ import jcuda.nvrtc.nvrtcProgram;
public class GPUTileProcessor {
public static String CUDA_VERSION = JCudaVersion.get();
public static boolean USE_CUDA12 = CUDA_VERSION.startsWith("12.");
public static boolean USE_DS_DP = false; // Use Dynamic Shared memory with Dynamic Parallelism (not implemented)
public static boolean USE_DS_DP = USE_CUDA12; // false; // Use Dynamic Shared memory with Dynamic Parallelism TODO: Split for DP2/shared memory
public static String SOURCE_FOLDER = ""; // where the sources were loaded from - debug feature
String LIBRARY_PATH = "/usr/local/cuda/targets/x86_64-linux/lib/libcudadevrt.a"; // linux
// Can be downloaded and twice extracted from
// https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-cudart-dev-11-2_11.2.152-1_amd64.deb
......@@ -321,6 +322,7 @@ public class GPUTileProcessor {
file = new File(src_dir.getPath(), src_file);
System.out.println("Loading resource "+file);
}
SOURCE_FOLDER = file.getPath();
// System.out.println(file.getAbsolutePath());
String cuFileName = file.getAbsolutePath(); // /home/eyesis/workspace-python3/nvidia_dct8x8/src/dtt8x8.cuh";// "dtt8x8.cuh";
String sourceFile = readFileAsString(cuFileName); // readResourceAsString(cuFileName);
......
......@@ -5725,16 +5725,16 @@ public class OpticalFlow {
int mb_ers_r_index = clt_parameters.imp.mb_ers_r_index;
int mb_all_index = clt_parameters.imp.mb_all_index;
int mb_gain_index_pose = clt_parameters.imp.mb_gain_index_pose; // pose readjust pass to switch to full mb_max_gain from mb_max_gain_inter
boolean disable_ers = (quadCLTs[ref_index].getNumOrient() < mb_ers_index);
boolean disable_ers_y = (quadCLTs[ref_index].getNumOrient() < mb_ers_y_index);
boolean disable_ers_r = (quadCLTs[ref_index].getNumOrient() < mb_ers_r_index);
boolean lma_xyzatr = (quadCLTs[ref_index].getNumOrient() == mb_all_index);
boolean disable_ers = (master_CLT.getNumOrient() < mb_ers_index);
boolean disable_ers_y = (master_CLT.getNumOrient() < mb_ers_y_index);
boolean disable_ers_r = (master_CLT.getNumOrient() < mb_ers_r_index);
boolean lma_xyzatr = (master_CLT.getNumOrient() == mb_all_index);
boolean lma_use_Z = clt_parameters.imp.lma_use_Z; // true; // lpf x and y, re-adjust X,Y,Z,A,T,R with pull for X,Y. Disables
boolean lma_use_R = clt_parameters.imp.lma_use_R; // true; // lpf x and y, re-adjust X,Y,Z,A,T,R with pull for X,Y. Disables
boolean ers_from_ims = true; // false; // change later
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)) {
if (!ers_from_ims && (master_CLT.getNumOrient() < 2)) {
ers_mode = 1; // calculate velocity
if (debugLevel > -3) {
System.out.println("Setting ERS data from velocity");
......@@ -5746,7 +5746,7 @@ public class OpticalFlow {
// on last pass use final max MB correction same as for render (mb_max_gain - typical =5.0),
// for earlier - mb_max_gain_inter (which may be smaller - typical = 2.0)
double mb_max_gain = clt_parameters.imp.mb_max_gain;
if (quadCLTs[ref_index].getNumOrient() < mb_gain_index_pose) { // (min_num_orient - 1)) {
if (master_CLT.getNumOrient() < mb_gain_index_pose) { // (min_num_orient - 1)) {
mb_max_gain = clt_parameters.imp.mb_max_gain_inter;
}
// TODO: Implement for CUAS **************************************************
......@@ -5812,9 +5812,9 @@ public class OpticalFlow {
null, // String path, // full name with extension or w/o path to use x3d directory
debugLevel+1);
if (generate_egomotion) {
String ego_path = quadCLTs[ref_index].getX3dDirectory()+Prefs.getFileSeparator()+
quadCLTs[ref_index].getImageName()+
"-ego-"+quadCLTs[ref_index].getNumOrient()+".csv";
String ego_path = master_CLT.getX3dDirectory()+Prefs.getFileSeparator()+
master_CLT.getImageName()+
"-ego-"+master_CLT.getNumOrient()+".csv";
String ego_comment = null;
Interscene.generateEgomotionTable(
clt_parameters, // CLTParameters clt_parameters,
......@@ -5884,7 +5884,7 @@ public class OpticalFlow {
System.out.println("**** Running LY adjustments *****");
}
// Calculate and fill per-scene target disparities as scene.dsrbg
double [] ref_target_disparity=quadCLTs[ref_index].getDLS()[0]; // 0];
double [] ref_target_disparity=master_CLT.getDLS()[0]; // 0];
double [][] interpolated_disparities = intepolateSceneDisparity(
clt_parameters, // final CLTParameters clt_parameters,
quadCLTs, // final QuadCLT [] scenes,
......@@ -5930,7 +5930,7 @@ public class OpticalFlow {
/// "-INTER-INTRA-LMA", // String suffix,
/// 0, // int num_slices, // (0 - all)
/// null); // int [] wh);
combo_dsn_final =quadCLTs[ref_index].restoreComboDSI(true); // also sets quadCLTs[ref_index].dsi and blue sky
combo_dsn_final =master_CLT.restoreComboDSI(true); // also sets quadCLTs[ref_index].dsi and blue sky
}
double [][] combo_dsn_final_filtered =
......@@ -5938,7 +5938,7 @@ public class OpticalFlow {
true, // boolean use_conf, // use configuration parameters, false - use following
clt_parameters, // CLTParameters clt_parameters,
combo_dsn_final, // double [][] combo_dsn_final, // dls,
quadCLTs[ref_index], // QuadCLT scene,
master_CLT, // QuadCLT scene,
debugLevel); // int debugLevel);// > 0
// replace
runPhotometric(
......@@ -5956,17 +5956,17 @@ public class OpticalFlow {
} else {
if (debugLevel> -3) {
System.out.println("Using photometric calibration from scene "+quadCLTs[ref_index].getPhotometricScene());
System.out.println("Using photometric calibration from scene "+master_CLT.getPhotometricScene());
}
}
// only now copy photometric to main instance
if (!reuse_video) {
quadCLT_main.setLwirOffsets(quadCLTs[ref_index].getLwirOffsets());
quadCLT_main.setLwirScales (quadCLTs[ref_index].getLwirScales ());
quadCLT_main.setLwirScales2(quadCLTs[ref_index].getLwirScales2());
quadCLT_main.setPhotometricScene(quadCLTs[ref_index].getPhotometricScene());
quadCLT_main.setLwirOffsets(master_CLT.getLwirOffsets());
quadCLT_main.setLwirScales (master_CLT.getLwirScales ());
quadCLT_main.setLwirScales2(master_CLT.getLwirScales2());
quadCLT_main.setPhotometricScene(master_CLT.getPhotometricScene());
if (debugLevel> -3) {
System.out.println("Applied photometric calibration from scene "+quadCLTs[ref_index].getPhotometricScene()+
System.out.println("Applied photometric calibration from scene "+master_CLT.getPhotometricScene()+
" to quadCLT_main, so it will be applied to the next sequences and saved in config file");
}
}
......@@ -5978,7 +5978,7 @@ public class OpticalFlow {
clt_parameters, // CLTParameters clt_parameters,
quadCLTs, // QuadCLT [] quadCLTs,
// ref_index, // int ref_index,
quadCLTs[ref_index], // QuadCLT ref_scene, // may be one of quadCLTs or center_CLT
master_CLT, // QuadCLT ref_scene, // may be one of quadCLTs or center_CLT
earliest_scene, // int earliest_scene,
quat_rms, // double [] rms // null or double[2];
enu_corr, //double [] enu_corr,
......@@ -5990,11 +5990,11 @@ public class OpticalFlow {
" full RMS="+quat_rms[0]+" ("+quat_rms[2]+"), pure RMS="+quat_rms[1]+" ("+quat_rms[3]+")");
QuadCLTCPU.showQuatCorr(quatCorr,enu_corr);
}
quadCLTs[ref_index].setQuatCorr(quatCorr);
master_CLT.setQuatCorr(quatCorr);
quadCLT_main.setQuatCorr(quatCorr);
quadCLTs[ref_index].setENUCorrMetric(enu_corr);
master_CLT.setENUCorrMetric(enu_corr);
quadCLT_main.setENUCorrMetric(enu_corr);
quadCLTs[ref_index].saveInterProperties( // save properties for interscene processing (extrinsics, ers, ...)
master_CLT.saveInterProperties( // save properties for interscene processing (extrinsics, ers, ...)
null, // String path, // full name with extension or w/o path to use x3d directory
debugLevel+1);
StringBuffer sb = new StringBuffer();
......@@ -6009,7 +6009,7 @@ public class OpticalFlow {
sb.append("compass: ATR(deg)=["+corr_degrees[0]+", "+corr_degrees[1]+", "+corr_degrees[2]+"]\n");
sb.append("compass: ENU corr (m)=["+enu_corr[0]+", "+enu_corr[1]+", "+enu_corr[2]+"]\n");
sb.append("------------------------\n\n");
quadCLTs[ref_index].saveStringInModelDirectory(sb.toString(),QuadCLT.IMU_CALIB_LOGS_SUFFIX); // String suffix)
master_CLT.saveStringInModelDirectory(sb.toString(),QuadCLT.IMU_CALIB_LOGS_SUFFIX); // String suffix)
if (debugLevel > -3) {
System.out.print(sb.toString());
}
......@@ -6120,7 +6120,7 @@ public class OpticalFlow {
// using master_CLT instead of the quadCLTs[ref_index]
if (generate_egomotion) {
boolean ego_show = !clt_parameters.batch_run; //true;
String ego_path = quadCLTs[ref_index].getX3dDirectory()+Prefs.getFileSeparator()+
String ego_path = master_CLT.getX3dDirectory()+Prefs.getFileSeparator()+
master_CLT.getImageName()+
master_CLT.correctionsParameters.egomotionSuffix;
String ego_comment = null;
......@@ -6161,7 +6161,7 @@ public class OpticalFlow {
boolean use_parallel_proj = false; // true;
int [] hdr_whs = new int[3];
double [] hdr_x0y0 = new double[2];
double [][] to_ground_xyzatr = quadCLTs[ref_index].getGroundNoIms(
double [][] to_ground_xyzatr = master_CLT.getGroundNoIms(
clt_parameters, // CLTParameters clt_parameters,
use_lma, // boolean use_lma,
use_parallel_proj, // boolean use_parallel_proj,
......@@ -6175,8 +6175,8 @@ public class OpticalFlow {
hdr_x0y0, // double [] x0y0, // initialize to double[2] to return width, height
hdr_whs, // int [] whs, // initialize to int[3] to return {width, height, scale reduction}
debugLevel); // int debug_level
quadCLTs[ref_index].getErsCorrection().printVectors (to_ground_xyzatr[0], to_ground_xyzatr[1]);
double [][] to_ground_xyzatr_ims = quadCLTs[ref_index].getGroundIms(
master_CLT.getErsCorrection().printVectors (to_ground_xyzatr[0], to_ground_xyzatr[1]);
double [][] to_ground_xyzatr_ims = master_CLT.getGroundIms(
clt_parameters, // CLTParameters clt_parameters,
use_lma, // boolean use_lma,
use_parallel_proj, // boolean use_parallel_proj,
......@@ -6190,7 +6190,7 @@ public class OpticalFlow {
hdr_x0y0, // double [] x0y0, // initialize to double[2] to return width, height
hdr_whs, // int [] whs, // initialize to int[3] to return {width, height, scale reduction}
debugLevel); // int debug_level
quadCLTs[ref_index].getErsCorrection().printVectors (to_ground_xyzatr_ims[0], to_ground_xyzatr_ims[1]);
master_CLT.getErsCorrection().printVectors (to_ground_xyzatr_ims[0], to_ground_xyzatr_ims[1]);
System.out.println("getGroundIms Done");
}
......@@ -6205,7 +6205,7 @@ public class OpticalFlow {
ref_index, // int ref_index,
debugLevel); // int debugLevel)
System.out.println("buildSeries(): ABORTED after test_ers"); //
return quadCLTs[ref_index].getX3dTopDirectory();
return master_CLT.getX3dTopDirectory();
}
// generates 3-d modes, colors, stereos, tiffs/videos
......@@ -6446,8 +6446,8 @@ public class OpticalFlow {
fov_tiles = new Rectangle(0, 0, tilesX, tilesY);
}
FloatProcessor fp = new FloatProcessor(
fov_tiles.width*quadCLTs[ref_index].getTileProcessor().getTileSize(),
fov_tiles.height*quadCLTs[ref_index].getTileProcessor().getTileSize());
fov_tiles.width*master_CLT.getTileProcessor().getTileSize(),
fov_tiles.height*master_CLT.getTileProcessor().getTileSize());
boolean merge_all = clt_parameters.imp.merge_all;
if (mode3d < 1) {
......@@ -6605,7 +6605,7 @@ public class OpticalFlow {
video:
{
try {
avi_path=quadCLTs[ref_index].saveAVIInModelDirectory(
avi_path=master_CLT.saveAVIInModelDirectory(
!generate_mapped, // boolean dry_run,
null, // "GPU-SHIFTED-D"+clt_parameters.disparity, // String suffix,
mode_avi, // int avi_mode,
......@@ -6703,7 +6703,7 @@ public class OpticalFlow {
/// "-INTER-INTRA-LMA", // String suffix,
/// 0, // int num_slices, // (0 - all)
/// null); // int [] wh);
combo_dsn_final =quadCLTs[ref_index].restoreComboDSI(true); // also sets quadCLTs[ref_index].dsi and blue sky
combo_dsn_final =master_CLT.restoreComboDSI(true); // also sets quadCLTs[ref_index].dsi and blue sky
}
......@@ -6718,29 +6718,29 @@ public class OpticalFlow {
true, // boolean use_conf, // use configuration parameters, false - use following
clt_parameters, // CLTParameters clt_parameters,
dls, // double [][] dls
quadCLTs[ref_index], // QuadCLT scene,
master_CLT, // QuadCLT scene,
dbg_condition); // int debug_level)
double [] disparity = ds[0];
double [] strength = ds[1];
double [][]szxy = getSceneSZXY(
quadCLTs[ref_index], // QuadCLT scene,
master_CLT, // QuadCLT scene,
range_disparity_offset, // double disparity_offset,
range_min_strength, // double min_strength,
range_max, // double max_range,
disparity, // double [] disparity,
strength); // double [] strength)
String [] szxy_titles = {"strength", "Z(m)", "X(m)", "Y(m)"};
TileProcessor tp = quadCLTs[ref_index].getTileProcessor();
TileProcessor tp = master_CLT.getTileProcessor();
int tilesX = tp.getTilesX();
int tilesY = tp.getTilesY();
ImagePlus impSZXY = ShowDoubleFloatArrays.makeArrays(
szxy,
tilesX,
tilesY,
quadCLTs[ref_index].getImageName()+"_SZXY",
master_CLT.getImageName()+"_SZXY",
szxy_titles);
if (export_dsi_image) {
quadCLTs[ref_index].saveImagePlusInModelDirectory(
master_CLT.saveImagePlusInModelDirectory(
null, // "GPU-SHIFTED-BACKGROUND", // String suffix,
impSZXY); // ImagePlus imp)
}
......@@ -6757,7 +6757,7 @@ public class OpticalFlow {
clt_parameters, // CLTParameters clt_parameters,
colorProcParameters, // ColorProcParameters colorProcParameters,
rgbParameters, // EyesisCorrectionParameters.RGBParameters rgbParameters,
quadCLTs[ref_index], // quadCLTs.length-1], // quadCLT_main, // final QuadCLT parameter_scene, // to use for rendering parameters in multi-series sequences
master_CLT, // quadCLTs.length-1], // quadCLT_main, // final QuadCLT parameter_scene, // to use for rendering parameters in multi-series sequences
// if null - use reference scene
quadCLTs, // QuadCLT [] scenes,
ref_index, // final int ref_index,
......@@ -6778,9 +6778,9 @@ public class OpticalFlow {
titles[i] = String.format("disparity=%.3f pix",ct_min+ct_step*i);
}
String suffix = String.format("-CT_SCAN_%.3f_%.3f_%.3f_%d",ct_min,ct_max,ct_step,ct_expand);
final int transform_size= quadCLTs[ref_index].getTileProcessor().getTileSize();
final int tilesX = quadCLTs[ref_index].getTileProcessor().getTilesX();
final int tilesY = quadCLTs[ref_index].getTileProcessor().getTilesY();
final int transform_size= master_CLT.getTileProcessor().getTileSize();
final int tilesX = master_CLT.getTileProcessor().getTilesX();
final int tilesY = master_CLT.getTileProcessor().getTilesY();
int nslices = 0;
for (int n = 0; n < ct_scans.length; n++) {
nslices = Math.max(nslices, ct_scans[n].length);
......@@ -6793,7 +6793,7 @@ public class OpticalFlow {
ct_scan_slice[n] = ct_scans[n][nslice];
}
}
quadCLTs[ref_index].saveDoubleArrayInModelDirectory(
master_CLT.saveDoubleArrayInModelDirectory(
suffix+"-SLICE"+nslice, // String suffix,
titles, // String [] labels, // or null
ct_scan_slice, // double [][] data,
......@@ -6811,7 +6811,7 @@ public class OpticalFlow {
clt_parameters, // CLTParameters clt_parameters,
colorProcParameters, // ColorProcParameters colorProcParameters,
rgbParameters, // EyesisCorrectionParameters.RGBParameters rgbParameters,
quadCLTs[ref_index], // quadCLTs.length-1], // quadCLT_main, // final QuadCLT parameter_scene, // to use for rendering parameters in multi-series sequences
master_CLT, // quadCLTs.length-1], // quadCLT_main, // final QuadCLT parameter_scene, // to use for rendering parameters in multi-series sequences
// if null - use reference scene
quadCLTs, // QuadCLT [] scenes,
ref_index, // final int ref_index,
......@@ -6835,7 +6835,7 @@ public class OpticalFlow {
clt_parameters, // CLTParameters clt_parameters,
colorProcParameters, // ColorProcParameters colorProcParameters,
rgbParameters, // EyesisCorrectionParameters.RGBParameters rgbParameters,
quadCLTs[ref_index], // quadCLTs.length-1], // quadCLT_main, // final QuadCLT parameter_scene, // to use for rendering parameters in multi-series sequences
master_CLT, // quadCLTs.length-1], // quadCLT_main, // final QuadCLT parameter_scene, // to use for rendering parameters in multi-series sequences
// if null - use reference scene
quadCLTs, // QuadCLT [] scenes,
ref_index, // final int ref_index,
......@@ -6857,7 +6857,7 @@ public class OpticalFlow {
clt_parameters, // CLTParameters clt_parameters,
colorProcParameters, // ColorProcParameters colorProcParameters,
rgbParameters, // EyesisCorrectionParameters.RGBParameters rgbParameters,
quadCLTs[ref_index], // quadCLTs.length-1], // quadCLT_main, // final QuadCLT parameter_scene, // to use for rendering parameters in multi-series sequences
master_CLT, // quadCLTs.length-1], // quadCLT_main, // final QuadCLT parameter_scene, // to use for rendering parameters in multi-series sequences
// if null - use reference scene
quadCLTs, // QuadCLT [] scenes,
ref_index, // final int ref_index,
......@@ -6878,7 +6878,7 @@ public class OpticalFlow {
boolean export_terrain_sequence = true;
if (export_terrain_sequence && !clt_parameters.imp.lock_position) {
combo_dsn_final =quadCLTs[ref_index].restoreComboDSI(true);
combo_dsn_final =master_CLT.restoreComboDSI(true);
if ((combo_dsn_final.length <= COMBO_DSN_INDX_TERRAIN) || (combo_dsn_final[COMBO_DSN_INDX_TERRAIN] == null)) {
System.out.println ("No terrain data available");
} else {
......@@ -6904,7 +6904,7 @@ public class OpticalFlow {
master_CLT, // ref_index, // int ref_index,
threadsMax, // int threadsMax,
debugLevel); // int debugLevel);
quadCLTs[ref_index].saveImagePlusInModelDirectory(
master_CLT.saveImagePlusInModelDirectory(
null, // "GPU-SHIFTED-D"+clt_parameters.disparity, // String suffix,
imp_terrain); // imp_scenes); // ImagePlus imp)
}
......@@ -6933,7 +6933,7 @@ public class OpticalFlow {
master_CLT, // ref_index, // int ref_index,
threadsMax, // int threadsMax,
debugLevel); // int debugLevel);
quadCLTs[ref_index].saveImagePlusInModelDirectory(
master_CLT.saveImagePlusInModelDirectory(
null, // "GPU-SHIFTED-D"+clt_parameters.disparity, // String suffix,
imp_elevation); // imp_scenes); // ImagePlus imp)
}
......@@ -6958,7 +6958,7 @@ public class OpticalFlow {
if (export_images) {
if (combo_dsn_final == null) {
combo_dsn_final =quadCLTs[ref_index].restoreComboDSI(true); // also sets quadCLTs[ref_index].dsi and blue sky
combo_dsn_final =master_CLT.restoreComboDSI(true); // also sets quadCLTs[ref_index].dsi and blue sky
}
double [][] dls = {
......@@ -6970,7 +6970,7 @@ public class OpticalFlow {
true, // boolean use_conf, // use configuration parameters, false - use following
clt_parameters, // CLTParameters clt_parameters,
dls, // double [][] dls
quadCLTs[ref_index], // QuadCLT scene,
master_CLT, // QuadCLT scene,
debugLevel);
double [] fg_disparity = ds_fg[0]; // combo_dsn_final[COMBO_DSN_INDX_DISP_FG];
......@@ -6998,7 +6998,7 @@ public class OpticalFlow {
true, // boolean use_conf, // use configuration parameters, false - use following
clt_parameters, // CLTParameters clt_parameters,
dls_bg, // double [][] dls
quadCLTs[ref_index], // QuadCLT scene,
master_CLT, // QuadCLT scene,
debugLevel);
double [] bg_disparity = ds_bg[0]; // combo_dsn_final[COMBO_DSN_INDX_DISP_FG];
......@@ -7015,14 +7015,14 @@ public class OpticalFlow {
null, // double [][] ref_pXpYD, // alternative to disparity_ref when reference is not uniform
ZERO3, // final double [] scene_xyz, // camera center in world coordinates
ZERO3, // new double[] {.1,0.1,.1}, // ZERO3, // final double [] scene_atr, // camera orientation relative to world frame
quadCLTs[ref_index], // final QuadCLT scene,
quadCLTs[ref_index], // final QuadCLT ref_scene, // now - may be null - for testing if scene is rotated ref
master_CLT, // final QuadCLT scene,
master_CLT, // final QuadCLT ref_scene, // now - may be null - for testing if scene is rotated ref
true, // toRGB, // final boolean toRGB,
clt_parameters.imp.show_color_nan, // boolean show_nan
"GPU-SHIFTED-D"+clt_parameters.disparity, // String suffix,
threadsMax, // int threadsMax,
debugLevel); // int debugLevel)
quadCLTs[ref_index].saveImagePlusInModelDirectory(
master_CLT.saveImagePlusInModelDirectory(
null, // "GPU-SHIFTED-D"+clt_parameters.disparity, // String suffix,
imp_constant); // ImagePlus imp)
ImagePlus imp_constant_mono = QuadCLT.renderGPUFromDSI(
......@@ -7034,14 +7034,14 @@ public class OpticalFlow {
null, // double [][] ref_pXpYD, // alternative to disparity_ref when reference is not uniform
ZERO3, // final double [] scene_xyz, // camera center in world coordinates
ZERO3, // final double [] scene_atr, // camera orientation relative to world frame
quadCLTs[ref_index], // final QuadCLT scene,
quadCLTs[ref_index], // final QuadCLT ref_scene, // now - may be null - for testing if scene is rotated ref
master_CLT, // final QuadCLT scene,
master_CLT, // final QuadCLT ref_scene, // now - may be null - for testing if scene is rotated ref
false, // toRGB, // final boolean toRGB,
clt_parameters.imp.show_mono_nan, // boolean show_nan
"GPU-SHIFTED-D"+clt_parameters.disparity, // String suffix,
threadsMax, // int threadsMax,
debugLevel); // int debugLevel)
quadCLTs[ref_index].saveImagePlusInModelDirectory(
master_CLT.saveImagePlusInModelDirectory(
null, // "GPU-SHIFTED-D"+clt_parameters.disparity, // String suffix,
imp_constant_mono); // ImagePlus imp)
if (show_images) {
......@@ -7089,12 +7089,12 @@ public class OpticalFlow {
ds_fg, // final double [][] dsrbg_camera_in,
xyz_offset, // _inverse[0], // final double [] scene_xyz, // camera center in world coordinates
atr_offset, // _inverse[1], // final double [] scene_atr, // camera orientation relative to world frame
quadCLTs[ref_index], // final QuadCLT scene_QuadClt,
quadCLTs[ref_index], // final QuadCLT reference_QuadClt,
master_CLT, // final QuadCLT scene_QuadClt,
master_CLT, // final QuadCLT reference_QuadClt,
8); // iscale); // final int iscale);
if (debug_ds_fg_virt){
int dbgX = quadCLTs[ref_index].getTileProcessor().getTilesX();
int dbgY = quadCLTs[ref_index].getTileProcessor().getTilesY();
int dbgX = master_CLT.getTileProcessor().getTilesX();
int dbgY = master_CLT.getTileProcessor().getTilesY();
double [][] dbg_img = new double[][] {ds_fg[0],ds_fg_virt[0],ds_fg[1],ds_fg_virt[1]};
ShowDoubleFloatArrays.showArrays(
dbg_img,
......@@ -7115,14 +7115,14 @@ public class OpticalFlow {
null, // double [][] ref_pXpYD, // alternative to disparity_ref when reference is not uniform
xyz_offset, // ZERO3, // final double [] scene_xyz, // camera center in world coordinates
ZERO3, // final double [] scene_atr, // camera orientation relative to world frame
quadCLTs[ref_index], // final QuadCLT scene,
quadCLTs[ref_index], // final QuadCLT ref_scene, // now - may be null - for testing if scene is rotated ref
master_CLT, // final QuadCLT scene,
master_CLT, // final QuadCLT ref_scene, // now - may be null - for testing if scene is rotated ref
true, // toRGB, // final boolean toRGB,
clt_parameters.imp.show_color_nan,
scenes_suffix+"GPU-SHIFTED-FOREGROUND", // String suffix,
threadsMax, // int threadsMax,
debugLevel); // int debugLevel)
quadCLTs[ref_index].saveImagePlusInModelDirectory(
master_CLT.saveImagePlusInModelDirectory(
null, // "GPU-SHIFTED-FOREGROUND", // String suffix,
imp_fg); // ImagePlus imp)
ImagePlus imp_fg_mono = QuadCLT.renderGPUFromDSI(
......@@ -7134,14 +7134,14 @@ public class OpticalFlow {
null, // double [][] ref_pXpYD, // alternative to disparity_ref when reference is not uniform
xyz_offset, // ZERO3, // final double [] scene_xyz, // camera center in world coordinates
ZERO3, // final double [] scene_atr, // camera orientation relative to world frame
quadCLTs[ref_index], // final QuadCLT scene,
quadCLTs[ref_index], // final QuadCLT ref_scene, // now - may be null - for testing if scene is rotated ref
master_CLT, // final QuadCLT scene,
master_CLT, // final QuadCLT ref_scene, // now - may be null - for testing if scene is rotated ref
false, // toRGB, // final boolean toRGB,
clt_parameters.imp.show_mono_nan,
scenes_suffix+"GPU-SHIFTED-FOREGROUND", // String suffix,
threadsMax, // int threadsMax,
debugLevel); // int debugLevel)
quadCLTs[ref_index].saveImagePlusInModelDirectory(
master_CLT.saveImagePlusInModelDirectory(
null, // "GPU-SHIFTED-FOREGROUND", // String suffix,
imp_fg_mono); // ImagePlus imp)
if (show_images && show_images_bgfg) {
......@@ -7162,14 +7162,14 @@ public class OpticalFlow {
null, // double [][] ref_pXpYD, // alternative to disparity_ref when reference is not uniform
ZERO3, // final double [] scene_xyz, // camera center in world coordinates
ZERO3, // final double [] scene_atr, // camera orientation relative to world frame
quadCLTs[ref_index], // final QuadCLT scene,
quadCLTs[ref_index], // final QuadCLT ref_scene, // now - may be null - for testing if scene is rotated ref
true, // final boolean toRGB,
master_CLT, // final QuadCLT scene,
master_CLT, // final QuadCLT ref_scene, // now - may be null - for testing if scene is rotated ref
true, // final boolean toRGB,
clt_parameters.imp.show_color_nan,
"GPU-SHIFTED-BACKGROUND", // String suffix,
threadsMax, // int threadsMax,
debugLevel); // int debugLevel)
quadCLTs[ref_index].saveImagePlusInModelDirectory(
master_CLT.saveImagePlusInModelDirectory(
null, // "GPU-SHIFTED-BACKGROUND", // String suffix,
imp_bg); // ImagePlus imp)
ImagePlus imp_bg_mono = QuadCLT.renderGPUFromDSI(
......@@ -7181,14 +7181,14 @@ public class OpticalFlow {
null, // double [][] ref_pXpYD, // alternative to disparity_ref when reference is not uniform
ZERO3, // final double [] scene_xyz, // camera center in world coordinates
ZERO3, // final double [] scene_atr, // camera orientation relative to world frame
quadCLTs[ref_index], // final QuadCLT scene,
quadCLTs[ref_index], // final QuadCLT ref_scene, // now - may be null - for testing if scene is rotated ref
master_CLT, // final QuadCLT scene,
master_CLT, // final QuadCLT ref_scene, // now - may be null - for testing if scene is rotated ref
false, // final boolean toRGB,
clt_parameters.imp.show_mono_nan,
"GPU-SHIFTED-BACKGROUND", // String suffix,
threadsMax, // int threadsMax,
debugLevel); // int debugLevel)
quadCLTs[ref_index].saveImagePlusInModelDirectory(
master_CLT.saveImagePlusInModelDirectory(
null, // "GPU-SHIFTED-BACKGROUND", // String suffix,
imp_bg_mono); // ImagePlus imp)
if (show_images && show_images_bgfg) {
......@@ -7206,7 +7206,7 @@ public class OpticalFlow {
/// "-INTER-INTRA-LMA", // String suffix,
/// 0, // int num_slices, // (0 - all)
/// null); // int [] wh);
combo_dsn_final =quadCLTs[ref_index].restoreComboDSI(true); // also sets quadCLTs[ref_index].dsi and blue sky
combo_dsn_final =master_CLT.restoreComboDSI(true); // also sets quadCLTs[ref_index].dsi and blue sky
}
double [][] combo_dsn_final_filtered =
......@@ -7214,7 +7214,7 @@ public class OpticalFlow {
true, // boolean use_conf, // use configuration parameters, false - use following
clt_parameters, // CLTParameters clt_parameters,
combo_dsn_final, // double [][] combo_dsn_final, // dls,
quadCLTs[ref_index], // QuadCLT scene,
master_CLT, // QuadCLT scene,
debugLevel); // int debugLevel);// > 0
......@@ -7255,7 +7255,10 @@ public class OpticalFlow {
String bkp_sourceDirectory = quadCLT_main.correctionsParameters.sourceDirectory;
String [] bkp_sourcePaths = quadCLT_main.correctionsParameters.sourcePaths;
boolean bkp_use_set_dirs = quadCLT_main.correctionsParameters.use_set_dirs;
quadCLTs[ref_index].saveConfInModelDirectory(); // save all (global) configurations in model/version directory
master_CLT.saveConfInModelDirectory(); // save all (global) configurations in model/version directory
if (master_CLT != quadCLTs[ref_index]) {
quadCLTs[ref_index].saveConfInModelDirectory(); // save all (global) configurations in model/version directory
}
quadCLT_main.correctionsParameters.linkedModels = bkp_linkedModels;
quadCLT_main.correctionsParameters.linkedCenters = bkp_linkedCenters;
/// quadCLT_main.correctionsParameters.cuasSeed = bkp_cuasSeed;
......@@ -7270,7 +7273,7 @@ public class OpticalFlow {
System.out.println("buildSeries(): DONE"); //
// String top_dir0=quadCLTs[ref_index].getX3dTopDirectory();
return quadCLTs[ref_index].getX3dTopDirectory(); // top_dir; //
return quadCLTs[ref_index].getX3dTopDirectory(); // top_dir; // keep?
}
public void adjustLYSeries(
......
......@@ -947,11 +947,9 @@ extern "C" __global__ void correlate2D_inter( // only results in TD
float * gpu_corrs) // correlation output data
{
dim3 threads0(CONVERT_DIRECT_INDEXING_THREADS, 1, 1);
dim3 blocks0 ((num_tiles*num_tiles + CONVERT_DIRECT_INDEXING_THREADS -1) >> CONVERT_DIRECT_INDEXING_THREADS_LOG2,1, 1);
dim3 blocks0 ((num_tiles + CONVERT_DIRECT_INDEXING_THREADS -1) >> CONVERT_DIRECT_INDEXING_THREADS_LOG2,1, 1);
dim3 threads_corr(CORR_THREADS_PER_TILE, CORR_TILES_PER_BLOCK, 1);
// dim3 grid_corr((num_corr_tiles_wo_sum + CORR_TILES_PER_BLOCK-1) / CORR_TILES_PER_BLOCK,1,1);
dim3 grid_corr((num_cams + CORR_TILES_PER_BLOCK-1) / CORR_TILES_PER_BLOCK,1,1);
dim3 grid_combine((num_tiles + CORR_TILES_PER_BLOCK-1) / CORR_TILES_PER_BLOCK,1,1);
if (threadIdx.x == 0) { // only 1 thread, 1 block
......@@ -959,6 +957,7 @@ extern "C" __global__ void correlate2D_inter( // only results in TD
if (num_sel_sensors > 0){
// try with null tp_tasks to use same sequence from GPU memory
*pnum_corr_tiles = 0;
dim3 grid_corr((num_tiles * num_sel_sensors + CORR_TILES_PER_BLOCK-1) / CORR_TILES_PER_BLOCK,1,1);
index_inter_correlate<<<blocks0,threads0, 0, cudaStreamFireAndForget>>>(
num_cams, // int num_cams,
sel_sensors, // int sel_sensors,
......@@ -967,12 +966,8 @@ extern "C" __global__ void correlate2D_inter( // only results in TD
tilesx, // int width, // number of tiles in a row
gpu_corr_indices, // int * gpu_corr_indices, // array of correlation tasks
pnum_corr_tiles); // int * pnum_corr_tiles); // pointer to the length of correlation tasks array
/// cudaDeviceSynchronize();
/// __device__ int num_corr_tiles_with_sum = (*pnum_corr_tiles);
/// int num_corr_tiles_wo_sum = num_corr_tiles_with_sum * num_sel_sensors/ (num_sel_sensors + 1); // remove sum from count
/// dim3 threads_corr(CORR_THREADS_PER_TILE, CORR_TILES_PER_BLOCK, 1);
/// dim3 grid_corr((num_corr_tiles_wo_sum + CORR_TILES_PER_BLOCK-1) / CORR_TILES_PER_BLOCK,1,1);
correlate2D_inter_inner<<<grid_corr,threads_corr, 0, cudaStreamTailLaunch>>>( // will only process to TD, no normalisations and back conversion
correlate2D_inter_inner<<<grid_corr,threads_corr, 0, cudaStreamTailLaunch>>>( // will only process to TD, no normalizations and back conversion
num_cams, // int num_cams,
num_sel_sensors, // int num_sel_sensors, // number of sensors to correlate (not counting sum of all)
gpu_clt, // float ** gpu_clt, // [num_cams] ->[TILES-Y][TILES-X][colors][DTT_SIZE*DTT_SIZE]
......@@ -985,7 +980,7 @@ extern "C" __global__ void correlate2D_inter( // only results in TD
gpu_corr_indices, // int * gpu_corr_indices, // packed tile + sensor (0xff - sum)
corr_stride, // size_t corr_stride, // in floats
gpu_corrs); // float * gpu_corrs) // correlation output data (either pixel domain or transform domain
/// dim3 grid_combine((num_tiles + CORR_TILES_PER_BLOCK-1) / CORR_TILES_PER_BLOCK,1,1);
combine_inter<<<grid_combine,threads_corr, 0, cudaStreamTailLaunch>>>( // combine per-senor interscene correlations
num_sel_sensors, // int num_sel_sensors, // number of sensors to correlate (not counting sum of all)
pnum_corr_tiles, //num_corr_tiles_with_sum, // int num_corr_tiles, // number of correlation tiles to process (here it includes sum)
......@@ -2771,7 +2766,7 @@ extern "C" __global__ void convert_direct( // called with a single block, singl
//__device__
*pnum_active_tiles = 0; // already _device_
int task_size = get_task_size(num_cams);
index_direct<<<blocks0,threads0, 0, cudaStreamFireAndForget>>>( // cudaStreamFireAndForget>>>(
index_direct<<<blocks0,threads0, 0, cudaStreamFireAndForget>>>(
task_size, // int task_size, // flattened task size in 4-byte floats
gpu_ftasks, // float * gpu_ftasks, // flattened tasks, 27 floats for quad EO, 99 floats for LWIR16
num_tiles, //int num_tiles, // number of tiles in task
......
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