# About this Project This application has been developed as a part of bachelor's thesis at Brno University of Technology - Faculty of Information Technology (BUT FIT). The topic of this thesis was **Generating a 3D Fingerprint Model** from input fingerprint image. This application consists of two main parts. The first part of the application uses custom filter library to apply image filters to enhance fingerprint images. This library consists of several filters imported from image processing modules. The second part uses the processed image to make a 3D model of the fingerprint. The model can then be used to print an accurate representation of human fingerprint using a 3D printer. This model can either be planar, curved or mapped to a finger model. # Prerequisites For now this has only been tested on Ubuntu gnu/linux machines. It should however be possible to run it in on most distributions, WSL and virtual machines of most linux distributions. This guide is for Ubuntu machines only. 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 sudo apt install python3.10 ``` * **virtualenv** package for virtual enviroment creation, other packages are installed automatically later ```sh pip install virtualenv ``` # Installation This will install the application and its components into the Documents directory. It will also install several required python packages, including **venv**, which is used to create a virtual enviroment. Just paste and these commands into the command line. 1. Go to a suitable installation folder, for example **Documents**: ```sh cd /home/username/Documents ``` 2. Clone the repository to this directory: ```sh git clone https://strade.fit.vutbr.cz/git/xlanro00/BP_DP-xlanro00.git ``` 3. Go inside the newly created directory: ```sh cd BP_DP-xlanro00 ``` 4. Create and activate the virtual enviroment: ```sh virtualenv .venv && source .venv/bin/activate ``` 5. Automatically install required python modules from **requirements.txt**: ```sh pip install -r requirements.txt ``` Now, you are all set to run the application. Examples of how to do this are shown in the section bellow. # Filtering images Once all the requirements are installed, the application is ready to use. Fingerprint sample is located in res/examples, its name is Palec_P4.tif. * You will need to enter the virtual enviroment every time you want to use the application. ```sh source .venv/bin/activate ``` * The application requires **input** and **output filenames** including path from the root project directory, **dpi** and **filter list** as shown bellow. ```sh python3 src/main.py input_file output_file dpi filters ``` There are two ways to enter the filters: 1. manually list all filter names and their parameters on the **command line**: ```sh python3 src/main.py res/examples/Palec_P4.tif res/examples/Palec_P4_from_cline.png 600 total_variation weight=0.15 median ksize=5 ``` 2. load them from preset in a JSON **configuration file**, that can be used to tune and modify existing presets, or create new ones: ```sh python3 src/main.py res/examples/Palec_P4.tif res/examples/Palec_P4_from_preset.png 600 --config conf/conf.json new_ridge ``` # Configuration and presets There is an option to input the filter series as a preset from JSON configuration file. Here the presets are stored and are ready to be used whenever needed. You can usehow many filters you need as long as you like the output. It is therefore highly recommended to check the output after every preset change. Filter used in the example above is listed bellow, along with the general form of configuration file.
General format | Woking example |
---|---|
|
|
Error message | Solution |
---|---|
main.py: error: the following arguments are required: input_file, output_file, dpi, filters | You probably forgot to include some of the required arguments. |
ERROR: Input file res/Palec_P14.tif does not exist | The file you want to process does not exist, check the filename again. |
ERROR: Config file not found | The config file you want to load config from does not exist, check the filename again. |
ERROR: Preset not found in config file | The preset is not present in selected config file, check the file again or select the correct config file. |
ERROR: Filter undefined_filter not found | One of the filters from command line is not defined in the library, check its name. |
ERROR: Unrecognized generation mode | The first parameter of stl generation should be p, c or m, check it again. |
ERROR: Line depth must be less than plate thickness | When generating a cast, the depth must be less than the base plate thckness, otherwise it would have holes on the other side. |
ERROR: Depth of plate height must be positive | Cannot generate negative base plate thickness, check order of arguments. |
ERROR: Base and line height must both be positive | In curved generation any negative argument is an error, casts are only for planar mode. |
ERROR: Fingerprint image is outside of the finger model | Outside of range of the finger, fingerprint cannot be mapped to nothing. Try to change finger_x, finger_y and finger_z parameters. |