Commit 200f2455 authored by Andrey Filippov's avatar Andrey Filippov
Browse files

Mixing noise - random and FPN for performance evaluation

parent 3ca96c86
Loading
Loading
Loading
Loading
+56 −25
Original line number Diff line number Diff line
@@ -28,64 +28,95 @@ package com.elphel.imagej.cameras;
import java.util.Properties;

import com.elphel.imagej.common.GenericJTabbedDialog;
import com.elphel.imagej.tileprocessor.NoiseParameters;


public class InterNoiseParameters {
	public double noise_sigma =        1.5;
	public double noise_scale =        0.01;
	public double initial_offset =     1.0;
	public NoiseParameters noise = new NoiseParameters (0.1, 0.0, 1.5, 1.0, 16);
//	public double noise_sigma =        1.5;
//	public double noise_scale =        0.01;
//	public double initial_offset =     1.0;
	public boolean ref_only =          false; // also see imgdtt_params.dbg_pair_mask to switch between all pairs (63) and binocular only (1)
	public boolean show_final_2d =     true;  // show 2d correlations during last interation step
	public int     noise_debug_level = -1; // Noise testing debug level

	
	public void dialogQuestions(GenericJTabbedDialog gd) {
		gd.addMessage("Additive noise parameters");
		gd.addMessage("LMA other parameters");
		gd.addNumericField("Noise Gaussian sigma",                            this.noise_sigma, 3,5,"pix",
		gd.addNumericField("Noise Gaussian sigma",                            this.noise.sigma,          3,5,"pix",
				"Blur noise with 2D Gaussian");
		gd.addNumericField("Scale noise",                                     this.noise_scale, 6,8,"",
		gd.addNumericField("Scale noise random (each scene indepemdent)",     this.noise.scale_random,   6,8,"",
				"Scale noise relative to the average value of the color component");
		gd.addNumericField("Scale noise FPN (same for each scene)",           this.noise.scale_fpn,      6,8,"",
				"Scale noise relative to the average value of the color component.");
		gd.addNumericField("Offset target disparity",                         this.initial_offset, 3,5,"pix",
		gd.addNumericField("Offset target disparity",                         this.noise.initial_offset, 3,5,"pix",
				"Offset target disparity before attempting to correlate and refine.");
		gd.addNumericField("Subset number of sensors (2/4/8/16)",             this.noise.used_sensors,   0,3,"",
				"Performance comparison - use only some of 16 sensors");
		
		gd.addCheckbox    ("Reference scene only",                            this.ref_only,
				"Process only reference scene (intra-scene, no inter-scene accumulation).");
		gd.addCheckbox    ("Show 2d correlations for the last iteration",     this.show_final_2d,
				"Show single-scene and interframe 2d correlations for the last iteration");
		gd.addNumericField("Debug level",                                     this.noise_debug_level,    0,3,"",
				"Debug level of interscene noise testing.");
		
	}
	public void dialogAnswers(GenericJTabbedDialog gd) {
		this.noise_sigma =                 gd.getNextNumber();
		this.noise_scale =                 gd.getNextNumber();
		this.initial_offset =              gd.getNextNumber();
		this.noise.sigma =                 gd.getNextNumber();
		this.noise.scale_random =          gd.getNextNumber();
		this.noise.scale_fpn =             gd.getNextNumber();
		this.noise.initial_offset =        gd.getNextNumber();
		this.noise.used_sensors =    (int) gd.getNextNumber();
		this.ref_only =                    gd.getNextBoolean();
		this.show_final_2d =               gd.getNextBoolean();
		this.noise_debug_level =     (int) gd.getNextNumber();
	}
	
	public void setProperties(String prefix,Properties properties){
		properties.setProperty(prefix+"noise_sigma",          this.noise_sigma+"");	
		properties.setProperty(prefix+"noise_scale",          this.noise_scale+"");	
		properties.setProperty(prefix+"initial_offset",       this.initial_offset+"");	
		properties.setProperty(prefix+"noise.sigma",          this.noise.sigma+"");	
		properties.setProperty(prefix+"noise.scale_random",   this.noise.scale_random+"");	
		properties.setProperty(prefix+"noise.scale_fpn",      this.noise.scale_fpn+"");	
		properties.setProperty(prefix+"noise.initial_offset", this.noise.initial_offset+"");	
		properties.setProperty(prefix+"noise.used_sensors",   this.noise.used_sensors+"");	
		properties.setProperty(prefix+"ref_only",             this.ref_only+"");	
		properties.setProperty(prefix+"show_final_2d",        this.show_final_2d+"");	
		properties.setProperty(prefix+"noise_debug_level",    this.noise_debug_level+"");	
	}
	public void getProperties(String prefix,Properties properties){
		if (properties.getProperty(prefix+"noise_sigma")!=null)       this.noise_sigma=Double.parseDouble(properties.getProperty(prefix+"noise_sigma"));
		if (properties.getProperty(prefix+"noise_scale")!=null)       this.noise_scale=Double.parseDouble(properties.getProperty(prefix+"noise_scale"));
		if (properties.getProperty(prefix+"initial_offset")!=null)    this.initial_offset=Double.parseDouble(properties.getProperty(prefix+"initial_offset"));
		if (properties.getProperty(prefix+"noise.sigma")!=null) {
			this.noise.sigma=Double.parseDouble(properties.getProperty(prefix+"noise.sigma"));
		} else if (properties.getProperty(prefix+"noise_sigma")!=null) { // old format
			this.noise.sigma=Double.parseDouble(properties.getProperty(prefix+"noise_sigma"));
		}
		if (properties.getProperty(prefix+"noise.scale_random")!=null) {
			this.noise.scale_random=Double.parseDouble(properties.getProperty(prefix+"noise.scale_random"));
		} else if (properties.getProperty(prefix+"noise_scale")!=null) {
			this.noise.scale_random=Double.parseDouble(properties.getProperty(prefix+"noise_scale"));
		}
		if (properties.getProperty(prefix+"noise.scale_fpn")!=null) this.noise.scale_fpn=Double.parseDouble(properties.getProperty(prefix+"noise.scale_fpn"));
		
		if (properties.getProperty(prefix+"noise.initial_offset")!=null) {
			this.noise.initial_offset=Double.parseDouble(properties.getProperty(prefix+"noise.initial_offset"));
		} else if (properties.getProperty(prefix+"initial_offset")!=null) {
			this.noise.initial_offset=Double.parseDouble(properties.getProperty(prefix+"initial_offset"));
		}
		if (properties.getProperty(prefix+"noise.used_sensors")!=null) this.noise.used_sensors=Integer.parseInt(properties.getProperty(prefix+"noise.used_sensors"));

		if (properties.getProperty(prefix+"ref_only")!=null)          this.ref_only=Boolean.parseBoolean(properties.getProperty(prefix+"ref_only"));
		
		if (properties.getProperty(prefix+"show_final_2d")!=null)     this.show_final_2d=Boolean.parseBoolean(properties.getProperty(prefix+"show_final_2d"));
		
		if (properties.getProperty(prefix+"noise_debug_level")!=null) this.noise_debug_level=Integer.parseInt(properties.getProperty(prefix+"noise_debug_level"));
	}
	@Override
	public InterNoiseParameters clone() throws CloneNotSupportedException {
		InterNoiseParameters inp = new InterNoiseParameters();
		inp.noise_sigma =          this.noise_sigma;
		inp.noise_scale =          this.noise_scale;
		inp.initial_offset =       this.initial_offset;
		inp.noise =                this.noise.clone();
		inp.ref_only =             this.ref_only;
		inp.show_final_2d =        this.show_final_2d;
		inp.noise_debug_level =    this.noise_debug_level;
		return inp;
	}	
	
	
	
}
+34 −0
Original line number Diff line number Diff line
package com.elphel.imagej.tileprocessor;

import com.elphel.imagej.cameras.InterNoiseParameters;

public class NoiseParameters {
	public double scale_random =   0.1;
	public double scale_fpn    =   0.0;
	public double sigma        =   1.5;
	public double initial_offset = 1.0;
	public int    used_sensors =   16; // 2/4/8/16
	
	public NoiseParameters (
			double scale_random,
			double scale_fpn,
			double sigma,
			double initial_offset,
			int used_sensors) {
		this.scale_random = scale_random;
		this.scale_fpn = scale_fpn;
		this.sigma = sigma;
		this.initial_offset= initial_offset;
		this.used_sensors = used_sensors;
	}
	@Override
	public NoiseParameters clone() throws CloneNotSupportedException {
		return  new NoiseParameters(
				scale_random,
				scale_fpn,
				sigma,
				initial_offset,
				used_sensors);
	}	
	
}
+90 −50
Original line number Diff line number Diff line
@@ -3163,7 +3163,8 @@ public class OpticalFlow {
			ColorProcParameters  colorProcParameters,
			QuadCLT.SetChannels [] set_channels,
			QuadCLT              ref_scene, // ordered by increasing timestamps
			double []            noise_sigma_level,
//			double []            
			NoiseParameters noise_sigma_level,
			int                  debug_level
			)
	{
@@ -3192,6 +3193,7 @@ public class OpticalFlow {
					clt_parameters,
					colorProcParameters, //
					noise_sigma_level,   // double []            noise_sigma_level,
					ref_scene,           // QuadCLTCPU           ref_scene, // may be null if scale_fpn <= 0
					threadsMax,
					-1); // debug_level);
			scenes[i].setDSRBG(
@@ -3276,6 +3278,7 @@ public class OpticalFlow {
					combo_dsn_change[0],   // final double []      disparity_ref,  // disparity in the reference view tiles (Double.NaN - invalid)
					margin,         // final int            margin,
					nrefine,        // final int            nrefine, // just for debug title
					clt_parameters.inp.show_final_2d, // final boolean        show_2d_corr,
					debug_level-5);   // final int            debug_level)

			Runtime.getRuntime().gc();
@@ -3386,7 +3389,8 @@ public class OpticalFlow {
			boolean              ref_only, // process only reference frame (false - inter-scene)
			ColorProcParameters  colorProcParameters,
			QuadCLT              ref_scene, // ordered by increasing timestamps
			double []            noise_sigma_level,
//			double []            
			NoiseParameters		 noise_sigma_level,
			int                  debug_level
			)
	{
@@ -3405,6 +3409,7 @@ public class OpticalFlow {
					clt_parameters,
					colorProcParameters, //
					noise_sigma_level,   // double []            noise_sigma_level,
					ref_scene,           // QuadCLTCPU           ref_scene, // may be null if scale_fpn <= 0
					threadsMax,
					-1); // debug_level);
			scenes[i].setDSRBG(
@@ -3475,7 +3480,7 @@ public class OpticalFlow {
		}		
		if (noise_sigma_level != null) { // add initial offset to the expected disparity
			for (int i = 0; i < combo_dsn_change[0].length; i++) {
				combo_dsn_change[0][i] += noise_sigma_level[2]; 
				combo_dsn_change[0][i] += noise_sigma_level.initial_offset; // [2]; 
			}
		}
		for (int nrefine = 0; nrefine < max_refines; nrefine++) {
@@ -3543,13 +3548,20 @@ public class OpticalFlow {
		//noise_sigma_level
		String rslt_suffix = "-results-nonoise";
		if (noise_sigma_level != null) {
			rslt_suffix = "-results-lev_"+noise_sigma_level[0]+"-sigma_"+noise_sigma_level[1]+"-offset"+noise_sigma_level[2];
//			rslt_suffix = "-results-lev_"+noise_sigma_level[0]+"-sigma_"+noise_sigma_level[1]+"-offset"+noise_sigma_level[2];
			rslt_suffix =
					"-results-rnd_"+noise_sigma_level.scale_random+
					"-fpn_"+        noise_sigma_level.scale_fpn+
					"-sigma_"+      noise_sigma_level.sigma+ // [1]+
					"-offset"+      noise_sigma_level.initial_offset+ // [2];
					"-sensors"+     noise_sigma_level.used_sensors;

			if (ref_only) {
				rslt_suffix +="-nointer";
			} else {
				rslt_suffix +="-inter";
			}
			rslt_suffix +="-mask"+clt_parameters.img_dtt.dbg_pair_mask;
//			rslt_suffix +="-mask"+clt_parameters.img_dtt.dbg_pair_mask;
		}
		ref_scene.saveDoubleArrayInModelDirectory(
				rslt_suffix,         // String      suffix,
@@ -3597,7 +3609,8 @@ public class OpticalFlow {
			boolean              ref_only, // process only reference frame (false - inter-scene)
			ColorProcParameters  colorProcParameters,
			QuadCLT              ref_scene, // ordered by increasing timestamps
			double []            noise_sigma_level,
//			double []
			NoiseParameters		 noise_sigma_level,
			int                  debug_level
			)
	{
@@ -3616,6 +3629,7 @@ public class OpticalFlow {
					clt_parameters,
					colorProcParameters, //
					noise_sigma_level,   // double []            noise_sigma_level,
					ref_scene,          // QuadCLTCPU           ref_scene, // may be null if scale_fpn <= 0
					threadsMax,
					-1); // debug_level);
			scenes[i].setDSRBG(
@@ -3624,31 +3638,44 @@ public class OpticalFlow {
					updateStatus,   // boolean        updateStatus,
					-1); // debug_level);    // int            debugLevel)
		}
		
//		String [] combo_dsn_titles = {"disp", "strength", "num_valid","change"};
		String [] combo_dsn_titles = {"disp", "strength","disp_lma","num_valid","change"};
//		final String [] iter_titles = {"disp", "diff", "strength","disp_lma"};
		final int [] iter_indices = {0,1,2,4}; // which to save for each iteration: {"disp", "strength","disp_lma","change"};
		final int [] initial_indices = {0,1,3}; // initial: "disp", "strength","num_valid"
		double [][] combo_dsn =  null;
		if (noise_sigma_level == null) {
			combo_dsn = prepareInitialComboDS(
			double[][] combo_dsn0 = prepareInitialComboDS( // 3
					clt_parameters,   // final CLTParameters       clt_parameters,
					scenes,           // final QuadCLT []          scenes,
					indx_ref,         // final int                 indx_ref,
					debug_level-2);     // final int                 debug_level);
			combo_dsn = new double[combo_dsn_titles.length - 1][];
			for (int i = 0; i < combo_dsn0.length; i++) {
				combo_dsn[initial_indices[i]] = combo_dsn0[i]; // "disp", "strength", <null>, "num_valid"
			}
			
		} else {
			combo_dsn = ref_scene. readDoubleArrayFromModelDirectory(
			combo_dsn = ref_scene. readDoubleArrayFromModelDirectory( //"disp", "strength","disp_lma","num_valid"
					"-results-nonoise", // String      suffix,
					3, // int         num_slices, // (0 - all)
					combo_dsn_titles.length - 1, // 4
					null); // int []      wh);

		}
		final double [][] combo_dsn_change = new double [combo_dsn.length+1][];
		for (int i = 0; i < combo_dsn.length; i++) {
			combo_dsn_change[i] = combo_dsn[i];
		}
//		final double [][] combo_dsn_change = new double [combo_dsn.length+1][];
		final int margin = 8;
		final int tilesX = ref_scene.getTileProcessor().getTilesX();
		final int tilesY = ref_scene.getTileProcessor().getTilesY();

		String [] combo_dsn_titles = {"disp", "strength", "num_valid","change"};
	
		final double [][] combo_dsn_change = new double [combo_dsn_titles.length] [tilesX*tilesY];
		for (int i = 0; i < combo_dsn.length; i++) { // 4 elements: "disp", "strength","disp_lma","num_valid"
			if (combo_dsn[i] != null) combo_dsn_change[i] = combo_dsn[i]; // all but change
		}
		if (noise_sigma_level != null) { // add initial offset to the expected disparity
			for (int i = 0; i < combo_dsn_change[0].length; i++) {
				combo_dsn_change[0][i] += noise_sigma_level.initial_offset; // [2]; 
			}
		}
//		combo_dsn_change[combo_dsn_change.length - 1] = new double [tilesX*tilesY];
		if (debug_level > 0) {
			(new ShowDoubleFloatArrays()).showArrays(
					combo_dsn_change,
@@ -3660,35 +3687,30 @@ public class OpticalFlow {
		}
		
		final int max_refines = 10;
		final String [] iter_titles = {"disp", "diff", "strength"};
		final int [] iter_indices = {0,1,3};
//		final String [] iter_titles = {"disp", "diff", "strength"};
		final int last_slices = combo_dsn_titles.length;
		final int last_initial_slices = last_slices + iter_titles.length;
		final int last_initial_slices = last_slices + initial_indices.length;
		
		final double [][] refine_results = new double [last_slices + 3 * (max_refines + 1)][];
//		final double [][] refine_results = new double [last_slices + 3 * (max_refines + 1)][];
		final double [][] refine_results = new double [last_slices + 4 * (max_refines + 1)][];
		String [] refine_titles = new String [refine_results.length];
		for (int i = 0; i < combo_dsn_titles.length; i++) {
			refine_results[i] = combo_dsn_change[i];
			refine_titles[i] = combo_dsn_titles[i]+"-last";
			refine_results[i] = combo_dsn_change[i]; // first 5 - references to 5-element combo_dsn_change
			refine_titles[i] = combo_dsn_titles[i]+"-last"; // "disp", "strength","disp_lma","num_valid","change"
		}
		for (int i = 0; i < iter_titles.length; i++) {
			refine_titles[last_slices + i] = iter_titles[i]+"-initial";
			if (combo_dsn_change[iter_indices[i]] != null) {
				refine_results[last_slices + i] = combo_dsn_change[iter_indices[i]].clone();
		for (int i = 0; i < initial_indices.length; i++) {
			refine_titles[last_slices + i] = combo_dsn_titles[initial_indices[i]]+"-initial"; // "disp", "strength","num_valid"
			if (combo_dsn_change[initial_indices[i]] != null) {
				refine_results[last_slices + i] = combo_dsn_change[initial_indices[i]].clone();
			} else {
				refine_results[last_slices + i] = new double [tilesX * tilesY];
			}
		}
		for (int nrefine = 0; nrefine < max_refines; nrefine++) {
			for (int i = 0; i < iter_titles.length; i++) {
			for (int i = 0; i < iter_indices.length; i++) {
				refine_titles[last_initial_slices + i * max_refines + nrefine ] = combo_dsn_titles[iter_indices[i]]+"-"+nrefine;
			}
		}		
		if (noise_sigma_level != null) { // add initial offset to the expected disparity
			for (int i = 0; i < combo_dsn_change[0].length; i++) {
				combo_dsn_change[0][i] += noise_sigma_level[2]; 
			}
		}
		for (int nrefine = 0; nrefine < max_refines; nrefine++) {
			Runtime.getRuntime().gc();
			System.out.println("--- Free memory="+Runtime.getRuntime().freeMemory()+" (of "+Runtime.getRuntime().totalMemory()+")");
@@ -3702,10 +3724,12 @@ public class OpticalFlow {
							combo_dsn_change[0],   // final double []      disparity_ref,  // disparity in the reference view tiles (Double.NaN - invalid)
							margin,         // final int            margin,
							nrefine,        // final int            nrefine, // just for debug title
							( nrefine == (max_refines - 1)) && clt_parameters.inp.show_final_2d, // final boolean        show_2d_corr,
							debug_level-5);   // final int            debug_level)

			Runtime.getRuntime().gc();
			System.out.println("--- Free memory="+Runtime.getRuntime().freeMemory()+" (of "+Runtime.getRuntime().totalMemory()+")");
			
			if (debug_level > 0) {
				(new ShowDoubleFloatArrays()).showArrays(
						disparity_map,
@@ -3725,12 +3749,24 @@ public class OpticalFlow {
					combo_dsn_change[1][nTile]  = disparity_map[strength_index][nTile];
				}
			}
			combo_dsn_change[combo_dsn_change.length -1] = disparity_map[disparity_index]; 
			System.arraycopy(combo_dsn_change[0], 0, combo_dsn_change[2], 0, combo_dsn_change[0].length); // lma
//			combo_dsn_change[2]  = combo_dsn_change[0].clone(); // lma
			double [] disp_lma = disparity_map[ImageDtt.DISPARITY_INDEX_POLY];
			if (disp_lma != null) { 
				for (int i = 0; i < disp_lma.length; i++) {
					if (Double.isNaN(disp_lma[i])) {
						combo_dsn_change[2][i] = Double.NaN;		
					}
				}
			}
			
			for (int i = 0; i < iter_titles.length; i++) {
//			combo_dsn_change[combo_dsn_change.length -1] = disparity_map[disparity_index]; 
			System.arraycopy(disparity_map[disparity_index], 0, combo_dsn_change[combo_dsn_change.length -1], 0, combo_dsn_change[0].length); // lma
			
			for (int i = 0; i < iter_indices.length; i++) {
				refine_results[last_initial_slices + (i * max_refines) + nrefine] = combo_dsn_change[iter_indices[i]].clone();
			}
			
			//					clt_parameters.inp.show_final_2d, // final boolean        show_2d_corr,
			if (debug_level >0) {
				(new ShowDoubleFloatArrays()).showArrays(
						combo_dsn_change,
@@ -3754,13 +3790,19 @@ public class OpticalFlow {
		//noise_sigma_level
		String rslt_suffix = "-results-nonoise";
		if (noise_sigma_level != null) {
			rslt_suffix = "-results-lev_"+noise_sigma_level[0]+"-sigma_"+noise_sigma_level[1]+"-offset"+noise_sigma_level[2];
			rslt_suffix =
//					"-results-lev_"+noise_sigma_level[0]+
					"-results-rnd_"+noise_sigma_level.scale_random+
					"-fpn_"+        noise_sigma_level.scale_fpn+
					"-sigma_"+      noise_sigma_level.sigma+ // [1]+
					"-offset"+      noise_sigma_level.initial_offset+ // [2];
					"-sensors"+     noise_sigma_level.used_sensors;
			if (ref_only) {
				rslt_suffix +="-nointer";
			} else {
				rslt_suffix +="-inter";
			}
			rslt_suffix +="-mask"+clt_parameters.img_dtt.dbg_pair_mask;
			//rslt_suffix +="-mask"+clt_parameters.img_dtt.dbg_pair_mask;
		}
		ref_scene.saveDoubleArrayInModelDirectory(
				rslt_suffix,         // String      suffix,
@@ -4002,9 +4044,9 @@ public double[][] correlateIntersceneDebug( // only uses GPU and quad
		final double disparity_corr = debug_disparity_bias; // 0.0; // (z_correction == 0) ? 0.0 : geometryCorrection.getDisparityFromZ(1.0/z_correction);
		for (int nscene = 0; nscene < num_scenes; nscene++) {
			if (nscene == indx_ref) {
				System.out.println("\nCorrelating reference scene\n");
				System.out.println("\nCorrelating reference scene, nrefine = "+nrefine+"\n");
			} else {
				System.out.println("\nCorrelating scene "+nscene+"\n");
				System.out.println("\nCorrelating scene "+nrefine+":"+nscene+"\n");
			}
			String ts = scenes[nscene].getImageName();
			double [][] scene_pXpYD;
@@ -4936,9 +4978,9 @@ public double[][] correlateIntersceneDebug( // only uses GPU and quad
		TpTask[] tp_tasks_ref = null;
		for (int nscene = 0; nscene < num_scenes; nscene++) {
			if (nscene == indx_ref) {
				System.out.println("\nCorrelating reference scene\n");
				System.out.println("\nCorrelating reference scene, nrefine = "+nrefine+"\n");
			} else {
				System.out.println("\nCorrelating scene "+nscene+"\n");
				System.out.println("\nCorrelating scene "+nrefine+":"+nscene+"\n");
			}
			String ts = scenes[nscene].getImageName();
			double [][] scene_pXpYD;
@@ -5479,6 +5521,7 @@ public double[][] correlateIntersceneDebug( // only uses GPU and quad
			final double []      disparity_ref,  // disparity in the reference view tiles (Double.NaN - invalid)
			final int            margin,
			final int            nrefine, // just for debug title
			final boolean        show_2d_corr,
			final int            debug_level
			)
	{
@@ -5494,12 +5537,9 @@ public double[][] correlateIntersceneDebug( // only uses GPU and quad
		double fat_zero_single = clt_parameters.getGpuFatZero(ref_scene.isMonochrome()); // for single scene
		// TODO: make per-tile variable
		double scaled_fat_zero = fat_zero_single / (scenes.length);
		boolean show_accumulated_correlations =debug_level > -5;
		boolean show_reference_correlations =debug_level > -5;
		
		boolean show_accumulated_correlations = show_2d_corr || debug_level > -5;
		boolean show_reference_correlations =  show_2d_corr || debug_level > -5;
		final float  [][][]       fclt_corr = (show_accumulated_correlations || show_reference_correlations) ?	(new float [tilesX * tilesY][][]) : null; // not all used
		
		
		ImageDtt image_dtt;
		image_dtt = new ImageDtt(
				numSens,
@@ -5523,9 +5563,9 @@ public double[][] correlateIntersceneDebug( // only uses GPU and quad
		TpTask[] tp_tasks_ref = null;
		for (int nscene = 0; nscene < num_scenes; nscene++) {
			if (nscene == indx_ref) {
				System.out.println("\nCorrelating reference scene\n");
				System.out.println("\nCorrelating reference scene, nrefine = "+nrefine+"\n");
			} else {
				System.out.println("\nCorrelating scene "+nscene+"\n");
				System.out.println("\nCorrelating scene "+nrefine+":"+nscene+"\n");
			}
			String ts = scenes[nscene].getImageName();
			double [][] scene_pXpYD;
+117 −45

File changed.

Preview size limit exceeded, changes collapsed.

+22 −8
Original line number Diff line number Diff line
@@ -8619,6 +8619,7 @@ if (debugLevel > -100) return true; // temporarily !
				clt_parameters,
				colorProcParameters, //
				null, // noise_sigma_level,   // double []            noise_sigma_level,
				null, // final QuadCLTCPU     ref_scene, // may be null if scale_fpn <= 0
				threadsMax,
				debugLevel);
		// temporarily fix wrong sign:
@@ -8664,12 +8665,16 @@ if (debugLevel > -100) return true; // temporarily !
//		double []            noise_sigma_level = {1.0, 1.5, 1.0};  // amount, sigma, offset
//		double []            noise_sigma_level = {3.0, 1.5, 1.0};  // amount, sigma, offset
//		double []            noise_sigma_level = {5.0, 1.5, 1.0};  // amount, sigma, offset
		double []            noise_sigma_level = null;
		if (clt_parameters.inp.noise_scale > 0.0) {
			noise_sigma_level = new double[] {
//		double []            noise_sigma_level = null;
		NoiseParameters      noise_sigma_level = null;
		if ((clt_parameters.inp.noise.scale_random  > 0.0) || (clt_parameters.inp.noise.scale_fpn  > 0.0)){
			noise_sigma_level = clt_parameters.inp.noise.clone();
			/*		
					new double[] {
					clt_parameters.inp.noise_scale,
					clt_parameters.inp.noise_sigma,
					clt_parameters.inp.initial_offset};  // amount, sigma, offset
					*/
		}
		
		boolean ref_only =  clt_parameters.inp.ref_only; //  true; // process only reference frame (false - inter-scene)
@@ -8692,6 +8697,7 @@ if (debugLevel > -100) return true; // temporarily !
				clt_parameters,
				colorProcParameters, //
				noise_sigma_level,   // double []            noise_sigma_level,
				null,                // QuadCLTCPU           ref_scene, // may be null if scale_fpn <= 0
				threadsMax,
				clt_parameters.inp.noise_debug_level); // debugLevel);
		/**/
@@ -8722,12 +8728,16 @@ if (debugLevel > -100) return true; // temporarily !
//		double []            noise_sigma_level = {1.0, 1.5, 1.0};  // amount, sigma, offset
//		double []            noise_sigma_level = {3.0, 1.5, 1.0};  // amount, sigma, offset
//		double []            noise_sigma_level = {5.0, 1.5, 1.0};  // amount, sigma, offset
		double []            noise_sigma_level = null;
		if (clt_parameters.inp.noise_scale >= 0.0) {// <0 - will generate no-noise data
//		double []            noise_sigma_level = null;
		NoiseParameters            noise_sigma_level = null;
		if ((clt_parameters.inp.noise.scale_random >= 0.0) || (clt_parameters.inp.noise.scale_fpn >= 0.0)) {// <0 - will generate no-noise data
			noise_sigma_level = clt_parameters.inp.noise.clone();
					/*
					noise_sigma_level = new double[] {
					clt_parameters.inp.noise_scale,
					clt_parameters.inp.noise_sigma,
					clt_parameters.inp.initial_offset};  // amount, sigma, offset
					clt_parameters.inp.initial_offset};  // amount, sigma, offset\
        */					
		}
		
		boolean ref_only =  clt_parameters.inp.ref_only; //  true; // process only reference frame (false - inter-scene)
@@ -8750,6 +8760,7 @@ if (debugLevel > -100) return true; // temporarily !
				clt_parameters,
				colorProcParameters, //
				noise_sigma_level,   // double []            noise_sigma_level,
				null, // final QuadCLTCPU     ref_scene, // may be null if scale_fpn <= 0
				threadsMax,
				clt_parameters.inp.noise_debug_level); // debugLevel);
		/*
@@ -8760,7 +8771,10 @@ if (debugLevel > -100) return true; // temporarily !
		*/
		// Create 4-slice image with noise from the current data
		if (noise_sigma_level != null) {
			String noisy_4slice_suffix = "-noise-level_"+ noise_sigma_level[0]+"-sigma_"+noise_sigma_level[1];
			String noisy_4slice_suffix =
					"-noise-random_"+ noise_sigma_level.scale_random+
					"-noise-fpn_"+    noise_sigma_level.scale_fpn+
					"-sigma_"+noise_sigma_level.sigma;
			ref_quadCLT.genSave4sliceImage(
					clt_parameters,        // CLTParameters                                   clt_parameters,
					noisy_4slice_suffix,   // String                                          suffix,