import numpy as np, glob, sys from PIL import Image d=sys.argv[1] f=sorted(glob.glob(f"{d}/f*.png")) a=[np.asarray(Image.open(x).convert("RGB"),dtype=np.int16) for x in f] # noise-tolerant per-pair change: % of pixels differing by more than 8 levels p=np.array([100.0*np.count_nonzero(np.abs(a[i]-a[i-1]).max(axis=2)>8)/(a[0].shape[0]*a[0].shape[1]) for i in range(1,len(a))]) print(f" pairs={len(p)} mean={p.mean():.2f}% median={np.median(p):.2f}% p90={np.percentile(p,90):.2f}% max={p.max():.2f}%") ev,od=p[0::2],p[1::2] print(f" even-idx pairs mean={ev.mean():.2f}% odd-idx pairs mean={od.mean():.2f}% ratio={max(ev.mean(),od.mean())/max(min(ev.mean(),od.mean()),1e-9):.1f}x") print(f" first 16 pairs: {np.round(p[:16],2)}")