* removed isAligned from Abstract Param class
[trakem2.git] / TrakEM2_ / src / main / java / mpicbg / trakem2 / align / AbstractLayerAlignmentParam.java
blob3065a814f6efd5e26406d27633733b4405d6df5c
1 package mpicbg.trakem2.align;
3 import ij.gui.GenericDialog;
4 import mpicbg.ij.SIFT;
5 import mpicbg.trakem2.align.AlignmentUtils.ParamPointMatch;
7 public class AbstractLayerAlignmentParam
9 final public ParamPointMatch ppm = new ParamPointMatch();
11 ppm.sift.fdSize = 8;
14 /**
15 * Maximal accepted alignment error in px
17 public float maxEpsilon = 200.0f;
19 /**
20 * Inlier/candidates ratio
22 public float minInlierRatio = 0.0f;
24 /**
25 * Minimal absolute number of inliers
27 public int minNumInliers = 12;
29 /**
30 * Transformation models for choice
32 final static public String[] modelStrings = new String[]{ "Translation", "Rigid", "Similarity", "Affine" };
33 public int expectedModelIndex = 3;
34 public boolean multipleHypotheses = false;
36 /**
37 * Ignore identity transform up to a given tolerance
39 public boolean rejectIdentity = false;
40 public float identityTolerance = 5.0f;
42 /**
43 * Maximal number of consecutive sections to be tested for an alignment model
45 public int maxNumNeighbors = 1;
47 /**
48 * Maximal number of consecutive slices for which no model could be found
50 public int maxNumFailures = 3;
52 public int desiredModelIndex = 1;
53 public int maxIterationsOptimize = 1000;
54 public int maxPlateauwidthOptimize = 200;
56 public boolean visualize = false;
58 public int maxNumThreads = Runtime.getRuntime().availableProcessors();
61 public boolean setupSIFT( final String title )
63 /* SIFT */
64 final GenericDialog gdSIFT = new GenericDialog( title + "SIFT parameters" );
66 SIFT.addFields( gdSIFT, ppm.sift );
68 gdSIFT.addMessage( "Local Descriptor Matching:" );
69 gdSIFT.addNumericField( "closest/next_closest_ratio :", ppm.rod, 2 );
71 gdSIFT.addMessage( "Miscellaneous:" );
72 gdSIFT.addCheckbox( "clear_cache", ppm.clearCache );
73 gdSIFT.addNumericField( "feature_extraction_threads :", ppm.maxNumThreadsSift, 0 );
75 gdSIFT.showDialog();
77 if ( gdSIFT.wasCanceled() )
78 return false;
80 SIFT.readFields( gdSIFT, ppm.sift );
82 ppm.rod = ( float )gdSIFT.getNextNumber();
83 ppm.clearCache = gdSIFT.getNextBoolean();
84 ppm.maxNumThreadsSift = ( int )gdSIFT.getNextNumber();
86 return true;
89 public AbstractLayerAlignmentParam() {}
91 public AbstractLayerAlignmentParam(
92 final int SIFTfdBins,
93 final int SIFTfdSize,
94 final float SIFTinitialSigma,
95 final int SIFTmaxOctaveSize,
96 final int SIFTminOctaveSize,
97 final int SIFTsteps,
99 final boolean clearCache,
100 final int maxNumThreadsSift,
101 final float rod,
103 final int desiredModelIndex,
104 final int expectedModelIndex,
105 final float identityTolerance,
106 final float maxEpsilon,
107 final int maxIterationsOptimize,
108 final int maxNumFailures,
109 final int maxNumNeighbors,
110 final int maxNumThreads,
111 final int maxPlateauwidthOptimize,
112 final float minInlierRatio,
113 final int minNumInliers,
114 final boolean multipleHypotheses,
115 final boolean rejectIdentity,
116 final boolean visualize )
118 ppm.sift.fdBins = SIFTfdBins;
119 ppm.sift.fdSize = SIFTfdSize;
120 ppm.sift.initialSigma = SIFTinitialSigma;
121 ppm.sift.maxOctaveSize = SIFTmaxOctaveSize;
122 ppm.sift.minOctaveSize = SIFTminOctaveSize;
123 ppm.sift.steps = SIFTsteps;
125 ppm.clearCache = clearCache;
126 ppm.maxNumThreadsSift = maxNumThreadsSift;
127 ppm.rod = rod;
129 this.desiredModelIndex = desiredModelIndex;
130 this.expectedModelIndex = expectedModelIndex;
131 this.identityTolerance = identityTolerance;
132 this.maxEpsilon = maxEpsilon;
133 this.maxIterationsOptimize = maxIterationsOptimize;
134 this.maxNumFailures = maxNumFailures;
135 this.maxNumNeighbors = maxNumNeighbors;
136 this.maxNumThreads = maxNumThreads;
137 this.maxPlateauwidthOptimize = maxPlateauwidthOptimize;
138 this.minInlierRatio = minInlierRatio;
139 this.minNumInliers = minNumInliers;
140 this.multipleHypotheses = multipleHypotheses;
141 this.rejectIdentity = rejectIdentity;
142 this.visualize = visualize;
145 @Override
146 public AbstractLayerAlignmentParam clone()
148 return new AbstractLayerAlignmentParam(
149 ppm.sift.fdBins,
150 ppm.sift.fdSize,
151 ppm.sift.initialSigma,
152 ppm.sift.maxOctaveSize,
153 ppm.sift.minOctaveSize,
154 ppm.sift.steps,
156 ppm.clearCache,
157 ppm.maxNumThreadsSift,
158 ppm.rod,
160 desiredModelIndex,
161 expectedModelIndex,
162 identityTolerance,
163 maxEpsilon,
164 maxIterationsOptimize,
165 maxNumFailures,
166 maxNumNeighbors,
167 maxNumThreads,
168 maxPlateauwidthOptimize,
169 minInlierRatio,
170 minNumInliers,
171 multipleHypotheses,
172 rejectIdentity,
173 visualize );