null,//double [][] interParameterDerivatives, //partial derivative matrix from subcamera-camera-goniometer to single camera (12x21) if null - just values, no derivatives
null,//double [][] interParameterDerivatives, //partial derivative matrix from subcamera-camera-goniometer to single camera (12x21) if null - just values, no derivatives
null,//double [][] interParameterDerivatives, //partial derivative matrix from subcamera-camera-goniometer to single camera (12x21) if null - just values, no derivatives
null,//double [][] interParameterDerivatives, //partial derivative matrix from subcamera-camera-goniometer to single camera (12x21) if null - just values, no derivatives
parVector,
parVector,
null,//boolean [] mask, // calculate only selected derivatives (all parVect values are still
null,//boolean [] mask, // calculate only selected derivatives (all parVect values are still
...
@@ -3450,8 +3472,10 @@ For each point in the image
...
@@ -3450,8 +3472,10 @@ For each point in the image
double[][]interParameterDerivatives,//partial derivative matrix from subcamera-camera-goniometer to single camera (12x21) if null - just values, no derivatives
double[][]interParameterDerivatives,//partial derivative matrix from subcamera-camera-goniometer to single camera (12x21) if null - just values, no derivatives
double[]parVect,
double[]parVect,
boolean[]mask,// calculate only selected derivatives (all parVect values are still
boolean[]mask,// calculate only selected derivatives (all parVect values are still
double[][]interParameterDerivatives,//partial derivative matrix from subcamera-camera-goniometer to single camera (12x21) if null - just values, no derivatives
double[][]interParameterDerivatives,//partial derivative matrix from subcamera-camera-goniometer to single camera (12x21) if null - just values, no derivatives
double[]parVect,
double[]parVect,
boolean[]mask// calculate only selected derivatives (all parVect values are still
boolean[]mask// calculate only selected derivatives (all parVect values are still
publicdoublebadNodeThreshold=0.1;// filter out grid nodes with difference from quadratically predicted from 8 neighbors in pixels
publicdoublebadNodeThreshold=0.1;// filter out grid nodes with difference from quadratically predicted from 8 neighbors in pixels
publicintmaxBadNeighb=1;// maximal number of bad nodes around the corrected one to fix
publicintmaxBadNeighb=1;// maximal number of bad nodes around the corrected one to fix
publicintminimalValidNodes=50;// do not use images with less than this number of non-zero nodes (after all applicable weight masks)
publicintminimalValidNodes=10;// do not use images with less than this number of non-zero nodes (after all applicable weight masks)
publicintweightMultiImageMode=1;// increase weight for multi-image sets (0 - do not increase, 1 - multiply by number of images in a set to weightMultiExponent power)
publicintweightMultiImageMode=1;// increase weight for multi-image sets (0 - do not increase, 1 - multiply by number of images in a set to weightMultiExponent power)
publicdoubleweightMultiExponent=1.0;
publicdoubleweightMultiExponent=1.0;
publicdoubleweightDiameterExponent=1.0;// if( >0) use grid diameter to scale weights of this image
publicdoubleweightDiameterExponent=1.0;// if( >0) use grid diameter to scale weights of this image
...
@@ -84,6 +84,7 @@ import ij.gui.GenericDialog;
...
@@ -84,6 +84,7 @@ import ij.gui.GenericDialog;
publicdoublebalanceChannelWeightsMode=-1.0;// <0 - use defaults, 0 - keep, >0 balance by number of points to this power
publicdoublebalanceChannelWeightsMode=-1.0;// <0 - use defaults, 0 - keep, >0 balance by number of points to this power
publicdoubleremoveOverRMS=2.0;// error is multiplied by weight function before comparison (more permissive on the borders
publicdoubleremoveOverRMS=2.0;// error is multiplied by weight function before comparison (more permissive on the borders
publicdoubleremoveOverRMSNonweighted=4.0;// error is not multiplied (no more permissions on tyhe borders
publicdoubleremoveOverRMSNonweighted=4.0;// error is not multiplied (no more permissions on tyhe borders
publicbooleaninvertUnmarkedLwirGrid=true;// LWIR grid currently is saved shifted (not compensating color inversion)
gd.addStringField("VNIR gain corrections",arr_to_str(this.vnir_gcorr_rbgb),100,"Fine corrections to per channel, per color gains:'r0 b0 gb0 r1 b1 gb1 ...'");
gd.addStringField("EO gain corrections",arr_to_str(this.eo_gcorr_rbgb),100,"Fine corrections to per channel, per color gains:'r0 b0 gb0 r1 b1 gb1 ...'");
gd.addNumericField("LWIR trig dly",this.lwir_trig_dly,0,10,"x10ns","Output trigger delay, should eventually match Lepton+FPGA latency to trigger VNIR exactly 1 frame after LWIR. 0 does not work with current FPGA - usec do not match sec in transmitted timestamp");
gd.addNumericField("LWIR trig dly",this.lwir_trig_dly,0,10,"x10ns","Output trigger delay, should eventually match Lepton+FPGA latency to trigger EO exactly 1 frame after LWIR. 0 does not work with current FPGA - usec do not match sec in transmitted timestamp");
gd.addNumericField("VNIR lag",this.vnir_lag,0,3,"","Visible camera lag (in frames) relative to LWIR one");
gd.addNumericField("EO lag",this.eo_lag,0,3,"","Visible camera lag (in frames) relative to LWIR one");
gd.addNumericField("Max frame diff",this.max_frame_diff,0,3,"","Maximal difference in frames between simultaneously acquired channels as calculated from the timestamps");
gd.addNumericField("Max frame diff",this.max_frame_diff,0,3,"","Maximal difference in frames between simultaneously acquired channels as calculated from the timestamps");