GenericDialog gd = new GenericDialog("OTF Filter parameters");
if (otfFilterParameters_lwir!=null) {
gd.addMessage("EO (high-res color) sensors:");
}
gd.addNumericField("Invert deconvolution if less than", otfFilterParameters.deconvInvert, 3);
gd.addNumericField("OTF zero frequency size on power spectrum ", otfFilterParameters.zerofreqSize, 3); //2.0;
gd.addNumericField("OTF smouth PS to generate alias rejection mask (0 - none)", otfFilterParameters.smoothPS, 3); //2.5 - smooth model PS for rejecting aliases (0 - no smouth, >0 additional Gauss )
gd.addNumericField("OTF relative high value of PS for rejection mask ", otfFilterParameters.thresholdHigh, 3); //0.1
gd.addNumericField("OTF relative low value of PS for rejection mask ", otfFilterParameters.thresholdLow, 3); //0.01; // when FFT component is less than this fraction of the maximal value, replace 1/z with Z
if (otfFilterParameters_lwir!=null) {
gd.addMessage("LWIR (low-res mono) sensors:");
gd.addNumericField("Invert deconvolution if less than", otfFilterParameters_lwir.deconvInvert, 3);
gd.addNumericField("OTF zero frequency size on power spectrum ", otfFilterParameters_lwir.zerofreqSize, 3); //2.0;
gd.addNumericField("OTF smouth PS to generate alias rejection mask (0 - none)", otfFilterParameters_lwir.smoothPS, 3); //2.5 - smooth model PS for rejecting aliases (0 - no smouth, >0 additional Gauss )
gd.addNumericField("OTF relative high value of PS for rejection mask ", otfFilterParameters_lwir.thresholdHigh, 3); //0.1
gd.addNumericField("OTF relative low value of PS for rejection mask ", otfFilterParameters_lwir.thresholdLow, 3); //0.01; // when FFT component is less than this fraction of the maximal value, replace 1/z with Z
@@ -2831,17 +2854,19 @@ public class EyesisAberrations {
phases[1],
simCorr,//
simulParameters.subdiv,
fft_size,
fft_size,// FIXME!
simulParameters.center_for_g2,
false);//boolean mono
}
if(is_mono){
simul_pixels=newdouble[1][];
// TODO: so many places to invert LWIR pattern... or not
simul_pixels[0]=simulationPattern.extractSimulMono(// TODO: can use twice smaller barray
localBarray,
invert_pattern,
simulParameters,
1,// subdivide output pixels - now 4
fft_size*subpixel,// number of Bayer cells in width of the square selection (half number of pixels)
subpixel,// 1, // subdivide output pixels - now 4
full_fft_size,// fft_size*subpixel, // number of Bayer cells in width of the square selection (half number of pixels)
0,// selection center, X (in pixels)
0);
}else{
...
...
@@ -2849,10 +2874,9 @@ public class EyesisAberrations {
localBarray,// this version is thread safe
simulParameters,
subpixel,// subdivide pixels
fft_size*subpixel,// number of Bayer cells in width of the square selection (half number of pixels)
full_fft_size,// fft_size*subpixel, // number of Bayer cells in width of the square selection (half number of pixels)
0.0,// selection center, X (in pixels)
0.0);// selection center, y (in pixels)
}
if(subpixel>1){
if(colorComponents.colorsToCorrect[5])simul_pixels=combineCheckerGreens(simul_pixels,// pixel arrays after oversampleFFTInput() or extractSimulPatterns())
subpixel);// same as used in oversampleFFTInput() - oversampling ratio
...
...
@@ -2860,22 +2884,24 @@ public class EyesisAberrations {
if(colorComponents.colorsToCorrect[5])input_bayer_or_mono=combineCheckerGreens(input_bayer_or_mono,// pixel arrays after oversampleFFTInput() or extractSimulPatterns())
subpixel);// same as used in oversampleFFTInput() - oversampling ratio
}
}
if(!is_mono){
for(i=0;i<4;i++)if(!colorComponents.colorsToCorrect[i])input_bayer_or_mono[i]=null;// leave composite greens even if disabled