[nodes] A-C: 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.
This commit is contained in:
Candice Bentéjac 2023-06-15 13:06:03 +02:00
parent 6ac9948b04
commit 241bead35c
10 changed files with 757 additions and 668 deletions

View file

@ -13,27 +13,36 @@ Overwrite intrinsics with a calibrated intrinsic.
inputs = [
desc.File(
name='input',
label='Input SfMData',
description='SfMData file.',
value='',
name="input",
label="SfMData",
description="Input SfMData file.",
value="",
uid=[0],
),
desc.File(
name='calibration',
label='Calibration',
description='Calibration SfMData file.',
value='',
name="calibration",
label="Calibration",
description="Calibration SfMData file.",
value="",
uid=[0],
),
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='SfMData File',
description='Path to the output SfMData file.',
value=desc.Node.internalFolder + 'sfmData.sfm',
name="output",
label="SMData",
description="Path to the output SfMData file.",
value=desc.Node.internalFolder + "sfmData.sfm",
uid=[],
),
]

View file

@ -7,123 +7,139 @@ class CameraCalibration(desc.AVCommandLineNode):
commandLine = 'aliceVision_cameraCalibration {allParams}'
category = 'Utils'
documentation = '''
'''
inputs = [
desc.File(
name='input',
label='Input',
description='''Input images in one of the following form:
- folder containing images
- image sequence like "/path/to/seq.@.jpg"
- video file''',
value='',
name="input",
label="Input",
description="Input images in one of the following form:\n"
" - folder containing images.\n"
" - image sequence like \"/path/to/seq.@.jpg\".\n"
" - video file.",
value="",
uid=[0],
),
desc.ChoiceParam(
name='pattern',
label='Pattern',
description='''Type of pattern (CHESSBOARD, CIRCLES, ASYMMETRIC_CIRCLES, ASYMMETRIC_CCTAG).''',
value='CHESSBOARD',
values=['CHESSBOARD', 'CIRCLES', 'ASYMMETRIC_CIRCLES', 'ASYMMETRIC_CCTAG'],
name="pattern",
label="Pattern",
description="Type of pattern (CHESSBOARD, CIRCLES, ASYMMETRIC_CIRCLES, ASYMMETRIC_CCTAG).",
value="CHESSBOARD",
values=["CHESSBOARD", "CIRCLES", "ASYMMETRIC_CIRCLES", "ASYMMETRIC_CCTAG"],
exclusive=True,
uid=[0],
),
desc.GroupAttribute(name="size", label="Size", description="Number of inner corners per one of board dimension like W H.", groupDesc=[
desc.GroupAttribute(
name="size",
label="Size",
description="Number of inner corners per one of board dimension like W H.",
groupDesc=[
desc.IntParam(
name='width',
label='Width',
description='',
name="width",
label="Width",
description="",
value=7,
range=(0, 10000, 1),
uid=[0],
),
desc.IntParam(
name='height',
label='Height',
description='',
name="height",
label="Height",
description="",
value=5,
range=(0, 10000, 1),
uid=[0],
),
]),
]
),
desc.FloatParam(
name='squareSize',
label='Square Size',
description='''Size of the grid's square cells (mm).''',
name="squareSize",
label="Square Size",
description="Size of the grid's square cells (mm).",
value=1.0,
range=(0.0, 100.0, 1.0),
uid=[0],
),
desc.IntParam(
name='nbDistortionCoef',
label='Nb Distortion Coef',
description='''Number of distortion coefficient.''',
name="nbDistortionCoef",
label="Nb Distortion Coef",
description="Number of distortion coefficients.",
value=3,
range=(0, 5, 1),
uid=[0],
),
desc.IntParam(
name='maxFrames',
label='Max Frames',
description='''Maximal number of frames to extract from the video file.''',
name="maxFrames",
label="Max Frames",
description="Maximum number of frames to extract from the video file.",
value=0,
range=(0, 5, 1),
uid=[0],
),
desc.IntParam(
name='maxCalibFrames',
label='Max Calib Frames',
description='''Maximal number of frames to use to calibrate from the selected frames.''',
name="maxCalibFrames",
label="Max Calib Frames",
description="Maximum number of frames to use to calibrate from the selected frames.",
value=100,
range=(0, 1000, 1),
uid=[0],
),
desc.IntParam(
name='calibGridSize',
label='Calib Grid Size',
description='''Define the number of cells per edge.''',
name="calibGridSize",
label="Calib Grid Size",
description="Define the number of cells per edge.",
value=10,
range=(0, 50, 1),
uid=[0],
),
desc.IntParam(
name='minInputFrames',
label='Min Input Frames',
description='''Minimal number of frames to limit the refinement loop.''',
name="minInputFrames",
label="Min Input Frames",
description="Minimum number of frames to limit the refinement loop.",
value=10,
range=(0, 100, 1),
uid=[0],
),
desc.FloatParam(
name='maxTotalAvgErr',
label='Max Total Avg Err',
description='''Max Total Average Error.''',
name="maxTotalAvgErr",
label="Max Total Avg Err",
description="Maximum total average error.",
value=0.10000000000000001,
range=(0.0, 1.0, 0.01),
uid=[0],
),
desc.File(
name='debugRejectedImgFolder',
label='Debug Rejected Img Folder',
description='''Folder to export delete images during the refinement loop.''',
value='',
name="debugRejectedImgFolder",
label="Debug Rejected Img Folder",
description="Folder to export images that were deleted during the refinement loop.",
value="",
uid=[0],
),
desc.File(
name='debugSelectedImgFolder',
label='Debug Selected Img Folder',
description='''Folder to export debug images.''',
value='',
name="debugSelectedImgFolder",
label="Debug Selected Img Folder",
description="Folder to export debug images.",
value="",
uid=[0],
),
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='Output',
description='''Output filename for intrinsic [and extrinsic] parameters.''',
value=desc.Node.internalFolder + '/cameraCalibration.cal',
name="output",
label="Output",
description="Output filename for intrinsic [and extrinsic] parameters.",
value=desc.Node.internalFolder + "/cameraCalibration.cal",
uid=[],
),
]

View file

@ -11,62 +11,64 @@ from meshroom.core import desc, Version
from meshroom.multiview import FilesByType, findFilesByTypeInFolder
Viewpoint = [
desc.IntParam(name="viewId", label="Id", description="Image UID", value=-1, uid=[0], range=None),
desc.IntParam(name="poseId", label="Pose Id", description="Pose Id", value=-1, uid=[0], range=None),
desc.File(name="path", label="Image Path", description="Image Filepath", value="", uid=[0]),
desc.IntParam(name="intrinsicId", label="Intrinsic", description="Internal Camera Parameters", value=-1, uid=[0], range=None),
desc.IntParam(name="rigId", label="Rig", description="Rig Parameters", value=-1, uid=[0], range=None),
desc.IntParam(name="subPoseId", label="Rig Sub-Pose", description="Rig Sub-Pose Parameters", value=-1, uid=[0], range=None),
desc.IntParam(name="viewId", label="ID", description="Image UID.", value=-1, uid=[0], range=None),
desc.IntParam(name="poseId", label="Pose ID", description="Pose ID.", value=-1, uid=[0], range=None),
desc.File(name="path", label="Image Path", description="Image filepath.", value="", uid=[0]),
desc.IntParam(name="intrinsicId", label="Intrinsic", description="Internal camera parameters.", value=-1, uid=[0], range=None),
desc.IntParam(name="rigId", label="Rig", description="Rig parameters.", value=-1, uid=[0], range=None),
desc.IntParam(name="subPoseId", label="Rig Sub-Pose", description="Rig sub-pose parameters.", value=-1, uid=[0], range=None),
desc.StringParam(name="metadata", label="Image Metadata",
description="The configuration of the Viewpoints is based on the images metadata.\n"
description="The configuration of the Viewpoints is based on the images' metadata.\n"
"The important ones are:\n"
" * Focal Length: the focal length in mm.\n"
" * Make and Model: this information allows to convert the focal in mm into a focal length in pixel using an embedded sensor database.\n"
" * Serial Number: allows to uniquely identify a device so multiple devices with the same Make, Model can be differentiated and their internal parameters are optimized separately.",
" - Focal Length: the focal length in mm.\n"
" - Make and Model: this information allows to convert the focal in mm into a focal length in pixels using "
"an embedded sensor database.\n"
" - Serial Number: allows to uniquely identify a device so multiple devices with the same Make, Model can be "
"differentiated and their internal parameters are optimized separately.",
value="", uid=[], advanced=True),
]
Intrinsic = [
desc.IntParam(name="intrinsicId", label="Id", description="Intrinsic UID", value=-1, uid=[0], range=None),
desc.IntParam(name="intrinsicId", label="ID", description="Intrinsic UID.", value=-1, uid=[0], range=None),
desc.FloatParam(name="initialFocalLength", label="Initial Focal Length",
description="Initial Guess on the Focal Length (in pixels). \n"
"When we have an initial value from EXIF, this value is not accurate but cannot be wrong. \n"
description="Initial guess on the focal length (in pixels).\n"
"When we have an initial value from EXIF, this value is not accurate but it cannot be wrong.\n"
"So this value is used to limit the range of possible values in the optimization.\n"
"If you put -1, this value will not be used and the focal length will not be bounded.",
"If this value is set to -1, it will not be used and the focal length will not be bounded.",
value=-1.0, uid=[0], range=None),
desc.FloatParam(name="focalLength", label="Focal Length", description="Known/Calibrated Focal Length (in mm)", value=1000.0, uid=[0], range=(0.0, 10000.0, 1.0)),
desc.FloatParam(name="pixelRatio", label="pixel Ratio", description="ratio between pixel width and pixel height", value=1.0, uid=[0], range=(0.0, 10.0, 0.1)),
desc.BoolParam(name='pixelRatioLocked', label='Pixel ratio Locked',
description='the pixelRatio value is locked for estimation',
desc.FloatParam(name="focalLength", label="Focal Length", description="Known/calibrated focal length (in mm).", value=1000.0, uid=[0], range=(0.0, 10000.0, 1.0)),
desc.FloatParam(name="pixelRatio", label="Pixel Ratio", description="Ratio between the pixel width and the pixel height.", value=1.0, uid=[0], range=(0.0, 10.0, 0.1)),
desc.BoolParam(name='pixelRatioLocked', label='Pixel Ratio Locked',
description='The pixel ratio value is locked for estimation.',
value=True, uid=[0]),
desc.ChoiceParam(name="type", label="Camera Type",
description="Mathematical Model used to represent a camera:\n"
" * pinhole: Simplest projective camera model without optical distortion (focal and optical center).\n"
" * radial1: Pinhole camera with one radial distortion parameter\n"
" * radial3: Pinhole camera with 3 radial distortion parameters\n"
" * brown: Pinhole camera with 3 radial and 2 tangential distortion parameters\n"
" * fisheye4: Pinhole camera with 4 distortion parameters suited for fisheye optics (like 120deg FoV)\n"
" * equidistant_r3: Non-projective camera model suited for full-fisheye optics (like 180deg FoV)\n"
" * 3deanamorphic4: Pinhole camera with a 4 anamorphic distortion coefficients.\n"
" * 3declassicld: Pinhole camera with a 10 anamorphic distortion coefficients\n"
" * 3deradial4: Pinhole camera with 3DE radial4 model\n",
value="", values=['', 'pinhole', 'radial1', 'radial3', 'brown', 'fisheye4', 'equidistant_r3', '3deanamorphic4', '3declassicld', '3deradial4'], exclusive=True, uid=[0]),
desc.IntParam(name="width", label="Width", description="Image Width", value=0, uid=[0], range=(0, 10000, 1)),
desc.IntParam(name="height", label="Height", description="Image Height", value=0, uid=[0], range=(0, 10000, 1)),
desc.FloatParam(name="sensorWidth", label="Sensor Width", description="Sensor Width (mm)", value=36.0, uid=[0], range=(0.0, 1000.0, 1.0)),
desc.FloatParam(name="sensorHeight", label="Sensor Height", description="Sensor Height (mm)", value=24.0, uid=[0], range=(0.0, 1000.0, 1.0)),
desc.StringParam(name="serialNumber", label="Serial Number", description="Device Serial Number (Camera UID and Lens UID combined)", value="", uid=[0]),
desc.GroupAttribute(name="principalPoint", label="Principal Point", description="Position of the Optical Center in the Image (i.e. the sensor surface).", groupDesc=[
description="Mathematical model used to represent a camera:\n"
" - pinhole: Simplest projective camera model without optical distortion (focal and optical center).\n"
" - radial1: Pinhole camera with one radial distortion parameter.\n"
" - radial3: Pinhole camera with 3 radial distortion parameters.\n"
" - brown: Pinhole camera with 3 radial and 2 tangential distortion parameters.\n"
" - fisheye4: Pinhole camera with 4 distortion parameters suited for fisheye optics (like 120deg FoV).\n"
" - equidistant_r3: Non-projective camera model suited for full-fisheye optics (like 180deg FoV).\n"
" - 3deanamorphic4: Pinhole camera with 4 anamorphic distortion coefficients.\n"
" - 3declassicld: Pinhole camera with 10 anamorphic distortion coefficients.\n"
" - 3deradial4: Pinhole camera with 3DE radial4 model.\n",
value="", values=["", "pinhole", "radial1", "radial3", "brown", "fisheye4", "equidistant_r3", "3deanamorphic4", "3declassicld", "3deradial4"], exclusive=True, uid=[0]),
desc.IntParam(name="width", label="Width", description="Image width.", value=0, uid=[0], range=(0, 10000, 1)),
desc.IntParam(name="height", label="Height", description="Image height.", value=0, uid=[0], range=(0, 10000, 1)),
desc.FloatParam(name="sensorWidth", label="Sensor Width", description="Sensor width (in mm).", value=36.0, uid=[0], range=(0.0, 1000.0, 1.0)),
desc.FloatParam(name="sensorHeight", label="Sensor Height", description="Sensor height (in mm).", value=24.0, uid=[0], range=(0.0, 1000.0, 1.0)),
desc.StringParam(name="serialNumber", label="Serial Number", description="Device serial number (Camera UID and Lens UID combined).", value="", uid=[0]),
desc.GroupAttribute(name="principalPoint", label="Principal Point", description="Position of the optical center in the image (i.e. the sensor surface).", groupDesc=[
desc.FloatParam(name="x", label="x", description="", value=0.0, uid=[0], range=(0.0, 10000.0, 1.0)),
desc.FloatParam(name="y", label="y", description="", value=0.0, uid=[0], range=(0.0, 10000.0, 1.0)),
]),
desc.ChoiceParam(name="initializationMode", label="Initialization Mode",
description="Defines how this Intrinsic was initialized:\n"
" * calibrated: calibrated externally.\n"
" * estimated: estimated from metadata and/or sensor width \n"
" * unknown: unknown camera parameters (can still have default value guess)\n"
" * none: not set",
description="Defines how this intrinsic was initialized:\n"
" - calibrated: calibrated externally.\n"
" - estimated: estimated from metadata and/or sensor width.\n"
" - unknown: unknown camera parameters (can still have default value guess).\n"
" - none: not set.",
values=("calibrated", "estimated", "unknown", "none"),
value="none",
exclusive=True,
@ -74,11 +76,11 @@ Intrinsic = [
),
desc.ChoiceParam(name="distortionInitializationMode", label="Distortion Initialization Mode",
description="Defines how the distortion model and parameters was initialized:\n"
" * calibrated: calibrated externally.\n"
" * estimated: estimated from a database of generic calibration \n"
" * unknown: unknown camera parameters (can still have default value guess)\n"
" * none: not set",
description="Defines how the distortion model and parameters were initialized:\n"
" - calibrated: calibrated externally.\n"
" - estimated: estimated from a database of generic calibration.\n"
" - unknown: unknown camera parameters (can still have default value guess).\n"
" - none: not set.",
values=("calibrated", "estimated", "unknown", "none"),
value="none",
exclusive=True,
@ -106,9 +108,10 @@ Intrinsic = [
label="Undistortion Params",
description="Undistortion parameters."
),
desc.BoolParam(name='locked', label='Locked',
description='If the camera has been calibrated, the internal camera parameters (intrinsics) can be locked. It should improve robustness and speedup the reconstruction.',
value=False, uid=[0]),
desc.BoolParam(name="locked", label="Locked",
description="If the camera has been calibrated, the internal camera parameters (intrinsics) can be locked. It should improve robustness and speed-up the reconstruction.",
value=False, uid=[0]
),
]
def readSfMData(sfmFile):
@ -163,151 +166,153 @@ class CameraInit(desc.AVCommandLineNode, desc.InitNode):
category = 'Sparse Reconstruction'
documentation = '''
This node describes your dataset. It lists the Viewpoints candidates, the guess about the type of optic, the initial focal length
and which images are sharing the same internal camera parameters, as well as potential cameras rigs.
and which images are sharing the same internal camera parameters, as well as potential camera rigs.
When you import new images into Meshroom, this node is automatically configured from the analysis of the image metadata.
When you import new images into Meshroom, this node is automatically configured from the analysis of the images' metadata.
The software can support images without any metadata but it is recommended to have them for robustness.
### Metadata
Metadata allows images to be grouped together and provides an initialization of the focal length (in pixel unit).
The metadata needed are:
Metadata allow images to be grouped together and provide an initialization of the focal length (in pixel unit).
The needed metadata are:
* **Focal Length**: the focal length in mm.
* **Make** & **Model**: this information allows to convert the focal in mm into a focal length in pixel using an embedded sensor database.
* **Make** & **Model**: this information allows to convert the focal in mm into a focal length in pixels using an embedded sensor database.
* **Serial Number**: allows to uniquely identify a device so multiple devices with the same Make, Model can be differentiated and their internal parameters are optimized separately (in the photogrammetry case).
'''
inputs = [
desc.ListAttribute(
name="viewpoints",
elementDesc=desc.GroupAttribute(name="viewpoint", label="Viewpoint", description="", groupDesc=Viewpoint),
elementDesc=desc.GroupAttribute(name="viewpoint", label="Viewpoint", description="Viewpoint.", groupDesc=Viewpoint),
label="Viewpoints",
description="Input viewpoints",
description="Input viewpoints.",
group="",
),
desc.ListAttribute(
name="intrinsics",
elementDesc=desc.GroupAttribute(name="intrinsic", label="Intrinsic", description="", groupDesc=Intrinsic),
elementDesc=desc.GroupAttribute(name="intrinsic", label="Intrinsic", description="Intrinsic.", groupDesc=Intrinsic),
label="Intrinsics",
description="Camera Intrinsics",
description="Camera intrinsics.",
group="",
),
desc.File(
name='sensorDatabase',
label='Sensor Database',
description='''Camera sensor width database path.''',
value='${ALICEVISION_SENSOR_DB}',
name="sensorDatabase",
label="Sensor Database",
description="Camera sensor with database path.",
value="${ALICEVISION_SENSOR_DB}",
uid=[],
),
desc.File(
name='lensCorrectionProfileInfo',
label='Lens Correction Profile Info',
description='''Lens Correction Profile filepath or database directory.''',
value='${ALICEVISION_LENS_PROFILE_INFO}',
name="lensCorrectionProfileInfo",
label="LCP Info",
description="Lens Correction Profile filepath or database directory.",
value="${ALICEVISION_LENS_PROFILE_INFO}",
uid=[],
),
desc.BoolParam(
name='lensCorrectionProfileSearchIgnoreCameraModel',
label='LCP Generic Search',
description='The lens name and camera maker are used to match the LCP database, but the camera model is ignored.',
name="lensCorrectionProfileSearchIgnoreCameraModel",
label="LCP Generic Search",
description="The lens name and camera maker are used to match the LCP database, but the camera model is ignored.",
value=True,
uid=[0],
advanced=True,
),
desc.FloatParam(
name='defaultFieldOfView',
label='Default Field Of View',
description='Default value for the field of view (in degree) used as an initialization when there is no focal or field of view in the image metadata.',
name="defaultFieldOfView",
label="Default Field Of View",
description="Default value for the field of view (in degrees) used as an initialization value when there is no focal or field of view in the image metadata.",
value=45.0,
range=(0.0, 180.0, 1.0),
uid=[],
),
desc.ChoiceParam(
name='groupCameraFallback',
label='Group Camera Fallback',
description="If there is no serial number in image metadata, devices cannot be accurately identified.\n"
name="groupCameraFallback",
label="Group Camera Fallback",
description="If there is no serial number in the images' metadata, devices cannot be accurately identified.\n"
"Therefore, internal camera parameters cannot be shared among images reliably.\n"
"A fallback grouping strategy must be chosen:\n"
" * global: group images from comparable devices (same make/model/focal) globally.\n"
" * folder: group images from comparable devices only within the same folder.\n"
" * image: never group images from comparable devices",
values=['global', 'folder', 'image'],
value='folder',
" - global: group images from comparable devices (same make/model/focal) globally.\n"
" - folder: group images from comparable devices only within the same folder.\n"
" - image: never group images from comparable devices.",
values=["global", "folder", "image"],
value="folder",
exclusive=True,
uid=[],
),
desc.ChoiceParam(
name='allowedCameraModels',
label='Allowed Camera Models',
description='the Camera Models that can be attributed.',
value=['pinhole', 'radial1', 'radial3', 'brown', 'fisheye4', 'fisheye1', '3deanamorphic4', '3deradial4', '3declassicld'],
values=['pinhole', 'radial1', 'radial3', 'brown', 'fisheye4', 'fisheye1', '3deanamorphic4', '3deradial4', '3declassicld'],
name="allowedCameraModels",
label="Allowed Camera Models",
description='List of the camera models that can be attributed.',
value=["pinhole", "radial1", "radial3", "brown", "fisheye4", "fisheye1", "3deanamorphic4", "3deradial4", "3declassicld"],
values=["pinhole", "radial1", "radial3", "brown", "fisheye4", "fisheye1", "3deanamorphic4", "3deradial4", "3declassicld"],
exclusive=False,
uid=[],
joinChar=',',
joinChar=",",
advanced=True,
),
desc.ChoiceParam(
name='rawColorInterpretation',
label='RAW Color Interpretation',
description='Allows you to choose how raw data are color processed:\n'
'None: Debayering without any color processing.\n'
'LibRawNoWhiteBalancing: Simple neutralization.\n'
'LibRawWhiteBalancing: Use internal white balancing from libraw.\n'
'DCPLinearProcessing: Use DCP color profile.\n'
'DCPMetadata: Same as None with DCP info added in metadata.',
value='DCPLinearProcessing' if os.environ.get('ALICEVISION_COLOR_PROFILE_DB', '') else 'LibRawWhiteBalancing',
values=['None', 'LibRawNoWhiteBalancing', 'LibRawWhiteBalancing', 'DCPLinearProcessing', 'DCPMetadata'],
name="rawColorInterpretation",
label="RAW Color Interpretation",
description="Allows to choose how RAW data are color processed:\n"
" - None: Debayering without any color processing.\n"
" - LibRawNoWhiteBalancing: Simple neutralization.\n"
" - LibRawWhiteBalancing: Use internal white balancing from libraw.\n"
" - DCPLinearProcessing: Use DCP color profile.\n"
" - DCPMetadata: Same as None with DCP info added in metadata.",
value="DCPLinearProcessing" if os.environ.get("ALICEVISION_COLOR_PROFILE_DB", "") else "LibRawWhiteBalancing",
values=["None", "LibRawNoWhiteBalancing", "LibRawWhiteBalancing", "DCPLinearProcessing", "DCPMetadata"],
exclusive=True,
uid=[0],
),
desc.File(
name='colorProfileDatabase',
label='Color Profile Database',
description='''Color Profile database directory path.''',
value='${ALICEVISION_COLOR_PROFILE_DB}',
enabled=lambda node: node.rawColorInterpretation.value.startswith('DCP'),
name="colorProfileDatabase",
label="Color Profile Database",
description="Color Profile database directory path.",
value="${ALICEVISION_COLOR_PROFILE_DB}",
enabled=lambda node: node.rawColorInterpretation.value.startswith("DCP"),
uid=[],
),
desc.BoolParam(
name='errorOnMissingColorProfile',
label='Error On Missing DCP Color Profile',
description='When enabled, if no color profile is found for at least one image, then an error is thrown.\n'
'When disabled, if no color profile is found for some images, it will fallback to libRawWhiteBalancing for those images.',
name="errorOnMissingColorProfile",
label="Error On Missing DCP Color Profile",
description="When enabled, if no color profile is found for at least one image, then an error is thrown.\n"
"When disabled, if no color profile is found for some images, it will fallback to libRawWhiteBalancing for those images.",
value=True,
enabled=lambda node: node.rawColorInterpretation.value.startswith('DCP'),
enabled=lambda node: node.rawColorInterpretation.value.startswith("DCP"),
uid=[0],
),
desc.ChoiceParam(
name='viewIdMethod',
label='ViewId Method',
name="viewIdMethod",
label="ViewId Method",
description="Allows to choose the way the viewID is generated:\n"
" * metadata : Generate viewId from image metadata.\n"
" * filename : Generate viewId from file names using regex.",
value='metadata',
values=['metadata', 'filename'],
" - metadata : Generate viewId from image metadata.\n"
" - filename : Generate viewId from filename using regex.",
value="metadata",
values=["metadata", "filename"],
exclusive=True,
uid=[],
advanced=True,
),
desc.StringParam(
name='viewIdRegex',
label='ViewId Regex',
description='Regex used to catch number used as viewId in filename.'
'You should capture specific parts of the filename with parenthesis to define matching elements. (only number will works)\n'
'Some examples of patterns:\n'
r' - Match the longest number at the end of filename (default value): ".*?(\d+)"' + '\n' +
r' - Match the first number found in filename : "(\d+).*"',
value=r'.*?(\d+)',
name="viewIdRegex",
label="ViewId Regex",
description="Regex used to catch number used as viewId in filename."
"You should capture specific parts of the filename with parentheses to define matching elements. (only numbers will work)\n"
"Some examples of patterns:\n"
" - Match the longest number at the end of the filename (default value): "
r'".*?(\d+)"' + "\n" +
" - Match the first number found in filename: "
r'"(\d+).*"',
value=r".*?(\d+)",
uid=[],
advanced=True,
enabled=lambda node: node.viewIdMethod.value == 'filename',
enabled=lambda node: node.viewIdMethod.value == "filename",
),
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'],
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=[],
),

View file

@ -8,217 +8,228 @@ class CameraLocalization(desc.AVCommandLineNode):
commandLine = 'aliceVision_cameraLocalization {allParams}'
category = 'Utils'
documentation = '''
'''
inputs = [
desc.File(
name='sfmdata',
label='SfM Data',
description='''The sfm_data.json kind of file generated by AliceVision.''',
value='',
name="sfmdata",
label="SfMData",
description="The SfMData file generated by AliceVision.",
value="",
uid=[0],
),
desc.File(
name='mediafile',
label='Media File',
description='''The folder path or the filename for the media to track''',
value='',
name="mediafile",
label="Media File",
description="The folder path or the filename for the media to track.",
value="",
uid=[0],
),
desc.File(
name='visualDebug',
label='Visual Debug Folder',
description='''If a folder is provided it enables visual debug and saves all the debugging info in that folder''',
value='',
name="visualDebug",
label="Visual Debug Folder",
description="If a folder is provided, this enables visual debug and all the debugging information will be saved in that folder.",
value="",
uid=[0],
),
desc.File(
name='descriptorPath',
label='Descriptor Path',
description='''Folder containing the descriptors for all the images (ie the *.desc.)''',
value='',
name="descriptorPath",
label="Descriptor Path",
description="Folder containing the descriptors for all the images (ie. the *.desc.).",
value="",
uid=[0],
),
desc.ChoiceParam(
name='matchDescTypes',
label='Match Desc Types',
description='''Describer types to use for the matching.''',
value=['dspsift'],
values=['sift', 'sift_float', 'sift_upright', 'dspsift', 'akaze', 'akaze_liop', 'akaze_mldb', 'cctag3', 'cctag4', 'sift_ocv', 'akaze_ocv'],
name="matchDescTypes",
label="Match Desc Types",
description="Describer types to use for the matching.",
value=["dspsift"],
values=["sift", "sift_float", "sift_upright", "dspsift", "akaze", "akaze_liop", "akaze_mldb", "cctag3", "cctag4", "sift_ocv", "akaze_ocv"],
exclusive=False,
uid=[0],
joinChar=',',
joinChar=",",
),
desc.ChoiceParam(
name='preset',
label='Preset',
description='''Preset for the feature extractor when localizing a new image (low, medium, normal, high, ultra)''',
value='normal',
values=['low', 'medium', 'normal', 'high', 'ultra'],
name="preset",
label="Preset",
description="Preset for the feature extractor when localizing a new image (low, medium, normal, high, ultra).",
value="normal",
values=["low", "medium", "normal", "high", "ultra"],
exclusive=True,
uid=[0],
),
desc.ChoiceParam(
name='resectionEstimator',
label='Resection Estimator',
description='''The type of *sac framework to use for resection (acransac, loransac)''',
value='acransac',
values=['acransac', 'loransac'],
name="resectionEstimator",
label="Resection Estimator",
description="The type of *sac framework to use for resection (acransac, loransac).",
value="acransac",
values=["acransac", "loransac"],
exclusive=True,
uid=[0],
),
desc.ChoiceParam(
name='matchingEstimator',
label='Matching Estimator',
description='''The type of *sac framework to use for matching (acransac, loransac)''',
value='acransac',
values=['acransac', 'loransac'],
name="matchingEstimator",
label="Matching Estimator",
description="The type of *sac framework to use for matching (acransac, loransac).",
value="acransac",
values=["acransac", "loransac"],
exclusive=True,
uid=[0],
),
desc.File(
name='calibration',
label='Calibration',
description='''Calibration file''',
value='',
name="calibration",
label="Calibration",
description="Calibration file.",
value="",
uid=[0],
),
desc.BoolParam(
name='refineIntrinsics',
label='Refine Intrinsics',
description='''Enable/Disable camera intrinsics refinement for each localized image''',
name="refineIntrinsics",
label="Refine Intrinsics",
description="Enable/Disable camera intrinsics refinement for each localized image.",
value=False,
uid=[0],
),
desc.FloatParam(
name='reprojectionError',
label='Reprojection Error',
description='''Maximum reprojection error (in pixels) allowed for resectioning. If set to 0 it lets the ACRansac select an optimal value.''',
name="reprojectionError",
label="Reprojection Error",
description="Maximum reprojection error (in pixels) allowed for resectioning. If set to 0, it lets the ACRansac select an optimal value.",
value=4.0,
range=(0.1, 50.0, 0.1),
uid=[0],
),
desc.IntParam(
name='nbImageMatch',
label='Nb Image Match',
description='''[voctree] Number of images to retrieve in database''',
name="nbImageMatch",
label="Nb Image Match",
description="[voctree] Number of images to retrieve in database.",
value=4,
range=(1, 1000, 1),
uid=[0],
),
desc.IntParam(
name='maxResults',
label='Max Results',
description='''[voctree] For algorithm AllResults, it stops the image matching when this number of matched images is reached. If 0 it is ignored.''',
name="maxResults",
label="Max Results",
description="[voctree] For algorithm AllResults, it stops the image matching when this number of matched images is reached. If 0 it is ignored.",
value=10,
range=(1, 100, 1),
uid=[0],
),
desc.IntParam(
name='commonviews',
label='Commonviews',
description='''[voctree] Number of minimum images in which a point must be seen to be used in cluster tracking''',
name="commonviews",
label="Common Views",
description="[voctree] Number of minimum images in which a point must be seen to be used in cluster tracking.",
value=3,
range=(2, 50, 1),
uid=[0],
),
desc.File(
name='voctree',
label='Voctree',
description='''[voctree] Filename for the vocabulary tree''',
value='${ALICEVISION_VOCTREE}',
name="voctree",
label="Voctree",
description="[voctree] Filename for the vocabulary tree.",
value="${ALICEVISION_VOCTREE}",
uid=[0],
),
desc.File(
name='voctreeWeights',
label='Voctree Weights',
description='''[voctree] Filename for the vocabulary tree weights''',
value='',
name="voctreeWeights",
label="Voctree Weights",
description="[voctree] Filename for the vocabulary tree weights.",
value="",
uid=[0],
),
desc.ChoiceParam(
name='algorithm',
label='Algorithm',
description='''[voctree] Algorithm type: FirstBest, AllResults''',
value='AllResults',
values=['FirstBest', 'AllResults'],
name="algorithm",
label="Algorithm",
description="[voctree] Algorithm type: FirstBest, AllResults.",
value="AllResults",
values=["FirstBest", "AllResults"],
exclusive=True,
uid=[0],
),
desc.FloatParam(
name='matchingError',
label='Matching Error',
description='''[voctree] Maximum matching error (in pixels) allowed for image matching with geometric verification. If set to 0 it lets the ACRansac select an optimal value.''',
name="matchingError",
label="Matching Error",
description="[voctree] Maximum matching error (in pixels) allowed for image matching with geometric verification. If set to 0, it lets the ACRansac select an optimal value.",
value=4.0,
range=(0.0, 50.0, 1.0),
uid=[0],
),
desc.IntParam(
name='nbFrameBufferMatching',
label='Nb Frame Buffer Matching',
description='''[voctree] Number of previous frame of the sequence to use for matching (0 = Disable)''',
name="nbFrameBufferMatching",
label="Nb Frame Buffer Matching",
description="[voctree] Number of previous frames of the sequence to use for matching (0 = Disable).",
value=10,
range=(0, 100, 1),
uid=[0],
),
desc.BoolParam(
name='robustMatching',
label='Robust Matching',
description='''[voctree] Enable/Disable the robust matching between query and database images, all putative matches will be considered.''',
name="robustMatching",
label="Robust Matching",
description="[voctree] Enable/Disable the robust matching between query and database images, all putative matches will be considered.",
value=True,
uid=[0],
),
desc.IntParam(
name='nNearestKeyFrames',
label='N Nearest Key Frames',
description='''[cctag] Number of images to retrieve in the database Parameters specific for final (optional) bundle adjustment optimization of the sequence:''',
name="nNearestKeyFrames",
label="N Nearest Key Frames",
description="[cctag] Number of images to retrieve in the database. Parameters specific for final (optional) bundle adjustment optimization of the sequence.",
value=5,
range=(1, 100, 1),
uid=[0],
),
desc.StringParam(
name='globalBundle',
label='Global Bundle',
description='''[bundle adjustment] If --refineIntrinsics is not set, this option allows to run a final global bundle adjustment to refine the scene.''',
value='',
name="globalBundle",
label="Global Bundle",
description="[bundle adjustment] If --refineIntrinsics is not set, this option allows to run a final global bundle adjustment to refine the scene.",
value="",
uid=[0],
),
desc.BoolParam(
name='noDistortion',
label='No Distortion',
description='''[bundle adjustment] It does not take into account distortion during the BA, it consider the distortion coefficients all equal to 0''',
name="noDistortion",
label="No Distortion",
description="[bundle adjustment] It does not take into account distortion during the BA, it considers the distortion coefficients to all be equal to 0.",
value=False,
uid=[0],
),
desc.BoolParam(
name='noBArefineIntrinsics',
label='No BA Refine Intrinsics',
description='''[bundle adjustment] It does not refine intrinsics during BA''',
name="noBArefineIntrinsics",
label="No BA Refine Intrinsics",
description="[bundle adjustment] If set to true, does not refine intrinsics during BA.",
value=False,
uid=[0],
),
desc.IntParam(
name='minPointVisibility',
label='Min Point Visibility',
description='''[bundle adjustment] Minimum number of observation that a point must have in order to be considered for bundle adjustment''',
name="minPointVisibility",
label="Min Point Visibility",
description="[bundle adjustment] Minimum number of observations that a point must have in order to be considered for bundle adjustment.",
value=2,
range=(2, 50, 1),
uid=[0],
),
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='outputAlembic',
label='Alembic',
description='''Filename for the SfMData export file (where camera poses will be stored)''',
value=desc.Node.internalFolder + 'trackedCameras.abc',
name="outputAlembic",
label="Alembic",
description="Filename for the SfMData export file (where camera poses will be stored).",
value=desc.Node.internalFolder + "trackedCameras.abc",
uid=[],
),
desc.File(
name='outputJSON',
label='JSON',
description='''Filename for the localization results as .json''',
value=desc.Node.internalFolder + 'trackedCameras.json',
name="outputJSON",
label="JSON File",
description="Filename for the localization results as .json.",
value=desc.Node.internalFolder + "trackedCameras.json",
uid=[],
),
]

View file

@ -8,166 +8,180 @@ class CameraRigCalibration(desc.AVCommandLineNode):
commandLine = 'aliceVision_rigCalibration {allParams}'
category = 'Utils'
documentation = '''
'''
inputs = [
desc.File(
name='sfmdata',
name="sfmdata",
label='SfMData',
description='''The sfmData file.''',
value='',
description="Input SfMData file.",
value="",
uid=[0],
),
desc.File(
name='mediapath',
label='Media Path',
description='''The path to the video file, the folder of the image sequence or a text file (one image path per line) for each camera of the rig (eg. --mediapath /path/to/cam1.mov /path/to/cam2.mov).''',
value='',
name="mediapath",
label="Media Path",
description="The path to the video file, the folder of the image sequence or a text file\n"
"(one image path per line) for each camera of the rig (eg. --mediapath /path/to/cam1.mov /path/to/cam2.mov).",
value="",
uid=[0],
),
desc.File(
name='cameraIntrinsics',
label='Camera Intrinsics',
description='''The intrinsics calibration file for each camera of the rig. (eg. --cameraIntrinsics /path/to/calib1.txt /path/to/calib2.txt).''',
value='',
name="cameraIntrinsics",
label="Camera Intrinsics",
description="The intrinsics calibration file for each camera of the rig (eg. --cameraIntrinsics /path/to/calib1.txt /path/to/calib2.txt).",
value="",
uid=[0],
),
desc.File(
name='export',
label='Export',
description='''Filename for the alembic file containing the rig poses with the 3D points. It also saves a file for each camera named 'filename.cam##.abc'.''',
value='trackedcameras.abc',
name="export",
label="Export File",
description="Filename for the alembic file containing the rig poses with the 3D points. It also saves a file for each camera named 'filename.cam##.abc'.",
value="trackedcameras.abc",
uid=[0],
),
desc.File(
name='descriptorPath',
label='Descriptor Path',
description='''Folder containing the .desc.''',
value='',
name="descriptorPath",
label="Descriptor Path",
description="Folder containing the .desc.",
value="",
uid=[0],
),
desc.ChoiceParam(
name='matchDescTypes',
label='Match Describer Types',
description='''The describer types to use for the matching''',
value=['dspsift'],
values=['sift', 'sift_float', 'sift_upright', 'dspsift', 'akaze', 'akaze_liop', 'akaze_mldb', 'cctag3', 'cctag4', 'sift_ocv', 'akaze_ocv'],
name="matchDescTypes",
label="Match Describer Types",
description="The describer types to use for the matching.",
value=["dspsift"],
values=["sift", "sift_float", "sift_upright", "dspsift", "akaze", "akaze_liop", "akaze_mldb", "cctag3", "cctag4", "sift_ocv", "akaze_ocv"],
exclusive=False,
uid=[0],
joinChar=',',
joinChar=",",
),
desc.ChoiceParam(
name='preset',
label='Preset',
description='''Preset for the feature extractor when localizing a new image (low, medium, normal, high, ultra)''',
value='normal',
values=['low', 'medium', 'normal', 'high', 'ultra'],
name="preset",
label="Preset",
description="Preset for the feature extractor when localizing a new image (low, medium, normal, high, ultra).",
value="normal",
values=["low", "medium", "normal", "high", "ultra"],
exclusive=True,
uid=[0],
),
desc.ChoiceParam(
name='resectionEstimator',
label='Resection Estimator',
description='''The type of *sac framework to use for resection (acransac,loransac)''',
value='acransac',
values=['acransac', 'loransac'],
name="resectionEstimator",
label="Resection Estimator",
description="The type of *sac framework to use for resection (acransac, loransac).",
value="acransac",
values=["acransac", "loransac"],
exclusive=True,
uid=[0],
),
desc.ChoiceParam(
name='matchingEstimator',
label='Matching Estimator',
description='''The type of *sac framework to use for matching (acransac,loransac)''',
value='acransac',
values=['acransac', 'loransac'],
name="matchingEstimator",
label="Matching Estimator",
description="The type of *sac framework to use for matching (acransac, loransac).",
value="acransac",
values=["acransac", "loransac"],
exclusive=True,
uid=[0],
),
desc.StringParam(
name='refineIntrinsics',
label='Refine Intrinsics',
description='''Enable/Disable camera intrinsics refinement for each localized image''',
value='',
name="refineIntrinsics",
label="Refine Intrinsics",
description="Enable/Disable camera intrinsics refinement for each localized image.",
value="",
uid=[0],
),
desc.FloatParam(
name='reprojectionError',
label='Reprojection Error',
description='''Maximum reprojection error (in pixels) allowed for resectioning. If set to 0 it lets the ACRansac select an optimal value.''',
name="reprojectionError",
label="Reprojection Error",
description="Maximum reprojection error (in pixels) allowed for resectioning.\n"
"If set to 0, it lets the ACRansac select an optimal value.",
value=4.0,
range=(0.0, 10.0, 0.1),
uid=[0],
),
desc.IntParam(
name='maxInputFrames',
label='Max Input Frames',
description='''Maximum number of frames to read in input. 0 means no limit.''',
name="maxInputFrames",
label="Max Input Frames",
description="Maximum number of frames to read in input. 0 means no limit.",
value=0,
range=(0, 1000, 1),
uid=[0],
),
desc.File(
name='voctree',
label='Voctree',
description='''[voctree] Filename for the vocabulary tree''',
value='${ALICEVISION_VOCTREE}',
name="voctree",
label="Voctree",
description="[voctree] Filename for the vocabulary tree.",
value="${ALICEVISION_VOCTREE}",
uid=[0],
),
desc.File(
name='voctreeWeights',
label='Voctree Weights',
description='''[voctree] Filename for the vocabulary tree weights''',
value='',
name="voctreeWeights",
label="Voctree Weights",
description="[voctree] Filename for the vocabulary tree weights.",
value="",
uid=[0],
),
desc.ChoiceParam(
name='algorithm',
label='Algorithm',
description='''[voctree] Algorithm type: {FirstBest,AllResults}''',
value='AllResults',
values=['FirstBest', 'AllResults'],
name="algorithm",
label="Algorithm",
description="[voctree] Algorithm type: {FirstBest, AllResults}.",
value="AllResults",
values=["FirstBest", "AllResults"],
exclusive=True,
uid=[0],
),
desc.IntParam(
name='nbImageMatch',
label='Nb Image Match',
description='''[voctree] Number of images to retrieve in the database''',
name="nbImageMatch",
label="Nb Image Match",
description="[voctree] Number of images to retrieve in the database.",
value=4,
range=(0, 50, 1),
uid=[0],
),
desc.IntParam(
name='maxResults',
label='Max Results',
description='''[voctree] For algorithm AllResults, it stops the image matching when this number of matched images is reached. If 0 it is ignored.''',
name="maxResults",
label="Max Results",
description="[voctree] For algorithm AllResults, it stops the image matching when this number of matched images is reached. If set to 0, it is ignored.",
value=10,
range=(0, 100, 1),
uid=[0],
),
desc.FloatParam(
name='matchingError',
label='Matching Error',
description='''[voctree] Maximum matching error (in pixels) allowed for image matching with geometric verification. If set to 0 it lets the ACRansac select an optimal value.''',
name="matchingError",
label="Matching Error",
description="[voctree] Maximum matching error (in pixels) allowed for image matching with geometric verification.\n"
"If set to 0, it lets the ACRansac select an optimal value.",
value=4.0,
range=(0.0, 10.0, 0.1),
uid=[0],
),
desc.IntParam(
name='nNearestKeyFrames',
label='N Nearest Key Frames',
description='''[cctag] Number of images to retrieve in database''',
name="nNearestKeyFrames",
label="N Nearest Key Frames",
description="[cctag] Number of images to retrieve in database.",
value=5,
range=(0, 50, 1),
uid=[0],
),
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='outfile',
label='File',
description='''The name of the file where to store the calibration data''',
value=desc.Node.internalFolder + 'cameraRigCalibration.rigCal',
name="outfile",
label="Output File",
description="The name of the file to store the calibration data in.",
value=desc.Node.internalFolder + "cameraRigCalibration.rigCal",
uid=[],
),
]

View file

@ -8,173 +8,187 @@ class CameraRigLocalization(desc.AVCommandLineNode):
commandLine = 'aliceVision_rigLocalization {allParams}'
category = 'Utils'
documentation = '''
'''
inputs = [
desc.File(
name='sfmdata',
label='Sfm Data',
description='''The sfmData file.''',
value='',
name="sfmdata",
label="SfMData",
description="The input SfMData file.",
value="",
uid=[0],
),
desc.File(
name='mediapath',
label='Media Path',
description='''The path to the video file, the folder of the image sequence or a text file (one image path per line) for each camera of the rig (eg. --mediapath /path/to/cam1.mov /path/to/cam2.mov).''',
value='',
name="mediapath",
label="Media Path",
description="The path to the video file, the folder of the image sequence or a text file (one image path per line) for each camera of the rig (eg. --mediapath /path/to/cam1.mov /path/to/cam2.mov).",
value="",
uid=[0],
),
desc.File(
name='calibration',
label='Rig Calibration File',
description='''The file containing the calibration data for the rig (subposes)''',
value='',
name="calibration",
label="Rig Calibration File",
description="The file containing the calibration data for the rig (subposes).",
value="",
uid=[0],
),
desc.File(
name='cameraIntrinsics',
label='Camera Intrinsics',
description='''The intrinsics calibration file for each camera of the rig. (eg. --cameraIntrinsics /path/to/calib1.txt /path/to/calib2.txt).''',
value='',
name="cameraIntrinsics",
label="Camera Intrinsics",
description="The intrinsics calibration file for each camera of the rig (eg. --cameraIntrinsics /path/to/calib1.txt /path/to/calib2.txt).",
value="",
uid=[0],
),
desc.File(
name='descriptorPath',
label='Descriptor Path',
description='''Folder containing the .desc.''',
value='',
name="descriptorPath",
label="Descriptor Path",
description="Folder containing the .desc.",
value="",
uid=[0],
),
desc.ChoiceParam(
name='matchDescTypes',
label='Match Describer Types',
description='''The describer types to use for the matching''',
value=['dspsift'],
values=['sift', 'sift_float', 'sift_upright', 'dspsift', 'akaze', 'akaze_liop', 'akaze_mldb', 'cctag3', 'cctag4', 'sift_ocv', 'akaze_ocv'],
name="matchDescTypes",
label="Match Describer Types",
description="The describer types to use for the matching.",
value=["dspsift"],
values=["sift", "sift_float", "sift_upright", "dspsift", "akaze", "akaze_liop", "akaze_mldb", "cctag3", "cctag4", "sift_ocv", "akaze_ocv"],
exclusive=False,
uid=[0],
joinChar=',',
joinChar=",",
),
desc.ChoiceParam(
name='preset',
label='Preset',
description='''Preset for the feature extractor when localizing a new image (low, medium, normal, high, ultra)''',
value='normal',
values=['low', 'medium', 'normal', 'high', 'ultra'],
name="preset",
label="Preset",
description="Preset for the feature extractor when localizing a new image (low, medium, normal, high, ultra).",
value="normal",
values=["low", "medium", "normal", "high", "ultra"],
exclusive=True,
uid=[0],
),
desc.ChoiceParam(
name='resectionEstimator',
label='Resection Estimator',
description='''The type of *sac framework to use for resection (acransac, loransac)''',
value='acransac',
values=['acransac', 'loransac'],
name="resectionEstimator",
label="Resection Estimator",
description="The type of *sac framework to use for resection (acransac, loransac).",
value="acransac",
values=["acransac", "loransac"],
exclusive=True,
uid=[0],
),
desc.ChoiceParam(
name='matchingEstimator',
label='Matching Estimator',
description='''The type of *sac framework to use for matching (acransac, loransac)''',
value='acransac',
values=['acransac', 'loransac'],
name="matchingEstimator",
label="Matching Estimator",
description="The type of *sac framework to use for matching (acransac, loransac).",
value="acransac",
values=["acransac", "loransac"],
exclusive=True,
uid=[0],
),
desc.StringParam(
name='refineIntrinsics',
label='Refine Intrinsics',
description='''Enable/Disable camera intrinsics refinement for each localized image''',
value='',
name="refineIntrinsics",
label="Refine Intrinsics",
description="Enable/Disable camera intrinsics refinement for each localized image.",
value="",
uid=[0],
),
desc.FloatParam(
name='reprojectionError',
label='Reprojection Error',
description='''Maximum reprojection error (in pixels) allowed for resectioning. If set to 0 it lets the ACRansac select an optimal value.''',
name="reprojectionError",
label="Reprojection Error",
description="Maximum reprojection error (in pixels) allowed for resectioning.\n"
"If set to 0, it lets the ACRansac select an optimal value.",
value=4.0,
range=(0.0, 10.0, 0.1),
uid=[0],
),
desc.BoolParam(
name='useLocalizeRigNaive',
label='Use Localize Rig Naive',
description='''Enable/Disable the naive method for rig localization: naive method tries to localize each camera separately.''',
name="useLocalizeRigNaive",
label="Use Localize Rig Naive",
description="Enable/Disable the naive method for rig localization: naive method tries to localize each camera separately.",
value=False,
uid=[0],
),
desc.FloatParam(
name='angularThreshold',
label='Angular Threshold',
description='''The maximum angular threshold in degrees between feature bearing vector and 3D point direction. Used only with the opengv method.''',
name="angularThreshold",
label="Angular Threshold",
description="The maximum angular threshold in degrees between feature bearing vector and 3D point direction. Used only with the opengv method.",
value=0.1,
range=(0.0, 10.0, 0.01),
uid=[0],
),
desc.File(
name='voctree',
label='Voctree',
description='''[voctree] Filename for the vocabulary tree''',
value='${ALICEVISION_VOCTREE}',
name="voctree",
label="Voctree",
description="[voctree] Filename for the vocabulary tree.""",
value="${ALICEVISION_VOCTREE}",
uid=[0],
),
desc.File(
name='voctreeWeights',
label='Voctree Weights',
description='''[voctree] Filename for the vocabulary tree weights''',
value='',
name="voctreeWeights",
label="Voctree Weights",
description="[voctree] Filename for the vocabulary tree weights.",
value="",
uid=[0],
),
desc.ChoiceParam(
name='algorithm',
label='Algorithm',
description='''[voctree] Algorithm type: {FirstBest,AllResults}''',
value='AllResults',
values=['FirstBest', 'AllResults'],
name="algorithm",
label="Algorithm",
description="[voctree] Algorithm type: {FirstBest, AllResults}.",
value="AllResults",
values=["FirstBest", "AllResults"],
exclusive=True,
uid=[0],
),
desc.IntParam(
name='nbImageMatch',
label='Nb Image Match',
description='''[voctree] Number of images to retrieve in the database''',
name="nbImageMatch",
label="Nb Image Match",
description="[voctree] Number of images to retrieve in the database.",
value=4,
range=(0, 100, 1),
uid=[0],
),
desc.IntParam(
name='maxResults',
label='Max Results',
description='''[voctree] For algorithm AllResults, it stops the image matching when this number of matched images is reached. If 0 it is ignored.''',
name="maxResults",
label="Max Results",
description="[voctree] For algorithm AllResults, it stops the image matching when this number of matched images is reached.\n"
"If set to 0, it is ignored.",
value=10,
range=(0, 100, 1),
uid=[0],
),
desc.FloatParam(
name='matchingError',
label='Matching Error',
description='''[voctree] Maximum matching error (in pixels) allowed for image matching with geometric verification. If set to 0 it lets the ACRansac select an optimal value.''',
name="matchingError",
label="Matching Error",
description="[voctree] Maximum matching error (in pixels) allowed for image matching with geometric verification.\n"
"If set to 0, it lets the ACRansac select an optimal value.",
value=4.0,
range=(0.0, 10.0, 0.1),
uid=[0],
),
desc.IntParam(
name='nNearestKeyFrames',
label='N Nearest Key Frames',
description='''[cctag] Number of images to retrieve in database''',
name="nNearestKeyFrames",
label="N Nearest Key Frames",
description="[cctag] Number of images to retrieve in database.",
value=5,
range=(0, 50, 1),
uid=[0],
),
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='outputAlembic',
label='Alembic',
description='''Filename for the SfMData export file (where camera poses will be stored).''',
value=desc.Node.internalFolder + 'trackedcameras.abc',
name="outputAlembic",
label="Alembic",
description="Filename for the SfMData export file (where camera poses will be stored).",
value=desc.Node.internalFolder + "trackedcameras.abc",
uid=[],
),
]

View file

@ -23,56 +23,66 @@ If multiple color charts are submitted, only the first one will be taken in acco
inputs = [
desc.File(
name='inputData',
label='Color checker data',
description='Position and colorimetric data of the color checker',
value='',
name="inputData",
label="Color Checker Data",
description="Position and colorimetric data of the color checker.",
value="",
uid=[0],
),
desc.File(
name='input',
label='Input',
description='SfMData file input, image filenames or regex(es) on the image file path.\nsupported regex: \'#\' matches a single digit, \'@\' one or more digits, \'?\' one character and \'*\' zero or more.',
value='',
name="input",
label="Input",
description="Input SfMData file, image filenames or regex(es) on the image file path.\n"
"Supported regex: '#' matches a single digit, '@' one or more digits, '?' one character and '*' zero or more.",
value="",
uid=[0],
),
desc.ChoiceParam(
name='extension',
label='Output File Extension',
description='Output Image File Extension.',
value='exr',
values=['exr', ''],
name="extension",
label="Output File Extension",
description="Output image file extension.",
value="exr",
values=["exr", ""],
exclusive=True,
uid=[0],
),
desc.ChoiceParam(
name='storageDataType',
label='Storage Data Type for EXR output',
description='Storage image data type:\n'
' * float: Use full floating point (32 bits per channel)\n'
' * half: Use half float (16 bits per channel)\n'
' * halfFinite: Use half float, but clamp values to avoid non-finite values\n'
' * auto: Use half float if all values can fit, else use full float\n',
value='float',
values=['float', 'half', 'halfFinite', 'auto'],
name="storageDataType",
label="EXR Storage Data Type",
description="Storage data type for EXR output:\n"
" - float: Use full floating point (32 bits per channel).\n"
" - half: Use half float (16 bits per channel).\n"
" - halfFinite: Use half float, but clamp values to avoid non-finite values.\n"
" - auto: Use half float if all values can fit, else use full float.",
value="float",
values=["float", "half", "halfFinite", "auto"],
exclusive=True,
uid=[0],
),
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='outSfMData',
label='SfmData',
description='Output sfmData.',
value=lambda attr: (desc.Node.internalFolder + os.path.basename(attr.node.input.value)) if (os.path.splitext(attr.node.input.value)[1] in ['.abc', '.sfm']) else '',
name="outSfMData",
label="SfMData",
description="Output SfMData.",
value=lambda attr: (desc.Node.internalFolder + os.path.basename(attr.node.input.value)) if (os.path.splitext(attr.node.input.value)[1] in [".abc", ".sfm"]) else "",
uid=[],
group='', # do not export on the command line
group="", # do not export on the command line
),
desc.File(
name='output',
label='Folder',
description='Output Images Folder.',
name="output",
label="Folder",
description="Output images folder.",
value=desc.Node.internalFolder,
uid=[],
),

View file

@ -28,36 +28,46 @@ Dev notes:
inputs = [
desc.File(
name='input',
label='Input',
description='SfMData file input, image filenames or regex(es) on the image file path.\nsupported regex: \'#\' matches a single digit, \'@\' one or more digits, \'?\' one character and \'*\' zero or more.',
value='',
name="input",
label="Input",
description="SfMData file input, image filenames or regex(es) on the image file path.\n"
"Supported regex: '#' matches a single digit, '@' one or more digits, '?' one character and '*' zero or more.",
value="",
uid=[0],
),
desc.IntParam(
name='maxCount',
label='Max count by image',
description='Max color charts count to detect in a single image',
name="maxCount",
label="Max Count By Image",
description="Maximum color charts count to detect in a single image.",
value=1,
range=(1, 3, 1),
uid=[0],
advanced=True,
),
desc.BoolParam(
name='debug',
label='Debug',
description='If checked, debug data will be generated',
name="debug",
label="Debug",
description="If checked, debug data will be generated.",
value=False,
uid=[0],
),
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='outputData',
label='Color checker data',
description='Output position and colorimetric data extracted from detected color checkers in the images',
value=desc.Node.internalFolder + '/ccheckers.json',
name="outputData",
label="Color Checker Data",
description="Output position and colorimetric data extracted from detected color checkers in the images.",
value=desc.Node.internalFolder + "/ccheckers.json",
uid=[],
),
]

View file

@ -11,28 +11,28 @@ class ConvertMesh(desc.AVCommandLineNode):
inputs = [
desc.File(
name='inputMesh',
label='Input Mesh',
description='Input Mesh (*.obj, *.mesh, *.meshb, *.ply, *.off, *.stl).',
value='',
name="inputMesh",
label="Input Mesh",
description="Input mesh (*.obj, *.mesh, *.meshb, *.ply, *.off, *.stl).",
value="",
uid=[0],
),
desc.ChoiceParam(
name='outputMeshFileType',
label='File Type',
description='''Output Mesh Format (*.obj, *.gltf, *.fbx, *.stl).''',
value='obj',
values=('gltf', 'obj', 'fbx', 'stl'),
name="outputMeshFileType",
label="File Type",
description="Output mesh format (*.obj, *.gltf, *.fbx, *.stl).",
value="obj",
values=("gltf", "obj", "fbx", "stl"),
exclusive=True,
uid=[0],
group='',
group="",
),
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'],
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=[],
),
@ -40,10 +40,10 @@ class ConvertMesh(desc.AVCommandLineNode):
outputs = [
desc.File(
name='output',
label='Mesh',
description='''Output mesh (*.obj, *.mesh, *.meshb, *.ply, *.off, *.stl).''',
value=desc.Node.internalFolder + 'mesh.' + '{outputMeshFileTypeValue}',
name="output",
label="Mesh",
description="Output mesh (*.obj, *.mesh, *.meshb, *.ply, *.off, *.stl).",
value=desc.Node.internalFolder + "mesh." + "{outputMeshFileTypeValue}",
uid=[],
),
]

View file

@ -15,96 +15,96 @@ It can also be used to remove specific parts of from an SfM scene (like filter a
inputs = [
desc.File(
name='input',
label='Input',
description='SfMData file.',
value='',
name="input",
label="Input",
description="SfMData file.",
value="",
uid=[0],
),
desc.ChoiceParam(
name='fileExt',
label='SfM File Format',
description='SfM File Format',
value='abc',
values=['abc', 'sfm', 'json', 'ply', 'baf'],
name="fileExt",
label="SfM File Format",
description="Output SfM file format.",
value="abc",
values=["abc", "sfm", "json", "ply", "baf"],
exclusive=True,
uid=[0],
group='', # exclude from command line
group="", # exclude from command line
),
desc.ChoiceParam(
name='describerTypes',
label='Describer Types',
description='Describer types to keep.',
value=['dspsift'],
values=['sift', 'sift_float', 'sift_upright', 'dspsift', 'akaze', 'akaze_liop', 'akaze_mldb', 'cctag3', 'cctag4', 'sift_ocv', 'akaze_ocv', 'tag16h5', 'unknown'],
name="describerTypes",
label="Describer Types",
description="Describer types to keep.",
value=["dspsift"],
values=["sift", "sift_float", "sift_upright", "dspsift", "akaze", "akaze_liop", "akaze_mldb", "cctag3", "cctag4", "sift_ocv", "akaze_ocv", "tag16h5", "unknown"],
exclusive=False,
uid=[0],
joinChar=',',
joinChar=",",
),
desc.ListAttribute(
elementDesc=desc.File(
name="imageId",
label="Image id",
description="",
label="Image ID",
description="UID or path of an image to add to the whitelist.",
value="",
uid=[0],
),
name="imageWhiteList",
label="Image White List",
description='image white list (uids or image paths).',
description="Image white list (UIDs or image paths).",
),
desc.BoolParam(
name='views',
label='Views',
description='Export views.',
name="views",
label="Views",
description="Export views.",
value=True,
uid=[0],
),
desc.BoolParam(
name='intrinsics',
label='Intrinsics',
description='Export intrinsics.',
name="intrinsics",
label="Intrinsics",
description="Export intrinsics.",
value=True,
uid=[0],
),
desc.BoolParam(
name='extrinsics',
label='Extrinsics',
description='Export extrinsics.',
name="extrinsics",
label="Extrinsics",
description="Export extrinsics.",
value=True,
uid=[0],
),
desc.BoolParam(
name='structure',
label='Structure',
description='Export structure.',
name="structure",
label="Structure",
description="Export structure.",
value=True,
uid=[0],
),
desc.BoolParam(
name='observations',
label='Observations',
description='Export observations.',
name="observations",
label="Observations",
description="Export observations.",
value=True,
uid=[0],
),
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'],
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=[0],
uid=[],
),
]
outputs = [
desc.File(
name='output',
label='Output',
description='Path to the output SfM Data file.',
value=desc.Node.internalFolder + 'sfm.{fileExtValue}',
name="output",
label="Output",
description="Path to the output SfMData file.",
value=desc.Node.internalFolder + "sfm.{fileExtValue}",
uid=[],
),
]