
# About this Project

This project is being developed as a practical part of bachelor's thesis at Brno Universtiy of Technology - Faculty of Information Studies. It is as of now a work in progress, no results guaranteed.

The topic of this thesis is Generating a 3D Fingerprint Model. This application can be used to apply series of image processing filters to a fingerprint image to make it more suitable for conversion to 3D stl model and printing.
It should also have the functionality to convert the image to stl lithophane and map it to a  3d finger model.


# Prerequisites

For now this is only viable for ubuntu gnu/linux machines
Before cloning repository, you need these to succesfully use the application.

* python version 3.10 is a requirement might work on earlier python 3 versions

    ```sh
        apt install python3.10
    ```

* python graphical modules

    ```sh
        pip install numpy matplotlib pillow
    ```

# Installation

Installation is relatively fast and easy.

1. Clone the repository
    ```sh
        git clone ssh://git@strade.fit.vutbr.cz:3022/xlanro00/BP_DP-xlanro00.git
    ```

2. Prepare an image file containing fingerprint

3. Run the application


# Usage

There are two ways to enter filter series

* manually from command line, list filter names and parameters will be added later
    ```sh
        python src/main.py res/test_fp.png res/test_fp_cpy.png 100 gaussian erode dilate sharpen
    ```
* manually from preset saved in a json config file, that can be used to create new presets
    ```sh
        python src/main.py res/test_fp.png res/test_fp_cpy.png 100 --config config/config.json default
    ```

# Configuration

There is an option to input the filter series as a preset to json configuration file.

```diff
{
    "preset_name": [
        "filter_1",
        "filter_2",
        "filter_3"
    ]
}
```

# Comparison

Image before processing the fingerprint and after applying a presets.

<table>
    <thead>
        <th>Before</th>
        <th>After</th>
    </thead>
    <tbody>
        <td><img src="res/example-before.png?raw=true" width="400" /></td>
        <td><img src="res/example-after.png?raw=true" width="400" /></td>
    </tbody>
</table>

# Generated STL lithophane

This section will be added later. It will describe the process of converting the fingerprint image data to 3D stl lithophane.

# Roadmap

- [x] Load and store image
- [x] Apply basic image processing filters
    - [ ] Scale the image using given dpi
- [X] Create filter library with more filters
    - [ ] Add more suitable filters to the library
- [x] Use presets from config files
    - [ ] Add the option to save current filter presetto config file
- [ ] Add the option to modify filter parameters
- [ ] Convert the processed image to stl lithophane
    - [ ] Add the option to map the lithophane on a finger model
- [ ] Export final model ready for 3D print

#
### Author

Rostislav Lán - xlanro00@stud.fit.vutbr.cz

### Supervisor

Ing. Petr Malaník

### Links

Project Link: [https://strade.fit.vutbr.cz/git/xlanro00/BP_DP-xlanro00](https://strade.fit.vutbr.cz/git/xlanro00/BP_DP-xlanro00)
