npr opimage2d → image2dimport fullseye as fs; fs.ledger.hatch_field(image, spacing_px=8.0, sigma=2.0, levels=3, cross_deg=90.0) (実装を直接呼ぶなら import printpath; printpath.hatch_field(image, spacing_px=8.0, sigma=2.0, levels=3, cross_deg=90.0)、台帳から引くなら opsprintpath.get("hatch_field"))Cross-hatching that follows the picture — direction from the structure tensor.
The stroke direction is the local structure orientation (the existing
structure_tensor_orientation: strokes run along edges, not across them),
and the number of superposed hatch layers comes from the tone — one layer for
a light grey, up to levels for a dark one, each rotated by cross_deg.
★Why this earns its place: the direction is checkable against a picture whose orientation is known by construction (a sine grating at 30° must give strokes at 30°), and the tone is checkable by blurring the result. The usual NPR routine offers neither.
Returns an image2d: 1 = paper, 0 = ink.
Raises ValueError: spacing below 2 px; levels below 1; non-positive
sigma; a non-finite or oversized image.
Limits: a single orientation per pixel, so crossings and junctions (where the structure tensor is isotropic) get an arbitrary but locally smooth direction — the coherence, not the orientation, is what says whether to trust it.
py -3.11 examples/poc_beats_fringes_and_screens.pyimage2d を入力に取れる)stipple_points_from_image · stipple_energy · stroke_tone_error · halftone_screen · engrave_lines · mosaic_tiles_sites · mosaic_tiles_render · print_layer_defect_map
npr)halftone_screen · halftone_moire_period · engrave_lines · mosaic_tiles_sites · mosaic_tiles_render
Provenance: printpath.py — PRINTPATH operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.