Coordinate-based CT reconstruction from sparse-view sinograms
(
paper,
arXiv,
code), published in
IEEE Transactions
on Medical Imaging. Instead of reconstructing a whole image at once, GLIMPSE
predicts
one pixel at a time from only the sinogram data
local to that
pixel's coordinate. This locality makes it resolution-agnostic and gives strong
out-of-distribution generalization — e.g. train on natural images / faces and
reconstruct medical brain scans without retraining.
GLIMPSE substantially outperforms classical filtered back-projection (FBP), both
in-distribution and out-of-distribution:
1import numpy as np, torch
2from glimpse import GlimpseModel, Config
3from glimpse.operators import build_operator
4from glimpse.reconstruct import make_coordinate_grid, reconstruct_image
5
6device = 'cuda' if torch.cuda.is_available() else 'cpu'
7model = GlimpseModel.from_pretrained("AmirEhsan1995/Glimpse").eval().to(device)
8
9# Build the matching ODL parallel-beam operator (50 views over [0, 180) deg).
10cfg = Config.from_yaml('configs/lodopab.yaml') # from the GitHub repo
11_, init_angles = cfg.resolve_angles()
12operator = build_operator(cfg, np.deg2rad(init_angles))
13
14volume = torch.as_tensor(my_image[None], dtype=torch.float32, device=device) # (1, H, W)
15sino = operator.project(volume) # sparse-view sinogram
16coords = make_coordinate_grid(cfg.image_size).unsqueeze(0).to(device)
17recon = reconstruct_image(sino, coords, 1, model, chunk_size=1024)
18recon = recon.reshape(cfg.image_size, cfg.image_size)
See the
demo notebook
for an end-to-end example (data download, FBP baseline, PSNR/SSIM, figures).
1@article{khorashadizadeh2025glimpse,
2 title = {GLIMPSE: Generalized Locality for Scalable and Robust CT},
3 author = {Khorashadizadeh, AmirEhsan and Debarnot, Valentin and Liu, Tianlin and Dokmani{\'c}, Ivan},
4 journal = {IEEE Transactions on Medical Imaging},
5 year = {2025},
6 doi = {10.1109/TMI.2025.3568017}
7}