Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/gurveervirk/adobe-gensolve-2024

End-to-end process to regularize hand-drawn shapes, find symmetry in it, if possible, and complete these shapes, if necessary.
https://github.com/gurveervirk/adobe-gensolve-2024

adobe curve-fitting mathematical-modelling mathematics science streamlit

Last synced: about 8 hours ago
JSON representation

End-to-end process to regularize hand-drawn shapes, find symmetry in it, if possible, and complete these shapes, if necessary.

Awesome Lists containing this project

README

        

# Curvetopia


sample_output

## Description

This project aims to take as input hand-drawn shapes and:

1. regularize the shape, if possible
2. check for symmetry in the image, and return a line of symmetry if it does
3. complete incomplete shapes using the above

## Installation

To install the project, follow these steps:

1. Clone the repository.
2. Run `pip install -r requirements.txt` to install the dependencies.

## Usage

The `main` part of most scripts are commented for streamlit deployment. Kindly go through the comments before uncommenting and using them.

### Curve Completion

The `curve_completion.py` script is designed to complete incomplete curves by fitting shapes to connected polylines. Kindly check the video under Miscellaneous to use this code.

To run:

```
python scripts/curve_completion.py
```

### Curve Extrapolation

The `curve_extrapolation.py` script extrapolates missing parts of a curve using interpolation.

To run:

```
python scripts/curve_extrapolation.py
```

### Shape Detection

The `detect_shapes.py` script detects and regularizes different shapes (e.g., lines, ellipses, polygons) within a set of points.

To run:

```
python scripts/detect_shapes.py
```

### Reflection Symmetry Detection

The `find_reflection_symmetry_line.py` script finds the line of reflection symmetry for a given set of points.

To run:

```
python scripts/find_reflection_symmetry_line.py
```

### Polyline Splitting and Merging

The `split_disjoint.py` script splits polylines into disjoint segments and attempts to merge and extend them based on angle and proximity criteria.

To run:

```
python scripts/split_disjoint.py
```

## Curve Completion Examples



occlusion1


sample_output

occlusion2


sample_output



frag2


sample_output

isolated


sample_output

## Miscellaneous

- [Demo](https://youtu.be/YcmWPHTnhBQ)
- [Demo for Curve Completion](https://drive.google.com/file/d/1_V41Bb5XKwe1rqgN81oTptldy6xEB3JK/view)
- [Hosted Streamlit App](https://curvetopia-adobe.streamlit.app/)