cat > /workspace/scratch/puffinmatte.py <<'PY'
import cv2,numpy as np,tifffile
from PIL import Image
from scipy import ndimage as ndi
s='HH-2342';p='/workspace/scratch/finalmasks/'+s+'.png';old=cv2.imread(p,0);m=old>127
# Refine only the floor-facing arc; the dark sofa edge is already isolated.
a=(tifffile.imread('/workspace/input/photos/'+s+'.tif').astype('float32')/65535)**2.2
b=(tifffile.imread('/workspace/input/charts/'+s+'_chart.tif').astype('float32')/65535)**2.2
fg=ndi.distance_transform_edt(m)>18;bg=ndi.distance_transform_edt(~m)>24
_,fi=ndi.distance_transform_edt(~fg,return_indices=True);_,bi=ndi.distance_transform_edt(~bg,return_indices=True)
ratio=cv2.GaussianBlur(a/(b+.001),(5,5),1);B=b*ratio[bi[0],bi[1]];F=cv2.GaussianBlur(a,(5,5),1)[fi[0],fi[1]]
D=F-B;al=np.clip(((a-B)*D).sum(2)/((D*D).sum(2)+1e-6),0,1);al[fg]=1;al[bg]=0;al[al<.02]=0
old[1050:]=np.rint(al[1050:]*255).astype('uint8');cv2.imwrite(p,old)
im=Image.open('/workspace/input/photos/'+s+'.tif');o=Image.new('RGB',im.size,(214,128,99));o.paste(im,(0,0),Image.fromarray(old));o.resize((1200,800)).save('/workspace/scratch/puffinnew.jpg')
PY
OPENBLAS_NUM_THREADS=1 python /workspace/scratch/puffinmatte.py