Loading src/main/java/com/elphel/imagej/orthomosaic/ComboMatch.java +16 −15 Original line number Diff line number Diff line Loading @@ -175,7 +175,7 @@ public class ComboMatch { boolean display_pairs = false; boolean create_map = false; boolean create_equalize = false; boolean use_saved_collection = false; // true; // false; boolean use_saved_collection = true; // false; boolean save_collection = false; // true; boolean process_correlation = true; // use false to save new version of data int num_tries_fit = 10; Loading Loading @@ -339,7 +339,7 @@ public class ComboMatch { maps_collection = OrthoMapsCollection.readOrthoMapsCollection (orthoMapsCollection_path); } catch (ClassNotFoundException | IOException e) { use_files_list = true; System.out.println("Saved data not found: "+orthoMapsCollection_path+", building from a list "+files_list_path); System.out.println("Saved data not found (or is corrupt): "+orthoMapsCollection_path+", building from a list "+files_list_path); } //files_list_path if (!use_files_list) { Loading @@ -361,10 +361,12 @@ public class ComboMatch { } if (import_export) { return updateImportExport( boolean OK = updateImportExport( omtch_img_set, // String files_base maps_collection); // OrthoMapsCollection maps_collection if (!OK) { return false; } } Loading Loading @@ -867,7 +869,7 @@ public class ComboMatch { maps_collection.processComboMap( clt_parameters, // CLTParameters clt_parameters, debugLevel); return true; // return true; // need to save AGL? } // for all modes - needed for create_overlaps || process_correlation || render_match || pattern_match Loading Loading @@ -2689,7 +2691,7 @@ adjusted affines[1] for a pair: 1694564291_293695/1694564778_589341 gd.addStringField ("Scene affines full path", affines_path, 150, "Path to import/export scenes affines."); gd.addStringField ("Pairwise affines full path", affines2_path, 150, "Path to import/export scenes pairs affines."); gd.addCheckbox ("Update scene files", update_files, "Re-read files as specified in .list file, possibly changing versions"); gd.addCheckbox ("Update files metadata", update_lla, "Re-read files metadata (if it was modified)"); gd.addCheckbox ("Update files metadata", update_lla, "Re-read files metadata (if it was modified), needed to calculate AGL."); gd.addCheckbox ("Update kernels/patterns", update_kernel_patterns, "Re-read kernels and patterns from *.list file"); gd.addCheckbox ("Export scene affines", export_affine, "Export per-scene affines in text format for migration."); gd.addCheckbox ("Export pairs affines", export_affine2, "Export per-pair affines in text format for migration."); Loading Loading @@ -2726,7 +2728,7 @@ adjusted affines[1] for a pair: 1694564291_293695/1694564778_589341 if (update_lla) { System.out.println("Updating map files metadata"); maps_collection.updateLLA(); maps_collection.updateNumberScenes(); // maps_collection.updateNumberScenes(); It is very long maps_collection.updateSfmGain(); } if (update_kernel_patterns) { Loading Loading @@ -2807,14 +2809,14 @@ adjusted affines[1] for a pair: 1694564291_293695/1694564778_589341 } } } maps_collection.updateNumberScenes(); // maps_collection.updateNumberScenes(); System.out.println("Updated "+num_updated_affines+" affines of "+affine_import.size()+" specified. There are "+ maps_collection.ortho_maps.length+" maps in the system."); } if (import_affine2) { ArrayList<Affine2Import> affine2_import = new ArrayList<Affine2Import>(); OrthoMapsCollection.getPathsAndScenesFromSourceList( affines_path, affines2_path, null, // scenes0, null, // ArrayList<AltitudeMismatchKernel> kernels, null, // ArrayList<GroundObjectPattern> patterns); Loading @@ -2823,6 +2825,7 @@ adjusted affines[1] for a pair: 1694564291_293695/1694564778_589341 null, // ArrayList<AffineImport> affine_import, affine2_import); // ArrayList<Affine2Import> affine2_import) { int num_updated_affines = 0; int num_new_affines = 0; for (Affine2Import affine2Import: affine2_import) { OrthoMap map = maps_collection.getMap(affine2Import.name1); if (map != null) { Loading @@ -2831,6 +2834,7 @@ adjusted affines[1] for a pair: 1694564291_293695/1694564778_589341 if (overwrite_affine || !pom.isAffineNonTrivial()) { pom.setOverlap(affine2Import.overlap); pom.setAffine(affine2Import.affine); // does not clone - OK num_updated_affines++; } } else { OrthoMap map2 = maps_collection.getMap(affine2Import.name2); Loading @@ -2841,15 +2845,12 @@ adjusted affines[1] for a pair: 1694564291_293695/1694564778_589341 Double.NaN, // double rms, zoom_lev, // int zoom_lev, affine2Import.overlap); // double overlap) map.setMatch(map2.getName(), pom); num_new_affines++; } } } System.out.println("Updated "+num_updated_affines+" pairwise affines, setup new "+num_new_affines+" matches. Specified "+affine2_import.size()+" matches."); } if (update_bl_bc) { Loading src/main/java/com/elphel/imagej/orthomosaic/OrthoMap.java +4 −4 Original line number Diff line number Diff line Loading @@ -201,16 +201,16 @@ public class OrthoMap implements Comparable <OrthoMap>, Serializable{ } public int getWidth() { return getImageData().getWidth(); // orig_width; return getImage().getWidth(); // orig_width; } public int getHeight() { return getImageData().getHeight(); //orig_height; return getImage().getHeight(); //orig_height; } public int getAltWidth() { return getAltData().getWidth(); // orig_width; return getAlt().getWidth(); // orig_width; } public int getAltHeight() { return getAltData().getHeight(); //orig_height; return getAlt().getHeight(); //orig_height; } public void setMatch( Loading src/main/java/com/elphel/imagej/orthomosaic/OrthoMapsCollection.java +11 −1 Original line number Diff line number Diff line Loading @@ -62,8 +62,9 @@ public class OrthoMapsCollection implements Serializable{ public static final int VERSION_PRE_ORIENT = 100; public static final int VERSION_POST_ORIENT = 101; public static final int VERSION_ORANGE = 102; public static int LATEST_VERSION = VERSION_POST_ORIENT; // 100; // use when read from .list public static int LATEST_VERSION = VERSION_ORANGE; // 100; // use when read from .list /// public transient int current_version = LATEST_VERSION; public static int CURRENT_VERSION = LATEST_VERSION; Loading Loading @@ -341,14 +342,19 @@ public class OrthoMapsCollection implements Serializable{ System.out.println("updateLLa(): n="+n); } ortho_maps[n].updateLLA(); IJ.showStatus("Updating LLA "+n+" of "+ortho_maps.length); IJ.showProgress(1.0*n/ortho_maps.length); } updateAGL(); } public void updateAGL() { for (int n = 0; n < ortho_maps.length; n++) { IJ.showStatus("Updating AGL "+n+" of "+ortho_maps.length); ortho_maps[n].agl = Double.NaN; ortho_maps[n].agl = ortho_maps[n].getAGL(); IJ.showProgress(1.0*n/ortho_maps.length); } } Loading Loading @@ -7122,7 +7128,11 @@ public class OrthoMapsCollection implements Serializable{ for (int nscene=0; nscene<indices.length; nscene++) { int indx = indices[nscene]; System.out.println("Scene="+indx+", agl="+ortho_maps[indx].getAGL()); double [] qorient = ortho_maps[indx].getQOrinet(); // QuatUtils.invert(ortho_maps[indx].getQOrinet()); if (qorient == null) { qorient = new double [] {1,0,0,0}; } final int src_width = ortho_maps[indx].getImageData().width; // assuming same image size for alt and texture final int src_height = ortho_maps[indx].getImageData().height; // assuming same image size for alt and texture final double [] image_data = ortho_maps[indx].getImageData().getDData(); Loading src/main/java/com/elphel/imagej/orthomosaic/PairwiseOrthoMatch.java +20 −11 Original line number Diff line number Diff line Loading @@ -49,11 +49,15 @@ public class PairwiseOrthoMatch implements Serializable { private void writeObject(ObjectOutputStream oos) throws IOException { oos.defaultWriteObject(); if (jtj == null) { oos.writeObject(Double.NaN); } else { for (int i = 0; i < jtj.length; i++) { for (int j = i; j < jtj[i].length; j++) { oos.writeObject(jtj[i][j]); } } } // oos.writeObject(overlap); // oos.writeObject(equalize1to0); // oos.writeObject(alt_data); Loading @@ -64,9 +68,14 @@ public class PairwiseOrthoMatch implements Serializable { private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException { ois.defaultReadObject(); jtj = new double [6][6]; // readObject does not use constructor! readjtj: for (int i = 0; i < jtj.length; i++) { for (int j = i; j < jtj[i].length; j++) { jtj[i][j] = (Double) ois.readObject(); if (Double.isNaN(jtj[0][0]) && (i==0) && (j==0)) { jtj=null; break readjtj; } if (j > i) { jtj[j][i] = jtj[i][j]; } Loading @@ -79,8 +88,8 @@ public class PairwiseOrthoMatch implements Serializable { // alt_data = (double[]) ois.readObject(); // } // if (OrthoMapsCollection.CURRENT_VERSION >= OrthoMapsCollection.VERSION_POST_ORIENT) { quat= (double[]) ois.readObject(); qaffine = (double[][]) ois.readObject(); // quat= (double[]) ois.readObject(); // qaffine = (double[][]) ois.readObject(); // } } Loading Loading
src/main/java/com/elphel/imagej/orthomosaic/ComboMatch.java +16 −15 Original line number Diff line number Diff line Loading @@ -175,7 +175,7 @@ public class ComboMatch { boolean display_pairs = false; boolean create_map = false; boolean create_equalize = false; boolean use_saved_collection = false; // true; // false; boolean use_saved_collection = true; // false; boolean save_collection = false; // true; boolean process_correlation = true; // use false to save new version of data int num_tries_fit = 10; Loading Loading @@ -339,7 +339,7 @@ public class ComboMatch { maps_collection = OrthoMapsCollection.readOrthoMapsCollection (orthoMapsCollection_path); } catch (ClassNotFoundException | IOException e) { use_files_list = true; System.out.println("Saved data not found: "+orthoMapsCollection_path+", building from a list "+files_list_path); System.out.println("Saved data not found (or is corrupt): "+orthoMapsCollection_path+", building from a list "+files_list_path); } //files_list_path if (!use_files_list) { Loading @@ -361,10 +361,12 @@ public class ComboMatch { } if (import_export) { return updateImportExport( boolean OK = updateImportExport( omtch_img_set, // String files_base maps_collection); // OrthoMapsCollection maps_collection if (!OK) { return false; } } Loading Loading @@ -867,7 +869,7 @@ public class ComboMatch { maps_collection.processComboMap( clt_parameters, // CLTParameters clt_parameters, debugLevel); return true; // return true; // need to save AGL? } // for all modes - needed for create_overlaps || process_correlation || render_match || pattern_match Loading Loading @@ -2689,7 +2691,7 @@ adjusted affines[1] for a pair: 1694564291_293695/1694564778_589341 gd.addStringField ("Scene affines full path", affines_path, 150, "Path to import/export scenes affines."); gd.addStringField ("Pairwise affines full path", affines2_path, 150, "Path to import/export scenes pairs affines."); gd.addCheckbox ("Update scene files", update_files, "Re-read files as specified in .list file, possibly changing versions"); gd.addCheckbox ("Update files metadata", update_lla, "Re-read files metadata (if it was modified)"); gd.addCheckbox ("Update files metadata", update_lla, "Re-read files metadata (if it was modified), needed to calculate AGL."); gd.addCheckbox ("Update kernels/patterns", update_kernel_patterns, "Re-read kernels and patterns from *.list file"); gd.addCheckbox ("Export scene affines", export_affine, "Export per-scene affines in text format for migration."); gd.addCheckbox ("Export pairs affines", export_affine2, "Export per-pair affines in text format for migration."); Loading Loading @@ -2726,7 +2728,7 @@ adjusted affines[1] for a pair: 1694564291_293695/1694564778_589341 if (update_lla) { System.out.println("Updating map files metadata"); maps_collection.updateLLA(); maps_collection.updateNumberScenes(); // maps_collection.updateNumberScenes(); It is very long maps_collection.updateSfmGain(); } if (update_kernel_patterns) { Loading Loading @@ -2807,14 +2809,14 @@ adjusted affines[1] for a pair: 1694564291_293695/1694564778_589341 } } } maps_collection.updateNumberScenes(); // maps_collection.updateNumberScenes(); System.out.println("Updated "+num_updated_affines+" affines of "+affine_import.size()+" specified. There are "+ maps_collection.ortho_maps.length+" maps in the system."); } if (import_affine2) { ArrayList<Affine2Import> affine2_import = new ArrayList<Affine2Import>(); OrthoMapsCollection.getPathsAndScenesFromSourceList( affines_path, affines2_path, null, // scenes0, null, // ArrayList<AltitudeMismatchKernel> kernels, null, // ArrayList<GroundObjectPattern> patterns); Loading @@ -2823,6 +2825,7 @@ adjusted affines[1] for a pair: 1694564291_293695/1694564778_589341 null, // ArrayList<AffineImport> affine_import, affine2_import); // ArrayList<Affine2Import> affine2_import) { int num_updated_affines = 0; int num_new_affines = 0; for (Affine2Import affine2Import: affine2_import) { OrthoMap map = maps_collection.getMap(affine2Import.name1); if (map != null) { Loading @@ -2831,6 +2834,7 @@ adjusted affines[1] for a pair: 1694564291_293695/1694564778_589341 if (overwrite_affine || !pom.isAffineNonTrivial()) { pom.setOverlap(affine2Import.overlap); pom.setAffine(affine2Import.affine); // does not clone - OK num_updated_affines++; } } else { OrthoMap map2 = maps_collection.getMap(affine2Import.name2); Loading @@ -2841,15 +2845,12 @@ adjusted affines[1] for a pair: 1694564291_293695/1694564778_589341 Double.NaN, // double rms, zoom_lev, // int zoom_lev, affine2Import.overlap); // double overlap) map.setMatch(map2.getName(), pom); num_new_affines++; } } } System.out.println("Updated "+num_updated_affines+" pairwise affines, setup new "+num_new_affines+" matches. Specified "+affine2_import.size()+" matches."); } if (update_bl_bc) { Loading
src/main/java/com/elphel/imagej/orthomosaic/OrthoMap.java +4 −4 Original line number Diff line number Diff line Loading @@ -201,16 +201,16 @@ public class OrthoMap implements Comparable <OrthoMap>, Serializable{ } public int getWidth() { return getImageData().getWidth(); // orig_width; return getImage().getWidth(); // orig_width; } public int getHeight() { return getImageData().getHeight(); //orig_height; return getImage().getHeight(); //orig_height; } public int getAltWidth() { return getAltData().getWidth(); // orig_width; return getAlt().getWidth(); // orig_width; } public int getAltHeight() { return getAltData().getHeight(); //orig_height; return getAlt().getHeight(); //orig_height; } public void setMatch( Loading
src/main/java/com/elphel/imagej/orthomosaic/OrthoMapsCollection.java +11 −1 Original line number Diff line number Diff line Loading @@ -62,8 +62,9 @@ public class OrthoMapsCollection implements Serializable{ public static final int VERSION_PRE_ORIENT = 100; public static final int VERSION_POST_ORIENT = 101; public static final int VERSION_ORANGE = 102; public static int LATEST_VERSION = VERSION_POST_ORIENT; // 100; // use when read from .list public static int LATEST_VERSION = VERSION_ORANGE; // 100; // use when read from .list /// public transient int current_version = LATEST_VERSION; public static int CURRENT_VERSION = LATEST_VERSION; Loading Loading @@ -341,14 +342,19 @@ public class OrthoMapsCollection implements Serializable{ System.out.println("updateLLa(): n="+n); } ortho_maps[n].updateLLA(); IJ.showStatus("Updating LLA "+n+" of "+ortho_maps.length); IJ.showProgress(1.0*n/ortho_maps.length); } updateAGL(); } public void updateAGL() { for (int n = 0; n < ortho_maps.length; n++) { IJ.showStatus("Updating AGL "+n+" of "+ortho_maps.length); ortho_maps[n].agl = Double.NaN; ortho_maps[n].agl = ortho_maps[n].getAGL(); IJ.showProgress(1.0*n/ortho_maps.length); } } Loading Loading @@ -7122,7 +7128,11 @@ public class OrthoMapsCollection implements Serializable{ for (int nscene=0; nscene<indices.length; nscene++) { int indx = indices[nscene]; System.out.println("Scene="+indx+", agl="+ortho_maps[indx].getAGL()); double [] qorient = ortho_maps[indx].getQOrinet(); // QuatUtils.invert(ortho_maps[indx].getQOrinet()); if (qorient == null) { qorient = new double [] {1,0,0,0}; } final int src_width = ortho_maps[indx].getImageData().width; // assuming same image size for alt and texture final int src_height = ortho_maps[indx].getImageData().height; // assuming same image size for alt and texture final double [] image_data = ortho_maps[indx].getImageData().getDData(); Loading
src/main/java/com/elphel/imagej/orthomosaic/PairwiseOrthoMatch.java +20 −11 Original line number Diff line number Diff line Loading @@ -49,11 +49,15 @@ public class PairwiseOrthoMatch implements Serializable { private void writeObject(ObjectOutputStream oos) throws IOException { oos.defaultWriteObject(); if (jtj == null) { oos.writeObject(Double.NaN); } else { for (int i = 0; i < jtj.length; i++) { for (int j = i; j < jtj[i].length; j++) { oos.writeObject(jtj[i][j]); } } } // oos.writeObject(overlap); // oos.writeObject(equalize1to0); // oos.writeObject(alt_data); Loading @@ -64,9 +68,14 @@ public class PairwiseOrthoMatch implements Serializable { private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException { ois.defaultReadObject(); jtj = new double [6][6]; // readObject does not use constructor! readjtj: for (int i = 0; i < jtj.length; i++) { for (int j = i; j < jtj[i].length; j++) { jtj[i][j] = (Double) ois.readObject(); if (Double.isNaN(jtj[0][0]) && (i==0) && (j==0)) { jtj=null; break readjtj; } if (j > i) { jtj[j][i] = jtj[i][j]; } Loading @@ -79,8 +88,8 @@ public class PairwiseOrthoMatch implements Serializable { // alt_data = (double[]) ois.readObject(); // } // if (OrthoMapsCollection.CURRENT_VERSION >= OrthoMapsCollection.VERSION_POST_ORIENT) { quat= (double[]) ois.readObject(); qaffine = (double[][]) ois.readObject(); // quat= (double[]) ois.readObject(); // qaffine = (double[][]) ois.readObject(); // } } Loading