From 3949767a88ad8a9060cbf28e585d2d304b72e6fd Mon Sep 17 00:00:00 2001
From: Olegs NIKISINS <onikisins@italix03.idiap.ch>
Date: Mon, 16 Oct 2017 15:48:06 +0200
Subject: [PATCH] Added the doc and tests and config for the putvein database

---
 bob/bio/vein/configurations/putvein.py | 56 ++++++++++++++++++++++++++
 bob/bio/vein/tests/test_databases.py   | 11 +++++
 doc/links.rst                          |  2 +-
 doc/references.rst                     |  3 ++
 doc/resources.rst                      | 10 +++++
 setup.py                               |  1 +
 test-requirements.txt                  |  1 +
 7 files changed, 83 insertions(+), 1 deletion(-)
 create mode 100644 bob/bio/vein/configurations/putvein.py

diff --git a/bob/bio/vein/configurations/putvein.py b/bob/bio/vein/configurations/putvein.py
new file mode 100644
index 0000000..f8e2325
--- /dev/null
+++ b/bob/bio/vein/configurations/putvein.py
@@ -0,0 +1,56 @@
+#!/usr/bin/env python
+# vim: set fileencoding=utf-8 :
+# Mon 26 Sep 2016 17:21:42 CEST
+
+"""`PUT Vein`_ is a database for biometric palm and wrist vein recognition.
+
+PUT Vein pattern database consists of 2400 images presenting human vein patterns.
+Half of images (1200 images) contain a palm vein pattern and the remaining images contain a wrist vein pattern (another 1200 images).
+Data was acquired from both hands of 50 students. Thus, it has 100 different patterns for palm and wrist region.
+Pictures ware taken in 3 series, 4 pictures each, with at least one week interval between each series.
+Images in database have 1280x960 resolution and are stored as 24-bit bitmap. Database consist of 2 main splits:
+hand and wrist, allowing to investigate both modalities.
+The reference citation is [KK10]_.
+
+You can download the raw data of the `PUT Vein`_ database by following
+the link.
+"""
+
+from ..database.putvein import PutveinBioDatabase
+
+_putvein_directory = "[YOUR_PUTVEIN_IMAGE_DIRECTORY]"
+"""Value of ``~/.bob_bio_databases.txt`` for this database"""
+
+database = PutveinBioDatabase(
+    original_directory = _putvein_directory,
+    original_extension = '.bmp',
+    )
+"""The :py:class:`bob.bio.base.database.BioDatabase` derivative with PUT Vein
+database settings
+
+.. warning::
+
+   This class only provides a programmatic interface to load data in an orderly
+   manner, respecting usage protocols. It does **not** contain the raw
+   datafiles. You should procure those yourself.
+
+Notice that ``original_directory`` is set to ``[YOUR_PUTVEIN_IMAGE_DIRECTORY]``.
+You must make sure to create ``${HOME}/.bob_bio_databases.txt`` setting this
+value to the place where you actually installed the PUT Vein Database, as
+explained in the section :ref:`bob.bio.vein.baselines`.
+"""
+
+protocol = 'wrist-LR_1'
+"""The default protocol to use for tests
+
+You may modify this at runtime by specifying the option ``--protocol`` on the
+command-line of ``verify.py`` or using the keyword ``protocol`` on a
+configuration file that is loaded **after** this configuration resource.
+"""
+
+
+
+
+
+
+
diff --git a/bob/bio/vein/tests/test_databases.py b/bob/bio/vein/tests/test_databases.py
index 7b60e95..e3adf5c 100644
--- a/bob/bio/vein/tests/test_databases.py
+++ b/bob/bio/vein/tests/test_databases.py
@@ -42,3 +42,14 @@ def test_fv3d():
     except IOError as e:
         raise SkipTest(
             "The database could not queried; probably the db.sql3 file is missing. Here is the error: '%s'" % e)
+
+
+@db_available('putvein')
+def test_putvein():
+    module = bob.bio.base.load_resource('putvein', 'config',
+        preferred_package='bob.bio.vein')
+    try:
+        check_database(module.database, protocol='wrist-LR_1', groups=('dev',))
+    except IOError as e:
+        raise SkipTest(
+            "The database could not queried; probably the db.sql3 file is missing. Here is the error: '%s'" % e)
\ No newline at end of file
diff --git a/doc/links.rst b/doc/links.rst
index 54efc7b..976477b 100644
--- a/doc/links.rst
+++ b/doc/links.rst
@@ -15,7 +15,7 @@
 .. _vera fingervein: https://www.idiap.ch/dataset/vera-fingervein
 .. _3d fingervein: https://www.idiap.ch/dataset/3d-fingervein
 .. _utfvp: http://scs.ewi.utwente.nl/downloads/show,Finger%20Vein/
-.. _put: http://biometrics.put.poznan.pl/vein-dataset/
+.. _put vein: http://biometrics.put.poznan.pl/vein-dataset/
 .. _installation: https://www.idiap.ch/software/bob/install
 .. _dependencies: https://gitlab.idiap.ch/bob/bob/wikis/Dependencies
 .. _mailing list: https://www.idiap.ch/software/bob/discuss
diff --git a/doc/references.rst b/doc/references.rst
index f9ac086..fad3f3a 100644
--- a/doc/references.rst
+++ b/doc/references.rst
@@ -24,3 +24,6 @@
 .. [TVM14] *Pedro Tome, Matthias Vanoni and Sébastien Marcel*, **On the Vulnerability of Finger Vein Recognition to Spoofing**, in: IEEE International Conference of the Biometrics Special Interest Group (BIOSIG), Darmstadt, Germay, pages 1 - 10, IEEE, 2014
 
 .. [TV13] *B. Ton and R. Veldhuis*, **A high quality finger vascular pattern dataset collected using a custom designed capturing device**, in: IAPR International Conference on Biometrics (ICB), 2013.
+
+.. [KK10] *R. Kabacinski and *M. Kowalski, **Human Vein Pattern Segmentation from Low Quality Images - A Comparison of Methods**, in: Image Processing and Communications Challenges 2, pp. 105-112, 2010.
+
diff --git a/doc/resources.rst b/doc/resources.rst
index 13af433..7da970a 100644
--- a/doc/resources.rst
+++ b/doc/resources.rst
@@ -52,6 +52,16 @@ UTFVP Database
 .. automodule:: bob.bio.vein.configurations.fv3d
    :members:
 
+
+.. _bob.bio.vein.resources.database.putvein:
+
+PUT Vein Databas
+======================
+
+.. automodule:: bob.bio.vein.configurations.putvein
+   :members:
+
+
 .. _bob.bio.vein.resources.recognition:
 
 Recognition Systems
diff --git a/setup.py b/setup.py
index 26e7228..e7914ad 100644
--- a/setup.py
+++ b/setup.py
@@ -36,6 +36,7 @@ setup(
         'verafinger = bob.bio.vein.configurations.verafinger',
         'utfvp = bob.bio.vein.configurations.utfvp',
         'fv3d = bob.bio.vein.configurations.fv3d',
+        'putvein = bob.bio.vein.configurations.putvein',
 
         # baselines
         'mc = bob.bio.vein.configurations.maximum_curvature',
diff --git a/test-requirements.txt b/test-requirements.txt
index b0e16a2..69f4eac 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -1,3 +1,4 @@
 bob.db.utfvp
 bob.db.verafinger
 bob.db.fv3d
+bob.db.putvein
-- 
GitLab