Normalize segmented cache coverage
This commit is contained in:
@@ -269,6 +269,10 @@ einzigen sichtbaren Insel, wird diese Insel direkt als primäres Suchziel
|
|||||||
verwendet. Dadurch scannt der Matcher denselben Bildinhalt nicht erst als
|
verwendet. Dadurch scannt der Matcher denselben Bildinhalt nicht erst als
|
||||||
vollen Beat und danach noch einmal als Segment; der Report behält trotzdem die
|
vollen Beat und danach noch einmal als Segment; der Report behält trotzdem die
|
||||||
korrekte Beat-Position und füllt echte Randlücken mit Schwarz.
|
korrekte Beat-Position und füllt echte Randlücken mit Schwarz.
|
||||||
|
Gecachte segmentierte Treffer werden ebenfalls gegen die automatisch sichtbare
|
||||||
|
Referenzdauer normalisiert, nicht gegen Schwarz-/Blendränder des gesamten Beats.
|
||||||
|
Ein korrekt gematchter kurzer Bildinhalt wird dadurch beim Report-Aufbau nicht
|
||||||
|
nachträglich als zu kurz verworfen.
|
||||||
Zusätzlich werden sehr dunkle, kontrastarme oder noch nicht sauber
|
Zusätzlich werden sehr dunkle, kontrastarme oder noch nicht sauber
|
||||||
auf-/abgeblendete Referenzframes aus Score, Inhalts-Reranking,
|
auf-/abgeblendete Referenzframes aus Score, Inhalts-Reranking,
|
||||||
Phasen-Alignment und Motion-Templates herausgenommen. Blenden sollen bestimmen,
|
Phasen-Alignment und Motion-Templates herausgenommen. Blenden sollen bestimmen,
|
||||||
|
|||||||
@@ -218,7 +218,12 @@ def _normalize_cached_results(beats: list, results: list, cfg) -> list:
|
|||||||
if weighted_score < cfg.cv.deep_scan.provisional_match_threshold:
|
if weighted_score < cfg.cv.deep_scan.provisional_match_threshold:
|
||||||
continue
|
continue
|
||||||
if beat is not None and beat.duration_s > 0:
|
if beat is not None and beat.duration_s > 0:
|
||||||
coverage = segment_duration / beat.duration_s
|
visible_duration = sum(
|
||||||
|
max(0.0, end_s - start_s)
|
||||||
|
for start_s, end_s in _reference_scoreable_segments(beat, cfg)
|
||||||
|
)
|
||||||
|
coverage_target = visible_duration if visible_duration > 0 else beat.duration_s
|
||||||
|
coverage = segment_duration / coverage_target
|
||||||
if coverage < cfg.cv.deep_scan.min_duration_coverage:
|
if coverage < cfg.cv.deep_scan.min_duration_coverage:
|
||||||
continue
|
continue
|
||||||
normalized.append(replace(result, match_score=weighted_score))
|
normalized.append(replace(result, match_score=weighted_score))
|
||||||
|
|||||||
Reference in New Issue
Block a user