illusion op• Data kinds: none → rgb (an op determined by its arguments alone — it takes no image or data input)
• Call: import fullseye as fs; fs.ledger.illusion_cafe_wall(size: 'int' = 40, rows: 'int' = 8, cols: 'int' = 10, mortar: 'float' = 2.0, shift: 'float' = 0.5) -> 'np.ndarray' (to call the implementation directly, import illusion; illusion.illusion_cafe_wall(size: 'int' = 40, rows: 'int' = 8, cols: 'int' = 10, mortar: 'float' = 2.0, shift: 'float' = 0.5) -> 'np.ndarray'; from the registry, opsgenerative.get("illusion_cafe_wall"))
• GPU: none (CPU reference implementation only)
Café wall illusion. Although the mortar lines are exactly horizontal, they look tilted.
shift is the checkerboard offset per row (as a fraction of size; row r is shifted by r * shift * size). The checkerboard period is 2 * size, so at an offset of 0 (the tiles of every row line up vertically) and 1.0 (a plain checkerboard, black and white swapped from the row above) the illusion disappears, and it repeats with period 2. The classic observation is that it is strongest around a half-tile offset, 0.5 (Gregory & Heard 1979), and the default is that classic layout. Sweep the offset over 0 to 1 to check it.
Invariant: the centre y of each mortar line is exactly k * size (k = 1..rows-1).
• Sample-data catalog (download URLs / licences) — 2-D uses skimage.data (BSD/public domain) plus synthetic images; 3-D lists download URLs for real data sources (Stanford, PDS, …).
• Operator provenance and references — the sources of the research/methods this op family came from.
• The canonical algorithm (author, year) and its uses are named in the family usage guide above.
• poc_calipers_under_illusion — py -3.11 examples/poc_calipers_under_illusion.py
rgb as input)—
illusion)illusion_muller_lyer · illusion_ponzo · illusion_zollner · illusion_poggendorff · illusion_fraser_spiral · illusion_ebbinghaus · illusion_kanizsa · illusion_checker_shadow
*Provenance: illusion.py — GENERATIVE operator registry. This per-op note is generated by tools/opdocs.py md (do not hand-edit).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.