halftone_screen — PRINTPATH npr op

• Data kinds: image2d → image2d

• Call: import fullseye as fs; fs.ledger.halftone_screen(image, lpi=60.0, angle_deg=45.0, pixel_um=25.4, sharpness=8.0) (implementation को सीधे call करना हो तो import printpath; printpath.halftone_screen(image, lpi=60.0, angle_deg=45.0, pixel_um=25.4, sharpness=8.0), registry से लेना हो तो opsprintpath.get("halftone_screen"))

उपयोग

पारंपरिक घुमाई गई halftone screen — dot जिनका क्षेत्रफल tone को दर्शाता है।

> नीचे का विस्तृत विवरण मूल text में है — सारांश और headings का अनुवाद हो चुका है।

Thresholds the image against a rotated periodic spot function (the product of two shifted cosines, the classical round-dot screen). *lpi* is lines per inch and *pixel_um* the pixel pitch, so the screen frequency in pixels follows the printing convention rather than a bare "period in pixels".

★Why this earns its place: two screens at different angles beat against one another, and the period and direction of that moiré are a closed form (halftone_moire_period) that can be predicted *before* anything is drawn and then measured out of the image. That is why newspaper printing puts the plates at 15°/45°/75° — the beat is pushed to a frequency the eye does not resolve — and this op lets that be shown as numbers, not folklore.

Parameters

image : 2-D array in [0, 1]

Tone; 0 prints solid, 1 prints blank (the ink is 1 - image).

lpi : float

Screen ruling, lines per inch. Newspapers use 65-85, magazines 133-175.

angle_deg : float

Screen angle. The classical set is K 45°, M 75°, C 15°, Y 0°.

pixel_um : float

Pixel pitch in micrometres (25.4 um = 1000 dpi).

sharpness : float

Edge hardness of the dot; large values give a hard threshold.

Returns an image2d: 1 = paper, 0 = ink.

Raises ValueError: non-positive lpi, pixel pitch or sharpness; a screen period below 2 px (it would alias — reported, never silently drawn); a non-finite or oversized image.

Limits: this is a *screen*, not a printer. Dot gain, ink spread and registration error are not modelled, so measured ink is the geometric coverage and will read lighter than a real press.

उपयोग की विस्तृत guide

• printpath family guide

संदर्भ (sample data, साहित्य)

• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।

• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।

• Algorithm का मानक स्रोत (लेखक, वर्ष) और उपयोग ऊपर की family usage guide में दिए गए हैं।

चलाए जा सकने वाले उदाहरण (verified samples जो सच में यह op call करते हैं)

• poc_beats_fringes_and_screens — py -3.11 examples/poc_beats_fringes_and_screens.py

• poc_print_registration — py -3.11 examples/poc_print_registration.py

वे अगले ops जिनसे type जुड़ता है (image2d को input के रूप में लेते हैं)

stipple_points_from_image · stipple_energy · stroke_tone_error · engrave_lines · hatch_field · mosaic_tiles_sites · mosaic_tiles_render · print_layer_defect_map

इसी category के (npr)

halftone_moire_period · engrave_lines · hatch_field · mosaic_tiles_sites · mosaic_tiles_render


*Provenance: printpath.py — PRINTPATH operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.