package resa.evaluation.topology.tomVLD; /** * Parameters for detection. */ public class Parameters { public SIFTParameters getSiftParameters() { return siftParameters; } public void setSiftParameters(SIFTParameters siftParameters) { this.siftParameters = siftParameters; } public RANSACParameters getRansacParameters() { return ransacParameters; } public void setRansacParameters(RANSACParameters ransacParameters) { this.ransacParameters = ransacParameters; } public MatchingParameters getMatchingParameters() { return matchingParameters; } public void setMatchingParameters(MatchingParameters matchingParameters) { this.matchingParameters = matchingParameters; } public WindowParameters getWindowParameters() { return windowParameters; } public void setWindowParameters(WindowParameters windowParameters) { this.windowParameters = windowParameters; } public static class SIFTParameters { private double contrastThreshold, edgeThreshold, sigma; public SIFTParameters() { contrastThreshold = 0.04; edgeThreshold = 10; sigma = 2.0; } public SIFTParameters withContrastThreshold(double threshold) { this.contrastThreshold = threshold; return this; } public SIFTParameters withEdgeThreshold(double threshold) { this.edgeThreshold = threshold; return this; } public SIFTParameters withSigma(double sigma) { this.sigma = sigma; return this; } public double getContrastThreshold() { return contrastThreshold; } public void setContrastThreshold(double contrastThreshold) { this.contrastThreshold = contrastThreshold; } public double getEdgeThreshold() { return edgeThreshold; } public void setEdgeThreshold(double edgeThreshold) { this.edgeThreshold = edgeThreshold; } public double getSigma() { return sigma; } public void setSigma(double sigma) { this.sigma = sigma; } } public static class RANSACParameters { private double reprojectionThreshold; public RANSACParameters() { reprojectionThreshold = 1.0; } public RANSACParameters withReprojectionThreshold(double threshold) { this.reprojectionThreshold = threshold; return this; } public double getReprojectionThreshold() { return reprojectionThreshold; } public void setReprojectionThreshold(double reprojectionThreshold) { this.reprojectionThreshold = reprojectionThreshold; } } public static class MatchingParameters { private int minimalNumberOfMatches; private double ratioOfDistances; private int minimalResolution; private double boxAccuracy; public MatchingParameters() { minimalNumberOfMatches = 8; ratioOfDistances = 0.8; minimalResolution = 5; //pixels boxAccuracy = 0.9; } public MatchingParameters withMinimalNumberOfMatches(int minimalNumberOfMatches) { this.minimalNumberOfMatches = minimalNumberOfMatches; return this; } public int getMinimalNumberOfMatches() { return minimalNumberOfMatches; } public void setMinimalNumberOfMatches(int minimalNumberOfMatches) { this.minimalNumberOfMatches = minimalNumberOfMatches; } public double getRatioOfDistances() { return ratioOfDistances; } public void setRatioOfDistances(double ratioOfDistances) { this.ratioOfDistances = ratioOfDistances; } public int getMinimalResolution() { return minimalResolution; } public void setMinimalResolution(int minimalResolution) { this.minimalResolution = minimalResolution; } public double getBoxAccuracy() { return boxAccuracy; } public void setBoxAccuracy(double boxAccuracy) { this.boxAccuracy = boxAccuracy; } } public static class WindowParameters { private double [] windowSizes; private double xStep, yStep; public WindowParameters() { windowSizes = new double[]{.25}; // by default 1/4 of the frame xStep = .33; // in terms of window size yStep = .33; } public double[] getWindowSizes() { return windowSizes; } public void setWindowSizes(double[] windowSizes) { this.windowSizes = windowSizes; } public double getyStep() { return yStep; } public void setyStep(double yStep) { this.yStep = yStep; } public double getxStep() { return xStep; } public void setxStep(double xStep) { this.xStep = xStep; } } private SIFTParameters siftParameters; private RANSACParameters ransacParameters; private MatchingParameters matchingParameters; private WindowParameters windowParameters; public Parameters() { siftParameters = new SIFTParameters(); ransacParameters = new RANSACParameters(); matchingParameters = new MatchingParameters(); windowParameters = new WindowParameters(); } public Parameters withSIFTParameters(SIFTParameters siftParameters) { this.siftParameters = siftParameters; return this; } public Parameters withRANSACParameters(RANSACParameters ransacParameters) { this.ransacParameters = ransacParameters; return this; } public Parameters withMatchingParameters(MatchingParameters matchingParameters) { this.matchingParameters = matchingParameters; return this; } public Parameters withWindowParameters(WindowParameters windowParameters) { this.windowParameters = windowParameters; return this; } }