Stellenbosch University Digital Image Correlation (DIC) Code
This is an early release of the Stellenbosch University DIC Code, referred to as SUN-DIC. The code includes the following features and limitations. If you encounter issues or have suggestions for improvement, please contact the author. Additional documentation will be provided in future updates.
- Currently supports only 2D planar problems (a stereo version is under development).
- Only rectangular regions of interest (ROI) can be specified. However, subsets with an all-black background (based on a user-defined threshold) is ignored thus allowing the code to handle irregularly shaped domains.
- Limited documentation. Please see the
settings.ini
file for complete documentation on on the options and thetest_sundic.ipynb
file as a working example of using the API.
- Fully open-source, utilizing standard Python libraries wherever possible.
- Offers both a user-friendly GUI and an API for interaction.
- Implements the Zero-Mean Normalized Sum of Squared Differences (ZNSSD) correlation criterion.
- Features an advanced starting strategy using the AKAZE feature detection algorithm for initial guess generation.
- Supports both linear (affine) and quadratic shape functions.
- Includes Inverse Compositional Gauss-Newton (IC-GN) and Inverse Compositional Levenberg-Marquardt (IC-LM) solvers.
- Provides absolute and relative update strategies for handling multiple image pairs.
- Computes displacements and strains.
- Utilizes Savitzky-Golay smoothing for strain calculations. Displacements can also be smoothed using the same algorithm.
- Supports parallel computing for improved performance.
- Easy installation via PyPI.
Although installation can be performed without creating a virtual environment, it is highly recommended to use one for easier dependency management.
- Create a virtual environment.
- Activate the virtual environment.
- Install the package from PyPI.
- Optionally, download the following files and folders for a complete working example:
test_sundic.ipynb
settings.ini
planar_images
folder These can be found in this repository and provide a practical starting point for using both the API or GUI.
- Create a virtual environment (e.g.,
sundic
):python3 -m venv sundic
- Activate the virtual environment:
source sundic/bin/activate
- Install the package:
pip install SUN-DIC
- Create a virtual environment (e.g.,
sundic
) with Python pre-installed:conda create -n sundic python=3.11
- Activate the virtual environment:
conda activate sundic
- Install the package:
pip install SUN-DIC
- Create and activate a virtual environment using either
pip
orconda
as outlined above. - Clone the repository and install the package:
git clone https://github.com/gventer/SUN-DIC.git pip install ./SUN-DIC
Make sure the virtual environment where SUN-DIC
is installed is active before proceeding.
- Type
sundic
in the terminal to launch the GUI. - Download the
planar_images
folder from this repository for example image data. - Follow the workflow outlined on the left-hand side of the GUI. Hovering over any entry provides helpful tooltips.
- Download the following files from this repository:
test_sundic.ipynb
settings.ini
planar_images
folder
- Open the
test_sundic.ipynb
Jupyter Notebook for a detailed working example. - The typical workflow involves:
- Modifying the
settings.ini
file. - Running the DIC analysis.
- Post-processing the results.
- Modifying the
- While the example uses a Jupyter Notebook, the API can also be used in standard Python
.py
scripts.
Detailed API documentation is available at:
https://gventer.github.io/SUN-DIC
- SUN-DIC Analysis Code: Based on work by Ed Brisley as part of his MEng degree at Stellenbosch University. His thesis is available at the Stellenbosch University Library.
- Interpolator: Utilizes
fast_interp
by David Stein, licensed under Apache 2.0. Repository: fast_interp. - Smoothing Algorithm: Implements the 2D Savitzky-Golay algorithm from the SciPy Cookbook.
- GUI Development: Developed by Elijah Stockhall.
This project is licensed under the MIT License. See the LICENSE
file for details.
Developed by Gerhard Venter.