Inspired by Optical Graph Recognition
- Reading image using OpenCV tools
- Image preprocessing: opening + closing
- Image thinning (A Sequential Thinning Algorithm For MultiDimensional Binary Patterns)
- Create extended matrix for future algorithms of optical graph recognition
- Detect vertexes from source graph
- Detect edges (the most complex step)
- Evaluation some metrics: crossings count, edge bends, edge lengths, ambiguity, etc...
git submodule update --init --recursive
To build source code use cmake:
mkdir build && cd build && cmake .. -DCMAKE_BUILD_TYPE=Release && make
Create build
directory using previous step and run cmake.
make sample1 # run algorithm for sample1
make sample1-report # run only for report with sample1 (quick)
make all # run algorithm for all samples
./build/main --help
Aesthetic metrics evaluation of bundling visualization techniques
Usage: ./build/main [OPTIONS]
Options:
-h,--help Print this help message and exit
-i,--input TEXT REQUIRED Input images dir path
-b,--baseline-name TEXT [baseline]
Input image baseline
-o,--output TEXT REQUIRED Output results dir path
--log-level TEXT [info] (Env:LOG_LEVEL)
Log level: info, debug, none
--dev-dir TEXT Path dir to dev steps dump
--vertex UINT Run algo only for particular vertex
--filter TEXT Run algo only for particular image file
--dump-intermediate [0]
--only-report [0] Show only report of algo evaluation
[Option Group: Algo params]
Parameters of ogr algorithm
Options:
--curvature FLOAT [20] Acceptable steps curvature
--stable-diff FLOAT [15] Acceptable angle diff threshold between stable edge parts
--state-diff FLOAT [40] Acceptable diff angle between consecutive several steps
--baseline-curvature FLOAT [13]
Acceptable steps curvature (baseline)
--baseline-stable-diff FLOAT [9]
Acceptable angle diff threshold between stable edge parts (baseline)
--baseline-state-diff FLOAT [30]
Acceptable diff angle between consecutive several steps (baseline)
--edges-union TEXT [union] Union found edges strategy: union, intersection
Below you can see visualization of algorithm implementation for finding edges from one particular vertex: