Commit e5955421 authored by Andrey Filippov's avatar Andrey Filippov

New ROI and save enables

parent 2dea0a92
package com.elphel.imagej.cuas.rt;
import java.awt.Rectangle;
import java.nio.file.Path;
import com.elphel.imagej.cameras.CLTParameters;
......@@ -167,6 +168,10 @@ public class CuasDetectRT {
int curt_vel_radius = clt_parameters.imp.curt_vel_radius;
double[] curt_temp_weights = clt_parameters.imp.curt_temp_weights.clone();
boolean curt_save_c5full = clt_parameters.imp.curt_save_c5full;
boolean curt_save_c5rect = clt_parameters.imp.curt_save_c5rect;
Rectangle curt_save_select = clt_parameters.imp.curt_save_select;
// Initialize LoG and other kernel parameters, calculate LoG first, show results
int kernel3d3_rad = 1;
......@@ -278,7 +283,7 @@ public class CuasDetectRT {
// System.arraycopy(dpixels_log, 1, dpixels_pyramid[0], 0, dpixels_pyramid[0].length);
int center9 = 4;
int num_hist_5d = cuasRTUtils.getNumHist();
boolean save_5d_pixels = debugLevel > -4;
boolean save_5d_pixels = curt_save_c5full; // debugLevel > -4;
String title_conv5d = getBaseName()+SUFFIX_CONV5D+"-PSF"+d2s(cuasRTUtils.getPsfRadius())+
"-KR"+d2s(cuasRTUtils.getKernel2dRadius())+"-NHIST"+num_hist_5d+
"-VELRAD"+curt_vel_radius+"-VELDEC"+curt_vel_decimate;
......
......@@ -1146,12 +1146,19 @@ min_str_neib_fpn 0.35
public int curt_vel_radius = 5; // velocities radius in decimated samples
public double[] curt_temp_weights = {1,1,1,1,1}; // historic weights for 5D convolution ([0] is the latest sample)
// debug/saving images
public boolean curt_save_c5full = false; // save fine velocities [direction][scene][subpixels]
public boolean curt_save_c5rect = true; // save fine velocities for selected rectangle only [scene][flattened image]
public Rectangle curt_save_select = new Rectangle(98, 265, 82, 24); // Example selection for 1773135527_803834
// Airplane mode
public boolean air_mode_en = false; // enable airplane mode
public boolean air_sync_ims = true; // IMS is synchronized
public boolean air_disp_corr = true; // refine disparity offset from IMS movements
public boolean air_disp_corr_save = false; // apply disparity correction to the geometry correction of the master_CLT
// Flat ground detection
public double fgnd_percent_low = 0.01; // Discard lowest outliers. Percentile to remove lowest elevation outliers during initial terrain filtering
public double fgnd_percent_high= 0.2; // Discard highest outliers. Percentile to remove highest elevation outliers during initial terrain filtering.
......@@ -3407,8 +3414,13 @@ min_str_neib_fpn 0.35
gd.addStringField ("Historic weight for 5D convolution", IntersceneMatchParameters.doublesToString(curt_temp_weights), 80,
"Historic weights for 5D convolution ([0] is the latest sample). Will be normalized");
gd.addMessage("=== Debug, saving images ===");
gd.addCheckbox ("Save full velocities hyperstack", this.curt_save_c5full,
"save fine velocities [direction][scene][subpixels].");
gd.addCheckbox ("Save velocities for rectangle", this.curt_save_c5rect,
"save fine velocities for selected rectangle only [scene][flattened image].");
gd.addStringField ("Output selection Rectangle", rectangleToString(curt_save_select), 40, "Selection Rectangle:left, top, width,height");
//
gd.addTab("Airplane","Airplane mode (fast forward movement, low vertical speed");
gd.addCheckbox ("Enable airplane mode", this.air_mode_en,
"Apply algorithms specific to the airplane mode.");
......@@ -4901,6 +4913,10 @@ min_str_neib_fpn 0.35
this.curt_vel_radius = (int) gd.getNextNumber();
this.curt_temp_weights = IntersceneMatchParameters. StringToDoubles(gd.getNextString(), 0);
this.curt_save_c5full = gd.getNextBoolean();
this.curt_save_c5rect = gd.getNextBoolean();
this.curt_save_select = stringToRectangle(gd.getNextString());// Rectangle
this.air_mode_en = gd.getNextBoolean();
this.air_sync_ims = gd.getNextBoolean();
this.air_disp_corr = gd.getNextBoolean();
......@@ -6223,6 +6239,10 @@ min_str_neib_fpn 0.35
properties.setProperty(prefix+"curt_vel_radius", this.curt_vel_radius+""); // int
properties.setProperty(prefix+"curt_temp_weights", IntersceneMatchParameters.doublesToString(this.curt_temp_weights));
properties.setProperty(prefix+"curt_save_c5full", this.curt_save_c5full+""); // boolean
properties.setProperty(prefix+"curt_save_c5rect", this.curt_save_c5rect+""); // boolean
properties.setProperty(prefix+"curt_save_select", rectangleToString(curt_save_select)+""); // Rectangle
properties.setProperty(prefix+"air_mode_en", this.air_mode_en+""); // boolean
properties.setProperty(prefix+"air_sync_ims", this.air_sync_ims+""); // boolean
properties.setProperty(prefix+"air_disp_corr", this.air_disp_corr+""); // boolean
......@@ -7530,6 +7550,10 @@ min_str_neib_fpn 0.35
if (properties.getProperty(prefix+"curt_vel_radius")!=null) this.curt_vel_radius=Integer.parseInt(properties.getProperty(prefix+"curt_vel_radius"));
if (properties.getProperty(prefix+"curt_temp_weights")!=null) this.curt_temp_weights= IntersceneMatchParameters.StringToDoubles(properties.getProperty(prefix+"curt_temp_weights"),0); // use 0
if (properties.getProperty(prefix+"curt_save_c5full")!=null) this.curt_save_c5full=Boolean.parseBoolean(properties.getProperty(prefix+"curt_save_c5full"));
if (properties.getProperty(prefix+"curt_save_c5rect")!=null) this.curt_save_c5rect=Boolean.parseBoolean(properties.getProperty(prefix+"curt_save_c5rect"));
if (properties.getProperty(prefix+"curt_save_select")!=null) this.curt_save_select=stringToRectangle((String) properties.getProperty(prefix+"curt_save_select"));
if (properties.getProperty(prefix+"air_mode_en")!=null) this.air_mode_en=Boolean.parseBoolean(properties.getProperty(prefix+"air_mode_en"));
if (properties.getProperty(prefix+"air_sync_ims")!=null) this.air_sync_ims=Boolean.parseBoolean(properties.getProperty(prefix+"air_sync_ims"));
if (properties.getProperty(prefix+"air_disp_corr")!=null) this.air_disp_corr=Boolean.parseBoolean(properties.getProperty(prefix+"air_disp_corr"));
......@@ -8815,6 +8839,10 @@ min_str_neib_fpn 0.35
imp.curt_vel_radius = this.curt_vel_radius;
imp.curt_temp_weights = this.curt_temp_weights.clone();
imp.curt_save_c5full = this.curt_save_c5full;
imp.curt_save_c5rect = this.curt_save_c5rect;
imp.curt_save_select = new Rectangle(this.curt_save_select);
imp.air_mode_en = this.air_mode_en;
imp.air_sync_ims = this.air_sync_ims;
imp.air_disp_corr = this.air_disp_corr;
......
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