Download ecglib/redshift.py from pashaalex/ecg-rectifier: direct link, hf CLI and curl.
- Browser
- Download file 804 Bytes
-
https://huggingface.co/pashaalex/ecg-rectifier/resolve/main/ecglib/redshift.py
- Command line
-
hf download hf://pashaalex/ecg-rectifier/ecglib/redshift.py
-
curl -L -o redshift.py https://huggingface.co/pashaalex/ecg-rectifier/resolve/main/ecglib/redshift.py
804 Bytes
| """Recolour dark lines red (--redshift) for photos with black or grey grids. | |
| Darkness d = 1 - brightness / local paper brightness; blue and green darken by d, red by 0.25 d. | |
| Only the networks see the recoloured photo. | |
| """ | |
| import cv2 | |
| import numpy as np | |
| PAPER_KERNEL = 25 | |
| PAPER_BLUR = 15 | |
| RED_KEEP = 0.25 | |
| def redshift(photo): | |
| image = photo.astype(np.float32) | |
| gray = image.mean(2) | |
| paper = cv2.dilate(gray, np.ones((PAPER_KERNEL, PAPER_KERNEL), np.uint8)) | |
| paper = cv2.GaussianBlur(paper, (0, 0), PAPER_BLUR) | |
| darkness = np.clip(1.0 - gray / np.maximum(paper, 1.0), 0.0, 1.0)[..., None] | |
| base = image / np.maximum(gray, 1.0)[..., None] * paper[..., None] | |
| out = base * (1.0 - darkness * np.array([1.0, 1.0, RED_KEEP], np.float32)) | |
| return np.clip(out, 0, 255).astype(np.uint8) | |