Meshroom/meshroom/nodes/aliceVision/FeatureRepeatability.py
Candice Bentéjac 5c2865968d [nodes] D-G: Harmonize and improve labels and descriptions
Use CamelCase for all labels, always end descriptions with periods, and
replace the mixed use of single and double quotes with double quotes
only.
2023-06-16 10:31:03 +02:00

133 lines
4.9 KiB
Python

__version__ = "1.1"
from meshroom.core import desc
class FeatureRepeatability(desc.AVCommandLineNode):
commandLine = 'aliceVision_samples_repeatabilityDataset {allParams}'
size = desc.DynamicNodeSize('input')
# parallelization = desc.Parallelization(blockSize=40)
# commandLineRange = '--rangeStart {rangeStart} --rangeSize {rangeBlockSize}'
category = 'Utils'
documentation = '''
Compare feature/descriptor matching repeatability on some dataset with known homography motions.
'''
inputs = [
desc.File(
name="input",
label="Input Folder",
description="Input folder with evaluation datasets.",
value="",
uid=[0],
),
desc.ChoiceParam(
name="describerTypes",
label="Describer Types",
description="Describer types used to describe an image.",
value=["sift"],
values=["sift", "sift_float", "sift_upright", "dspsift", "akaze", "akaze_liop", "akaze_mldb", "cctag3", "cctag4", "sift_ocv", "akaze_ocv"],
exclusive=False,
uid=[0],
joinChar=",",
),
desc.ChoiceParam(
name="describerPreset",
label="Describer Density",
description="Control the ImageDescriber density (low, medium, normal, high, ultra).\n"
"Warning: Use ULTRA only on small datasets.",
value="normal",
values=["low", "medium", "normal", "high", "ultra"],
exclusive=True,
uid=[0],
),
desc.ChoiceParam(
name="describerQuality",
label="Describer Quality",
description="Control the ImageDescriber quality (low, medium, normal, high, ultra).",
value="normal",
values=["low", "medium", "normal", "high", "ultra"],
exclusive=True,
uid=[0],
),
desc.ChoiceParam(
name="contrastFiltering",
label="Contrast Filtering",
description="Contrast filtering method to ignore features with too low contrast that can be considered as noise:\n"
" - Static: Fixed threshold.\n"
" - AdaptiveToMedianVariance: Based on image content analysis.\n"
" - NoFiltering: Disable contrast filtering.\n"
" - GridSortOctaves: Grid Sort but per octaves (and only per scale at the end).\n"
" - GridSort: Grid sort per octaves and at the end (scale * peakValue).\n"
" - GridSortScaleSteps: Grid sort per octaves and at the end (scale and then peakValue).\n"
" - NonExtremaFiltering: Filter non-extrema peakValues.",
value="Static",
values=["Static", "AdaptiveToMedianVariance", "NoFiltering", "GridSortOctaves", "GridSort", "GridSortScaleSteps", "GridSortOctaveSteps", "NonExtremaFiltering"],
exclusive=True,
advanced=True,
uid=[0],
),
desc.FloatParam(
name="relativePeakThreshold",
label="Relative Peak Threshold",
description="Peak threashold relative to the median of gradients.",
value=0.01,
range=(0.01, 1.0, 0.001),
advanced=True,
uid=[0],
enabled=lambda node: (node.contrastFiltering.value == "AdaptiveToMedianVariance"),
),
desc.BoolParam(
name="gridFiltering",
label="Grid Filtering",
description="Enable grid filtering. Highly recommended to ensure a usable number of features.",
value=True,
advanced=True,
uid=[0],
),
desc.BoolParam(
name="forceCpuExtraction",
label="Force CPU Extraction",
description="Use only CPU feature extraction.",
value=True,
uid=[],
advanced=True,
),
desc.IntParam(
name="invalidate",
label="Invalidate",
description="Invalidate.",
value=0,
range=(0, 10000, 1),
group="",
uid=[0],
),
desc.StringParam(
name="comments",
label="Comments",
description="Comments.",
value="",
group="",
uid=[],
),
desc.ChoiceParam(
name="verboseLevel",
label="Verbose Level",
description="Verbosity level (fatal, error, warning, info, debug, trace).",
value="info",
values=["fatal", "error", "warning", "info", "debug", "trace"],
exclusive=True,
uid=[],
)
]
outputs = [
desc.File(
name="output",
label="Folder",
description="Output path for the features and descriptors files (*.feat, *.desc).",
value=desc.Node.internalFolder,
uid=[],
),
]