Loading src/main/java/com/elphel/imagej/calibration/Aberration_Calibration.java +19 −17 Original line number Diff line number Diff line Loading @@ -1102,10 +1102,10 @@ if (MORE_BUTTONS) { Runtime runtime = Runtime.getRuntime(); runtime.gc(); if (DEBUG_LEVEL>0) System.out.println("--- Free memory="+runtime.freeMemory()+" (of "+runtime.totalMemory()+")"); if (label==null) return; if (LWIR_PARAMETERS !=null) { String LOG_LEVEL; switch (MASTER_DEBUG_LEVEL) { switch (LWIR_PARAMETERS.getDebugLevel()) { case -2: LOG_LEVEL = "FATAL"; break; case -1: LOG_LEVEL = "ERROR"; break; case 0: LOG_LEVEL = "WARN"; break; Loading @@ -1118,8 +1118,9 @@ if (MORE_BUTTONS) { if (!LOG_LEVEL_SET) { // only first time true loci.common.DebugTools.setRootLevel(LOG_LEVEL); } System.out.println("DEBUG_LEVEL = "+DEBUG_LEVEL+", MASTER_DEBUG_LEVEL = "+MASTER_DEBUG_LEVEL+ System.out.println("DEBUG_LEVEL = "+DEBUG_LEVEL+", LWIR_PARAMETERS.getDebugLevel() = "+LWIR_PARAMETERS.getDebugLevel()+ " LOG_LEVEL="+LOG_LEVEL+"LOG_LEVEL_SET="+LOG_LEVEL_SET); } if (FOCUSING_FIELD!=null) FOCUSING_FIELD.setThreads(THREADS_MAX); /* ======================================================================== */ Loading Loading @@ -9441,7 +9442,8 @@ if (MORE_BUTTONS) { if (LWIR_READER == null) { LWIR_READER = new LwirReader(LWIR_PARAMETERS); } ImagePlus [] imps = LWIR_READER.acquire("/data_ssd/imagej-elphel/attic/camera_img/test-calib"); // directory to save // ImagePlus [] imps = LWIR_READER.acquire(DISTORTION_PROCESS_CONFIGURATION.sourceDirectory); // directory to save ImagePlus [] imps = LWIR_READER.acquire("attic/lwir_test_images"); // directory to save if (imps != null) { // for (ImagePlus imp: imps) { // imp.show(); src/main/java/com/elphel/imagej/correction/Eyesis_Correction.java +18 −16 Original line number Diff line number Diff line Loading @@ -897,8 +897,9 @@ private Panel panel1, if (DEBUG_LEVEL>0) System.out.println("--- Free memory="+runtime.freeMemory()+" (of "+runtime.totalMemory()+")"); CLT_PARAMETERS.batch_run = false; if (label==null) return; if ((CLT_PARAMETERS !=null) && (CLT_PARAMETERS.lwir !=null)) { String LOG_LEVEL; switch (MASTER_DEBUG_LEVEL) { switch (CLT_PARAMETERS.lwir.getDebugLevel()) { case -2: LOG_LEVEL = "FATAL"; break; case -1: LOG_LEVEL = "ERROR"; break; case 0: LOG_LEVEL = "WARN"; break; Loading @@ -911,8 +912,9 @@ private Panel panel1, if (!LOG_LEVEL_SET) { // only first time true loci.common.DebugTools.setRootLevel(LOG_LEVEL); } System.out.println("DEBUG_LEVEL = "+DEBUG_LEVEL+", MASTER_DEBUG_LEVEL = "+MASTER_DEBUG_LEVEL+ System.out.println("DEBUG_LEVEL = "+DEBUG_LEVEL+", CLT_PARAMETERS.lwir.getDebugLevel() = "+CLT_PARAMETERS.lwir.getDebugLevel()+ " LOG_LEVEL="+LOG_LEVEL+"LOG_LEVEL_SET="+LOG_LEVEL_SET); } /* ======================================================================== */ if (label.equals("Configure spilt")) { Loading Loading @@ -4873,7 +4875,7 @@ private Panel panel1, if (LWIR_READER == null) { LWIR_READER = new LwirReader(CLT_PARAMETERS.lwir); } ImagePlus [] imps = LWIR_READER.acquire("/data_ssd/imagej-elphel/attic/camera_img/test"); // directory to save ImagePlus [] imps = LWIR_READER.acquire("attic/lwir_test_images"); // directory to save if (imps != null) { for (ImagePlus imp: imps) { // imp.show(); Loading src/main/java/com/elphel/imagej/lwir/LwirReader.java +50 −7 Original line number Diff line number Diff line Loading @@ -208,12 +208,54 @@ public class LwirReader { return imps; } public ImagePlus [] averageMultiFrames(ImagePlus [][] sets) { //TODO: convert to multithreaded ! int num_frames = sets.length; int num_channels = sets[0].length; ImagePlus [] imps_avg = new ImagePlus [num_channels]; public ImagePlus [] averageMultiFrames( final ImagePlus [][] sets) { final int num_frames = sets.length; final int num_channels = sets[0].length; final ImagePlus [] imps_avg = new ImagePlus [num_channels]; final Thread[] threads = newThreadArray(MAX_THREADS); final AtomicInteger indxAtomic = new AtomicInteger(0); for (int ithread = 0; ithread < threads.length; ithread++) { threads[ithread] = new Thread() { @Override public void run() { for (int chn = indxAtomic.getAndIncrement(); chn < num_channels; chn = indxAtomic.getAndIncrement()) { int width = sets[0][chn].getWidth(); int height = sets[0][chn].getHeight(); String title = sets[0][chn].getTitle()+"_average"+num_frames; float [] pixels_avg = (float []) sets[0][chn].getProcessor().getPixels(); //null pointer for (int n = 1; n < num_frames; n++) { float [] pixels = (float []) sets[n][chn].getProcessor().getPixels(); for (int i = 0; i < pixels_avg.length; i++) { pixels_avg[i] += pixels[i]; } } double scale = 1.0/num_frames; for (int i = 0; i < pixels_avg.length; i++) { pixels_avg[i] *= scale; } ImageProcessor ip=new FloatProcessor(width,height); ip.setPixels(pixels_avg); ip.resetMinAndMax(); imps_avg[chn]= new ImagePlus(title, ip); Properties properties0 = sets[0][chn].getProperties(); for (String key:properties0.stringPropertyNames()) { imps_avg[chn].setProperty(key, properties0.getProperty(key)); } imps_avg[chn].setProperty("average", ""+num_frames); if (motorsPosition!=null) for (int m=0;m<motorsPosition.length;m++ ) { imps_avg[chn].setProperty("MOTOR"+(m+1), ""+motorsPosition[m]); } ImagejJp4Tiff.encodeProperiesToInfo(imps_avg[chn]); } } }; } startAndJoin(threads); /* for (int chn = 0; chn < num_channels; chn++) { int width = sets[0][chn].getWidth(); int height = sets[0][chn].getHeight(); Loading Loading @@ -244,7 +286,7 @@ public class LwirReader { ImagejJp4Tiff.encodeProperiesToInfo(imps_avg[chn]); // TODO: Overwrite some properties? } */ return imps_avg; } Loading Loading @@ -513,13 +555,14 @@ public class LwirReader { String set_path = dirpath+Prefs.getFileSeparator()+set_name; File set_dir = new File(set_path); set_dir.mkdirs(); // including parent LOGGER.warn("Saving image set to: "+set_dir.getAbsolutePath()); for (ImagePlus imp:imps_avg) { String fname = imp.getTitle(); fname = fname.substring(0, fname.lastIndexOf('_')) + ".tiff"; // remove _average FileSaver fs=new FileSaver(imp); String path=set_path+Prefs.getFileSeparator()+fname; IJ.showStatus("Saving "+path); LOGGER.debug("LWIR_ACQUIRE: 'Saving "+path+ " (and other with the same timestamp)" ); LOGGER.info("LWIR_ACQUIRE: 'Saving "+path ); fs.saveAsTiff(path); } } Loading src/main/java/com/elphel/imagej/lwir/LwirReaderParameters.java +17 −1 Original line number Diff line number Diff line Loading @@ -49,6 +49,7 @@ public class LwirReaderParameters { protected double vnir_gain_g = 2.0; protected double vnir_gain_rg = 0.7705; // 1.116; halogen/fluorescent protected double vnir_gain_bg = 2.401; // 1.476; /* protected double [] vnir_exp_corr = {1.0, 1.0, 1.0, 1.0}; protected double [] vnir_gcorr_rbgb = { Loading @@ -69,9 +70,17 @@ public class LwirReaderParameters { protected int vnir_lag = 1; // frames protected double max_mismatch_ms = 0.05; protected int max_frame_diff = 1; // 2; protected int debug_level = 0;//-3: OFF, -2:Fatal, -1:ERROR, 0:WARN, 1:INFO,2:DEBUG // --- interface methods public int getDebugLevel() { return this.debug_level; } public void setDebugLevel(int level) { this.debug_level = level; } public void setProperties(String prefix,Properties properties){ properties.setProperty(prefix+"avg_number", this.avg_number+""); properties.setProperty(prefix+"lwir_ffc", this.lwir_ffc+""); Loading @@ -96,6 +105,8 @@ public class LwirReaderParameters { properties.setProperty(prefix+"vnir_lag", this.vnir_lag+""); properties.setProperty(prefix+"max_mismatch_ms", this.max_mismatch_ms+""); properties.setProperty(prefix+"max_frame_diff", this.max_frame_diff+""); properties.setProperty(prefix+"debug_level", this.debug_level+""); } public void getProperties(String prefix,Properties properties){ Loading @@ -122,6 +133,7 @@ public class LwirReaderParameters { if (properties.getProperty(prefix+"vnir_lag")!=null) this.vnir_lag=Integer.parseInt(properties.getProperty(prefix+"vnir_lag")); if (properties.getProperty(prefix+"max_mismatch_ms")!=null) this.max_mismatch_ms=Double.parseDouble(properties.getProperty(prefix+"max_mismatch_ms")); if (properties.getProperty(prefix+"max_frame_diff")!=null) this.max_frame_diff=Integer.parseInt(properties.getProperty(prefix+"max_frame_diff")); if (properties.getProperty(prefix+"debug_level")!=null) this.debug_level=Integer.parseInt(properties.getProperty(prefix+"debug_level")); parameters_updated = true; } @Override Loading Loading @@ -150,6 +162,7 @@ public class LwirReaderParameters { lrp.vnir_lag= this.vnir_lag; lrp.max_mismatch_ms= this.max_mismatch_ms; lrp.max_frame_diff= this.max_frame_diff; lrp.debug_level= this.debug_level; return lrp; } Loading Loading @@ -184,7 +197,8 @@ public class LwirReaderParameters { (lrp.lwir_trig_dly == this.lwir_trig_dly) && (lrp.vnir_lag == this.vnir_lag) && (lrp.max_mismatch_ms == this.max_mismatch_ms) && (lrp.max_frame_diff == this.max_frame_diff); (lrp.max_frame_diff == this.max_frame_diff) && (lrp.debug_level == this.debug_level); } @Override Loading Loading @@ -242,6 +256,7 @@ public class LwirReaderParameters { gd.addNumericField("VNIR lag", this.vnir_lag, 0,3,"","Visible camera lag (in frames) relative to LWIR one"); gd.addNumericField("Max mismatch", this.max_mismatch_ms, 3,6,"ms","Maximal mismatch between image timestamps. Larger mismatch requires LWIR sinsor reinitialization"); 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("Debug level", this.debug_level, 0,3,"","Image acquisition log level: -3: OFF, -2:FATAL, -1:ERROR, 0:WARN, 1:INFO, 2:DEBUG"); } public void dialogAnswers(GenericJTabbedDialog gd) { Loading @@ -268,6 +283,7 @@ public class LwirReaderParameters { this.vnir_lag = (int) gd.getNextNumber(); this.max_mismatch_ms = gd.getNextNumber(); this.max_frame_diff = (int) gd.getNextNumber(); this.debug_level = (int) gd.getNextNumber(); parameters_updated = true; } Loading Loading
src/main/java/com/elphel/imagej/calibration/Aberration_Calibration.java +19 −17 Original line number Diff line number Diff line Loading @@ -1102,10 +1102,10 @@ if (MORE_BUTTONS) { Runtime runtime = Runtime.getRuntime(); runtime.gc(); if (DEBUG_LEVEL>0) System.out.println("--- Free memory="+runtime.freeMemory()+" (of "+runtime.totalMemory()+")"); if (label==null) return; if (LWIR_PARAMETERS !=null) { String LOG_LEVEL; switch (MASTER_DEBUG_LEVEL) { switch (LWIR_PARAMETERS.getDebugLevel()) { case -2: LOG_LEVEL = "FATAL"; break; case -1: LOG_LEVEL = "ERROR"; break; case 0: LOG_LEVEL = "WARN"; break; Loading @@ -1118,8 +1118,9 @@ if (MORE_BUTTONS) { if (!LOG_LEVEL_SET) { // only first time true loci.common.DebugTools.setRootLevel(LOG_LEVEL); } System.out.println("DEBUG_LEVEL = "+DEBUG_LEVEL+", MASTER_DEBUG_LEVEL = "+MASTER_DEBUG_LEVEL+ System.out.println("DEBUG_LEVEL = "+DEBUG_LEVEL+", LWIR_PARAMETERS.getDebugLevel() = "+LWIR_PARAMETERS.getDebugLevel()+ " LOG_LEVEL="+LOG_LEVEL+"LOG_LEVEL_SET="+LOG_LEVEL_SET); } if (FOCUSING_FIELD!=null) FOCUSING_FIELD.setThreads(THREADS_MAX); /* ======================================================================== */ Loading Loading @@ -9441,7 +9442,8 @@ if (MORE_BUTTONS) { if (LWIR_READER == null) { LWIR_READER = new LwirReader(LWIR_PARAMETERS); } ImagePlus [] imps = LWIR_READER.acquire("/data_ssd/imagej-elphel/attic/camera_img/test-calib"); // directory to save // ImagePlus [] imps = LWIR_READER.acquire(DISTORTION_PROCESS_CONFIGURATION.sourceDirectory); // directory to save ImagePlus [] imps = LWIR_READER.acquire("attic/lwir_test_images"); // directory to save if (imps != null) { // for (ImagePlus imp: imps) { // imp.show();
src/main/java/com/elphel/imagej/correction/Eyesis_Correction.java +18 −16 Original line number Diff line number Diff line Loading @@ -897,8 +897,9 @@ private Panel panel1, if (DEBUG_LEVEL>0) System.out.println("--- Free memory="+runtime.freeMemory()+" (of "+runtime.totalMemory()+")"); CLT_PARAMETERS.batch_run = false; if (label==null) return; if ((CLT_PARAMETERS !=null) && (CLT_PARAMETERS.lwir !=null)) { String LOG_LEVEL; switch (MASTER_DEBUG_LEVEL) { switch (CLT_PARAMETERS.lwir.getDebugLevel()) { case -2: LOG_LEVEL = "FATAL"; break; case -1: LOG_LEVEL = "ERROR"; break; case 0: LOG_LEVEL = "WARN"; break; Loading @@ -911,8 +912,9 @@ private Panel panel1, if (!LOG_LEVEL_SET) { // only first time true loci.common.DebugTools.setRootLevel(LOG_LEVEL); } System.out.println("DEBUG_LEVEL = "+DEBUG_LEVEL+", MASTER_DEBUG_LEVEL = "+MASTER_DEBUG_LEVEL+ System.out.println("DEBUG_LEVEL = "+DEBUG_LEVEL+", CLT_PARAMETERS.lwir.getDebugLevel() = "+CLT_PARAMETERS.lwir.getDebugLevel()+ " LOG_LEVEL="+LOG_LEVEL+"LOG_LEVEL_SET="+LOG_LEVEL_SET); } /* ======================================================================== */ if (label.equals("Configure spilt")) { Loading Loading @@ -4873,7 +4875,7 @@ private Panel panel1, if (LWIR_READER == null) { LWIR_READER = new LwirReader(CLT_PARAMETERS.lwir); } ImagePlus [] imps = LWIR_READER.acquire("/data_ssd/imagej-elphel/attic/camera_img/test"); // directory to save ImagePlus [] imps = LWIR_READER.acquire("attic/lwir_test_images"); // directory to save if (imps != null) { for (ImagePlus imp: imps) { // imp.show(); Loading
src/main/java/com/elphel/imagej/lwir/LwirReader.java +50 −7 Original line number Diff line number Diff line Loading @@ -208,12 +208,54 @@ public class LwirReader { return imps; } public ImagePlus [] averageMultiFrames(ImagePlus [][] sets) { //TODO: convert to multithreaded ! int num_frames = sets.length; int num_channels = sets[0].length; ImagePlus [] imps_avg = new ImagePlus [num_channels]; public ImagePlus [] averageMultiFrames( final ImagePlus [][] sets) { final int num_frames = sets.length; final int num_channels = sets[0].length; final ImagePlus [] imps_avg = new ImagePlus [num_channels]; final Thread[] threads = newThreadArray(MAX_THREADS); final AtomicInteger indxAtomic = new AtomicInteger(0); for (int ithread = 0; ithread < threads.length; ithread++) { threads[ithread] = new Thread() { @Override public void run() { for (int chn = indxAtomic.getAndIncrement(); chn < num_channels; chn = indxAtomic.getAndIncrement()) { int width = sets[0][chn].getWidth(); int height = sets[0][chn].getHeight(); String title = sets[0][chn].getTitle()+"_average"+num_frames; float [] pixels_avg = (float []) sets[0][chn].getProcessor().getPixels(); //null pointer for (int n = 1; n < num_frames; n++) { float [] pixels = (float []) sets[n][chn].getProcessor().getPixels(); for (int i = 0; i < pixels_avg.length; i++) { pixels_avg[i] += pixels[i]; } } double scale = 1.0/num_frames; for (int i = 0; i < pixels_avg.length; i++) { pixels_avg[i] *= scale; } ImageProcessor ip=new FloatProcessor(width,height); ip.setPixels(pixels_avg); ip.resetMinAndMax(); imps_avg[chn]= new ImagePlus(title, ip); Properties properties0 = sets[0][chn].getProperties(); for (String key:properties0.stringPropertyNames()) { imps_avg[chn].setProperty(key, properties0.getProperty(key)); } imps_avg[chn].setProperty("average", ""+num_frames); if (motorsPosition!=null) for (int m=0;m<motorsPosition.length;m++ ) { imps_avg[chn].setProperty("MOTOR"+(m+1), ""+motorsPosition[m]); } ImagejJp4Tiff.encodeProperiesToInfo(imps_avg[chn]); } } }; } startAndJoin(threads); /* for (int chn = 0; chn < num_channels; chn++) { int width = sets[0][chn].getWidth(); int height = sets[0][chn].getHeight(); Loading Loading @@ -244,7 +286,7 @@ public class LwirReader { ImagejJp4Tiff.encodeProperiesToInfo(imps_avg[chn]); // TODO: Overwrite some properties? } */ return imps_avg; } Loading Loading @@ -513,13 +555,14 @@ public class LwirReader { String set_path = dirpath+Prefs.getFileSeparator()+set_name; File set_dir = new File(set_path); set_dir.mkdirs(); // including parent LOGGER.warn("Saving image set to: "+set_dir.getAbsolutePath()); for (ImagePlus imp:imps_avg) { String fname = imp.getTitle(); fname = fname.substring(0, fname.lastIndexOf('_')) + ".tiff"; // remove _average FileSaver fs=new FileSaver(imp); String path=set_path+Prefs.getFileSeparator()+fname; IJ.showStatus("Saving "+path); LOGGER.debug("LWIR_ACQUIRE: 'Saving "+path+ " (and other with the same timestamp)" ); LOGGER.info("LWIR_ACQUIRE: 'Saving "+path ); fs.saveAsTiff(path); } } Loading
src/main/java/com/elphel/imagej/lwir/LwirReaderParameters.java +17 −1 Original line number Diff line number Diff line Loading @@ -49,6 +49,7 @@ public class LwirReaderParameters { protected double vnir_gain_g = 2.0; protected double vnir_gain_rg = 0.7705; // 1.116; halogen/fluorescent protected double vnir_gain_bg = 2.401; // 1.476; /* protected double [] vnir_exp_corr = {1.0, 1.0, 1.0, 1.0}; protected double [] vnir_gcorr_rbgb = { Loading @@ -69,9 +70,17 @@ public class LwirReaderParameters { protected int vnir_lag = 1; // frames protected double max_mismatch_ms = 0.05; protected int max_frame_diff = 1; // 2; protected int debug_level = 0;//-3: OFF, -2:Fatal, -1:ERROR, 0:WARN, 1:INFO,2:DEBUG // --- interface methods public int getDebugLevel() { return this.debug_level; } public void setDebugLevel(int level) { this.debug_level = level; } public void setProperties(String prefix,Properties properties){ properties.setProperty(prefix+"avg_number", this.avg_number+""); properties.setProperty(prefix+"lwir_ffc", this.lwir_ffc+""); Loading @@ -96,6 +105,8 @@ public class LwirReaderParameters { properties.setProperty(prefix+"vnir_lag", this.vnir_lag+""); properties.setProperty(prefix+"max_mismatch_ms", this.max_mismatch_ms+""); properties.setProperty(prefix+"max_frame_diff", this.max_frame_diff+""); properties.setProperty(prefix+"debug_level", this.debug_level+""); } public void getProperties(String prefix,Properties properties){ Loading @@ -122,6 +133,7 @@ public class LwirReaderParameters { if (properties.getProperty(prefix+"vnir_lag")!=null) this.vnir_lag=Integer.parseInt(properties.getProperty(prefix+"vnir_lag")); if (properties.getProperty(prefix+"max_mismatch_ms")!=null) this.max_mismatch_ms=Double.parseDouble(properties.getProperty(prefix+"max_mismatch_ms")); if (properties.getProperty(prefix+"max_frame_diff")!=null) this.max_frame_diff=Integer.parseInt(properties.getProperty(prefix+"max_frame_diff")); if (properties.getProperty(prefix+"debug_level")!=null) this.debug_level=Integer.parseInt(properties.getProperty(prefix+"debug_level")); parameters_updated = true; } @Override Loading Loading @@ -150,6 +162,7 @@ public class LwirReaderParameters { lrp.vnir_lag= this.vnir_lag; lrp.max_mismatch_ms= this.max_mismatch_ms; lrp.max_frame_diff= this.max_frame_diff; lrp.debug_level= this.debug_level; return lrp; } Loading Loading @@ -184,7 +197,8 @@ public class LwirReaderParameters { (lrp.lwir_trig_dly == this.lwir_trig_dly) && (lrp.vnir_lag == this.vnir_lag) && (lrp.max_mismatch_ms == this.max_mismatch_ms) && (lrp.max_frame_diff == this.max_frame_diff); (lrp.max_frame_diff == this.max_frame_diff) && (lrp.debug_level == this.debug_level); } @Override Loading Loading @@ -242,6 +256,7 @@ public class LwirReaderParameters { gd.addNumericField("VNIR lag", this.vnir_lag, 0,3,"","Visible camera lag (in frames) relative to LWIR one"); gd.addNumericField("Max mismatch", this.max_mismatch_ms, 3,6,"ms","Maximal mismatch between image timestamps. Larger mismatch requires LWIR sinsor reinitialization"); 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("Debug level", this.debug_level, 0,3,"","Image acquisition log level: -3: OFF, -2:FATAL, -1:ERROR, 0:WARN, 1:INFO, 2:DEBUG"); } public void dialogAnswers(GenericJTabbedDialog gd) { Loading @@ -268,6 +283,7 @@ public class LwirReaderParameters { this.vnir_lag = (int) gd.getNextNumber(); this.max_mismatch_ms = gd.getNextNumber(); this.max_frame_diff = (int) gd.getNextNumber(); this.debug_level = (int) gd.getNextNumber(); parameters_updated = true; } Loading