diff --git a/meshroom/nodes/aliceVision/LdrToHdrCalibration.py b/meshroom/nodes/aliceVision/LdrToHdrCalibration.py index 4ce2f778..aa61b1f1 100644 --- a/meshroom/nodes/aliceVision/LdrToHdrCalibration.py +++ b/meshroom/nodes/aliceVision/LdrToHdrCalibration.py @@ -1,6 +1,7 @@ __version__ = "3.0" import json +from collections import Counter from meshroom.core import desc @@ -229,7 +230,7 @@ Calibrate LDR to HDR response curve from samples. exposureGroups.append(exposures) exposures = None - bracketSizes = set() + bracketSizes = Counter() if len(exposureGroups) == 1: if len(set(exposureGroups[0])) == 1: # Single exposure and multiple views @@ -239,8 +240,16 @@ Calibrate LDR to HDR response curve from samples. node.nbBrackets.value = len(exposureGroups[0]) else: for expGroup in exposureGroups: - bracketSizes.add(len(expGroup)) - if len(bracketSizes) == 1: - node.nbBrackets.value = bracketSizes.pop() - else: + bracketSizes[len(expGroup)] += 1 + + if len(bracketSizes) == 0: node.nbBrackets.value = 0 + else: + bestTuple = bracketSizes.most_common(1)[0] + bestBracketSize = bestTuple[0] + bestCount = bestTuple[1] + total = bestBracketSize * bestCount + if len(inputs) - total < 2: + node.nbBrackets.value = bestBracketSize + else: + node.nbBrackets.value = 0 diff --git a/meshroom/nodes/aliceVision/LdrToHdrMerge.py b/meshroom/nodes/aliceVision/LdrToHdrMerge.py index 7c78826c..ddd53ff1 100644 --- a/meshroom/nodes/aliceVision/LdrToHdrMerge.py +++ b/meshroom/nodes/aliceVision/LdrToHdrMerge.py @@ -1,6 +1,7 @@ __version__ = "4.1" import json +from collections import Counter from meshroom.core import desc @@ -321,7 +322,7 @@ Merge LDR images into HDR images. exposureGroups.append(exposures) exposures = None - bracketSizes = set() + bracketSizes = Counter() if len(exposureGroups) == 1: if len(set(exposureGroups[0])) == 1: # Single exposure and multiple views @@ -331,8 +332,16 @@ Merge LDR images into HDR images. node.nbBrackets.value = len(exposureGroups[0]) else: for expGroup in exposureGroups: - bracketSizes.add(len(expGroup)) - if len(bracketSizes) == 1: - node.nbBrackets.value = bracketSizes.pop() - else: + bracketSizes[len(expGroup)] += 1 + + if len(bracketSizes) == 0: node.nbBrackets.value = 0 + else: + bestTuple = bracketSizes.most_common(1)[0] + bestBracketSize = bestTuple[0] + bestCount = bestTuple[1] + total = bestBracketSize * bestCount + if len(inputs) - total < 2: + node.nbBrackets.value = bestBracketSize + else: + node.nbBrackets.value = 0 diff --git a/meshroom/nodes/aliceVision/LdrToHdrSampling.py b/meshroom/nodes/aliceVision/LdrToHdrSampling.py index cd4dc0fe..06388fd7 100644 --- a/meshroom/nodes/aliceVision/LdrToHdrSampling.py +++ b/meshroom/nodes/aliceVision/LdrToHdrSampling.py @@ -1,6 +1,7 @@ __version__ = "4.0" import json +from collections import Counter from meshroom.core import desc @@ -250,7 +251,7 @@ Sample pixels from Low range images for HDR creation. exposureGroups.append(exposures) exposures = None - bracketSizes = set() + bracketSizes = Counter() if len(exposureGroups) == 1: if len(set(exposureGroups[0])) == 1: # Single exposure and multiple views @@ -260,8 +261,16 @@ Sample pixels from Low range images for HDR creation. node.nbBrackets.value = len(exposureGroups[0]) else: for expGroup in exposureGroups: - bracketSizes.add(len(expGroup)) - if len(bracketSizes) == 1: - node.nbBrackets.value = bracketSizes.pop() - else: + bracketSizes[len(expGroup)] += 1 + + if len(bracketSizes) == 0: node.nbBrackets.value = 0 + else: + bestTuple = bracketSizes.most_common(1)[0] + bestBracketSize = bestTuple[0] + bestCount = bestTuple[1] + total = bestBracketSize * bestCount + if len(inputs) - total < 2: + node.nbBrackets.value = bestBracketSize + else: + node.nbBrackets.value = 0