CANVAS KIT PLANNER
Photograph a hand-painted needlepoint canvas and let InkEgg parse the thread grid into a pixel map — one pixel per intersection. From there, stitch counts and yarn estimates can be calculated automatically for any color in the design.
Training Data — Samples
↓
2×2 pixel map
↓
2×2 pixel map
↓
2×2 pixel map
How It Will Work
1 — CAPTURE
User photographs their painted canvas with a phone or webcam. The image is sent to the parser.
2 — DETECT THE GRID
The parser locates the warp/weft thread intersections and builds a coordinate grid aligned to the canvas.
3 — SAMPLE COLORS
Each intersection is sampled for its dominant paint color, handling the organic variation of hand-painted canvas.
4 — KIT ESTIMATE
The resulting pixel map is used to count stitches per color. Yarn length estimates are computed per thread color.
Algorithm Pipeline — Planned
STAGE 1 — PREPROCESS
Convert photo to grayscale. Apply local contrast enhancement (CLAHE) to sharpen hole edges regardless of lighting.
STAGE 2 — HOLE DETECTION
Adaptive threshold to isolate dark pixels. Find blob centroids. Filter by expected hole size. Canvas photographed on dark background for maximum contrast.
STAGE 3 — GRID FITTING
Fit a projective homography to the detected hole centers. Rectify the image to correct perspective distortion. Grid becomes genuinely regular after correction.
STAGE 4 — SAMPLE INTERSECTIONS
Place sample points at the midpoint between every 4 adjacent holes. Average pixel color over a disc (~30% of grid period radius) at each point.
STAGE 5 — COLOR GROUPING
Convert sampled colors to CIE Lab space. Cluster by Delta-E distance with an adjustable tolerance slider. Perceptually accurate grouping.
STAGE 6 — OUTPUT
Render pixel map (one pixel per intersection). Generate stitch count per color group. Compute yarn length estimates per color for kit planning.
Outstanding Tasks
PHOTO TEST SET — IN PROGRESS
Shooting ~20 images across 4 groups on black felt background, diffuse natural light, max phone resolution.
Group 1 (5 shots): Single-color canvas, ~1"×1" (~13×13 holes), top-down. Light paint, dark paint, heavy paint variants.
Group 2 (6 shots): ~2"×2" section, varied angles — flat, 5°, 10°, 15° tilt on both axes, one corner-lifted. Grid fitting validation.
Group 3 (5 shots): ~2"×2" multi-color sections. 2-color, 3-4 color, and two similar adjacent hues (tolerance test).
Group 4 (4 shots): Casual hand-held real-world conditions. Stress test.
IMPLEMENTATION — NOT STARTED
Client-side JavaScript pipeline using Canvas API. All processing in the browser — no server roundtrip.
Stages: preprocess → hole detection → homography → intersection sampling → Lab color grouping → pixel map output.
UX DESIGN — NOT STARTED
Camera capture or file upload. Tolerance slider for color grouping. Live pixel map preview. Stitch count table. Yarn estimate output. Full canvas too large for single shot — UX will need to handle section-by-section capture.
CANVAS UPLOAD — COMING SOON
Test photo set being gathered. Implementation begins once dataset is validated.