You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

148 lines
4.5 KiB

# 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.
2 years ago
It also includes the functionality to use generated image as a height map for generating an stl model.
This model can either be planar or curved.
# 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==1.23.3 matplotlib==3.5.3 opencv-python=4.7.0.72
stl==0.0.3 scikit-image==0.19.3
```
# 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
2 years ago
There are two ways to enter filters
2 years ago
* manually from command line, list filter names and parameters
```sh
2 years ago
python src/main.py res/test_fp.png res/test_fp_cpy.png 100 denoise_tv_chambolle iterations=1 weight=0.1 median ksize=3
```
* manually from preset saved in a json config file, that can be used to create new presets
```sh
2 years ago
python src/main.py res/test_fp.png res/test_fp_cpy.png 100 --config config/config.json weak
```
# Configuration
There is an option to input the filter series as a preset to json configuration file.
```diff
{
2 years ago
"weak": [
2 years ago
{
2 years ago
"name": "denoise_tv_chambolle",
"weight": 0.01,
"iterations": 1
2 years ago
},
{
2 years ago
"name": "median",
"ksize": 3
},
2 years ago
],
2 years ago
"strong": [
2 years ago
...
]
2 years ago
...
}
```
2 years ago
All the filters used and their parameters will be described in documentation.
# 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/examples_git/example-before.png?raw=true" width="400" /></td>
<td><img src="res/examples_git/example-after.png?raw=true" width="400" /></td>
</tbody>
</table>
# Generating curved finger model
It is possible to generate 3D printable stl model using `--stl` switch, which requires aditional parameter containing stl filename.
In base mode the output model will be a curved finger model, with optional parameters following the filename controlling its shape.
First optional parameter is papilar line height, second rate of curvature along x axis and the third is the rate of curvature along y axis.
2 years ago
* Example planar stl generation
2 years ago
```sh
python src/main.py res/test_fp.png res/test_fp_mod.png 508 --config config/config.json weak --stl res/test_fp.stl 2 2 4
2 years ago
```
2 years ago
# Generating planar finger model
2 years ago
Using `-p` switch makes the generated model planar. This is not the main goal of the application.
Optional parameters are model base thickness and papilar lines height, they are set after stl file name.
2 years ago
* Example curved stl generation
```sh
python src/main.py res/test_fp.png res/test_fp_mod.png 508 --config config/config.json weak --stl res/test_fp.stl 10 2 -p
```
2 years ago
2 years ago
# Mapping to existing finger model
2 years ago
This section will be added later, (if implemented) mapping of fingerprint to a given finger model.
# Roadmap
- [x] Load and store image
- [x] Apply basic image processing filters
2 years ago
- [X] Scale the image using given dpi
- [X] Create filter library with more filters
2 years ago
- [X] Add more suitable filters to the library
- [x] Use presets from config files
2 years ago
- [ ] Add the option to save current filter preset to config file
- [X] Add the option to modify filter parameters
- [X] Convert the processed image to stl lithophane
- [X] Add the option to curve the lithophane into the shape of a finger
2 years ago
- [ ] Add the option to map the lithophane on a given finger model
- [X] 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)