mirror of
https://github.com/alicevision/Meshroom.git
synced 2025-04-29 18:27:23 +02:00
147 lines
4.9 KiB
Python
147 lines
4.9 KiB
Python
__version__ = "3.0"
|
|
|
|
from meshroom.core import desc
|
|
|
|
|
|
class ImageMasking(desc.CommandLineNode):
|
|
commandLine = 'aliceVision_imageMasking {allParams}'
|
|
size = desc.DynamicNodeSize('input')
|
|
parallelization = desc.Parallelization(blockSize=40)
|
|
commandLineRange = '--rangeStart {rangeStart} --rangeSize {rangeBlockSize}'
|
|
|
|
inputs = [
|
|
desc.File(
|
|
name='input',
|
|
label='Input',
|
|
description='''SfMData file.''',
|
|
value='',
|
|
uid=[0],
|
|
),
|
|
desc.ChoiceParam(
|
|
name='algorithm',
|
|
label='Algorithm',
|
|
description='',
|
|
value='HSV',
|
|
values=['HSV', 'AutoGrayscaleThreshold'],
|
|
exclusive=True,
|
|
uid=[0],
|
|
),
|
|
desc.GroupAttribute(
|
|
name="hsv",
|
|
label="HSV Parameters",
|
|
description="""Values to select:
|
|
- Green: default values
|
|
- White: Tolerance = 1, minSaturation = 0, maxSaturation = 0.1, minValue = 0.8, maxValue = 1
|
|
- Black: Tolerance = 1, minSaturation = 0, maxSaturation = 0.1, minValue = 0, maxValue = 0.2
|
|
""",
|
|
group=None,
|
|
enabled=lambda node: node.algorithm.value == 'HSV',
|
|
groupDesc=[
|
|
desc.FloatParam(
|
|
name='hsvHue',
|
|
label='Hue',
|
|
description='Hue value to isolate in [0,1] range. 0 = red, 0.33 = green, 0.66 = blue, 1 = red.',
|
|
semantic='color/hue',
|
|
value=0.33,
|
|
range=(0.0, 1.0, 0.01),
|
|
uid=[0]
|
|
),
|
|
desc.FloatParam(
|
|
name='hsvHueRange',
|
|
label='Tolerance',
|
|
description='Tolerance around the hue value to isolate.',
|
|
value=0.1,
|
|
range=(0.0, 1.0, 0.01),
|
|
uid=[0]
|
|
),
|
|
desc.FloatParam(
|
|
name='hsvMinSaturation',
|
|
label='Min Saturation',
|
|
description='Hue is meaningless if saturation is low. Do not mask pixels below this threshold.',
|
|
value=0.3,
|
|
range=(0.0, 1.0, 0.01),
|
|
uid=[0]
|
|
),
|
|
desc.FloatParam(
|
|
name='hsvMaxSaturation',
|
|
label='Max Saturation',
|
|
description='Do not mask pixels above this threshold. It might be useful to mask white/black pixels.',
|
|
value=1.0,
|
|
range=(0.0, 1.0, 0.01),
|
|
uid=[0]
|
|
),
|
|
desc.FloatParam(
|
|
name='hsvMinValue',
|
|
label='Min Value',
|
|
description='Hue is meaningless if value is low. Do not mask pixels below this threshold.',
|
|
value=0.3,
|
|
range=(0.0, 1.0, 0.01),
|
|
uid=[0]
|
|
),
|
|
desc.FloatParam(
|
|
name='hsvMaxValue',
|
|
label='Max Value',
|
|
description='Do not mask pixels above this threshold. It might be useful to mask white/black pixels.',
|
|
value=1.0,
|
|
range=(0.0, 1.0, 0.01),
|
|
uid=[0]
|
|
),
|
|
]),
|
|
desc.BoolParam(
|
|
name='invert',
|
|
label='Invert',
|
|
description='''If ticked, the selected area is ignored.
|
|
If not, only the selected area is considered.''',
|
|
value=True,
|
|
uid=[0]
|
|
),
|
|
desc.IntParam(
|
|
name='growRadius',
|
|
label='Grow Radius',
|
|
description='Grow the selected area. It might be used to fill the holes: then use shrinkRadius to restore the initial coutours.',
|
|
value=0,
|
|
range=(0, 50, 1),
|
|
uid=[0]
|
|
),
|
|
desc.IntParam(
|
|
name='shrinkRadius',
|
|
label='Shrink Radius',
|
|
description='Shrink the selected area.',
|
|
value=0,
|
|
range=(0, 50, 1),
|
|
uid=[0]
|
|
),
|
|
desc.File(
|
|
name='depthMapFolder',
|
|
label='Depth Mask Folder',
|
|
description='''Depth Mask Folder''',
|
|
value='',
|
|
uid=[0],
|
|
),
|
|
desc.StringParam(
|
|
name='depthMapExp',
|
|
label='Depth Mask Expression',
|
|
description='''Depth Mask Expression, like "{inputFolder}/{stem}-depth.{ext}".''',
|
|
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 folder.''',
|
|
value=desc.Node.internalFolder,
|
|
uid=[],
|
|
),
|
|
]
|