7.8 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. 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
sudo apt install python3.10
-
virtualenv for virtual enviroment creation
pip install virtualenv
Installation
-
Go to a suitable installation folder, for example Documents.
cd /home/username/Documents
-
Clone the repository to a suitable directory, for example
git clone ssh://git@strade.fit.vutbr.cz:3022/xlanro00/BP_DP-xlanro00.git
-
Go inside cloned directory
cd BP_DP-xlanro00
-
Create and enter the virtual enviroment.
virtualenv .venv && source .venv/bin/activate
-
Install required python modules from requirements.txt.
pip install -r requirements.txt
-
Run the application, as an example there is a file in res/examples called Palec_P4.tif. This is shown in the section below.
Filtering images
- You will need to enter the virtual enviroment every time you want to use the application.
source .venv/bin/activate
Once all the requirements are installed, the program is ready to use. There are two ways to enter the filters:
-
manually list filter names and parameters from command line
python3 src/main.py res/examples/Palec_P4.tif res/examples/Palec_P4.png 600 denoise_tv_chambolle iterations=1 weight=0.2 median ksize=5
-
from preset saved in a json config file, that can be used to tune and modify existing presetrs, or create new ones
python3 src/main.py res/examples/Palec_P4.tif res/examples/Palec_P4_from_preset.png 600 --config config/config.json git_example
Configuration and presets
There is an option to input the filter series as a preset from json configuration file.
{
"preset": [
{
"name": "filter_name",
"parameter": value,
"parameter": value
},
{
"name": "filter_name",
"parameter": value
}
],
"preset": [
...
]
...
}
For example
{
"git_example": [
{
"name": "denoise_tv_chambolle",
"weight": 0.01,
"iterations": 1
},
{
"name": "median",
"ksize": 3
}
]
}
All the filters used and their parameters are described below.
Available filters with parameters
-median blur -ksize - kernel size (int)
-gaussian blur -ksize - Gaussian kernel size (int) -sigmaX - Kernel deviation in X direction (float) -sigmaY - Kernel deviation in Y direction (float)
-bilateral blur -d - ? (int) -sigmaColor - ? (int) -sigmaSpace - ? (int)
-denoise -h - ? (int) -tWS - template window size (int) -sWs - search window size (int)
-denoise_bilateral -sigmaColor - ? (int) -sigmaSpace - ? (int) -iterations - ? (int)
-denoise_tv_chambolle -weight - ? (float) -iterations - ? (int)
-sharpen -kernel - ? (numpy.matrix)
-unsharp mask -strength - ? (float) -ksize - kernel size (int)
-unsharp mask scikit -radius - ? (int) -amount - ? (float)
-morph -kernel - ? (numpy.matrix) -iterations - ? (int) -op - opencv MORPH operation (MORPH_OPEN, MORPH_CLOSE, MORPH_DILATE, MORPH_ERODE) -anchor - ? (tuple)
Comparison
Image before processing the fingerprint and after applying a presets.
Before | After |
---|---|
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.
-
General form for curved stl generation
python3 src/main.py input_file output_file dpi --config config_file preset --stl height_line height_base curvature_x curvature_y
-
Working example curved stl generation
python3 src/main.py res/examples/Palec_P4.tif res/examples/Palec_P4_from_preset.png 600 --config config/config.json git_example --stl 2 10 2 2
Generating planar finger model
Using -p
switch makes the generated model planar.
Optional parameters are model base thickness and papilar lines height, they are set after stl file name.
-
General form for planar stl generation
python3 src/main.py input_file output_file dpi --config config_file preset --stl height_line height_base -p
-
Working example planar stl generation
python3 src/main.py res/examples/Palec_P4.tif res/examples/Palec_P4_from_preset.png 600 --config config/config.json git_example --stl 2 10 -p
Mapping to existing finger model
This section will be added later, (if implemented) mapping of fingerprint to a given finger model.
Usage
usage: main.py [-h] [-m | --mirror | --no-mirror] [-p] input_file output_file dpi ([-c | --config config_file preset] | [filters ...]) [-s | --stl height_line height_base | --stl_file height_line curv_rate_x curv_rate_y]
Program for processing a 2D image into 3D fingerprint.
positional arguments: input_file input file path output_file output file path dpi dpi of used scanner filters list of filter names and their parameters in form [filter_name1 param1=value param2=value filter_name2 param1=value...]
options: -h, --help show this help message and exit -m, --mirror, --no-mirror switch to mirror input image -s [STL_FILE ...], --stl_file [STL_FILE ...] create stl model from processed image -p, --planar, --no-planar make stl shape planar instead of curved one -c CONFIG CONFIG, --config CONFIG CONFIG pair: name of the config file with presets, name of the preset
Roadmap
- Load and store image
- Apply basic image processing filters
- Scale the image using given dpi
- Create filter library with more filters
- Add more suitable filters to the library
- Use presets from config files
- Add the option to save current filter preset to config file
- Add the option to modify filter parameters
- Convert the processed image to stl lithophane
- Add the option to curve the lithophane into the shape of a finger
- Add the option to map the fingerprint onto a given 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