/*
* Copyright (c) 2011-2016, Peter Abeles. All Rights Reserved.
*
* This file is part of BoofCV (http://boofcv.org).
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package boofcv;
import boofcv.demonstrations.binary.DemoBinaryImageLabelOpsApp;
import boofcv.demonstrations.binary.DemoBinaryImageOpsApp;
import boofcv.demonstrations.calibration.*;
import boofcv.demonstrations.color.ShowColorModelApp;
import boofcv.demonstrations.denoise.DenoiseVisualizeApp;
import boofcv.demonstrations.distort.*;
import boofcv.demonstrations.enhance.ImageEnhanceApp;
import boofcv.demonstrations.feature.associate.VisualizeAssociationAlgorithmsApp;
import boofcv.demonstrations.feature.associate.VisualizeAssociationMatchesApp;
import boofcv.demonstrations.feature.associate.VisualizeAssociationScoreApp;
import boofcv.demonstrations.feature.describe.VisualizeHogDescriptorApp;
import boofcv.demonstrations.feature.describe.VisualizeImageHogCellApp;
import boofcv.demonstrations.feature.describe.VisualizeRegionDescriptionApp;
import boofcv.demonstrations.feature.detect.edge.ShowEdgeContourApp;
import boofcv.demonstrations.feature.detect.extract.CompareFeatureExtractorApp;
import boofcv.demonstrations.feature.detect.intensity.IntensityFeaturePyramidApp;
import boofcv.demonstrations.feature.detect.interest.DetectPointScaleOriWithNoiseApp;
import boofcv.demonstrations.feature.detect.interest.DetectPointsInsidePyramidApp;
import boofcv.demonstrations.feature.detect.interest.DetectPointsWithNoiseApp;
import boofcv.demonstrations.feature.detect.line.DetectLineApp;
import boofcv.demonstrations.feature.detect.line.VisualizeHoughFoot;
import boofcv.demonstrations.feature.detect.line.VisualizeHoughPolar;
import boofcv.demonstrations.feature.detect.line.VisualizeLineRansac;
import boofcv.demonstrations.feature.disparity.VisualizeStereoDisparity;
import boofcv.demonstrations.feature.flow.DenseFlowApp;
import boofcv.demonstrations.feature.orientation.ShowFeatureOrientationApp;
import boofcv.demonstrations.fiducial.FiducialTrackerApp;
import boofcv.demonstrations.fiducial.VisualizeSquareBinaryFiducial;
import boofcv.demonstrations.fiducial.VisualizeSquareFiducial;
import boofcv.demonstrations.filter.DisplayGaussianKernelApp;
import boofcv.demonstrations.filter.DisplaySteerableGaussianApp;
import boofcv.demonstrations.filter.ShowImageBlurApp;
import boofcv.demonstrations.filter.ShowImageDerivative;
import boofcv.demonstrations.ip.DemonstrationInterpolateScaleApp;
import boofcv.demonstrations.ip.VisualizeFlipRotate;
import boofcv.demonstrations.segmentation.VisualizeImageSegmentationApp;
import boofcv.demonstrations.segmentation.VisualizeWatershedApp;
import boofcv.demonstrations.sfm.d2.VideoMosaicSequentialPointApp;
import boofcv.demonstrations.sfm.d2.VideoStabilizeSequentialPointApp;
import boofcv.demonstrations.sfm.d3.VisualizeDepthVisualOdometryApp;
import boofcv.demonstrations.sfm.d3.VisualizeMonocularPlaneVisualOdometryApp;
import boofcv.demonstrations.sfm.d3.VisualizeStereoVisualOdometryApp;
import boofcv.demonstrations.shapes.DetectBlackEllipseApp;
import boofcv.demonstrations.shapes.DetectBlackPolygonApp;
import boofcv.demonstrations.shapes.ShapeFitContourApp;
import boofcv.demonstrations.tracker.VideoTrackerObjectQuadApp;
import boofcv.demonstrations.tracker.VideoTrackerPointFeaturesApp;
import boofcv.demonstrations.tracker.VisualizeCirculantTrackerApp;
import boofcv.demonstrations.transform.fft.FourierVisualizeApp;
import boofcv.demonstrations.transform.pyramid.EdgeIntensitiesApp;
import boofcv.demonstrations.transform.pyramid.VisualizePyramidDiscreteApp;
import boofcv.demonstrations.transform.pyramid.VisualizePyramidFloatApp;
import boofcv.demonstrations.transform.pyramid.VisualizeScaleSpacePyramidApp;
import boofcv.demonstrations.transform.wavelet.WaveletVisualizeApp;
import boofcv.gui.ApplicationLauncherApp;
import boofcv.gui.image.ShowImages;
import javax.swing.tree.DefaultMutableTreeNode;
/**
* Application which lists most of the demonstration application in a GUI and allows the user to double click
* to launch one in a new JVM.
*
* @author Peter Abeles
*/
public class DemonstrationLauncherApp extends ApplicationLauncherApp {
@Override
protected void createTree( DefaultMutableTreeNode root ) {
createNodes(root,"Binary",
DemoBinaryImageLabelOpsApp.class,
DemoBinaryImageOpsApp.class);
createNodes(root,"Calibration",
CalibrateMonoPlanarGuiApp.class,
CalibrateStereoPlanarGuiApp.class,
DetectCalibrationChessboardApp.class,
DetectCalibrationCircleAsymmetricApp.class,
DetectCalibrationSquareGridApp.class);
createNodes(root,"Color",
ShowColorModelApp.class);
createNodes(root,"Denoise",
DenoiseVisualizeApp.class);
createNodes(root,"Distort",
EquirectangularCylinderApp.class,
EquirectangularPinholeApp.class,
EquirectangularRotatingApp.class,
FisheyePinholeApp.class,
RemoveLensDistortionApp.class,
ShowLensDistortion.class);
createNodes(root,"Enhance",
ImageEnhanceApp.class);
createNodes(root,"Feature",
VisualizeAssociationAlgorithmsApp.class,
VisualizeAssociationMatchesApp.class,
VisualizeAssociationScoreApp.class,
// CompareConvertedDescriptionsApp.class,
VisualizeHogDescriptorApp.class,
VisualizeImageHogCellApp.class,
VisualizeRegionDescriptionApp.class,
ShowEdgeContourApp.class,
CompareFeatureExtractorApp.class,
IntensityFeaturePyramidApp.class,
DetectPointsWithNoiseApp.class,
DetectPointScaleOriWithNoiseApp.class,
DetectPointsInsidePyramidApp.class,
DetectLineApp.class,
VisualizeHoughFoot.class,
VisualizeHoughPolar.class,
VisualizeLineRansac.class,
DenseFlowApp.class,
ShowFeatureOrientationApp.class,
EdgeIntensitiesApp.class);
createNodes(root,"SFM 2D",
VideoMosaicSequentialPointApp.class,
VideoStabilizeSequentialPointApp.class);
createNodes(root,"SFM 3D",
VisualizeStereoDisparity.class,
VisualizeDepthVisualOdometryApp.class,
VisualizeMonocularPlaneVisualOdometryApp.class,
VisualizeStereoVisualOdometryApp.class);
createNodes(root,"Fiducial / Markers",
FiducialTrackerApp.class,
VisualizeSquareBinaryFiducial.class,
VisualizeSquareFiducial.class);
createNodes(root,"Image Processing",
DisplayGaussianKernelApp.class,
DisplaySteerableGaussianApp.class,
ShowImageBlurApp.class,
ShowImageDerivative.class,
DemonstrationInterpolateScaleApp.class,
VisualizeFlipRotate.class,
VisualizeImageSegmentationApp.class,
VisualizeWatershedApp.class);
createNodes(root, "Shapes",
DetectBlackPolygonApp.class,
DetectBlackEllipseApp.class,
ShapeFitContourApp.class);
createNodes(root, "Trackers",
VideoTrackerObjectQuadApp.class,
VideoTrackerPointFeaturesApp.class,
VisualizeCirculantTrackerApp.class);
createNodes(root, "Transforms",
FourierVisualizeApp.class,
VisualizePyramidDiscreteApp.class,
VisualizePyramidFloatApp.class,
VisualizeScaleSpacePyramidApp.class,
WaveletVisualizeApp.class);
}
public static void main(String[] args) {
DemonstrationLauncherApp app = new DemonstrationLauncherApp();
ShowImages.showWindow(app,"Demonstration Launcher",true);
}
}