Commit 1cc6d251 authored by Andrey Filippov's avatar Andrey Filippov

Added version to the data files (older will have it = -1) to be able to

add new fields to the classes.
parent fb87526f
......@@ -169,6 +169,7 @@ public class ComboMatch {
boolean create_map = false;
boolean create_equalize = false;
boolean use_saved_collection = true; // false;
boolean save_collection = true;
boolean process_correlation = true; // use false to save new version of data
......@@ -191,6 +192,8 @@ public class ComboMatch {
String log_path = clt_parameters.imp.pwise_log_path;
String omtch_img_set = clt_parameters.imp.omtch_img_set;
// boolean READ_NO_ALT = false; // to read older format data file where pairs do not have alt_data[]
int suffix_bc_bl_indx = 2;
if (!use_marked_image) {
process_correlation=false; // use already adjusted by default
......@@ -218,26 +221,12 @@ public class ComboMatch {
gd.addCheckbox ("Bounds to selected images", bounds_to_indices, "Set combo image bounds to selected images only. False - all images.");
gd.addNumericField("Temp mode", temp_mode, 0,4,"",
"O - do not modify average pixels, 1 - equalize second image to first, 2 - try to account for raw average");
//temp_mode
/*
for (int n = 0; n < image_enuatr.length; n++) {
gd.addMessage("image["+n+"] pose");
gd.addNumericField("East", image_enuatr[n][0][0], 3,7,"m", "Move image "+n+" East.");
gd.addNumericField("North", image_enuatr[n][0][1], 3,7,"m", "Move image "+n+" North.");
gd.addNumericField("Up", image_enuatr[n][0][2], 3,7,"m", "Move image "+n+" Up.");
gd.addNumericField("Azimuth",image_enuatr[n][1][0], 3,7,"deg", "Rotate image "+n+" around vertical clockwise.");
gd.addNumericField("Tilt", image_enuatr[n][1][1], 3,7,"deg", "Rotate image "+n+" around East.");
gd.addNumericField("Roll", image_enuatr[n][1][2], 3,7,"deg", "Rotate image "+n+" around North.");
}
*/
gd.addNumericField("Zoom level", zoom_lev, 0,4,"",
"Zoom level: +1 - zoom in twice, -1 - zoom out twice");
gd.addNumericField("GPU image width", gpu_width, 0,4,"",
"GPU image width");
gd.addNumericField("GPU image height", gpu_height, 0,4,"",
"GPU image height");
// gd.addCheckbox ("Show transformation centers", show_centers, "Mark verticals from the UAS on the ground.");
// gd.addCheckbox ("Show statistics for ortho images", show_map_stats, "Generate and show statistics for ortho maps.");
gd.addCheckbox ("Show combo maps/stats", show_combo, "Generate/save combo maps and stats.");
gd.addCheckbox ("Create overlap pairs", create_pairwise_matches, "Create scene pairs overlaps.");
gd.addCheckbox ("Create pairwise affines", create_pairwise_affines, "Create affines for scene pairs.");
......@@ -245,8 +234,6 @@ public class ComboMatch {
gd.addCheckbox ("Equalize overlap pairs", equalize_overlaps, "Equalize intensities in overlaps.");
gd.addCheckbox ("Create map", create_map, "Create combined map from pairwise matches.");
gd.addCheckbox ("Equalize intensities", create_equalize, "Create map intensities equalization from pairwise matches.");
// gd.addCheckbox ("Show combo image mask", show_combo_mask, "Display combo binary image.");
// gd.addCheckbox ("Show altitude combo image", use_alt, "Load and process altitude maps.");
gd.addNumericField("Remove fraction of worst matches", frac_remove, 3,7,"", "When fitting scenes remove this fraction of worst match.");
gd.addNumericField("Maximal metric error", metric_error, 3,7,"m", "Maximal tolerable fitting error caused by elevation variations.");
if (use_marked_image ) {
......@@ -260,8 +247,9 @@ public class ComboMatch {
suffixes_bl_bc,
suffixes_bl_bc[suffix_bc_bl_indx],
"Select interpolation mode of the source files: old bilinear (empty), bilinear (-BL), or bicubic (-BC)", 0);
gd.addCheckbox ("Write log file", log_append, "Enable writing log file with matching results.");
gd.addStringField ("Log file full path", log_path, 150, "Path of the log file to be appended.");
gd.addCheckbox ("Write log file", log_append, "Enable writing log file with matching results.");
gd.addStringField ("Log file full path", log_path, 150, "Path of the log file to be appended.");
// gd.addCheckbox ("Read no-alt data (old)", READ_NO_ALT, "Read older format data file where pairs do not have alt_data[].");
......@@ -270,9 +258,6 @@ public class ComboMatch {
if (gd.wasCanceled()) return false;
// int choice_index = gd.getNextChoiceIndex();
// String files_list_path = FILES_LISTS_PATHS[choice_index]+".list";
// String orthoMapsCollection_path =FILES_LISTS_PATHS[choice_index]+".data";
omtch_img_set = ComboMatch.FILES_LISTS_PATHS[gd.getNextChoiceIndex()];
String files_list_path = omtch_img_set+".list";
String orthoMapsCollection_path =omtch_img_set+".data";
......@@ -288,16 +273,6 @@ public class ComboMatch {
bounds_to_indices= gd.getNextBoolean();
temp_mode = (int) gd.getNextNumber();
/*
for (int n = 0; n < image_enuatr.length; n++) {
image_enuatr[n][0][0] = gd.getNextNumber();
image_enuatr[n][0][1] = gd.getNextNumber();
image_enuatr[n][0][2] = gd.getNextNumber();
image_enuatr[n][1][0] = gd.getNextNumber();
image_enuatr[n][1][1] = gd.getNextNumber();
image_enuatr[n][1][2] = gd.getNextNumber();
}
*/
zoom_lev = (int) gd.getNextNumber();
gpu_width = (int) gd.getNextNumber();
gpu_height = (int) gd.getNextNumber();
......@@ -322,6 +297,8 @@ public class ComboMatch {
suffix_bc_bl_indx = gd.getNextChoiceIndex();
log_append = gd.getNextBoolean();
log_path = gd.getNextString();
// READ_NO_ALT = gd.getNextBoolean();
// PairwiseOrthoMatch.READ_NO_ALT = READ_NO_ALT; // modifies PairwiseOrthoMatch.readObject() behavior
OrthoMapsCollection maps_collection=null;
boolean use_files_list = false;
if (use_saved_collection) {
......
......@@ -58,6 +58,8 @@ public class OrthoMapsCollection implements Serializable{
public static final int MODE_IMAGE = 0;
public static final int MODE_ALT = 1;
public static final int MODE_MASK = 2;
public static int LATEST_VERSION = 100; // use when read from .list
public transient int current_version = LATEST_VERSION;
/*
public static final int PAIR_NONE = 0;
......@@ -76,7 +78,7 @@ public class OrthoMapsCollection implements Serializable{
"kernelsDirectory", "patternsDirectory"};
public static final String [] NAME_FH = {"full","half"};
public static final String [] NAME_MO = {"main","other"};
public transient long version = -1;
OrthoMap [] ortho_maps;
transient HashMap<Double,Integer> map_index;
transient HashMap<String,Integer> map_index_string;
......@@ -2306,16 +2308,50 @@ public class OrthoMapsCollection implements Serializable{
public static OrthoMapsCollection readOrthoMapsCollection (
String path) throws IOException, ClassNotFoundException {
// try reading current_version, if fails - restart without it (for older formats)
FileInputStream fileInputStream = new FileInputStream(path);
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
OrthoMapsCollection orthoMapsCollection = (OrthoMapsCollection) objectInputStream.readObject();
int current_version = -1;
OrthoMapsCollection orthoMapsCollection = null;
PairwiseOrthoMatch.READ_NO_ALT = true; // reading old version
Object obj = objectInputStream.readObject(); // reads OrthoMapsCollection
/* // do not handle that intermediate version
try {
obj = objectInputStream.readObject(); // reads OrthoMapsCollection
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
fileInputStream.reset();
System.out.println("readOrthoMapsCollection(): error reading stream, using current_version="+current_version);
PairwiseOrthoMatch.READ_NO_ALT = false; // reading new version
obj = objectInputStream.readObject(); // reads OrthoMapsCollection
}
*/
PairwiseOrthoMatch.READ_NO_ALT = false; // reading new version
if (obj instanceof OrthoMapsCollection) {
orthoMapsCollection = (OrthoMapsCollection) obj;
System.out.println("readOrthoMapsCollection(): got old version, using current_version="+current_version);
} else {
current_version = (int) obj;
System.out.println("readOrthoMapsCollection(): got current_version="+current_version);
PairwiseOrthoMatch.READ_NO_ALT = false; // reading new version
orthoMapsCollection = (OrthoMapsCollection) objectInputStream.readObject();
}
// OrthoMapsCollection orthoMapsCollection = (OrthoMapsCollection) objectInputStream.readObject();
objectInputStream.close();
orthoMapsCollection.current_version = current_version;
System.out.println("readOrthoMapsCollection(): got orthoMapsCollection, current_version="+current_version);
return orthoMapsCollection;
}
public void writeOrthoMapsCollection (String path) throws IOException {
FileOutputStream fileOutputStream = new FileOutputStream(path);
ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
current_version = LATEST_VERSION;
objectOutputStream.writeObject(current_version);
objectOutputStream.writeObject(this);
objectOutputStream.flush();
objectOutputStream.close();
......
......@@ -9,14 +9,17 @@ import Jama.Matrix;
public class PairwiseOrthoMatch implements Serializable {
private static final long serialVersionUID = 1L;
public static boolean READ_NO_ALT = false; // to read old format w/o alt data ( not final!)
private double [][] affine = new double[2][3];
public transient double [][] jtj = new double [6][6];
public int zoom_lev;
public double rms = Double.NaN;
public transient int [] nxy = null; // not saved, just to communicate for logging
public transient double overlap = 0.0;
public transient double [] alt_data = null;
public transient double [] equalize1to0 = {1,0}; // value1 = equalize2to1[0]*value2+equalize2to1[1]
public transient boolean ok = false;
// below - not saved/restored
public transient boolean ok = false; // not saved/restored
public transient int [] nxy = null; // not saved, just to communicate for logging
// public PairwiseOrthoMatch() {}
public double getOverlap() {
......@@ -254,6 +257,7 @@ public class PairwiseOrthoMatch implements Serializable {
}
oos.writeObject(overlap);
oos.writeObject(equalize1to0);
oos.writeObject(alt_data);
}
private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException {
......@@ -270,6 +274,9 @@ public class PairwiseOrthoMatch implements Serializable {
overlap = (Double) ois.readObject();
// equalize1to0 = new double[] {1,0};
equalize1to0 = (double[]) ois.readObject();
if (!READ_NO_ALT) {
alt_data = (double[]) ois.readObject();
}
}
//private void readObjectNoData() throws ObjectStreamException; // used to modify default values
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment