Commit 120b1c45 authored by gonciarz's avatar gonciarz

Splitting GUI for RC and DRS - part 1

parent fa8298e7
......@@ -10,6 +10,7 @@ org.eclipse.jdt.core.compiler.annotation.nullable.secondary=
org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.problem.APILeak=warning
org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
......@@ -69,12 +70,16 @@ org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled
org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning
org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning
org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled
org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning
org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning
org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=enabled
org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info
org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
......
......@@ -42,16 +42,13 @@ import ij.WindowManager;
import ij.gui.GenericDialog;
import ij.gui.NonBlockingGenericDialog;
import ij.gui.Roi;
import mosaic.plugins.Region_Competition.EnergyFunctionalType;
import mosaic.plugins.Region_Competition.InitializationType;
import mosaic.plugins.Region_Competition.RegularizationType;
import mosaic.region_competition.Settings;
import mosaic.region_competition.Settings.SegmentationType;
/**
* TODO: ALL this GUI stuff must be rewritten. It is now too patched and over-complicated.
*/
public class GUI {
public abstract class GUI {
private static final Logger logger = Logger.getLogger(GUI.class);
// Input stuff
......@@ -85,7 +82,7 @@ public class GUI {
/**
* Create main GUI of RC plugin
*/
public GUI(Settings aSettings, ImagePlus aInputImg, boolean aInRcMode) {
public GUI(String aWindowName, Settings aSettings, ImagePlus aInputImg, boolean aInRcMode) {
iSettings = aSettings;
iInputImg = aInputImg;
iInRcMode = aInRcMode;
......@@ -106,7 +103,7 @@ public class GUI {
logger.info("GUI - regular mode");
iMainDialogWin = new CustomDialog(iInRcMode ? "Region Competition" : "Discrete Region Sampling");
iMainDialogWin = new CustomDialog(aWindowName);
final Font bf = new Font(null, Font.BOLD, 12);
iMainDialogWin.addMessage("Input and Label image", bf);
......@@ -164,169 +161,13 @@ public class GUI {
iMainDialogWin.addPanel(p);
}
/**
* Create parameters dialog
*/
protected void createParametersDialog() {
GenericDialog gd = new GenericDialog("Region Competition Parameters");
final Font bf = new Font(null, Font.BOLD, 12);
int gridy = 1;
final int gridx = 2;
gd.addMessage("Energy and initialization settings", bf);
// Energy Functional
final EnergyFunctionalType[] energyValues = EnergyFunctionalType.values();
final String[] energyItems = new String[energyValues.length];
for (int i = 0; i < energyValues.length; ++i) {
energyItems[i] = energyValues[i].name();
}
gd.addChoice("E_data", energyItems, iSettings.m_EnergyFunctional.name());
Choice choiceEnergy = (Choice) gd.getChoices().lastElement();
{
Button optionButton = new Button("Options");
GridBagConstraints c = new GridBagConstraints();
c.gridx = gridx;
c.gridy = gridy++;
c.anchor = GridBagConstraints.EAST;
gd.add(optionButton, c);
optionButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
final String energy = choiceEnergy.getSelectedItem();
SettingsBaseGUI energyGUI = EnergyGUI.factory(iSettings, energy);
energyGUI.createDialog();
energyGUI.showDialog();
energyGUI.processDialog();
}
});
}
// Regularization
final RegularizationType[] regularizationValues = RegularizationType.values();
final String[] regularizationItems = new String[regularizationValues.length];
for (int i = 0; i < regularizationValues.length; ++i) {
regularizationItems[i] = regularizationValues[i].name();
}
gd.addChoice("E_length", regularizationItems, iSettings.regularizationType.name());
Choice choiceRegularization = (Choice) gd.getChoices().lastElement();
{
Button optionButton = new Button("Options");
GridBagConstraints c = new GridBagConstraints();
c.anchor = GridBagConstraints.EAST;
c.gridx = gridx;
c.gridy = gridy++;
gd.add(optionButton, c);
optionButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
final String type = choiceRegularization.getSelectedItem();
final SettingsBaseGUI gui = RegularizationGUI.factory(iSettings, type);
gui.createDialog();
gui.showDialog();
gui.processDialog();
}
});
}
// Label Image Initialization
final InitializationType[] initTypes = InitializationType.values();
final String[] initializationItems = new String[initTypes.length];
for (int i = 0; i < initTypes.length; ++i) {
initializationItems[i] = initTypes[i].name();
}
gd.addChoice("Initialization", initializationItems, iSettings.labelImageInitType.name());
// save reference to this choice, so we can handle it
Choice initializationChoice = (Choice) gd.getChoices().lastElement();
Button optionButton = new Button("Options");
GridBagConstraints c = new GridBagConstraints();
c.gridx = gridx;
c.gridy = gridy++;
c.anchor = GridBagConstraints.EAST;
gd.add(optionButton, c);
optionButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
final String type = initializationChoice.getSelectedItem();
final SettingsBaseGUI gui = InitializationGUI.factory(iSettings, type);
gui.createDialog();
gui.showDialog();
gui.processDialog();
}
});
gd.addMessage("\nGeneral settings", bf);
gd.addNumericField("Lambda E_length", iSettings.m_EnergyContourLengthCoeff, 4, 8, "");
gd.addNumericField("Max_Iterations", iSettings.m_MaxNbIterations, 0, 8, "");
gd.addCheckboxGroup(1, 4, new String[] { "Fusion", "Fission", "Handles" }, new boolean[] { iSettings.m_AllowFusion, iSettings.m_AllowFission, iSettings.m_AllowHandles });
abstract protected void createParametersDialog();
if (iInRcMode) {
// gd.addMessage("\nRegion Competition only", bf);
gd.addNumericField("Theta E_merge", iSettings.m_RegionMergingThreshold, 4, 8, "");
gd.addNumericField("Oscillation threshold (Convergence)", iSettings.m_OscillationThreshold, 4, 8, "");
}
else {
// gd.addMessage("\nDiscrete Region Sampling only", bf);
gd.addNumericField("Burn-in factor [0-1]", iSettings.burnInFactor, 4, 8, "");
gd.addNumericField("Off-boundary probability [0-1]", iSettings.offBoundarySampleProbability, 4, 8, "");
gd.addCheckboxGroup(1, 2, new String[] { "biased proposal", "pair proposal" }, new boolean[] { iSettings.useBiasedProposal, iSettings.usePairProposal });
}
gd.showDialog();
// On OK, read parameters
if (gd.wasOKed()) {
// Energy Choice
final String energy = gd.getNextChoice();
iSettings.m_EnergyFunctional = EnergyFunctionalType.valueOf(energy);
final EnergyGUI eg = EnergyGUI.factory(iSettings, iSettings.m_EnergyFunctional);
eg.createDialog();
eg.processDialog();
// Regularization Choice
final String regularization = gd.getNextChoice();
iSettings.regularizationType = RegularizationType.valueOf(regularization);
iSettings.m_EnergyContourLengthCoeff = (float) gd.getNextNumber();
iSettings.m_MaxNbIterations = (int) gd.getNextNumber();
if (iInRcMode) {
iSettings.m_RegionMergingThreshold = (float) gd.getNextNumber();
iSettings.m_OscillationThreshold = gd.getNextNumber();
}
// Initialization
final String initialization = gd.getNextChoice();
final InitializationType type = InitializationType.valueOf(initialization);
iSettings.labelImageInitType = type;
final InitializationGUI ig = InitializationGUI.factory(iSettings, iSettings.labelImageInitType);
ig.createDialog();
ig.processDialog();
// Topological constraints
iSettings.m_AllowFusion = gd.getNextBoolean();
iSettings.m_AllowFission = gd.getNextBoolean();
iSettings.m_AllowHandles = gd.getNextBoolean();
// DRS settings
if (!iInRcMode) {
iSettings.burnInFactor = (float)gd.getNextNumber();
iSettings.offBoundarySampleProbability = (float)gd.getNextNumber();
iSettings.useBiasedProposal = gd.getNextBoolean();
iSettings.usePairProposal = gd.getNextBoolean();
}
}
}
public void showDialog() {
isConfigurationReadAlready = false;
iMainDialogWin.showDialog();
}
public boolean configurationValid() {
if (!isConfigurationReadAlready) {
isConfigurationValid = processInput();
......@@ -407,7 +248,6 @@ public class GUI {
iShowNormalized = iMainDialogWin.getNextBoolean();
if (iInRcMode) {
iShowAndSaveStatistics = iMainDialogWin.getNextBoolean();
iSettings.segmentationType = iInRcMode ? SegmentationType.RC : SegmentationType.DRS;
iUseCluster = iMainDialogWin.getNextBoolean();
}
......@@ -434,10 +274,6 @@ public class GUI {
return iKeepAllFrames;
}
public SegmentationType getSegmentationType() {
return iInRcMode ? SegmentationType.RC : SegmentationType.DRS;
}
public boolean showAndSaveStatistics() {
return iShowAndSaveStatistics;
}
......
......@@ -10,9 +10,10 @@ import mosaic.core.cluster.ClusterGUI;
import mosaic.core.cluster.ClusterSession;
import mosaic.core.psf.GeneratePSF;
import mosaic.core.utils.MosaicUtils;
import mosaic.plugins.Region_Competition;
import mosaic.plugins.RegionCompetition;
import mosaic.plugins.Region_Competition.EnergyFunctionalType;
import mosaic.plugins.Region_Competition.InitializationType;
import mosaic.region_competition.PluginSettingsRC;
import mosaic.region_competition.Settings;
import mosaic.utils.ImgUtils;
......@@ -23,7 +24,7 @@ import mosaic.utils.ImgUtils;
public class ClusterModeRC {
private static final Logger logger = Logger.getLogger(ClusterModeRC.class);
public static void runClusterMode(ImagePlus aImp, ImagePlus labelImage, Settings iSettings, String[] out) {
public static void runClusterMode(ImagePlus aImp, ImagePlus labelImage, PluginSettingsRC iSettings, String[] out) {
// The only modification to old implementation:
String labelImageFilename = ImgUtils.getImageAbsolutePath(aImp);
String inputImageFilename = ImgUtils.getImageAbsolutePath(labelImage);
......@@ -32,7 +33,7 @@ public class ClusterModeRC {
logger.info("Running RC on cluster");
// We run on cluster - saving config file
Region_Competition.getConfigHandler().SaveToFile(ClusterSession.DefaultSettingsFileName, iSettings);
RegionCompetition.getConfigHandler().SaveToFile(ClusterSession.DefaultSettingsFileName, iSettings);
final ClusterGUI cg = new ClusterGUI();
ClusterSession ss = cg.getClusterSession();
......
......@@ -11,12 +11,6 @@ import mosaic.plugins.Region_Competition.RegularizationType;
public class Settings implements Serializable {
private static final long serialVersionUID = 1777976540627904860L;
public static enum SegmentationType {
RC, DRS
}
public SegmentationType segmentationType = SegmentationType.RC;
// Init Label Image ---------------------------------------------------------------------------
// Init Type / ClusterMode
public InitializationType labelImageInitType = InitializationType.Bubbles;
......@@ -57,17 +51,7 @@ public class Settings implements Serializable {
public boolean m_AllowHandles = true;
public int m_MaxNbIterations = 300;
// RC only
public double m_OscillationThreshold = 0.02;
// DRS only - MCMC parameters
public float offBoundarySampleProbability = 0.00f;
public boolean useBiasedProposal = false;
public boolean usePairProposal = false;
public float burnInFactor = 0.3f;
public void copy(Settings s) {
segmentationType = s.segmentationType;
labelImageInitType = s.labelImageInitType;
l_BoxRatio = s.l_BoxRatio;
......@@ -95,13 +79,6 @@ public class Settings implements Serializable {
m_AllowFission = s.m_AllowFission;
m_AllowHandles = s.m_AllowHandles;
m_MaxNbIterations = s.m_MaxNbIterations;
m_OscillationThreshold = s.m_OscillationThreshold;
offBoundarySampleProbability = s.offBoundarySampleProbability;
useBiasedProposal = s.useBiasedProposal;
usePairProposal = s.usePairProposal;
burnInFactor = s.burnInFactor;
}
public Settings() {}
......
......@@ -7,8 +7,8 @@ Plugins>Mosaic>Filters, "Gausian Curvature 3D", mosaic.plugins.GaussianCurvature
Plugins>Mosaic>Filters, "Sobel Filter", mosaic.plugins.SobelFilter("run")
Plugins>Mosaic>Filters, "Laplace Filter", mosaic.plugins.LaplaceFilter("run")
Plugins>Mosaic>Segmentation, "Region Competition", mosaic.plugins.Region_Competition("run")
Plugins>Mosaic>Segmentation, "Discrete Region Sampling", mosaic.plugins.Region_Competition("DRS")
Plugins>Mosaic>Segmentation, "Region Competition", mosaic.plugins.RegionCompetition("run")
Plugins>Mosaic>Segmentation, "Discrete Region Sampling", mosaic.plugins.DiscreteRegionSampling("run")
Plugins>Mosaic>Segmentation, "Squassh", mosaic.plugins.BregmanGLM_Batch("run")
Plugins>Mosaic>Segmentation, "Filament", mosaic.plugins.FilamentSegmentation("run")
#Plugins>Mosaic>Segmentation, "Filament2D", mosaic.plugins.FilamentSquassh("run")
......
......@@ -146,8 +146,9 @@ public class ConnectivityTest {
* It is expected that all elements are found in container and after removing all elements given
* by iterator container will be empty.
* @param aIterator
* @param aContainer
* @param aContain
*/
@SuppressWarnings("unlikely-arg-type")
private void verifyIfAllElementsAdded(Iterable<?> aIterator, List<?> aContainer) {
for (Object i : aIterator) {
assertTrue("Element [" + i + "] not found", aContainer.remove(i));
......
......@@ -24,7 +24,7 @@ public class Region_CompetitionTest extends CommonBase {
final String[] referenceFiles = {"__ObjectsData_c1.csv/dot_ObjectsData_c1.csv"};
// Create tested plugIn
final Region_Competition plugin = new Region_Competition();
final RegionCompetition plugin = new RegionCompetition();
copyTestResources("rc_settings.dat", getTestDataPath() + tcDirName, "/tmp");
// Test it
......@@ -49,7 +49,7 @@ public class Region_CompetitionTest extends CommonBase {
final String[] referenceFiles = {"__ObjectsData_c1.csv/uc_data_ObjectsData_c1.csv"};
// Create tested plugIn
final Region_Competition plugin = new Region_Competition();
final RegionCompetition plugin = new RegionCompetition();
copyTestResources("rc_settings.dat", getTestDataPath() + tcDirName, "/tmp");
copyTestResources("psf_settings.dat", getTestDataPath() + tcDirName, "/tmp");
copyTestResources("psf_file_settings.dat", getTestDataPath() + tcDirName, "/tmp");
......@@ -77,7 +77,7 @@ public class Region_CompetitionTest extends CommonBase {
final String[] referenceFiles = {"__ObjectsData_c1.csv/1thing_ObjectsData_c1.csv"};
// Create tested plugIn
final Region_Competition plugin = new Region_Competition();
final RegionCompetition plugin = new RegionCompetition();
copyTestResources("rc_settings.dat", getTestDataPath() + tcDirName, "/tmp");
// Test it
......@@ -102,7 +102,7 @@ public class Region_CompetitionTest extends CommonBase {
final String[] referenceFiles = {"__ObjectsData_c1.csv/sphere_ObjectsData_c1.csv"};
// Create tested plugIn
final Region_Competition plugin = new Region_Competition();
final RegionCompetition plugin = new RegionCompetition();
copyTestResources("rc_settings.dat", getTestDataPath() + tcDirName, "/tmp");
// Test it
......@@ -127,7 +127,7 @@ public class Region_CompetitionTest extends CommonBase {
final String[] referenceFiles = {"__ObjectsData_c1.csv/twoBars_ObjectsData_c1.csv"};
// Create tested plugIn
final Region_Competition plugin = new Region_Competition();
final RegionCompetition plugin = new RegionCompetition();
copyTestResources("rc_settings.dat", getTestDataPath() + tcDirName, "/tmp");
// Test it
......@@ -152,7 +152,7 @@ public class Region_CompetitionTest extends CommonBase {
final String[] referenceFiles = {"__ObjectsData_c1.csv/object_ObjectsData_c1.csv"};
// Create tested plugIn
final Region_Competition plugin = new Region_Competition();
final RegionCompetition plugin = new RegionCompetition();
copyTestResources("rc_settings.dat", getTestDataPath() + tcDirName, "/tmp");
copyTestResources("label.tif", getTestDataPath() + tcDirName, tmpPath);
......@@ -182,7 +182,7 @@ public class Region_CompetitionTest extends CommonBase {
final String[] referenceFiles = {"__ObjectsData_c1.csv/dot_ObjectsData_c1.csv"};
// Create tested plugIn
final Region_Competition plugin = new Region_Competition();
final RegionCompetition plugin = new RegionCompetition();
copyTestResources("rc_settings.dat", getTestDataPath() + tcDirName, "/tmp");
// Test it
......@@ -220,6 +220,12 @@ public class Region_CompetitionTest extends CommonBase {
testDrs7();
}
@Test
public void runAllTypes() {
testDrs1();
testDot();
}
@Test
public void testDrs1() {
......@@ -234,8 +240,8 @@ public class Region_CompetitionTest extends CommonBase {
final String[] referenceFiles = {};
// Create tested plugIn
final Region_Competition plugin = new Region_Competition();
copyTestResources("rc_settings.dat", getTestDataPath() + tcDirName, "/tmp");
final DiscreteRegionSampling plugin = new DiscreteRegionSampling();
copyTestResources("drs_settings.json", getTestDataPath() + tcDirName, "/tmp");
// Test it
testPlugin(plugin, tcDirName,
......@@ -259,8 +265,8 @@ public class Region_CompetitionTest extends CommonBase {
final String[] referenceFiles = {};
// Create tested plugIn
final Region_Competition plugin = new Region_Competition();
copyTestResources("rc_settings.dat", getTestDataPath() + tcDirName, "/tmp");
final DiscreteRegionSampling plugin = new DiscreteRegionSampling();
copyTestResources("drs_settings.json", getTestDataPath() + tcDirName, "/tmp");
// Test it
testPlugin(plugin, tcDirName,
......@@ -284,8 +290,8 @@ public class Region_CompetitionTest extends CommonBase {
final String[] referenceFiles = {};
// Create tested plugIn
final Region_Competition plugin = new Region_Competition();
copyTestResources("rc_settings.dat", getTestDataPath() + tcDirName, "/tmp");
final DiscreteRegionSampling plugin = new DiscreteRegionSampling();
copyTestResources("drs_settings.json", getTestDataPath() + tcDirName, "/tmp");
// Test it
testPlugin(plugin, tcDirName,
......@@ -309,8 +315,8 @@ public class Region_CompetitionTest extends CommonBase {
final String[] referenceFiles = {};
// Create tested plugIn
final Region_Competition plugin = new Region_Competition();
copyTestResources("rc_settings.dat", getTestDataPath() + tcDirName, "/tmp");
final DiscreteRegionSampling plugin = new DiscreteRegionSampling();
copyTestResources("drs_settings.json", getTestDataPath() + tcDirName, "/tmp");
// Test it
testPlugin(plugin, tcDirName,
......@@ -334,8 +340,8 @@ public class Region_CompetitionTest extends CommonBase {
final String[] referenceFiles = {};
// Create tested plugIn
final Region_Competition plugin = new Region_Competition();
copyTestResources("rc_settings.dat", getTestDataPath() + tcDirName, "/tmp");
final DiscreteRegionSampling plugin = new DiscreteRegionSampling();
copyTestResources("drs_settings.json", getTestDataPath() + tcDirName, "/tmp");
// Test it
testPlugin(plugin, tcDirName,
......@@ -359,8 +365,8 @@ public class Region_CompetitionTest extends CommonBase {
final String[] referenceFiles = {};
// Create tested plugIn
final Region_Competition plugin = new Region_Competition();
copyTestResources("rc_settings.dat", getTestDataPath() + tcDirName, "/tmp");
final DiscreteRegionSampling plugin = new DiscreteRegionSampling();
copyTestResources("drs_settings.json", getTestDataPath() + tcDirName, "/tmp");
// Test it
testPlugin(plugin, tcDirName,
......@@ -384,8 +390,8 @@ public class Region_CompetitionTest extends CommonBase {
final String[] referenceFiles = {};
// Create tested plugIn
final Region_Competition plugin = new Region_Competition();
copyTestResources("rc_settings.dat", getTestDataPath() + tcDirName, "/tmp");
final DiscreteRegionSampling plugin = new DiscreteRegionSampling();
copyTestResources("drs_settings.json", getTestDataPath() + tcDirName, "/tmp");
// Test it
testPlugin(plugin, tcDirName,
......
......@@ -708,6 +708,7 @@ public class MatrixTest extends CommonBase {
}
@Test
@SuppressWarnings("unlikely-arg-type")
public void testCompareEquals() {
{
final Matrix m1 = new Matrix(new double [][] {{1, 2.0}, {3, 4.0}, {5.0, 6}});
......
1
x.png
0
4096
1
x_nat.tif
0
0
\ No newline at end of file
{
"segmentationType": "DRS",
"labelImageInitType": "Bubbles",
"l_BoxRatio": 0.5,
"m_BubblesRadius": 20,
"m_BubblesDispl": 40,
"l_BubblesRadius": 5,
"l_Sigma": 2.0,
"l_Tolerance": 0.005,
"l_RegionTolerance": 4,
"m_CurvatureMaskRadius": 8.0,
"m_GaussPSEnergyRadius": 8,
"m_BalloonForceCoeff": 0.0,
"m_RegionMergingThreshold": 0.02,
"m_EnergyFunctional": "e_PC_Gauss",
"regularizationType": "Sphere_Regularization",
"m_EnergyContourLengthCoeff": 3.0,
"m_AllowFusion": false,
"m_AllowFission": true,
"m_AllowHandles": true,
"m_MaxNbIterations": 20000,
"m_OscillationThreshold": 0.02,
"offBoundarySampleProbability": 0.0,
"useBiasedProposal": false,
"usePairProposal": false,
"burnInFactor": 0.5
}
{
"segmentationType": "DRS",
"labelImageInitType": "Bubbles",
"l_BoxRatio": 0.5,
"m_BubblesRadius": 20,
"m_BubblesDispl": 40,
"l_BubblesRadius": 5,
"l_Sigma": 2.0,
"l_Tolerance": 0.005,
"l_RegionTolerance": 4,
"m_CurvatureMaskRadius": 8.0,
"m_GaussPSEnergyRadius": 8,
"m_BalloonForceCoeff": 0.0,
"m_RegionMergingThreshold": 0.02,
"m_EnergyFunctional": "e_PC_Gauss",
"regularizationType": "Sphere_Regularization",
"m_EnergyContourLengthCoeff": 3.0,
"m_AllowFusion": false,
"m_AllowFission": false,
"m_AllowHandles": true,
"m_MaxNbIterations": 20000,
"m_OscillationThreshold": 0.02,
"offBoundarySampleProbability": 0.0,
"useBiasedProposal": false,
"usePairProposal": true,
"burnInFactor": 0.5
}
{
"segmentationType": "DRS",
"labelImageInitType": "Bubbles",
"l_BoxRatio": 0.5,
"m_BubblesRadius": 20,
"m_BubblesDispl": 40,
"l_BubblesRadius": 5,
"l_Sigma": 2.0,
"l_Tolerance": 0.005,
"l_RegionTolerance": 4,
"m_CurvatureMaskRadius": 8.0,
"m_GaussPSEnergyRadius": 8,
"m_BalloonForceCoeff": 0.0,
"m_RegionMergingThreshold": 0.02,
"m_EnergyFunctional": "e_PC_Gauss",
"regularizationType": "Sphere_Regularization",
"m_EnergyContourLengthCoeff": 3.0,
"m_AllowFusion": true,
"m_AllowFission": true,
"m_AllowHandles": true,
"m_MaxNbIterations": 20000,
"m_OscillationThreshold": 0.02,
"offBoundarySampleProbability": 0.0,
"useBiasedProposal": false,
"usePairProposal": false,
"burnInFactor": 0.5
}
{
"segmentationType": "DRS",
"labelImageInitType": "Bubbles",
"l_BoxRatio": 0.5,
"m_BubblesRadius": 20,
"m_BubblesDispl": 40,
"l_BubblesRadius": 5,
"l_Sigma": 2.0,
"l_Tolerance": 0.005,
"l_RegionTolerance": 4,
"m_CurvatureMaskRadius": 8.0,
"m_GaussPSEnergyRadius": 8,
"m_BalloonForceCoeff": 0.0,
"m_RegionMergingThreshold": 0.02,
"m_EnergyFunctional": "e_PC_Gauss",
"regularizationType": "Sphere_Regularization",
"m_EnergyContourLengthCoeff": 3.0,
"m_AllowFusion": true,
"m_AllowFission": true,
"m_AllowHandles": false,
"m_MaxNbIterations": 20000,
"m_OscillationThreshold": 0.02,
"offBoundarySampleProbability": 0.0,
"useBiasedProposal": false,
"usePairProposal": false,
"burnInFactor": 0.5
}
\ No newline at end of file
{
"segmentationType": "DRS",
"labelImageInitType": "Bubbles",
"l_BoxRatio": 0.5,
"m_BubblesRadius": 20,
"m_BubblesDispl": 40,
"l_BubblesRadius": 5,
"l_Sigma": 2.0,
"l_Tolerance": 0.005,
"l_RegionTolerance": 4,
"m_CurvatureMaskRadius": 8.0,
"m_GaussPSEnergyRadius": 8,
"m_BalloonForceCoeff": 0.0,
"m_RegionMergingThreshold": 0.02,
"m_EnergyFunctional": "e_PC_Gauss",
"regularizationType": "Sphere_Regularization",
"m_EnergyContourLengthCoeff": 3.0,
"m_AllowFusion": true,
"m_AllowFission": true,
"m_AllowHandles": true,
"m_MaxNbIterations": 20000,
"m_OscillationThreshold": 0.02,
"offBoundarySampleProbability": 0.0,
"useBiasedProposal": true,
"usePairProposal": false,
"burnInFactor": 0.5
}
{
"segmentationType": "DRS",
"labelImageInitType": "Bubbles",
"l_BoxRatio": 0.5,
"m_BubblesRadius": 20,
"m_BubblesDispl": 40,
"l_BubblesRadius": 5,
"l_Sigma": 2.0,
"l_Tolerance": 0.005,
"l_RegionTolerance": 4,
"m_CurvatureMaskRadius": 8.0,
"m_GaussPSEnergyRadius": 8,
"m_BalloonForceCoeff": 0.0,
"m_RegionMergingThreshold": 0.02,
"m_EnergyFunctional": "e_PC_Gauss",
"regularizationType": "Sphere_Regularization",
"m_EnergyContourLengthCoeff": 3.0,
"m_AllowFusion": true,
"m_AllowFission": true,
"m_AllowHandles": true,
"m_MaxNbIterations": 20000,
"m_OscillationThreshold": 0.02,
"offBoundarySampleProbability": 0.0,
"useBiasedProposal": false,
"usePairProposal": true,
"burnInFactor": 0.5
}
{
"segmentationType": "DRS",
"labelImageInitType": "Rectangle",
"l_BoxRatio": 0.4,
"m_BubblesRadius": 10,
"m_BubblesDispl": 100,
"l_BubblesRadius": 5,
"l_Sigma": 2.0,
"l_Tolerance": 0.005,
"l_RegionTolerance": 4,
"m_CurvatureMaskRadius": 4.0,
"m_GaussPSEnergyRadius": 8,
"m_BalloonForceCoeff": 0.0,
"m_RegionMergingThreshold": 3.0,
"m_EnergyFunctional": "e_PC_Gauss",
"regularizationType": "Sphere_Regularization",
"m_EnergyContourLengthCoeff": 0.5,
"m_AllowFusion": true,
"m_AllowFission": true,