Draft
Add optional preprocessing step to marker detection pipeline#21
Conversation
Implement preprocess_marker_frame() helper and PREPROCESS_PRESETS in pyneon/video/marker.py, extend detect_markers() and Video.detect_markers() with preprocess/preprocess_params parameters, update docstring templates, and add unit tests.
…, remove duplicate import
Copilot
AI
changed the title
[WIP] Add optional preprocessing step to marker detection pipeline
Add optional grayscale preprocessing to AprilTag/ArUco marker detection
Jun 23, 2026
Copilot
AI
changed the title
Add optional grayscale preprocessing to AprilTag/ArUco marker detection
Simplify marker preprocessing defaults and make stage controls nullable
Jun 23, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Marker detection preprocessing currently exposes overlapping controls: a preset flag plus per-stage booleans/floats, with preprocessing disabled by default. This change makes
"mild"the default preset, renames the stronger presets to descriptive neutral names, and letsNonedisable preprocessing globally or per stage.API Simplification
detect_markers(..., preprocess=...)now defaults to"mild".preprocessnow acceptsstr | None;Nonedisables preset preprocessing.preprocess_marker_frame()now uses nullable stage parameters instead of separate boolean toggles:highlight_percentile=Nonedisables highlight clippingclahe_clip_limit=Noneorclahe_tile_grid_size=Nonedisables CLAHEgaussian_blur_sigma=Nonedisables blursharpen_amount=Nonedisables sharpeningPreset Cleanup
"mild"as the general default."ir"→"strong_highlight_clipping"."low_light"→"strong_local_contrast"."mild"preset with the literal defaults ofpreprocess_marker_frame().Docs and Error Surface
preprocess=Noneand per-stageNonevalues.Tests