#!/usr/bin/env python3 import sys import numpy as np from PIL import Image def depth_map(w, h): # simple demo: circular bump y, x = np.ogrid[:h, :w] cx, cy = w // 2, h // 2 r = min(w, h) // 3 d = ((x - cx)**2 + (y - cy)**2) <= r*r return d.astype(np.float32) def stereogram(depth, pattern_w=64, max_shift=32): h, w = depth.shape img = np.random.randint(0, 256, (h, w), dtype=np.uint8) for y in range(h): for x in range(pattern_w, w): z = depth[y, x] shift = int(z * max_shift) src = x - pattern_w + shift if src >= 0: img[y, x] = img[y, src] return img def main(argc, argv): w = int(argv[1]) if argc > 1 else 600 h = int(argv[2]) if argc > 2 else 400 out = argv[3] if argc > 3 else "stereogram.png" d = depth_map(w, h) s = stereogram(d) Image.fromarray(s).save(out) print(out) if __name__ == "__main__": main(len(sys.argv), sys.argv)