Loading src/main/java/JP46_Reader_camera0.java +68 −6 Original line number Diff line number Diff line Loading @@ -55,6 +55,8 @@ import org.w3c.dom.NodeList; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import com.elphel.imagej.readers.ImagejJp4Tiff; import ij.IJ; import ij.ImageJ; import ij.ImagePlus; Loading @@ -69,6 +71,7 @@ import ij.plugin.frame.PlugInFrame; import ij.process.ImageConverter; import ij.process.ImageProcessor; import ij.text.TextWindow; import loci.formats.FormatException; Loading @@ -87,6 +90,8 @@ public class JP46_Reader_camera0 extends PlugInFrame implements ActionListener { static File dir; ImagejJp4Tiff imagejJp4Tiff = new ImagejJp4Tiff(); public String camera_url = "http://192.168.0.236:8081/"; public String camera_img = "bimg"; public String camera_img_new = "towp/wait/bimg"; // will always wait for the next image (repetitive acquisitions get new images) Loading @@ -109,8 +114,9 @@ public class JP46_Reader_camera0 extends PlugInFrame implements ActionListener { panel1 = new Panel(); panel1.setLayout(new GridLayout(6, 1, 50, 5)); panel1.setLayout(new GridLayout(8, 1, 50, 5)); addButton("Open JP4/Tiff...",panel1); addButton("Open JP4/JP46...",panel1); addButton("Open JP4/JP46 from camera",panel1); addButton("Configure...",panel1); Loading @@ -137,8 +143,8 @@ public class JP46_Reader_camera0 extends PlugInFrame implements ActionListener { panel1 = new Panel(); panel1.setLayout(new GridLayout(6, 1, 50, 5)); panel1.setLayout(new GridLayout(8, 1, 50, 5)); addButton("Open JP4/Tiff...",panel1); addButton("Open JP4/JP46...",panel1); addButton("Open JP4/JP46 from camera",panel1); addButton("Configure...",panel1); Loading Loading @@ -169,7 +175,11 @@ public class JP46_Reader_camera0 extends PlugInFrame implements ActionListener { if (label==null) return; /* button */ if (label.equals("Open JP4/JP46...")) { if (label.equals("Open JP4/Tiff...")) { read_jp4Tiff(arg,true); }else if (label.equals("Open JP4/Tiff (no scale)...")) { read_jp4Tiff(arg,false); }else if (label.equals("Open JP4/JP46...")) { read_jp46(arg,true); }else if (label.equals("Open JP4/JP46 (no scale)...")) { read_jp46(arg,false); Loading Loading @@ -227,7 +237,54 @@ public class JP46_Reader_camera0 extends PlugInFrame implements ActionListener { imp_stack.getProcessor().resetMinAndMax(); imp_stack.show(); } public void read_jp4Tiff(String arg, // not used? boolean scale) { String LOG_LEVEL = ABSOLUTELY_SILENT? "OFF" : (IS_SILENT?"ERROR":"INFO"); boolean LOG_LEVEL_SET = loci.common.DebugTools.enableLogging(LOG_LEVEL); if (!LOG_LEVEL_SET) { // only first time true loci.common.DebugTools.setRootLevel(LOG_LEVEL); } JFileChooser fc=null; //try {fc = new JFileChooser();} fc = new JFileChooser(); //catch (Throwable e) {IJ.error("This plugin requires Java 2 or Swing."); return;} fc.setMultiSelectionEnabled(true); if (dir==null) { String sdir = OpenDialog.getDefaultDirectory(); if (sdir!=null) dir = new File(sdir); } if (dir!=null) fc.setCurrentDirectory(dir); int returnVal = fc.showOpenDialog(IJ.getInstance()); if (returnVal!=JFileChooser.APPROVE_OPTION) return; File[] files = fc.getSelectedFiles(); if (files.length==0) { // getSelectedFiles does not work on some JVMs files = new File[1]; files[0] = fc.getSelectedFile(); } String path = fc.getCurrentDirectory().getPath()+Prefs.getFileSeparator(); dir = fc.getCurrentDirectory(); for (int i=0; i<files.length; i++) { try { ImagePlus imp = imagejJp4Tiff.readTiffJp4(path + files[i].getName(), scale); // imp.updateAndDraw(); imp.show(); } catch (IOException | FormatException e) { // TODO Auto-generated catch block e.printStackTrace(); } // throws IOException, FormatException { // std - include non-elphel properties with prefix std // open(path, files[i].getName(), arg, scale); } } public void read_jp46(String arg, boolean scale) { JFileChooser fc=null; //try {fc = new JFileChooser();} Loading Loading @@ -274,6 +331,7 @@ public class JP46_Reader_camera0 extends PlugInFrame implements ActionListener { confpanel = new Panel(); gd.addPanel(confpanel); addButton("Open JP4/Tiff (no scale)...", confpanel); addButton("Open JP4/JP46 (no scale)...", confpanel); addButton("Open JP4/JP46 from camera (no scale)", confpanel); Loading Loading @@ -1413,9 +1471,13 @@ Exception in thread "Thread-3564" java.lang.ArrayIndexOutOfBoundsException: 8970 NodeList allNodes=doc.getDocumentElement().getElementsByTagName("*"); for (int i=0;i<allNodes.getLength();i++) { String name= allNodes.item(i).getNodeName(); String value=allNodes.item(i).getFirstChild().getNodeValue(); imp.setProperty(name, value); String value=""; try { value=allNodes.item(i).getFirstChild().getNodeValue(); } catch(Exception e) { } imp.setProperty(name, value); } return true; Loading src/main/java/com/elphel/imagej/calibration/Aberration_Calibration.java +404 −177 File changed.Preview size limit exceeded, changes collapsed. Show changes src/main/java/com/elphel/imagej/calibration/DistortionProcessConfiguration.java +37 −15 Original line number Diff line number Diff line Loading @@ -23,15 +23,16 @@ package com.elphel.imagej.calibration; ** */ import ij.IJ; import ij.Prefs; import ij.gui.GenericDialog; import java.io.File; import java.io.FilenameFilter; import java.util.Properties; import com.elphel.imagej.common.WindowTools; import ij.IJ; import ij.Prefs; import ij.gui.GenericDialog; public class DistortionProcessConfiguration{ public String sourceDirectory=""; Loading Loading @@ -207,4 +208,25 @@ import com.elphel.imagej.common.WindowTools; return sourceFiles; } public String[] selectSourceSets() { File dir= new File (this.sourceDirectory); if (this.debugLevel>1) System.out.println("selectSourceSets, dir="+this.sourceDirectory); if (!dir.exists()) { String error="Source directory "+this.sourceDirectory+" does not exist."; IJ.showMessage("No files selected"); if (this.debugLevel>1) System.out.println("selectSourceFiles() ERROR:"+error); return null; } File [] sourceFileSets = dir.listFiles(new FilenameFilter() { @Override public boolean accept(File current, String name) { return new File(current, name).isDirectory(); } }); String [] sourceSets = new String[sourceFileSets.length]; for (int i=0;i<sourceSets.length;i++) sourceSets[i]=sourceFileSets[i].getPath(); return sourceSets; } } src/main/java/com/elphel/imagej/calibration/EyesisAberrations.java +272 −262 Original line number Diff line number Diff line package com.elphel.imagej.calibration; import ij.IJ; import ij.ImagePlus; import ij.ImageStack; import ij.Prefs; import ij.gui.GenericDialog; import ij.io.FileSaver; import ij.io.Opener; import ij.process.FloatProcessor; import ij.process.ImageProcessor; import java.awt.Rectangle; import java.io.File; import java.util.ArrayList; Loading @@ -19,14 +9,22 @@ import java.util.concurrent.atomic.AtomicInteger; import javax.swing.SwingUtilities; import com.elphel.imagej.calibration.CalibrationFileManagement.MultipleExtensionsFileFilter; import com.elphel.imagej.calibration.SimulationPattern.SimulParameters; import com.elphel.imagej.common.DoubleFHT; import com.elphel.imagej.common.DoubleGaussianBlur; import com.elphel.imagej.common.ShowDoubleFloatArrays; import com.elphel.imagej.common.WindowTools; import com.elphel.imagej.jp4.JP46_Reader_camera; import ij.IJ; import ij.ImagePlus; import ij.ImageStack; import ij.Prefs; import ij.gui.GenericDialog; import ij.io.FileSaver; import ij.io.Opener; import ij.process.FloatProcessor; import ij.process.ImageProcessor; public class EyesisAberrations { public double [][][][] pdfKernelMap=null; JP46_Reader_camera JP4_INSTANCE= new JP46_Reader_camera(false); Loading Loading @@ -181,6 +179,7 @@ public class EyesisAberrations { final int numberOfKernelsInChn=tilesY*tilesX; for (int ithread = 0; ithread < threads.length; ithread++) { threads[ithread] = new Thread() { @Override public void run() { float [] pixels=null; double [] kernel= new double[inverseParameters.dSize*inverseParameters.dSize]; Loading Loading @@ -555,7 +554,7 @@ public class EyesisAberrations { iy=-iy; } ix= (ix+size) % size; floatPixels[i]=(float) clusterMap[iy][ix]; floatPixels[i]=clusterMap[iy][ix]; } ip.setPixels(floatPixels); ip.resetMinAndMax(); Loading Loading @@ -639,8 +638,8 @@ public class EyesisAberrations { row2=(fftsize-row1) %fftsize; for (col1=0;col1 < fftsize;col1++) { col2=(fftsize-col1) %fftsize; fht_pixels[row1*fftsize+col1]=(double) (fft[row1][col1][0]-fft[row1][col1][1]); fht_pixels[row2*fftsize+col2]=(double) (fft[row1][col1][0]+fft[row1][col1][1]); fht_pixels[row1*fftsize+col1]=fft[row1][col1][0]-fft[row1][col1][1]; fht_pixels[row2*fftsize+col2]=fft[row1][col1][0]+fft[row1][col1][1]; } } return fht_pixels; Loading Loading @@ -1279,8 +1278,11 @@ public class EyesisAberrations { } int rslt=matchSimulatedPattern.calculateDistortions( null, // LwirReaderParameters lwirReaderParameters, // null is OK distortionParameters, // patternDetectParameters, // patternDetectParameters.minGridPeriod/2, // patternDetectParameters.maxGridPeriod/2, simulParameters, colorComponents.equalizeGreens, imp, Loading Loading @@ -2313,6 +2315,7 @@ public class EyesisAberrations { for (int ithread = 0; ithread < threads.length; ithread++) { // Concurrently run in as many threads as CPUs threads[ithread] = new Thread() { @Override public void run() { // Each thread processes a few items in the total list Loading Loading @@ -2399,6 +2402,7 @@ public class EyesisAberrations { } final int numFinished=tilesFinishedAtomic.getAndIncrement(); SwingUtilities.invokeLater(new Runnable() { @Override public void run() { IJ.showProgress(numFinished,patternCells); } Loading Loading @@ -2679,6 +2683,8 @@ public class EyesisAberrations { if (matchSimulatedPattern.PATTERN_GRID==null) { double[][] distortedPattern= matchSimulatedPattern.findPatternDistorted(input_bayer, // pixel array to process (no windowing!) patternDetectParameters, patternDetectParameters.minGridPeriod/2, patternDetectParameters.maxGridPeriod/2, true, //(greensToProcess==4), // boolean greens, // this is a pattern for combined greens (diagonal), adjust results accordingly title); // title prefix to use for debug images Loading @@ -2704,7 +2710,8 @@ public class EyesisAberrations { distortedPattern[2], // simulParameters.subdiv, fft_size, simulParameters.center_for_g2); simulParameters.center_for_g2, false);//boolean mono wVectors[0][0]=2.0*distortedPattern[0][0]/subpixel; wVectors[0][1]=2.0*distortedPattern[0][1]/subpixel; wVectors[1][0]=2.0*distortedPattern[1][0]/subpixel; Loading Loading @@ -2747,7 +2754,8 @@ public class EyesisAberrations { simCorr, // simulParameters.subdiv, fft_size, simulParameters.center_for_g2); simulParameters.center_for_g2, false);//boolean mono } // simul_pixels= simulationPattern.extractSimulPatterns ( simul_pixels= simulationPattern.extractSimulPatterns ( Loading Loading @@ -4148,7 +4156,7 @@ if (globalDebugLevel>2)globalDebugLevel=0; //*********************************** ImageProcessor ip = new FloatProcessor(size,size); float [] floatPixels = new float [size*size]; for (i=0;i<floatPixels.length;i++) { floatPixels[i]=(float) clusterMap[i/size][i%size]; floatPixels[i]=clusterMap[i/size][i%size]; } ip.setPixels(floatPixels); ip.resetMinAndMax(); Loading Loading @@ -4404,11 +4412,11 @@ if (globalDebugLevel>2)globalDebugLevel=0; //*********************************** if (debug) { SDFA_INSTANCE.showArrays(debugPixels, title+"_mask_PSF"); double [] doublePixelsPSFCount=new double [pixelsPSF.length]; for (j=0;j<doublePixelsPSFCount.length;j++) doublePixelsPSFCount[j]=(double)pixelsPSFCount[j]; for (j=0;j<doublePixelsPSFCount.length;j++) doublePixelsPSFCount[j]=pixelsPSFCount[j]; SDFA_INSTANCE.showArrays(doublePixelsPSFCount, title+"_PSF_bin_count"); SDFA_INSTANCE.showArrays(pixelsPSFWeight, title+"_PSF_bin_weight"); double [] doubleContrastCache=new double [contrastCache.length]; for (j=0;j<doubleContrastCache.length;j++) doubleContrastCache[j]=(double)((contrastCache[j]>=0.0)?contrastCache[j]:-0.00001); for (j=0;j<doubleContrastCache.length;j++) doubleContrastCache[j]=(contrastCache[j]>=0.0)?contrastCache[j]:-0.00001; SDFA_INSTANCE.showArrays(doubleContrastCache, title+"_ContrastCache"); } return pixelsPSF; Loading Loading @@ -4988,6 +4996,7 @@ if (globalDebugLevel>2)globalDebugLevel=0; //*********************************** this.thresholdHigh = thresholdHigh; this.thresholdLow = thresholdLow; } @Override public OTFFilterParameters clone() { return new OTFFilterParameters( this.deconvInvert, Loading Loading @@ -5076,6 +5085,7 @@ if (globalDebugLevel>2)globalDebugLevel=0; //*********************************** } @Override public PSFParameters clone(){ return new PSFParameters( this.minContrast, Loading src/main/java/com/elphel/imagej/calibration/Goniometer.java +23 −17 Original line number Diff line number Diff line Loading @@ -665,9 +665,12 @@ horizontal axis: boolean noMessageBoxes=true; int numAbsolutePoints = matchSimulatedPattern.calculateDistortions( null, // LwirReaderParameters lwirReaderParameters, // null is OK // allow more of grid around pointers? distortionParameters, // this.patternDetectParameters, // this.patternDetectParameters.minGridPeriod/2, // this.patternDetectParameters.maxGridPeriod/2, simulParameters, equalizeGreens, imp_eq, this.laserPointers, // null, //LASER_POINTERS, // Loading Loading @@ -838,9 +841,12 @@ horizontal axis: // matchSimulatedPatterns[numSensor].getChannel(images[numSensor])+" "); int numAbsolutePoints = this.matchSimulatedPatterns[numSensor].calculateDistortions( null, // LwirReaderParameters lwirReaderParameters, // null is OK // allow more of grid around pointers? distortionParameters, // this.patternDetectParameters, // this.patternDetectParameters.minGridPeriod/2, // this.patternDetectParameters.maxGridPeriod/2, simulParameters, equalizeGreens, imp_eq, this.laserPointers, // null, //LASER_POINTERS, // Loading Loading
src/main/java/JP46_Reader_camera0.java +68 −6 Original line number Diff line number Diff line Loading @@ -55,6 +55,8 @@ import org.w3c.dom.NodeList; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import com.elphel.imagej.readers.ImagejJp4Tiff; import ij.IJ; import ij.ImageJ; import ij.ImagePlus; Loading @@ -69,6 +71,7 @@ import ij.plugin.frame.PlugInFrame; import ij.process.ImageConverter; import ij.process.ImageProcessor; import ij.text.TextWindow; import loci.formats.FormatException; Loading @@ -87,6 +90,8 @@ public class JP46_Reader_camera0 extends PlugInFrame implements ActionListener { static File dir; ImagejJp4Tiff imagejJp4Tiff = new ImagejJp4Tiff(); public String camera_url = "http://192.168.0.236:8081/"; public String camera_img = "bimg"; public String camera_img_new = "towp/wait/bimg"; // will always wait for the next image (repetitive acquisitions get new images) Loading @@ -109,8 +114,9 @@ public class JP46_Reader_camera0 extends PlugInFrame implements ActionListener { panel1 = new Panel(); panel1.setLayout(new GridLayout(6, 1, 50, 5)); panel1.setLayout(new GridLayout(8, 1, 50, 5)); addButton("Open JP4/Tiff...",panel1); addButton("Open JP4/JP46...",panel1); addButton("Open JP4/JP46 from camera",panel1); addButton("Configure...",panel1); Loading @@ -137,8 +143,8 @@ public class JP46_Reader_camera0 extends PlugInFrame implements ActionListener { panel1 = new Panel(); panel1.setLayout(new GridLayout(6, 1, 50, 5)); panel1.setLayout(new GridLayout(8, 1, 50, 5)); addButton("Open JP4/Tiff...",panel1); addButton("Open JP4/JP46...",panel1); addButton("Open JP4/JP46 from camera",panel1); addButton("Configure...",panel1); Loading Loading @@ -169,7 +175,11 @@ public class JP46_Reader_camera0 extends PlugInFrame implements ActionListener { if (label==null) return; /* button */ if (label.equals("Open JP4/JP46...")) { if (label.equals("Open JP4/Tiff...")) { read_jp4Tiff(arg,true); }else if (label.equals("Open JP4/Tiff (no scale)...")) { read_jp4Tiff(arg,false); }else if (label.equals("Open JP4/JP46...")) { read_jp46(arg,true); }else if (label.equals("Open JP4/JP46 (no scale)...")) { read_jp46(arg,false); Loading Loading @@ -227,7 +237,54 @@ public class JP46_Reader_camera0 extends PlugInFrame implements ActionListener { imp_stack.getProcessor().resetMinAndMax(); imp_stack.show(); } public void read_jp4Tiff(String arg, // not used? boolean scale) { String LOG_LEVEL = ABSOLUTELY_SILENT? "OFF" : (IS_SILENT?"ERROR":"INFO"); boolean LOG_LEVEL_SET = loci.common.DebugTools.enableLogging(LOG_LEVEL); if (!LOG_LEVEL_SET) { // only first time true loci.common.DebugTools.setRootLevel(LOG_LEVEL); } JFileChooser fc=null; //try {fc = new JFileChooser();} fc = new JFileChooser(); //catch (Throwable e) {IJ.error("This plugin requires Java 2 or Swing."); return;} fc.setMultiSelectionEnabled(true); if (dir==null) { String sdir = OpenDialog.getDefaultDirectory(); if (sdir!=null) dir = new File(sdir); } if (dir!=null) fc.setCurrentDirectory(dir); int returnVal = fc.showOpenDialog(IJ.getInstance()); if (returnVal!=JFileChooser.APPROVE_OPTION) return; File[] files = fc.getSelectedFiles(); if (files.length==0) { // getSelectedFiles does not work on some JVMs files = new File[1]; files[0] = fc.getSelectedFile(); } String path = fc.getCurrentDirectory().getPath()+Prefs.getFileSeparator(); dir = fc.getCurrentDirectory(); for (int i=0; i<files.length; i++) { try { ImagePlus imp = imagejJp4Tiff.readTiffJp4(path + files[i].getName(), scale); // imp.updateAndDraw(); imp.show(); } catch (IOException | FormatException e) { // TODO Auto-generated catch block e.printStackTrace(); } // throws IOException, FormatException { // std - include non-elphel properties with prefix std // open(path, files[i].getName(), arg, scale); } } public void read_jp46(String arg, boolean scale) { JFileChooser fc=null; //try {fc = new JFileChooser();} Loading Loading @@ -274,6 +331,7 @@ public class JP46_Reader_camera0 extends PlugInFrame implements ActionListener { confpanel = new Panel(); gd.addPanel(confpanel); addButton("Open JP4/Tiff (no scale)...", confpanel); addButton("Open JP4/JP46 (no scale)...", confpanel); addButton("Open JP4/JP46 from camera (no scale)", confpanel); Loading Loading @@ -1413,9 +1471,13 @@ Exception in thread "Thread-3564" java.lang.ArrayIndexOutOfBoundsException: 8970 NodeList allNodes=doc.getDocumentElement().getElementsByTagName("*"); for (int i=0;i<allNodes.getLength();i++) { String name= allNodes.item(i).getNodeName(); String value=allNodes.item(i).getFirstChild().getNodeValue(); imp.setProperty(name, value); String value=""; try { value=allNodes.item(i).getFirstChild().getNodeValue(); } catch(Exception e) { } imp.setProperty(name, value); } return true; Loading
src/main/java/com/elphel/imagej/calibration/Aberration_Calibration.java +404 −177 File changed.Preview size limit exceeded, changes collapsed. Show changes
src/main/java/com/elphel/imagej/calibration/DistortionProcessConfiguration.java +37 −15 Original line number Diff line number Diff line Loading @@ -23,15 +23,16 @@ package com.elphel.imagej.calibration; ** */ import ij.IJ; import ij.Prefs; import ij.gui.GenericDialog; import java.io.File; import java.io.FilenameFilter; import java.util.Properties; import com.elphel.imagej.common.WindowTools; import ij.IJ; import ij.Prefs; import ij.gui.GenericDialog; public class DistortionProcessConfiguration{ public String sourceDirectory=""; Loading Loading @@ -207,4 +208,25 @@ import com.elphel.imagej.common.WindowTools; return sourceFiles; } public String[] selectSourceSets() { File dir= new File (this.sourceDirectory); if (this.debugLevel>1) System.out.println("selectSourceSets, dir="+this.sourceDirectory); if (!dir.exists()) { String error="Source directory "+this.sourceDirectory+" does not exist."; IJ.showMessage("No files selected"); if (this.debugLevel>1) System.out.println("selectSourceFiles() ERROR:"+error); return null; } File [] sourceFileSets = dir.listFiles(new FilenameFilter() { @Override public boolean accept(File current, String name) { return new File(current, name).isDirectory(); } }); String [] sourceSets = new String[sourceFileSets.length]; for (int i=0;i<sourceSets.length;i++) sourceSets[i]=sourceFileSets[i].getPath(); return sourceSets; } }
src/main/java/com/elphel/imagej/calibration/EyesisAberrations.java +272 −262 Original line number Diff line number Diff line package com.elphel.imagej.calibration; import ij.IJ; import ij.ImagePlus; import ij.ImageStack; import ij.Prefs; import ij.gui.GenericDialog; import ij.io.FileSaver; import ij.io.Opener; import ij.process.FloatProcessor; import ij.process.ImageProcessor; import java.awt.Rectangle; import java.io.File; import java.util.ArrayList; Loading @@ -19,14 +9,22 @@ import java.util.concurrent.atomic.AtomicInteger; import javax.swing.SwingUtilities; import com.elphel.imagej.calibration.CalibrationFileManagement.MultipleExtensionsFileFilter; import com.elphel.imagej.calibration.SimulationPattern.SimulParameters; import com.elphel.imagej.common.DoubleFHT; import com.elphel.imagej.common.DoubleGaussianBlur; import com.elphel.imagej.common.ShowDoubleFloatArrays; import com.elphel.imagej.common.WindowTools; import com.elphel.imagej.jp4.JP46_Reader_camera; import ij.IJ; import ij.ImagePlus; import ij.ImageStack; import ij.Prefs; import ij.gui.GenericDialog; import ij.io.FileSaver; import ij.io.Opener; import ij.process.FloatProcessor; import ij.process.ImageProcessor; public class EyesisAberrations { public double [][][][] pdfKernelMap=null; JP46_Reader_camera JP4_INSTANCE= new JP46_Reader_camera(false); Loading Loading @@ -181,6 +179,7 @@ public class EyesisAberrations { final int numberOfKernelsInChn=tilesY*tilesX; for (int ithread = 0; ithread < threads.length; ithread++) { threads[ithread] = new Thread() { @Override public void run() { float [] pixels=null; double [] kernel= new double[inverseParameters.dSize*inverseParameters.dSize]; Loading Loading @@ -555,7 +554,7 @@ public class EyesisAberrations { iy=-iy; } ix= (ix+size) % size; floatPixels[i]=(float) clusterMap[iy][ix]; floatPixels[i]=clusterMap[iy][ix]; } ip.setPixels(floatPixels); ip.resetMinAndMax(); Loading Loading @@ -639,8 +638,8 @@ public class EyesisAberrations { row2=(fftsize-row1) %fftsize; for (col1=0;col1 < fftsize;col1++) { col2=(fftsize-col1) %fftsize; fht_pixels[row1*fftsize+col1]=(double) (fft[row1][col1][0]-fft[row1][col1][1]); fht_pixels[row2*fftsize+col2]=(double) (fft[row1][col1][0]+fft[row1][col1][1]); fht_pixels[row1*fftsize+col1]=fft[row1][col1][0]-fft[row1][col1][1]; fht_pixels[row2*fftsize+col2]=fft[row1][col1][0]+fft[row1][col1][1]; } } return fht_pixels; Loading Loading @@ -1279,8 +1278,11 @@ public class EyesisAberrations { } int rslt=matchSimulatedPattern.calculateDistortions( null, // LwirReaderParameters lwirReaderParameters, // null is OK distortionParameters, // patternDetectParameters, // patternDetectParameters.minGridPeriod/2, // patternDetectParameters.maxGridPeriod/2, simulParameters, colorComponents.equalizeGreens, imp, Loading Loading @@ -2313,6 +2315,7 @@ public class EyesisAberrations { for (int ithread = 0; ithread < threads.length; ithread++) { // Concurrently run in as many threads as CPUs threads[ithread] = new Thread() { @Override public void run() { // Each thread processes a few items in the total list Loading Loading @@ -2399,6 +2402,7 @@ public class EyesisAberrations { } final int numFinished=tilesFinishedAtomic.getAndIncrement(); SwingUtilities.invokeLater(new Runnable() { @Override public void run() { IJ.showProgress(numFinished,patternCells); } Loading Loading @@ -2679,6 +2683,8 @@ public class EyesisAberrations { if (matchSimulatedPattern.PATTERN_GRID==null) { double[][] distortedPattern= matchSimulatedPattern.findPatternDistorted(input_bayer, // pixel array to process (no windowing!) patternDetectParameters, patternDetectParameters.minGridPeriod/2, patternDetectParameters.maxGridPeriod/2, true, //(greensToProcess==4), // boolean greens, // this is a pattern for combined greens (diagonal), adjust results accordingly title); // title prefix to use for debug images Loading @@ -2704,7 +2710,8 @@ public class EyesisAberrations { distortedPattern[2], // simulParameters.subdiv, fft_size, simulParameters.center_for_g2); simulParameters.center_for_g2, false);//boolean mono wVectors[0][0]=2.0*distortedPattern[0][0]/subpixel; wVectors[0][1]=2.0*distortedPattern[0][1]/subpixel; wVectors[1][0]=2.0*distortedPattern[1][0]/subpixel; Loading Loading @@ -2747,7 +2754,8 @@ public class EyesisAberrations { simCorr, // simulParameters.subdiv, fft_size, simulParameters.center_for_g2); simulParameters.center_for_g2, false);//boolean mono } // simul_pixels= simulationPattern.extractSimulPatterns ( simul_pixels= simulationPattern.extractSimulPatterns ( Loading Loading @@ -4148,7 +4156,7 @@ if (globalDebugLevel>2)globalDebugLevel=0; //*********************************** ImageProcessor ip = new FloatProcessor(size,size); float [] floatPixels = new float [size*size]; for (i=0;i<floatPixels.length;i++) { floatPixels[i]=(float) clusterMap[i/size][i%size]; floatPixels[i]=clusterMap[i/size][i%size]; } ip.setPixels(floatPixels); ip.resetMinAndMax(); Loading Loading @@ -4404,11 +4412,11 @@ if (globalDebugLevel>2)globalDebugLevel=0; //*********************************** if (debug) { SDFA_INSTANCE.showArrays(debugPixels, title+"_mask_PSF"); double [] doublePixelsPSFCount=new double [pixelsPSF.length]; for (j=0;j<doublePixelsPSFCount.length;j++) doublePixelsPSFCount[j]=(double)pixelsPSFCount[j]; for (j=0;j<doublePixelsPSFCount.length;j++) doublePixelsPSFCount[j]=pixelsPSFCount[j]; SDFA_INSTANCE.showArrays(doublePixelsPSFCount, title+"_PSF_bin_count"); SDFA_INSTANCE.showArrays(pixelsPSFWeight, title+"_PSF_bin_weight"); double [] doubleContrastCache=new double [contrastCache.length]; for (j=0;j<doubleContrastCache.length;j++) doubleContrastCache[j]=(double)((contrastCache[j]>=0.0)?contrastCache[j]:-0.00001); for (j=0;j<doubleContrastCache.length;j++) doubleContrastCache[j]=(contrastCache[j]>=0.0)?contrastCache[j]:-0.00001; SDFA_INSTANCE.showArrays(doubleContrastCache, title+"_ContrastCache"); } return pixelsPSF; Loading Loading @@ -4988,6 +4996,7 @@ if (globalDebugLevel>2)globalDebugLevel=0; //*********************************** this.thresholdHigh = thresholdHigh; this.thresholdLow = thresholdLow; } @Override public OTFFilterParameters clone() { return new OTFFilterParameters( this.deconvInvert, Loading Loading @@ -5076,6 +5085,7 @@ if (globalDebugLevel>2)globalDebugLevel=0; //*********************************** } @Override public PSFParameters clone(){ return new PSFParameters( this.minContrast, Loading
src/main/java/com/elphel/imagej/calibration/Goniometer.java +23 −17 Original line number Diff line number Diff line Loading @@ -665,9 +665,12 @@ horizontal axis: boolean noMessageBoxes=true; int numAbsolutePoints = matchSimulatedPattern.calculateDistortions( null, // LwirReaderParameters lwirReaderParameters, // null is OK // allow more of grid around pointers? distortionParameters, // this.patternDetectParameters, // this.patternDetectParameters.minGridPeriod/2, // this.patternDetectParameters.maxGridPeriod/2, simulParameters, equalizeGreens, imp_eq, this.laserPointers, // null, //LASER_POINTERS, // Loading Loading @@ -838,9 +841,12 @@ horizontal axis: // matchSimulatedPatterns[numSensor].getChannel(images[numSensor])+" "); int numAbsolutePoints = this.matchSimulatedPatterns[numSensor].calculateDistortions( null, // LwirReaderParameters lwirReaderParameters, // null is OK // allow more of grid around pointers? distortionParameters, // this.patternDetectParameters, // this.patternDetectParameters.minGridPeriod/2, // this.patternDetectParameters.maxGridPeriod/2, simulParameters, equalizeGreens, imp_eq, this.laserPointers, // null, //LASER_POINTERS, // Loading