D 2 I C is an open-source Python package for two-dimensional Digital Image Correlation (DIC) based on differentiable programming. It implements a global finite-element formulation: the displacement field is discretized on a quadrilateral mesh and estimated by minimizing a pixelwise brightness-constancy objective. Spring regularization can be added when needed. The computational core is written in JAX, which provides automatic differentiation, just-in-time compilation, and seamless execution on CPU or accelerator backends. D 2 I C exposes exact gradients of the correlation objective with respect to nodal displacements and other parameters. This enables rapid development of inverse problems, mechanically constrained extensions, and hybrid learning/optimization workflows without hand-derived Jacobians or finite differences. The package includes utilities for ROI/mesh generation from masks and a coarse translation-only initialization based on ZNCC at element centers with nodal projection. It also provides an optional nodal Gauss–Newton refinement to improve convergence from coarse initial guesses. Post-processing routines compute strains on the mesh. Thanks to end-to-end differentiability, the software also supports uncertainty propagation from image noise to displacement and strain via Jacobian–vector products. Worked examples and Jupyter notebooks reproduce validation on the 2D DIC Challenge datasets and demonstrate heterogeneous strain mapping and uncertainty visualization.
Roux Emile (Tue,) studied this question.