diff --git a/README.md b/README.md index 43c9bba..c9fd020 100644 --- a/README.md +++ b/README.md @@ -294,7 +294,7 @@ third the rate of curvature along x axis `curv_rate_x` and the third is the rate * 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 new_ridge --stl c 2 10 2 2 + python3 src/main.py res/examples/Palec_P4.tif res/examples/Palec_P4_from_preset.png 600 --config conf/conf.json new_ridge --stl c 2 10 2 2 ``` # Generating planar finger model @@ -311,7 +311,7 @@ Optional parameters are height of the papilar lines and base thickness. * Working example of planar stl generation: ``` - python3 src/main.py res/examples/Palec_P4.tif res/examples/Palec_P4_from_preset.png 600 --config config/config.json new_ridge --stl p 2 10 + python3 src/main.py res/examples/Palec_P4.tif res/examples/Palec_P4_from_preset.png 600 --config conf/conf.json new_ridge --stl p 2 10 ``` # Mapping to existing finger model @@ -331,7 +331,7 @@ The last parameter `finger_model` allows the user to choose custom finger model. * Working example of finger mapping ``` - python3 src/main.py res/examples/Palec_P4.tif res/examples/Palec_P4.png 600 --config conf/conf.json new_ridge --stl m 0.2 2 0 0 0 res/finger_backup/finger-mod.stl + python3 src/main.py res/examples/Palec_P4.tif res/examples/Palec_P4.png 600 --config conf/conf.json new_ridge --stl m 0.2 2 0 0 0 res/finger_backup/finger.stl ``` @@ -344,7 +344,7 @@ When in doubt, you can always check the help with: Which will print out the following message. ``` -usage: main.py [-h] [-m | --mirror | --no-mirror] input_file output_file dpi ([-c | --config config_file preset] | [filters ...]) [-s | --stl_file p height_line height_base | --stl_file c height_line height_base curv_rate_x curv_rate_y | --stl m height_line iter finger_x finger_y finger_z finger_model [-d | --database database_filename] +usage: main.py [-h] [-m | --mirror | --no-mirror] input_file output_file dpi ([-c | --config config_file preset] | [filters ...]) [-s | --stl p height_line height_base | --stl c height_line height_base curv_rate_x curv_rate_y | --stl m height_line iter finger_x finger_y finger_z finger_model] [-d | --database database_filename] Program for processing a 2D image into 3D fingerprint. @@ -359,10 +359,13 @@ 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 ...] + -s [STL ...], --stl [STL ...] create stl model from processed image - -c CONFIG CONFIG, --config CONFIG CONFIG + -c CONFIG CONFIG, --config CONFIG CONFIG pair: name of the config file with presets, name of the preset + -d DATABASE, --database DATABASE + switch to store presets in config database + ``` # Troubleshooting diff --git a/docs/build/.doctrees/environment.pickle b/docs/build/.doctrees/environment.pickle index 8e47fde..9dbf342 100644 Binary files a/docs/build/.doctrees/environment.pickle and b/docs/build/.doctrees/environment.pickle differ diff --git a/docs/build/.doctrees/filtering.doctree b/docs/build/.doctrees/filtering.doctree index 2388ebf..2d44b24 100644 Binary files a/docs/build/.doctrees/filtering.doctree and b/docs/build/.doctrees/filtering.doctree differ diff --git a/docs/build/.doctrees/generation.doctree b/docs/build/.doctrees/generation.doctree index 6e529cf..6740710 100644 Binary files a/docs/build/.doctrees/generation.doctree and b/docs/build/.doctrees/generation.doctree differ diff --git a/docs/build/.doctrees/usage.doctree b/docs/build/.doctrees/usage.doctree index cac8dcd..91e91e7 100644 Binary files a/docs/build/.doctrees/usage.doctree and b/docs/build/.doctrees/usage.doctree differ diff --git a/docs/build/_sources/filtering.rst.txt b/docs/build/_sources/filtering.rst.txt index 69bb869..c516432 100644 --- a/docs/build/_sources/filtering.rst.txt +++ b/docs/build/_sources/filtering.rst.txt @@ -34,4 +34,4 @@ There are two ways to enter the filters: .. code-block:: - (.venv)$ python3 src/main.py res/examples/Palec_P4.tif res/examples/Palec_P4_from_preset.png 600 --config conf/conf.json git_example + (.venv)$ python3 src/main.py res/examples/Palec_P4.tif res/examples/Palec_P4_from_preset.png 600 --config conf/conf.json new_ridge diff --git a/docs/build/_sources/generation.rst.txt b/docs/build/_sources/generation.rst.txt index 9e49155..9fef63b 100644 --- a/docs/build/_sources/generation.rst.txt +++ b/docs/build/_sources/generation.rst.txt @@ -26,7 +26,7 @@ third the rate of curvature along x axis `curv_rate_x` and the third is the rate .. code-block:: console - $ python3 src/main.py res/examples/Palec_P4.tif res/examples/Palec_P4_from_preset.png 600 --config config/config.json git_example --stl c 2 10 2 2 + $ python3 src/main.py res/examples/Palec_P4.tif res/examples/Palec_P4_from_preset.png 600 --config conf/conf.json new_ridge --stl c 2 10 2 2 Generating planar finger model ----------------------------------- @@ -44,7 +44,7 @@ Optional parameters are height of the papilar lines and base thickness. .. code-block:: - $ python3 src/main.py res/examples/Palec_P4.tif res/examples/Palec_P4_from_preset.png 600 --config config/config.json git_example --stl p 2 10 + $ python3 src/main.py res/examples/Palec_P4.tif res/examples/Palec_P4_from_preset.png 600 --config conf/conf.json new_ridge --stl p 2 10 Mapping fingerprint to existing finger model -------------------------------------------- @@ -52,19 +52,19 @@ Mapping fingerprint to existing finger model Using `m` mode modifies the preexisting finger model to contain fingerprint. First optional parameter is papilar line height `height_line`, second is the number of iterations `iter` to make the finger mesh denser. Higher number of itertions results in denser finger mesh and better result. -The last three parameters are axis offsets for the finger, `finger_x`, `finger_y`, `finger_z`. -These control the location of the finger. They need to be set only if the user wants to move core of the print closer to the center of the finger. +The next three parameters are axis offsets for the finger, `finger_x`, `finger_y`, `finger_z`. +These control the location of the finger. They need to be set only if the user wants to move core of the print closer to the center of the finger model. The last parameter `finger_model` allows the user to choose custom finger model. * General command form for mapped stl generation .. code-block:: console - $ python3 src/main.py input_file output_file dpi --config config_file preset --stl m height_line iter finger_x finger_y finger_z + $ python3 src/main.py input_file output_file dpi --config config_file preset --stl m height_line iter finger_x finger_y finger_z finger_model * Working example of finger mapping .. code-block:: console - $ python3 src/main.py res/examples/Palec_P4.tif res/examples/Palec_P4.png 600 --config conf/conf.json ridge --stl m 0.2 2 0 0 0 + $ python3 src/main.py res/examples/Palec_P4.tif res/examples/Palec_P4.png 600 --config conf/conf.json new_ridge --stl m 0.2 2 0 0 0 res/finger_backup/finger.stl diff --git a/docs/build/_sources/usage.rst.txt b/docs/build/_sources/usage.rst.txt index d6043a8..b21f1c5 100644 --- a/docs/build/_sources/usage.rst.txt +++ b/docs/build/_sources/usage.rst.txt @@ -20,7 +20,7 @@ Which will print out the following message. output_file dpi ([-c | --config config_file preset] | [filters ...]) [-s | --stl_file p height_line height_base | --stl_file c height_line height_base curv_rate_x curv_rate_y | - --stl m height_line iter finger_x finger_y finger_z] + --stl m height_line iter finger_x finger_y finger_z finger_model] [-d | --database database_filename] Program for processing a 2D image into 3D fingerprint. diff --git a/docs/build/filtering.html b/docs/build/filtering.html index a076b96..841c562 100644 --- a/docs/build/filtering.html +++ b/docs/build/filtering.html @@ -230,7 +230,7 @@ Fingerprint sample is located in res/examples, its name is Palec_P4.tif.

  1. load them from preset in a JSON configuration file, that can be used to tune and modify existing presets, or create new ones:

-
(.venv)$ python3 src/main.py res/examples/Palec_P4.tif res/examples/Palec_P4_from_preset.png 600 --config conf/conf.json git_example
+
(.venv)$ python3 src/main.py res/examples/Palec_P4.tif res/examples/Palec_P4_from_preset.png 600 --config conf/conf.json new_ridge
 
diff --git a/docs/build/generation.html b/docs/build/generation.html index 2865587..8edc7dd 100644 --- a/docs/build/generation.html +++ b/docs/build/generation.html @@ -221,7 +221,7 @@ third the rate of curvature along x axis curv_rate_x and the third
  • 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 c 2 10 2 2
+
$ python3 src/main.py res/examples/Palec_P4.tif res/examples/Palec_P4_from_preset.png 600 --config conf/conf.json new_ridge --stl c 2 10 2 2
 
@@ -238,7 +238,7 @@ Optional parameters are height of the papilar lines and base thickness.

  • Working example of 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 p 2 10
+
$ python3 src/main.py res/examples/Palec_P4.tif res/examples/Palec_P4_from_preset.png 600 --config conf/conf.json new_ridge --stl p 2 10
 
@@ -246,18 +246,18 @@ Optional parameters are height of the papilar lines and base thickness.

Mapping fingerprint to existing finger model#

Using m mode modifies the preexisting finger model to contain fingerprint. First optional parameter is papilar line height height_line, second is the number of iterations iter to make the finger mesh denser. Higher number of itertions results in denser finger mesh and better result. -The last three parameters are axis offsets for the finger, finger_x, finger_y, finger_z. -These control the location of the finger. They need to be set only if the user wants to move core of the print closer to the center of the finger.

+The next three parameters are axis offsets for the finger, finger_x, finger_y, finger_z. +These control the location of the finger. They need to be set only if the user wants to move core of the print closer to the center of the finger model. The last parameter finger_model allows the user to choose custom finger model.

  • General command form for mapped stl generation

-
$ python3 src/main.py input_file output_file dpi --config config_file preset --stl m height_line iter finger_x finger_y finger_z
+
$ python3 src/main.py input_file output_file dpi --config config_file preset --stl m height_line iter finger_x finger_y finger_z finger_model
 
  • Working example of finger mapping

-
$ python3 src/main.py res/examples/Palec_P4.tif res/examples/Palec_P4.png 600 --config conf/conf.json ridge --stl m 0.2 2 0 0 0
+
$ python3 src/main.py res/examples/Palec_P4.tif res/examples/Palec_P4.png 600 --config conf/conf.json new_ridge --stl m 0.2 2 0 0 0 res/finger_backup/finger.stl
 
diff --git a/docs/build/searchindex.js b/docs/build/searchindex.js index 684481e..db70b83 100644 --- a/docs/build/searchindex.js +++ b/docs/build/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["config", "config_parser", "filter_list", "filtering", "filters", "generation", "index", "installation", "log", "main", "modules", "stl_parser", "troubleshooting", "usage"], "filenames": ["config.rst", "config_parser.rst", "filter_list.rst", "filtering.rst", "filters.rst", "generation.rst", "index.rst", "installation.rst", "log.rst", "main.rst", "modules.rst", "stl_parser.rst", "troubleshooting.rst", "usage.rst"], "titles": ["Configuration and presets", "config_parser module", "Available filters with parameters", "Filtering images", "filters module", "Generating fingerprint models", "Generov\u00e1n\u00ed 3D modelu otisku prstu", "Installation", "log module", "main module", "src", "stl_parser module", "Troubleshooting", "Usage"], "terms": {"There": [0, 3], "i": [0, 1, 2, 3, 4, 5, 7, 9, 12], "an": [0, 2, 6, 9, 12], "option": [0, 5, 13], "input": [0, 3, 6, 9, 12, 13], "filter": [0, 1, 6, 9, 10, 12, 13], "seri": 0, "from": [0, 1, 3, 4, 6, 7, 9, 12, 13], "json": [0, 3, 5], "file": [0, 1, 3, 9, 11, 12, 13], "here": 0, "ar": [0, 1, 3, 5, 7, 12], "store": [0, 1, 9], "readi": [0, 3], "us": [0, 2, 3, 4, 5, 6, 7, 9, 13], "whenev": 0, "need": [0, 3, 5, 7, 9], "you": [0, 3, 7, 12, 13], "can": [0, 3, 6, 13], "usehow": 0, "mani": 0, "long": [0, 9], "like": 0, "output": [0, 3, 5, 9, 13], "It": [0, 5, 7], "therefor": 0, "highli": 0, "recommend": 0, "check": [0, 9, 12, 13], "after": 0, "everi": [0, 3], "chang": [0, 12], "exampl": [0, 3, 5, 7], "abov": 0, "list": [0, 1, 2, 3, 9, 13], "bellow": [0, 3, 7], "along": [0, 5], "gener": [0, 1, 6, 9, 12], "form": [0, 5, 13], "format": 0, "work": [0, 5, 7], "name": [0, 1, 3, 12, 13], "filter_nam": 0, "paramet": [0, 1, 3, 4, 5, 6, 9, 12, 13], "valu": [0, 1, 2, 4, 9, 13], "git_exampl": [0, 3, 5], "denoise_tv_chambol": [0, 4], "weight": [0, 2, 3], "0": [0, 3, 5, 9], "01": 0, "iter": [0, 5, 9, 13], "1": 0, "median": [0, 2, 3, 4, 6, 10], "ksize": [0, 2, 3], "3": [0, 7], "To": [0, 7], "avoid": 0, "accident": 0, "loss": 0, "inform": [0, 6], "caus": 0, "modifi": [0, 3, 5], "have": [0, 12], "been": [0, 6, 7], "stl": [0, 5, 9, 11, 12, 13], "insid": [0, 7], "db": 0, "thi": [0, 4, 5, 6, 7, 9, 13], "serv": [0, 9], "simpl": 0, "databas": [0, 1, 13], "ad": [0, 2, 9], "hash": [0, 9], "all": [0, 2, 3, 4, 7, 9], "also": [0, 7, 9], "save": [0, 1, 9], "current": [0, 2, 9], "command": [0, 1, 3, 5, 9, 11, 12], "line": [0, 1, 3, 4, 5, 9, 12], "set": [0, 1, 5, 7], "d": [0, 13], "switch": [0, 5, 13], "": [0, 6, 13], "new": [0, 3], "parse_conf": [1, 6, 10], "preset_nam": 1, "param": [1, 4, 8], "config_fil": [1, 5, 13], "pars": [1, 9, 11], "configur": [1, 3, 6], "one": [1, 4, 9], "wa": [1, 6], "specifi": 1, "preset": [1, 3, 5, 6, 12, 13], "load": [1, 3, 12], "dictionari": 1, "path": [1, 3, 13], "config": [1, 3, 5, 12, 13], "parse_param": [1, 6, 10], "none": [1, 9], "These": [1, 5], "later": [1, 7, 9], "default": 1, "method": 1, "appli": [1, 4, 6, 9, 10], "save_preset": [1, 6, 10], "store_to_db": [1, 6, 10], "overview": 2, "implement": [2, 4], "descript": 2, "below": 2, "blur": [2, 4], "int": 2, "kernel": [2, 4], "size": 2, "determin": 2, "how": [2, 7], "larg": 2, "area": 2, "process": [2, 6, 9, 12, 13], "gaussian": [2, 4, 6, 10], "sigma": [2, 4], "standart": 2, "deviat": 2, "further": 2, "pixel": [2, 4], "bilater": [2, 4, 6, 10], "diamet": 2, "neighborhood": 2, "sigmacolor": 2, "differ": 2, "color": [2, 4, 9], "sigmaspac": 2, "bilateral_scikit": [2, 4, 6, 10], "float": 2, "nlmean": [2, 4, 6, 10], "non": [2, 4], "local": [2, 4], "mean": [2, 4], "patch_siz": 2, "patch": 2, "denois": [2, 4], "patch_dist": 2, "distanc": [2, 4], "where": 2, "search": 2, "h": [2, 13], "cut": 2, "off": [2, 7], "higher": [2, 5], "more": [2, 5], "smooth": 2, "imag": [2, 4, 6, 9, 12, 13], "total_vari": [2, 3, 4, 6, 10], "much": [2, 4], "block_match": [2, 4, 6, 10], "unsharp_mask_scikit": [2, 4, 6, 10], "radiu": [2, 4], "amount": [2, 4], "strength": [2, 4], "unsharp": [2, 4], "mask": [2, 4], "farid": [2, 4, 6, 10], "meijer": [2, 4, 6, 10], "sato": [2, 4, 6, 10], "hessian": [2, 4, 6, 10], "invert": [2, 4, 6, 10], "scale_valu": [2, 4, 6, 10], "binar": [2, 4, 6, 10], "threshold": 2, "differenti": 2, "binarize_otsu": [2, 4, 6, 10], "add_margin": [2, 4, 6, 10], "margin": [2, 4], "number": [2, 5], "add": [2, 4, 9], "side": [2, 12], "newli": 2, "erod": [2, 4, 6, 10], "numpi": [2, 9], "matrix": 2, "shape": [2, 5], "dilat": [2, 4, 6, 10], "onc": 3, "requir": [3, 5, 6, 12], "instal": [3, 6], "applic": [1, 3, 4, 6, 7, 8, 9], "fingerprint": [1, 3, 6, 9, 12, 13], "sampl": 3, "locat": [3, 5], "re": [3, 5, 12], "its": [3, 5, 7, 12], "palec_p4": [3, 5], "tif": [3, 5, 12], "enter": [3, 7], "virtual": [3, 7], "enviro": [3, 7], "time": 3, "want": [3, 5, 12], "sourc": [3, 7], "venv": [3, 7], "bin": [3, 7], "activ": [3, 6, 7], "The": [3, 5, 6, 7, 12], "filenam": [3, 5, 9, 12], "includ": [3, 7, 12], "root": 3, "project": [3, 6, 9], "directori": [3, 7], "dpi": [3, 5, 12, 13], "shown": 3, "python3": [3, 5, 7, 13], "src": [3, 5, 6, 13], "main": [3, 5, 6, 10, 11, 12, 13], "py": [3, 5, 11, 12, 13], "input_fil": [3, 5, 12, 13], "output_fil": [3, 5, 12, 13], "two": [3, 6], "wai": 3, "manual": 3, "palec_p4_from_clin": 3, "png": [3, 5], "600": [3, 5], "15": 3, "5": 3, "them": 3, "tune": 3, "exist": [3, 6, 12], "creat": [3, 7, 9, 13], "ones": 3, "palec_p4_from_preset": [3, 5], "conf": [3, 5], "brief": [], "librari": [4, 6, 9, 12], "author": [], "xlanro00": 7, "class": [4, 9], "img": 4, "base": [4, 5, 9, 12], "img_filt": [4, 6, 10], "init": [4, 6, 10], "opencv": [4, 9], "skimag": 4, "denoise_bilater": 4, "averag": 4, "similar": 4, "preserv": 4, "edg": 4, "while": 4, "remov": 4, "unwant": 4, "nois": 4, "slower": 4, "than": [4, 12], "otsu": 4, "_": 4, "block": 4, "match": 4, "bm3d": 4, "veri": 4, "slow": 4, "should": [4, 7, 9, 12], "onli": [4, 5, 7, 12], "small": 4, "morpholog": 4, "oper": 4, "eros": 4, "find": 4, "scikit": 4, "easier": 4, "version": [4, 7], "object": 4, "parent": 4, "bitwise_not": 4, "over": [4, 9], "limit": 4, "5x5": 4, "continu": 4, "ridg": [4, 5], "exctract": 4, "scale": [4, 9], "entir": 4, "rang": [4, 12], "data": [4, 9], "type": [4, 5], "height": [4, 5, 9, 12], "issu": 4, "perform": 4, "total": 4, "variat": 4, "techniqu": 4, "origin": [4, 9], "chambol": 4, "paper": 4, "fine": 4, "detail": 4, "unsharp_mask_pil": [4, 6, 10], "pil": 4, "subtract": 4, "regul": 4, "better": [4, 5], "result": [4, 5], "possibl": [5, 7], "first": [5, 6, 12], "which": [5, 7, 9, 13], "If": [5, 9], "mode": [5, 9, 12], "c": [5, 9, 12, 13], "follow": [5, 12, 13], "control": 5, "papilar": [5, 9], "height_lin": [5, 13], "second": [5, 6], "thick": [5, 12], "height_bas": [5, 13], "third": 5, "rate": 5, "curvatur": 5, "x": 5, "axi": 5, "curv_rate_x": [5, 13], "y": 5, "curv_rate_i": [5, 13], "curvature_x": 5, "curvature_i": 5, "2": 5, "10": [5, 7], "p": [5, 12, 13], "make": [5, 6], "flat": 5, "m": [5, 12, 13], "preexist": 5, "contain": [5, 9], "mesh": [5, 9], "denser": 5, "itert": 5, "last": 5, "three": 5, "offset": [5, 9], "finger_x": [5, 12, 13], "finger_i": [5, 12, 13], "finger_z": [5, 12, 13], "thei": 5, "user": 5, "move": 5, "core": 5, "print": [5, 6, 8, 9, 11, 13], "closer": 5, "center": 5, "ha": [6, 7, 9], "develop": 6, "part": 6, "bachelor": 6, "thesi": 6, "brno": 6, "univers": 6, "technologi": 6, "faculti": 6, "topic": 6, "model": [1, 6, 9, 12, 13], "consist": 6, "custom": 6, "enhanc": 6, "sever": [6, 7], "import": 6, "modul": [6, 7, 10], "accur": 6, "represent": 6, "human": 6, "printer": 6, "either": 6, "planar": [6, 12], "curv": [6, 9, 12], "map": [6, 9, 12], "finger": [6, 9, 12], "still": 6, "under": 6, "get": [6, 9], "start": 6, "avail": 6, "usag": 6, "troubleshoot": 6, "config_pars": [6, 10], "log": [6, 10], "error_exit": [6, 8, 10], "print_messag": [6, 8, 10], "fingerprint_app": [6, 9, 10], "__init__": [6, 9, 10], "parse_argu": [6, 9, 10], "parse_stl": [6, 9, 10], "run_filt": [6, 9, 10], "get_empty_figur": [6, 9, 10], "mirror_imag": [6, 9, 10], "apply_filt": [6, 9, 10], "save_imag": [6, 9, 10], "run_stl": [6, 9, 10], "prepare_heightmap": [6, 9, 10], "write_stl_head": [6, 9, 10], "get_id": [6, 9, 10], "append_fac": [6, 9, 10], "engrave_text": [6, 9, 10], "create_stl_mesh": [6, 9, 10], "create_fac": [6, 9, 10], "make_stl_planar": [6, 9, 10], "make_stl_curv": [6, 9, 10], "make_stl_map": [6, 9, 10], "save_stl": [6, 9, 10], "stl_parser": [6, 10], "test": 7, "ubuntu": 7, "gnu": 7, "linux": 7, "machin": 7, "howev": 7, "most": 7, "distribut": 7, "wsl": 7, "succesfulli": 7, "python": 7, "might": 7, "earlier": 7, "sudo": 7, "apt": 7, "virtualenv": 7, "packag": 7, "creation": 7, "other": [7, 12], "automat": 7, "pip": 7, "compon": 7, "document": 7, "go": 7, "suitabl": 7, "folder": 7, "cd": 7, "home": 7, "usernam": 7, "clone": 7, "repositori": 7, "git": 7, "ssh": 7, "strade": 7, "fit": [7, 9], "vutbr": 7, "cz": 7, "3022": 7, "bp_dp": 7, "txt": 7, "r": 7, "now": 7, "run": [7, 11], "do": 7, "listedin": 7, "section": 7, "function": [8, 9], "error_messag": 8, "given": [8, 9], "error": [8, 12], "messag": [8, 12, 13], "exit": [8, 13], "arg": 8, "kwarg": 8, "stderr": 8, "argument": [9, 11, 12, 13], "argpars": 9, "read": 9, "arrai": 9, "uint8": 9, "grayscal": 9, "call": 9, "return": 9, "empti": 9, "figur": 9, "ax": 9, "dimens": 9, "mirror": [9, 13], "we": [], "posit": [12, 13], "In": [9, 12], "case": 9, "were": 9, "pass": 9, "fig": 9, "render": 9, "heightmap": 9, "255": 9, "Then": 9, "comput": 9, "valid": 9, "prepar": 9, "meshgrid": 9, "point": 9, "coordin": 9, "write": 9, "string": 9, "header": [9, 11], "80": 9, "byte": 9, "so": 9, "shorten": 9, "too": 9, "warn": 9, "truncat": 9, "uniqu": 9, "id": 9, "backsid": 9, "md5": 9, "face": 9, "indic": 9, "engrav": 9, "text": 9, "back": 9, "fill": 9, "draw": 9, "bottom_vert_arr": 9, "bottom": 9, "vertex": 9, "top_vert_arr": 9, "top": 9, "vertic": 9, "vector": 9, "append": 9, "depth": 12, "surfac": 9, "final": 9, "util": 11, "preformat": 11, "solut": 12, "probabl": 12, "forgot": 12, "some": 12, "palec_p14": 12, "doe": 12, "again": 12, "found": 12, "present": 12, "select": 12, "correct": [9, 12], "undefined_filt": 12, "One": 12, "defin": 12, "unrecogn": 12, "must": 12, "less": 12, "plate": 12, "when": [12, 13], "cast": 12, "thckness": 12, "otherwis": 12, "would": 12, "hole": 12, "cannot": 12, "neg": 12, "order": 12, "both": 12, "ani": 12, "outsid": 12, "noth": 12, "try": 12, "doubt": 13, "alwai": 13, "help": 13, "out": 13, "stl_file": 13, "database_filenam": 13, "program": 13, "2d": 13, "3d": [1, 13], "scanner": 13, "filter_name1": 13, "param1": 13, "param2": 13, "filter_name2": 13, "show": 13, "pair": 13, "parser": 1, "cancel": 9, "implicit": 9, "choos": 9, "code": 9, "z": 9}, "objects": {"": [[1, 0, 0, "-", "config_parser"], [4, 0, 0, "-", "filters"], [8, 0, 0, "-", "log"]], "config_parser": [[1, 1, 1, "", "parse_conf"], [1, 1, 1, "", "parse_params"], [1, 1, 1, "", "save_preset"], [1, 1, 1, "", "store_to_db"]], "filters": [[4, 2, 1, "", "add_margin"], [4, 2, 1, "", "bilateral"], [4, 2, 1, "", "bilateral_scikit"], [4, 2, 1, "", "binarize"], [4, 2, 1, "", "binarize_otsu"], [4, 2, 1, "", "block_match"], [4, 2, 1, "", "dilate"], [4, 2, 1, "", "erode"], [4, 2, 1, "", "farid"], [4, 2, 1, "", "gaussian"], [4, 2, 1, "", "hessian"], [4, 2, 1, "", "img_filter"], [4, 2, 1, "", "invert"], [4, 2, 1, "", "median"], [4, 2, 1, "", "meijering"], [4, 2, 1, "", "nlmeans"], [4, 2, 1, "", "sato"], [4, 2, 1, "", "scale_values"], [4, 2, 1, "", "total_variation"], [4, 2, 1, "", "unsharp_mask_pil"], [4, 2, 1, "", "unsharp_mask_scikit"]], "filters.add_margin": [[4, 3, 1, "", "apply"], [4, 3, 1, "", "init"]], "filters.bilateral": [[4, 3, 1, "", "apply"]], "filters.bilateral_scikit": [[4, 3, 1, "", "apply"]], "filters.binarize": [[4, 3, 1, "", "apply"], [4, 3, 1, "", "init"]], "filters.binarize_otsu": [[4, 3, 1, "", "apply"], [4, 3, 1, "", "init"]], "filters.block_match": [[4, 3, 1, "", "apply"]], "filters.dilate": [[4, 3, 1, "", "apply"]], "filters.erode": [[4, 3, 1, "", "apply"]], "filters.farid": [[4, 3, 1, "", "apply"]], "filters.gaussian": [[4, 3, 1, "", "apply"]], "filters.hessian": [[4, 3, 1, "", "apply"]], "filters.invert": [[4, 3, 1, "", "apply"]], "filters.median": [[4, 3, 1, "", "apply"]], "filters.meijering": [[4, 3, 1, "", "apply"]], "filters.nlmeans": [[4, 3, 1, "", "apply"]], "filters.sato": [[4, 3, 1, "", "apply"]], "filters.scale_values": [[4, 3, 1, "", "apply"]], "filters.total_variation": [[4, 3, 1, "", "apply"]], "filters.unsharp_mask_pil": [[4, 3, 1, "", "apply"]], "filters.unsharp_mask_scikit": [[4, 3, 1, "", "apply"]], "log": [[8, 1, 1, "", "error_exit"], [8, 1, 1, "", "print_message"]], "main": [[9, 1, 1, "", "__init__"], [9, 1, 1, "", "append_faces"], [9, 1, 1, "", "apply_filters"], [9, 1, 1, "", "create_faces"], [9, 1, 1, "", "create_stl_mesh"], [9, 1, 1, "", "engrave_text"], [9, 2, 1, "", "fingerprint_app"], [9, 1, 1, "", "get_ID"], [9, 1, 1, "", "get_empty_figure"], [9, 1, 1, "", "make_stl_curved"], [9, 1, 1, "", "make_stl_map"], [9, 1, 1, "", "make_stl_planar"], [9, 1, 1, "", "mirror_image"], [9, 1, 1, "", "parse_arguments"], [9, 1, 1, "", "parse_stl"], [9, 1, 1, "", "prepare_heightmap"], [9, 1, 1, "", "run_filtering"], [9, 1, 1, "", "run_stl"], [9, 1, 1, "", "save_image"], [9, 1, 1, "", "save_stl"], [9, 1, 1, "", "write_stl_header"]], "stl_parser": [[11, 1, 1, "", "stl_parser"]]}, "objtypes": {"0": "py:module", "1": "py:function", "2": "py:class", "3": "py:method"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "function", "Python function"], "2": ["py", "class", "Python class"], "3": ["py", "method", "Python method"]}, "titleterms": {"configur": 0, "preset": 0, "config_pars": 1, "modul": [1, 4, 8, 9, 11], "avail": 2, "filter": [2, 3, 4], "paramet": 2, "imag": 3, "gener": 5, "fingerprint": 5, "model": 5, "curv": 5, "planar": 5, "finger": 5, "map": 5, "exist": 5, "generov\u00e1n\u00ed": 6, "3d": 6, "modelu": 6, "otisku": 6, "prstu": 6, "content": 6, "instal": 7, "requir": 7, "get": 7, "start": 7, "log": 8, "main": 9, "src": 10, "stl_parser": 11, "troubleshoot": 12, "usag": 13}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 57}, "alltitles": {"Configuration and presets": [[0, "configuration-and-presets"]], "Available filters with parameters": [[2, "available-filters-with-parameters"]], "Filtering images": [[3, "filtering-images"]], "Generating fingerprint models": [[5, "generating-fingerprint-models"]], "Generating curved fingerprint model": [[5, "generating-curved-fingerprint-model"]], "Generating planar finger model": [[5, "generating-planar-finger-model"]], "Mapping fingerprint to existing finger model": [[5, "mapping-fingerprint-to-existing-finger-model"]], "Generov\u00e1n\u00ed 3D modelu otisku prstu": [[6, "generovani-3d-modelu-otisku-prstu"]], "Contents": [[6, "contents"]], "Installation": [[7, "installation"]], "Requirements": [[7, "requirements"]], "Getting started": [[7, "getting-started"]], "src": [[10, "src"]], "Troubleshooting": [[12, "troubleshooting"]], "Usage": [[13, "usage"]], "config_parser module": [[1, "module-config_parser"]], "filters module": [[4, "module-filters"]], "log module": [[8, "module-log"]], "main module": [[9, "main-module"]], "stl_parser module": [[11, "stl-parser-module"]]}, "indexentries": {"config_parser": [[1, "module-config_parser"]], "module": [[1, "module-config_parser"], [4, "module-filters"], [8, "module-log"]], "parse_conf() (in module config_parser)": [[1, "config_parser.parse_conf"]], "parse_params() (in module config_parser)": [[1, "config_parser.parse_params"]], "save_preset() (in module config_parser)": [[1, "config_parser.save_preset"]], "store_to_db() (in module config_parser)": [[1, "config_parser.store_to_db"]], "add_margin (class in filters)": [[4, "filters.add_margin"]], "apply() (filters.add_margin method)": [[4, "filters.add_margin.apply"]], "apply() (filters.bilateral method)": [[4, "filters.bilateral.apply"]], "apply() (filters.bilateral_scikit method)": [[4, "filters.bilateral_scikit.apply"]], "apply() (filters.binarize method)": [[4, "filters.binarize.apply"]], "apply() (filters.binarize_otsu method)": [[4, "filters.binarize_otsu.apply"]], "apply() (filters.block_match method)": [[4, "filters.block_match.apply"]], "apply() (filters.dilate method)": [[4, "filters.dilate.apply"]], "apply() (filters.erode method)": [[4, "filters.erode.apply"]], "apply() (filters.farid method)": [[4, "filters.farid.apply"]], "apply() (filters.gaussian method)": [[4, "filters.gaussian.apply"]], "apply() (filters.hessian method)": [[4, "filters.hessian.apply"]], "apply() (filters.invert method)": [[4, "filters.invert.apply"]], "apply() (filters.median method)": [[4, "filters.median.apply"]], "apply() (filters.meijering method)": [[4, "filters.meijering.apply"]], "apply() (filters.nlmeans method)": [[4, "filters.nlmeans.apply"]], "apply() (filters.sato method)": [[4, "filters.sato.apply"]], "apply() (filters.scale_values method)": [[4, "filters.scale_values.apply"]], "apply() (filters.total_variation method)": [[4, "filters.total_variation.apply"]], "apply() (filters.unsharp_mask_pil method)": [[4, "filters.unsharp_mask_pil.apply"]], "apply() (filters.unsharp_mask_scikit method)": [[4, "filters.unsharp_mask_scikit.apply"]], "bilateral (class in filters)": [[4, "filters.bilateral"]], "bilateral_scikit (class in filters)": [[4, "filters.bilateral_scikit"]], "binarize (class in filters)": [[4, "filters.binarize"]], "binarize_otsu (class in filters)": [[4, "filters.binarize_otsu"]], "block_match (class in filters)": [[4, "filters.block_match"]], "dilate (class in filters)": [[4, "filters.dilate"]], "erode (class in filters)": [[4, "filters.erode"]], "farid (class in filters)": [[4, "filters.farid"]], "filters": [[4, "module-filters"]], "gaussian (class in filters)": [[4, "filters.gaussian"]], "hessian (class in filters)": [[4, "filters.hessian"]], "img_filter (class in filters)": [[4, "filters.img_filter"]], "init() (filters.add_margin method)": [[4, "filters.add_margin.init"]], "init() (filters.binarize method)": [[4, "filters.binarize.init"]], "init() (filters.binarize_otsu method)": [[4, "filters.binarize_otsu.init"]], "invert (class in filters)": [[4, "filters.invert"]], "median (class in filters)": [[4, "filters.median"]], "meijering (class in filters)": [[4, "filters.meijering"]], "nlmeans (class in filters)": [[4, "filters.nlmeans"]], "sato (class in filters)": [[4, "filters.sato"]], "scale_values (class in filters)": [[4, "filters.scale_values"]], "total_variation (class in filters)": [[4, "filters.total_variation"]], "unsharp_mask_pil (class in filters)": [[4, "filters.unsharp_mask_pil"]], "unsharp_mask_scikit (class in filters)": [[4, "filters.unsharp_mask_scikit"]], "error_exit() (in module log)": [[8, "log.error_exit"]], "log": [[8, "module-log"]], "print_message() (in module log)": [[8, "log.print_message"]], "built-in function": [[9, "main.__init__"], [9, "main.append_faces"], [9, "main.apply_filters"], [9, "main.create_faces"], [9, "main.create_stl_mesh"], [9, "main.engrave_text"], [9, "main.get_ID"], [9, "main.get_empty_figure"], [9, "main.make_stl_curved"], [9, "main.make_stl_map"], [9, "main.make_stl_planar"], [9, "main.mirror_image"], [9, "main.parse_arguments"], [9, "main.parse_stl"], [9, "main.prepare_heightmap"], [9, "main.run_filtering"], [9, "main.run_stl"], [9, "main.save_image"], [9, "main.save_stl"], [9, "main.write_stl_header"], [11, "stl_parser.stl_parser"]], "main.__init__()": [[9, "main.__init__"]], "main.append_faces()": [[9, "main.append_faces"]], "main.apply_filters()": [[9, "main.apply_filters"]], "main.create_faces()": [[9, "main.create_faces"]], "main.create_stl_mesh()": [[9, "main.create_stl_mesh"]], "main.engrave_text()": [[9, "main.engrave_text"]], "main.fingerprint_app (built-in class)": [[9, "main.fingerprint_app"]], "main.get_id()": [[9, "main.get_ID"]], "main.get_empty_figure()": [[9, "main.get_empty_figure"]], "main.make_stl_curved()": [[9, "main.make_stl_curved"]], "main.make_stl_map()": [[9, "main.make_stl_map"]], "main.make_stl_planar()": [[9, "main.make_stl_planar"]], "main.mirror_image()": [[9, "main.mirror_image"]], "main.parse_arguments()": [[9, "main.parse_arguments"]], "main.parse_stl()": [[9, "main.parse_stl"]], "main.prepare_heightmap()": [[9, "main.prepare_heightmap"]], "main.run_filtering()": [[9, "main.run_filtering"]], "main.run_stl()": [[9, "main.run_stl"]], "main.save_image()": [[9, "main.save_image"]], "main.save_stl()": [[9, "main.save_stl"]], "main.write_stl_header()": [[9, "main.write_stl_header"]], "stl_parser.stl_parser()": [[11, "stl_parser.stl_parser"]]}}) \ No newline at end of file +Search.setIndex({"docnames": ["config", "config_parser", "filter_list", "filtering", "filters", "generation", "index", "installation", "log", "main", "modules", "stl_parser", "troubleshooting", "usage"], "filenames": ["config.rst", "config_parser.rst", "filter_list.rst", "filtering.rst", "filters.rst", "generation.rst", "index.rst", "installation.rst", "log.rst", "main.rst", "modules.rst", "stl_parser.rst", "troubleshooting.rst", "usage.rst"], "titles": ["Configuration and presets", "config_parser module", "Available filters with parameters", "Filtering images", "filters module", "Generating fingerprint models", "Generov\u00e1n\u00ed 3D modelu otisku prstu", "Installation", "log module", "main module", "src", "stl_parser module", "Troubleshooting", "Usage"], "terms": {"There": [0, 3], "i": [0, 1, 2, 3, 4, 5, 7, 9, 12], "an": [0, 2, 6, 9, 12], "option": [0, 5, 13], "input": [0, 3, 6, 9, 12, 13], "filter": [0, 1, 6, 9, 10, 12, 13], "seri": 0, "from": [0, 1, 3, 4, 6, 7, 9, 12, 13], "json": [0, 3, 5], "file": [0, 1, 3, 9, 11, 12, 13], "here": 0, "ar": [0, 1, 3, 5, 7, 12], "store": [0, 1, 9], "readi": [0, 3], "us": [0, 2, 3, 4, 5, 6, 7, 9, 13], "whenev": 0, "need": [0, 3, 5, 7, 9], "you": [0, 3, 7, 12, 13], "can": [0, 3, 6, 13], "usehow": 0, "mani": 0, "long": [0, 9], "like": 0, "output": [0, 3, 5, 9, 13], "It": [0, 5, 7], "therefor": 0, "highli": 0, "recommend": 0, "check": [0, 9, 12, 13], "after": 0, "everi": [0, 3], "chang": [0, 12], "exampl": [0, 3, 5, 7], "abov": 0, "list": [0, 1, 2, 3, 9, 13], "bellow": [0, 3, 7], "along": [0, 5], "gener": [0, 1, 6, 9, 12], "form": [0, 5, 13], "format": 0, "work": [0, 5, 7], "name": [0, 1, 3, 12, 13], "filter_nam": 0, "paramet": [0, 1, 3, 4, 5, 6, 9, 12, 13], "valu": [0, 1, 2, 4, 9, 13], "git_exampl": 0, "denoise_tv_chambol": [0, 4], "weight": [0, 2, 3], "0": [0, 3, 5, 9], "01": 0, "iter": [0, 5, 9, 13], "1": 0, "median": [0, 2, 3, 4, 6, 10], "ksize": [0, 2, 3], "3": [0, 7], "To": [0, 7], "avoid": 0, "accident": 0, "loss": 0, "inform": [0, 6], "caus": 0, "modifi": [0, 3, 5], "have": [0, 12], "been": [0, 6, 7], "stl": [0, 5, 9, 11, 12, 13], "insid": [0, 7], "db": 0, "thi": [0, 4, 5, 6, 7, 9, 13], "serv": [0, 9], "simpl": 0, "databas": [0, 1, 13], "ad": [0, 2, 9], "hash": [0, 9], "all": [0, 2, 3, 4, 7, 9], "also": [0, 7, 9], "save": [0, 1, 9], "current": [0, 2, 9], "command": [0, 1, 3, 5, 9, 11, 12], "line": [0, 1, 3, 4, 5, 9, 12], "set": [0, 1, 5, 7], "d": [0, 13], "switch": [0, 5, 13], "": [0, 6, 13], "new": [0, 3], "parse_conf": [1, 6, 10], "preset_nam": 1, "param": [1, 4, 8], "config_fil": [1, 5, 13], "pars": [1, 9, 11], "configur": [1, 3, 6], "one": [1, 4, 9], "wa": [1, 6], "specifi": 1, "preset": [1, 3, 5, 6, 12, 13], "load": [1, 3, 12], "dictionari": 1, "path": [1, 3, 13], "config": [1, 3, 5, 12, 13], "parse_param": [1, 6, 10], "none": [1, 9], "These": [1, 5], "later": [1, 7, 9], "default": 1, "method": 1, "appli": [1, 4, 6, 9, 10], "save_preset": [1, 6, 10], "store_to_db": [1, 6, 10], "overview": 2, "implement": [2, 4], "descript": 2, "below": 2, "blur": [2, 4], "int": 2, "kernel": [2, 4], "size": 2, "determin": 2, "how": [2, 7], "larg": 2, "area": 2, "process": [2, 6, 9, 12, 13], "gaussian": [2, 4, 6, 10], "sigma": [2, 4], "standart": 2, "deviat": 2, "further": 2, "pixel": [2, 4], "bilater": [2, 4, 6, 10], "diamet": 2, "neighborhood": 2, "sigmacolor": 2, "differ": 2, "color": [2, 4, 9], "sigmaspac": 2, "bilateral_scikit": [2, 4, 6, 10], "float": 2, "nlmean": [2, 4, 6, 10], "non": [2, 4], "local": [2, 4], "mean": [2, 4], "patch_siz": 2, "patch": 2, "denois": [2, 4], "patch_dist": 2, "distanc": [2, 4], "where": 2, "search": 2, "h": [2, 13], "cut": 2, "off": [2, 7], "higher": [2, 5], "more": [2, 5], "smooth": 2, "imag": [2, 4, 6, 9, 12, 13], "total_vari": [2, 3, 4, 6, 10], "much": [2, 4], "block_match": [2, 4, 6, 10], "unsharp_mask_scikit": [2, 4, 6, 10], "radiu": [2, 4], "amount": [2, 4], "strength": [2, 4], "unsharp": [2, 4], "mask": [2, 4], "farid": [2, 4, 6, 10], "meijer": [2, 4, 6, 10], "sato": [2, 4, 6, 10], "hessian": [2, 4, 6, 10], "invert": [2, 4, 6, 10], "scale_valu": [2, 4, 6, 10], "binar": [2, 4, 6, 10], "threshold": 2, "differenti": 2, "binarize_otsu": [2, 4, 6, 10], "add_margin": [2, 4, 6, 10], "margin": [2, 4], "number": [2, 5], "add": [2, 4, 9], "side": [2, 12], "newli": 2, "erod": [2, 4, 6, 10], "numpi": [2, 9], "matrix": 2, "shape": [2, 5], "dilat": [2, 4, 6, 10], "onc": 3, "requir": [3, 5, 6, 12], "instal": [3, 6], "applic": [1, 3, 4, 6, 7, 8, 9], "fingerprint": [1, 3, 6, 9, 12, 13], "sampl": 3, "locat": [3, 5], "re": [3, 5, 12], "its": [3, 5, 7, 12], "palec_p4": [3, 5], "tif": [3, 5, 12], "enter": [3, 7], "virtual": [3, 7], "enviro": [3, 7], "time": 3, "want": [3, 5, 12], "sourc": [3, 7], "venv": [3, 7], "bin": [3, 7], "activ": [3, 6, 7], "The": [3, 5, 6, 7, 12], "filenam": [3, 5, 9, 12], "includ": [3, 7, 12], "root": 3, "project": [3, 6, 9], "directori": [3, 7], "dpi": [3, 5, 12, 13], "shown": 3, "python3": [3, 5, 7, 13], "src": [3, 5, 6, 13], "main": [3, 5, 6, 10, 11, 12, 13], "py": [3, 5, 11, 12, 13], "input_fil": [3, 5, 12, 13], "output_fil": [3, 5, 12, 13], "two": [3, 6], "wai": 3, "manual": 3, "palec_p4_from_clin": 3, "png": [3, 5], "600": [3, 5], "15": 3, "5": 3, "them": 3, "tune": 3, "exist": [3, 6, 12], "creat": [3, 7, 9, 13], "ones": 3, "palec_p4_from_preset": [3, 5], "conf": [3, 5], "brief": [], "librari": [4, 6, 9, 12], "author": [], "xlanro00": 7, "class": [4, 9], "img": 4, "base": [4, 5, 9, 12], "img_filt": [4, 6, 10], "init": [4, 6, 10], "opencv": [4, 9], "skimag": 4, "denoise_bilater": 4, "averag": 4, "similar": 4, "preserv": 4, "edg": 4, "while": 4, "remov": 4, "unwant": 4, "nois": 4, "slower": 4, "than": [4, 12], "otsu": 4, "_": 4, "block": 4, "match": 4, "bm3d": 4, "veri": 4, "slow": 4, "should": [4, 7, 9, 12], "onli": [4, 5, 7, 12], "small": 4, "morpholog": 4, "oper": 4, "eros": 4, "find": 4, "scikit": 4, "easier": 4, "version": [4, 7], "object": 4, "parent": 4, "bitwise_not": 4, "over": [4, 9], "limit": 4, "5x5": 4, "continu": 4, "ridg": 4, "exctract": 4, "scale": [4, 9], "entir": 4, "rang": [4, 12], "data": [4, 9], "type": [4, 5], "height": [4, 5, 9, 12], "issu": 4, "perform": 4, "total": 4, "variat": 4, "techniqu": 4, "origin": [4, 9], "chambol": 4, "paper": 4, "fine": 4, "detail": 4, "unsharp_mask_pil": [4, 6, 10], "pil": 4, "subtract": 4, "regul": 4, "better": [4, 5], "result": [4, 5], "possibl": [5, 7], "first": [5, 6, 12], "which": [5, 7, 9, 13], "If": [5, 9], "mode": [5, 9, 12], "c": [5, 9, 12, 13], "follow": [5, 12, 13], "control": 5, "papilar": [5, 9], "height_lin": [5, 13], "second": [5, 6], "thick": [5, 12], "height_bas": [5, 13], "third": 5, "rate": 5, "curvatur": 5, "x": 5, "axi": 5, "curv_rate_x": [5, 13], "y": 5, "curv_rate_i": [5, 13], "curvature_x": 5, "curvature_i": 5, "2": 5, "10": [5, 7], "p": [5, 12, 13], "make": [5, 6], "flat": 5, "m": [5, 12, 13], "preexist": 5, "contain": [5, 9], "mesh": [5, 9], "denser": 5, "itert": 5, "last": 5, "three": 5, "offset": [5, 9], "finger_x": [5, 12, 13], "finger_i": [5, 12, 13], "finger_z": [5, 12, 13], "thei": 5, "user": 5, "move": 5, "core": 5, "print": [5, 6, 8, 9, 11, 13], "closer": 5, "center": 5, "ha": [6, 7, 9], "develop": 6, "part": 6, "bachelor": 6, "thesi": 6, "brno": 6, "univers": 6, "technologi": 6, "faculti": 6, "topic": 6, "model": [1, 6, 9, 12, 13], "consist": 6, "custom": [5, 6], "enhanc": 6, "sever": [6, 7], "import": 6, "modul": [6, 7, 10], "accur": 6, "represent": 6, "human": 6, "printer": 6, "either": 6, "planar": [6, 12], "curv": [6, 9, 12], "map": [6, 9, 12], "finger": [6, 9, 12], "still": 6, "under": 6, "get": [6, 9], "start": 6, "avail": 6, "usag": 6, "troubleshoot": 6, "config_pars": [6, 10], "log": [6, 10], "error_exit": [6, 8, 10], "print_messag": [6, 8, 10], "fingerprint_app": [6, 9, 10], "__init__": [6, 9, 10], "parse_argu": [6, 9, 10], "parse_stl": [6, 9, 10], "run_filt": [6, 9, 10], "get_empty_figur": [6, 9, 10], "mirror_imag": [6, 9, 10], "apply_filt": [6, 9, 10], "save_imag": [6, 9, 10], "run_stl": [6, 9, 10], "prepare_heightmap": [6, 9, 10], "write_stl_head": [6, 9, 10], "get_id": [6, 9, 10], "append_fac": [6, 9, 10], "engrave_text": [6, 9, 10], "create_stl_mesh": [6, 9, 10], "create_fac": [6, 9, 10], "make_stl_planar": [6, 9, 10], "make_stl_curv": [6, 9, 10], "make_stl_map": [6, 9, 10], "save_stl": [6, 9, 10], "stl_parser": [6, 10], "test": 7, "ubuntu": 7, "gnu": 7, "linux": 7, "machin": 7, "howev": 7, "most": 7, "distribut": 7, "wsl": 7, "succesfulli": 7, "python": 7, "might": 7, "earlier": 7, "sudo": 7, "apt": 7, "virtualenv": 7, "packag": 7, "creation": 7, "other": [7, 12], "automat": 7, "pip": 7, "compon": 7, "document": 7, "go": 7, "suitabl": 7, "folder": 7, "cd": 7, "home": 7, "usernam": 7, "clone": 7, "repositori": 7, "git": 7, "ssh": 7, "strade": 7, "fit": [7, 9], "vutbr": 7, "cz": 7, "3022": 7, "bp_dp": 7, "txt": 7, "r": 7, "now": 7, "run": [7, 11], "do": 7, "listedin": 7, "section": 7, "function": [8, 9], "error_messag": 8, "given": [8, 9], "error": [8, 12], "messag": [8, 12, 13], "exit": [8, 13], "arg": 8, "kwarg": 8, "stderr": 8, "argument": [9, 11, 12, 13], "argpars": 9, "read": 9, "arrai": 9, "uint8": 9, "grayscal": 9, "call": 9, "return": 9, "empti": 9, "figur": 9, "ax": 9, "dimens": 9, "mirror": [9, 13], "we": [], "posit": [12, 13], "In": [9, 12], "case": 9, "were": 9, "pass": 9, "fig": 9, "render": 9, "heightmap": 9, "255": 9, "Then": 9, "comput": 9, "valid": 9, "prepar": 9, "meshgrid": 9, "point": 9, "coordin": 9, "write": 9, "string": 9, "header": [9, 11], "80": 9, "byte": 9, "so": 9, "shorten": 9, "too": 9, "warn": 9, "truncat": 9, "uniqu": 9, "id": 9, "backsid": 9, "md5": 9, "face": 9, "indic": 9, "engrav": 9, "text": 9, "back": 9, "fill": 9, "draw": 9, "bottom_vert_arr": 9, "bottom": 9, "vertex": 9, "top_vert_arr": 9, "top": 9, "vertic": 9, "vector": 9, "append": 9, "depth": 12, "surfac": 9, "final": 9, "util": 11, "preformat": 11, "solut": 12, "probabl": 12, "forgot": 12, "some": 12, "palec_p14": 12, "doe": 12, "again": 12, "found": 12, "present": 12, "select": 12, "correct": [9, 12], "undefined_filt": 12, "One": 12, "defin": 12, "unrecogn": 12, "must": 12, "less": 12, "plate": 12, "when": [12, 13], "cast": 12, "thckness": 12, "otherwis": 12, "would": 12, "hole": 12, "cannot": 12, "neg": 12, "order": 12, "both": 12, "ani": 12, "outsid": 12, "noth": 12, "try": 12, "doubt": 13, "alwai": 13, "help": 13, "out": 13, "stl_file": 13, "database_filenam": 13, "program": 13, "2d": 13, "3d": [1, 13], "scanner": 13, "filter_name1": 13, "param1": 13, "param2": 13, "filter_name2": 13, "show": 13, "pair": 13, "parser": 1, "cancel": 9, "implicit": 9, "choos": [5, 9], "code": 9, "z": 9, "new_ridg": [3, 5], "next": 5, "finger_model": [5, 13], "allow": 5, "finger_backup": 5}, "objects": {"": [[1, 0, 0, "-", "config_parser"], [4, 0, 0, "-", "filters"], [8, 0, 0, "-", "log"]], "config_parser": [[1, 1, 1, "", "parse_conf"], [1, 1, 1, "", "parse_params"], [1, 1, 1, "", "save_preset"], [1, 1, 1, "", "store_to_db"]], "filters": [[4, 2, 1, "", "add_margin"], [4, 2, 1, "", "bilateral"], [4, 2, 1, "", "bilateral_scikit"], [4, 2, 1, "", "binarize"], [4, 2, 1, "", "binarize_otsu"], [4, 2, 1, "", "block_match"], [4, 2, 1, "", "dilate"], [4, 2, 1, "", "erode"], [4, 2, 1, "", "farid"], [4, 2, 1, "", "gaussian"], [4, 2, 1, "", "hessian"], [4, 2, 1, "", "img_filter"], [4, 2, 1, "", "invert"], [4, 2, 1, "", "median"], [4, 2, 1, "", "meijering"], [4, 2, 1, "", "nlmeans"], [4, 2, 1, "", "sato"], [4, 2, 1, "", "scale_values"], [4, 2, 1, "", "total_variation"], [4, 2, 1, "", "unsharp_mask_pil"], [4, 2, 1, "", "unsharp_mask_scikit"]], "filters.add_margin": [[4, 3, 1, "", "apply"], [4, 3, 1, "", "init"]], "filters.bilateral": [[4, 3, 1, "", "apply"]], "filters.bilateral_scikit": [[4, 3, 1, "", "apply"]], "filters.binarize": [[4, 3, 1, "", "apply"], [4, 3, 1, "", "init"]], "filters.binarize_otsu": [[4, 3, 1, "", "apply"], [4, 3, 1, "", "init"]], "filters.block_match": [[4, 3, 1, "", "apply"]], "filters.dilate": [[4, 3, 1, "", "apply"]], "filters.erode": [[4, 3, 1, "", "apply"]], "filters.farid": [[4, 3, 1, "", "apply"]], "filters.gaussian": [[4, 3, 1, "", "apply"]], "filters.hessian": [[4, 3, 1, "", "apply"]], "filters.invert": [[4, 3, 1, "", "apply"]], "filters.median": [[4, 3, 1, "", "apply"]], "filters.meijering": [[4, 3, 1, "", "apply"]], "filters.nlmeans": [[4, 3, 1, "", "apply"]], "filters.sato": [[4, 3, 1, "", "apply"]], "filters.scale_values": [[4, 3, 1, "", "apply"]], "filters.total_variation": [[4, 3, 1, "", "apply"]], "filters.unsharp_mask_pil": [[4, 3, 1, "", "apply"]], "filters.unsharp_mask_scikit": [[4, 3, 1, "", "apply"]], "log": [[8, 1, 1, "", "error_exit"], [8, 1, 1, "", "print_message"]], "main": [[9, 1, 1, "", "__init__"], [9, 1, 1, "", "append_faces"], [9, 1, 1, "", "apply_filters"], [9, 1, 1, "", "create_faces"], [9, 1, 1, "", "create_stl_mesh"], [9, 1, 1, "", "engrave_text"], [9, 2, 1, "", "fingerprint_app"], [9, 1, 1, "", "get_ID"], [9, 1, 1, "", "get_empty_figure"], [9, 1, 1, "", "make_stl_curved"], [9, 1, 1, "", "make_stl_map"], [9, 1, 1, "", "make_stl_planar"], [9, 1, 1, "", "mirror_image"], [9, 1, 1, "", "parse_arguments"], [9, 1, 1, "", "parse_stl"], [9, 1, 1, "", "prepare_heightmap"], [9, 1, 1, "", "run_filtering"], [9, 1, 1, "", "run_stl"], [9, 1, 1, "", "save_image"], [9, 1, 1, "", "save_stl"], [9, 1, 1, "", "write_stl_header"]], "stl_parser": [[11, 1, 1, "", "stl_parser"]]}, "objtypes": {"0": "py:module", "1": "py:function", "2": "py:class", "3": "py:method"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "function", "Python function"], "2": ["py", "class", "Python class"], "3": ["py", "method", "Python method"]}, "titleterms": {"configur": 0, "preset": 0, "config_pars": 1, "modul": [1, 4, 8, 9, 11], "avail": 2, "filter": [2, 3, 4], "paramet": 2, "imag": 3, "gener": 5, "fingerprint": 5, "model": 5, "curv": 5, "planar": 5, "finger": 5, "map": 5, "exist": 5, "generov\u00e1n\u00ed": 6, "3d": 6, "modelu": 6, "otisku": 6, "prstu": 6, "content": 6, "instal": 7, "requir": 7, "get": 7, "start": 7, "log": 8, "main": 9, "src": 10, "stl_parser": 11, "troubleshoot": 12, "usag": 13}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 57}, "alltitles": {"Configuration and presets": [[0, "configuration-and-presets"]], "Available filters with parameters": [[2, "available-filters-with-parameters"]], "Generov\u00e1n\u00ed 3D modelu otisku prstu": [[6, "generovani-3d-modelu-otisku-prstu"]], "Contents": [[6, "contents"]], "Installation": [[7, "installation"]], "Requirements": [[7, "requirements"]], "Getting started": [[7, "getting-started"]], "src": [[10, "src"]], "Troubleshooting": [[12, "troubleshooting"]], "config_parser module": [[1, "module-config_parser"]], "filters module": [[4, "module-filters"]], "log module": [[8, "module-log"]], "main module": [[9, "main-module"]], "stl_parser module": [[11, "stl-parser-module"]], "Filtering images": [[3, "filtering-images"]], "Generating fingerprint models": [[5, "generating-fingerprint-models"]], "Generating curved fingerprint model": [[5, "generating-curved-fingerprint-model"]], "Generating planar finger model": [[5, "generating-planar-finger-model"]], "Mapping fingerprint to existing finger model": [[5, "mapping-fingerprint-to-existing-finger-model"]], "Usage": [[13, "usage"]]}, "indexentries": {}}) \ No newline at end of file diff --git a/docs/build/usage.html b/docs/build/usage.html index b8b6861..bcc044d 100644 --- a/docs/build/usage.html +++ b/docs/build/usage.html @@ -215,7 +215,7 @@ output_file dpi ([-c | --config config_file preset] | [filters ...]) [-s | --stl_file p height_line height_base | --stl_file c height_line height_base curv_rate_x curv_rate_y | ---stl m height_line iter finger_x finger_y finger_z] +--stl m height_line iter finger_x finger_y finger_z finger_model] [-d | --database database_filename] Program for processing a 2D image into 3D fingerprint. diff --git a/docs/source/filtering.rst b/docs/source/filtering.rst index 69bb869..c516432 100644 --- a/docs/source/filtering.rst +++ b/docs/source/filtering.rst @@ -34,4 +34,4 @@ There are two ways to enter the filters: .. code-block:: - (.venv)$ python3 src/main.py res/examples/Palec_P4.tif res/examples/Palec_P4_from_preset.png 600 --config conf/conf.json git_example + (.venv)$ python3 src/main.py res/examples/Palec_P4.tif res/examples/Palec_P4_from_preset.png 600 --config conf/conf.json new_ridge diff --git a/docs/source/generation.rst b/docs/source/generation.rst index 0b0fe2d..9fef63b 100644 --- a/docs/source/generation.rst +++ b/docs/source/generation.rst @@ -26,7 +26,7 @@ third the rate of curvature along x axis `curv_rate_x` and the third is the rate .. code-block:: console - $ python3 src/main.py res/examples/Palec_P4.tif res/examples/Palec_P4_from_preset.png 600 --config config/config.json git_example --stl c 2 10 2 2 + $ python3 src/main.py res/examples/Palec_P4.tif res/examples/Palec_P4_from_preset.png 600 --config conf/conf.json new_ridge --stl c 2 10 2 2 Generating planar finger model ----------------------------------- @@ -44,7 +44,7 @@ Optional parameters are height of the papilar lines and base thickness. .. code-block:: - $ python3 src/main.py res/examples/Palec_P4.tif res/examples/Palec_P4_from_preset.png 600 --config config/config.json git_example --stl p 2 10 + $ python3 src/main.py res/examples/Palec_P4.tif res/examples/Palec_P4_from_preset.png 600 --config conf/conf.json new_ridge --stl p 2 10 Mapping fingerprint to existing finger model -------------------------------------------- @@ -65,6 +65,6 @@ These control the location of the finger. They need to be set only if the user w .. code-block:: console - $ python3 src/main.py res/examples/Palec_P4.tif res/examples/Palec_P4.png 600 --config conf/conf.json ridge --stl m 0.2 2 0 0 0 res/finger_backup/finger-mod.stl + $ python3 src/main.py res/examples/Palec_P4.tif res/examples/Palec_P4.png 600 --config conf/conf.json new_ridge --stl m 0.2 2 0 0 0 res/finger_backup/finger.stl diff --git a/docs/source/usage.rst b/docs/source/usage.rst index b21f1c5..9d0ab41 100644 --- a/docs/source/usage.rst +++ b/docs/source/usage.rst @@ -18,8 +18,8 @@ Which will print out the following message. $ usage: main.py [-h] [-m | --mirror | --no-mirror] input_file output_file dpi ([-c | --config config_file preset] | - [filters ...]) [-s | --stl_file p height_line height_base | - --stl_file c height_line height_base curv_rate_x curv_rate_y | + [filters ...]) [-s | --stl p height_line height_base | + --stl c height_line height_base curv_rate_x curv_rate_y | --stl m height_line iter finger_x finger_y finger_z finger_model] [-d | --database database_filename] @@ -37,8 +37,10 @@ Which will print out the following message. -h, --help show this help message and exit -m, --mirror, --no-mirror switch to mirror input image - -s [STL_FILE ...], --stl_file [STL_FILE ...] + -s [STL ...], --stl [STL ...] create stl model from processed image -c CONFIG CONFIG, --config CONFIG CONFIG pair: name of the config file with presets, name of the preset + -d DATABASE, --database DATABASE + switch to store presets in config database