Commit 9c02927a authored by Andrey Filippov's avatar Andrey Filippov
Browse files

refactoring, fighting small bugs

parent 204eba2c
Loading
Loading
Loading
Loading
+29 −8
Original line number Diff line number Diff line
@@ -650,6 +650,9 @@ public class BiScan {
						double [] smpl_w =           new double  [smpl_len];
						double [] smpl_w_narrow =    new double  [smpl_len];
						double [] smpl_p =           new double  [smpl_len]; // plane disparity,
						double [] smpl_wsw= smpl_w_narrow;
						double [][] weights_sw = weights_narrow;

						int nall = 0;
						double sw = 0, swd = 0;
						for (int dy = -smpl_radius; dy <= smpl_radius; dy++) {
@@ -796,6 +799,8 @@ public class BiScan {
									fourq_min,          // int                     fourq_min,         // each of the 4 corners should have at least this number of tiles.
									fourq_corner,       // int [] 	               fourq_corner, //  array specifying corner number (0..3), -1 - gap. null when not used
									debugLevel);        // int                     debugLevel)
							smpl_wsw = smpl_w;
							weights_sw = weights;
							//						if ( (fit_rslt == null) ||  (fit_rslt[0] > (smpl_arms + smpl_rrms * fit_rslt[1]))){
							if ( (fit_rslt == null) ||  (fit_rslt[0] > max_rms)){
								continue; // narrow selection - too high rms
@@ -845,17 +850,18 @@ public class BiScan {
									for (int dx = -smpl_radius; dx <= smpl_radius; dx++) { // if ((dx != 0) || (dy != 0)){
										int adx = (dx > 0)? dx:(-dx);
										int smpl_indx = smpl_center + dy*smpl_side + dx;
										if (smpl_w[smpl_indx] > 0.0) {
											s0+= weights[ady][adx];
											s1+= weights[ady][adx] * smpl_w[smpl_indx];
										if (smpl_wsw[smpl_indx] > 0.0) { // either smpl_w_narrow or smpl_w
											s0+= weights_sw[ady][adx];
//											s1+= weights[ady][adx] * smpl_w[smpl_indx];
											s1+= smpl_wsw[smpl_indx]; // already was multiplied by weights[ady][adx]
										}
									}
								}
								//boost_low_density, // false weight of low density tiles is reduced, true - boosted
								double w = s1;
								if (boost_low_density > 0.0) {
									w/= Math.pow(s0, boost_low_density);
								}
								double w = s1/s0;
//								if (boost_low_density > 0.0) {
//									w/= Math.pow(s0, boost_low_density);
//								}
								if (strength_pow != 1.0) {
									w = Math.pow(w, 1.0 / strength_pow);
								}
@@ -865,6 +871,11 @@ public class BiScan {
									System.out.println("suggestNewScan(): nTile="+nTile+" w="+w);
									System.out.println("suggestNewScan(): nTile="+nTile+" w="+w);
								}
								if (nTile == 66945) {
									System.out.println("suggestNewScan(): nTile="+nTile+" w="+w);
									System.out.println("suggestNewScan(): nTile="+nTile+" w="+w);
								}

							}
						}
					}
@@ -2206,7 +2217,17 @@ public class BiScan {
		double [][] ds = {disparity,strength}; // strength may be null
		return ds;
	}

	/**
	 * Extend low texture areas horizontally if both ends are OK: either belong to the low texture areas selection (lt_sel)
	 * or are trusted and closer or the same (to the provided tolerance)
	 * @param tolerance strong limit should not have disparity lower by more than tolerance than low textured area
	 * @param ds_lt disparity/strength for the low textured area
	 * @param d_single disparity measured for the single-tile correlation
	 * @param lt_sel low -textured selection
	 * @param exp_sel expanded selection (does not intersect with lt_sel
	 * @param trusted trusted tiles selection
	 * @return extended disparity/strength data
	 */
	  public double [][] getLTExpanded(
			  final double      tolerance,
			  final double [][] ds_lt,
+991 −38

File changed.

Preview size limit exceeded, changes collapsed.

+2 −1
Original line number Diff line number Diff line
@@ -94,7 +94,8 @@ public class PoleProcessorParameters {


	public void dialogQuestions(GenericJTabbedDialog gd) {
		gd.addCheckbox    ("Enable poles detection and usage",                                                                   this.poles_en,"Enable poles detection and usege to improve DSI");
		gd.addCheckbox    ("Enable poles detection and usage",                                                                   this.poles_en,
				"Run automatically when creating ground truth data. If disable you may run it with \"Poles GT\" command button");
		gd.addMessage("Creating initial pole seeds (tops need to be detected and available in the available DSI");
		gd.addNumericField("Pole relative (to trusted tiles strength) to qualify for the pole seed",                             this.seed_rsrength,  3,6,"",
				"Pole top seed relative strength (fraction of the strong trusted value that may change with correlation fat zero or other parameters");
+19 −0
Original line number Diff line number Diff line
@@ -32,6 +32,11 @@ import java.util.concurrent.atomic.AtomicInteger;
public class TileProcessor {
	public ArrayList <CLTPass3d> clt_3d_passes = null;
	public double [][] rig_disparity_strength =  null; // Disparity and strength created by a two-camera rig, with disparity scale and distortions of the main camera
	public double [][] rig_pre_poles_ds =        null; // Rig disparity and strength before processing poles
	public double [][] rig_post_poles_ds =       null; // Rig disparity and strength after processing poles
	public boolean [] rig_pre_poles_sel =        null; // Rig tile selection before processing poles
	public boolean [] rig_post_poles_sel =       null; // Rig tile selection after processing poles

	public int       clt_3d_passes_size =     0; //clt_3d_passes size after initial processing
	public int       clt_3d_passes_rig_size = 0; //clt_3d_passes size after initial processing and rig processing
	private int      tilesX;
@@ -114,6 +119,11 @@ public class TileProcessor {
		if (rig) clt_3d_passes_rig_size = clt_3d_passes.size();
		else {
			rig_disparity_strength = null; // invalidate
			rig_pre_poles_ds =       null;
			rig_post_poles_ds =      null;
			rig_pre_poles_sel =      null;
			rig_post_poles_sel =     null;

			clt_3d_passes_rig_size = 0;
			clt_3d_passes_size = clt_3d_passes.size();
		}
@@ -122,6 +132,10 @@ public class TileProcessor {
	public void trimCLTPasses(int keep){
		if (keep < clt_3d_passes_size) { // keep rig data if only rig scan is removed
			rig_disparity_strength = null; // invalidate
			rig_pre_poles_ds =       null;
			rig_post_poles_ds =      null;
			rig_pre_poles_sel =      null;
			rig_post_poles_sel =     null;
			clt_3d_passes_rig_size = 0;
		}
		clt_3d_passes_size = keep;
@@ -162,6 +176,11 @@ public class TileProcessor {
		}
		// just in case - invalidate (should be done anyway)
		rig_disparity_strength = null; // invalidate
		rig_pre_poles_ds =       null;
		rig_post_poles_ds =      null;
		rig_pre_poles_sel =      null;
		rig_post_poles_sel =     null;

		clt_3d_passes_rig_size = 0;
	}

+107 −845

File changed.

Preview size limit exceeded, changes collapsed.