CI for csaxs_bec / test (push) Successful in 2m10s
Real captures (a photo of the gripper/sample gap against a CNC-machined metal background, and the existing flomni reference_images/ set) show dense machining scratches registering as Canny edges as strongly as the actual object boundary, at any threshold -- verified on one real capture: low=50/high=150 finds ~203k edge pixels, low=150/high=250 still ~76k, both dominated by texture rather than the gripper. Raising thresholds alone can't separate "faint real edge" from "strong but irrelevant texture" when both survive at the same gradient magnitude. vision_toolkit.detect_edges() gains a blur_ksize parameter (Gaussian blur before Canny, 0 = off) for exactly this: blurring suppresses fine texture while leaving the coarser real edge mostly intact. On the same capture, adding blur_ksize=9 on top of low=150/high=250 drops the edge count to ~5k; blur_ksize=15 to ~1.8k. VisionInterface exposes this as live device state (set_edge_params()/ get_edge_params(), used by "edges" mode), and VisionTuning gains edge low/high/ blur spin boxes (enabled only in "edges" mode) next to the existing mode/ROI controls, so tuning is visual and interactive rather than a blind parameter sweep. VISION_PIPELINE_TESTING_HOWTO.md's manual edge-inspection section is extended accordingly. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DQpiwJcJZJKGo6Pzozfsi1