shocktrackinglibrary
Image processing library to detect and track shock waves from Schlieren images using line-scanning technique. The library uses OpenCV, scipy, glob, sys, numpy and matplotlib libraries .
Science Score: 49.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 5 DOI reference(s) in README -
✓Academic publication links
Links to: zenodo.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (15.4%) to scientific vocabulary
Repository
Image processing library to detect and track shock waves from Schlieren images using line-scanning technique. The library uses OpenCV, scipy, glob, sys, numpy and matplotlib libraries .
Basic Info
- Host: GitHub
- Owner: EngAhmedHady
- License: mit
- Language: Python
- Default Branch: main
- Size: 496 MB
Statistics
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 3
Metadata Files
README.md
Shock Tracking Library
Overview
The instability of shock waves due to induced separation presents a significant challenge in aerodynamics. Accurately predicting shock wave instability is crucial for reducing vibrations and noise generation. The high-speed schlieren technique, valued for its simplicity, affordability, and non-intrusiveness, is crucial for understanding flow patterns in linear cascades.
This Python package introduces an advanced method that employs line-scanning to detect and track shock waves from large series of schlieren images. It includes an adaptive feedback system to handle uncertainties in shock detection and is compatible with supervised learning and AI workflows. The method is capable of identifying and analyzing different types of shocks, even in low-resolution or visually degraded images.
The method's performance has been validated in a transonic fan passage test section and a supercritical A320 wing profile under varying Reynolds numbers and oscillation conditions.
For scientific details and benchmarking, please refer to the article:
"Advancements in Shock-Wave Analysis and Tracking from Schlieren Imaging"
DOI: 10.2139/ssrn.4797840
Key Features
Three robust shock tracking methods:
integral: Based on maximum blocked light intensity.darkest_spot: Tracks absolute minimum intensity.maxGrad: Uses Sobel gradient to locate shock edge.
Adaptive outlier detection using RANSAC and Tukey's fences.
Confidence estimation via t-distribution and standard error for shock angle.
Weighted vs. arithmetic averaging for better estimation accuracy.
Automatic feedback system for detecting uncertain shock positions.
Visual tools for tracking and comparing shock signals.
What's New in This Release
Code Enhancements
- Improved code style according to PEP 8
Defined universal units:
```python SOA.univ_unit = {'freq': 'fps', 'dis': 'mm', 'angle': 'deg'}Abort preview with
ESCor continue with any key.Logging all tracking activities using:
```python SOA.log(logmessage: str, directorypath: str)
Improved generating slice list array sliceListGenerator.GenerateSliceArray:
Define number of tracking points:
npnts=nSlice thickness in pixels or universal units:
slice_thickness =[5.5, 'mm']Custom vertical range:
sat_vr = [-5.5, 3, 'mm']avgshockloc now uses coordinate tuple (x, y)
Improved shock angle estimation inc_tracking.InclinedShockTracking
RANSAC for better fitting
Enhanced cached metadata and filename comments
Confidence estimation:
conf_interval=0.95Histogram plotting with confidence stats
Weighted average using slope std and error
see more in this tutorial
Visualization Upgrades
Custom point size:
points_size=12Confidence/prediction bands:
conf_color,conf_range_opacitypred_color,pred_range_opacity
Custom background image:
op_bg_path,bg_y_crop,bg_x_crop,bg_resize,bg_90rotateRotate output:
op_90rotate=TrueUse
nReviewas an integer or tuple: (start, end, step) - applicable only withinc_tracking.ShockPointsTracking
Output Format Improvements
avgshockangle:
[arithavg, arithconf, weightavg, weightconf, std_dev]
avgshockloc:
[locavg, locconf, std_dev]
Function Optimizations
Improved: SOA.extract_coordinates, v_least_squares
Robust File Handling
Crop X: crop_x_img, Crop Y: crop_y_img, Resize: resize_img
Bug Fixes
Handle images without scale in
sliceListGenerator.GenerateSliceArrayFix corner cases in
v_least_squaresRobust angle estimation even with missing slices
ShockTrakingFixed circular import issue using
constent.pyAlso,
InclinedLine,AvgAnglePlot,InclinedShockDomainSetup
Installation
To install Shock Tracking Liberary from pip you can use:
pip install ShockOscillationAnalysis
Alternatively, you can also clone the repository manually by running:
git clone https://github.com/EngAhmedHady/ShockTrackingLibrary.git
Then install the package using:
pip3 install dist\ShockOscillationAnalysis-2.15.10-py3-none-any.whl
Owner
- Name: Ahmed Hady
- Login: EngAhmedHady
- Kind: user
- Repositories: 1
- Profile: https://github.com/EngAhmedHady
GitHub Events
Total
- Release event: 3
- Watch event: 2
- Delete event: 1
- Issue comment event: 1
- Push event: 18
- Pull request event: 1
- Create event: 1
Last Year
- Release event: 3
- Watch event: 2
- Delete event: 1
- Issue comment event: 1
- Push event: 18
- Pull request event: 1
- Create event: 1