Added working example to readme.

master
Rostislav Lán 2 years ago
parent 7e45cf4a5b
commit d68471e1a9

@ -15,50 +15,88 @@ 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 * python version 3.10 is a requirement might work on earlier python 3 versions
```sh ```sh
apt install python3.10 sudo apt install python3.10
``` ```
* python graphical modules * virtualenv for virtual enviroment creation
```sh ```sh
pip install numpy==1.23.3 matplotlib==3.5.3 opencv-python=4.7.0.72 pip install virtualenv
stl==0.0.3 scikit-image==0.19.3
``` ```
# Installation # Installation
Installation is relatively fast and easy. 1. Go to a suitable installation folder, for example Documents.
```sh
cd /home/username/Documents
```
1. Clone the repository 2. Clone the repository to a suitable directory, for example
```sh ```sh
git clone ssh://git@strade.fit.vutbr.cz:3022/xlanro00/BP_DP-xlanro00.git git clone ssh://git@strade.fit.vutbr.cz:3022/xlanro00/BP_DP-xlanro00.git
``` ```
2. Prepare an image file containing fingerprint 3. Go inside cloned directory
```sh
cd BP_DP-xlanro00
```
v
4. Create and enter the virtual enviroment.
```sh
virtualenv .venv && source .venv/bin/activate
```
3. Run the application 5. Install required python modules from requirements.txt.
```sh
pip install -r requirements.txt
```
6. 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 # Filtering images
Once all the requirements are installed, the program is ready to use. There are two ways to enter filters: Once all the requirements are installed, the program is ready to use. There are two ways to enter the filters:
* manually from command line, list filter names and parameters 1. manually list filter names and parameters from command line
```sh ```sh
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 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
``` ```
* manually from preset saved in a json config file, that can be used to create new presets
2. from preset saved in a json config file, that can be used to tune and modify existing presetrs, or create new ones
```sh ```sh
python src/main.py res/test_fp.png res/test_fp_cpy.png 100 --config config/config.json weak python3 src/main.py res/examples/Palec_P4.tif res/examples/Palec_P4_from_preset.png 600 --config config/config.json git_example
``` ```
# Configuration # Configuration and presets
There is an option to input the filter series as a preset to json configuration file. There is an option to input the filter series as a preset from json configuration file.
```diff ```diff
{ {
"weak": [ "preset": [
{
"name": "filter_name",
"parameter": value,
"parameter": value
},
{
"name": "filter_name",
"parameter": value
}
],
"preset": [
...
]
...
}
```
For example
```diff
{
"git_example": [
{ {
"name": "denoise_tv_chambolle", "name": "denoise_tv_chambolle",
"weight": 0.01, "weight": 0.01,
@ -67,16 +105,59 @@ There is an option to input the filter series as a preset to json configuration
{ {
"name": "median", "name": "median",
"ksize": 3 "ksize": 3
}, }
],
"strong": [
...
] ]
...
} }
``` ```
All the filters used and their parameters will be described in documentation. 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 # Comparison
@ -99,25 +180,59 @@ It is possible to generate 3D printable stl model using `--stl` switch, which re
In base mode the output model will be a curved finger model, with optional parameters following the filename controlling its shape. 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. 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.
* Example planar stl generation * General form for curved stl generation
```sh
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
```sh ```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 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 # Generating planar finger model
Using `-p` switch makes the generated model planar. This is not the main goal of the application. 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. Optional parameters are model base thickness and papilar lines height, they are set after stl file name.
* Example curved stl generation * General form for planar stl generation
```sh
python3 src/main.py input_file output_file dpi --config config_file preset --stl height_line height_base -p
```
* Working example planar stl generation
```sh ```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 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 # Mapping to existing finger model
This section will be added later, (if implemented) mapping of fingerprint to a given 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 # Roadmap
- [x] Load and store image - [x] Load and store image
@ -130,7 +245,7 @@ This section will be added later, (if implemented) mapping of fingerprint to a g
- [X] Add the option to modify filter parameters - [X] Add the option to modify filter parameters
- [X] Convert the processed image to stl lithophane - [X] Convert the processed image to stl lithophane
- [X] Add the option to curve the lithophane into the shape of a finger - [X] Add the option to curve the lithophane into the shape of a finger
- [ ] Add the option to map the lithophane on a given finger model - [ ] Add the option to map the fingerprint onto a given finger model
- [X] Export final model ready for 3D print - [X] Export final model ready for 3D print
# #

Loading…
Cancel
Save