# Gate6 Iris Recognition Package
   G6_iris_recognition is a module for eye iris recognition.
   
## Installation needs before installing package module 
  ```
     python 
     numpy
     opencv-python
     matplotlib
     opencv-contrib-python
     requests
     scikit-image
     scipy
     imutils==0.5.2
  ```  
  - Create a encodingModel directory & in that directory create a file name irisEncodings.pickle on your project folder (encodingModel/irisEncodings.pickle).
  - Create a Input_database directory & in that directory put person's eye iris images under person's name directory.


```shell

    Project/
    ├── encodingModel/
    │   ├── irisEncodings.pickle/                               # train model
    | 
    ├── Input_database/ 
    │   ├── person1 name/                                       # person1 directory
    |   │   ├── eye iris images of person1 /                    # images of person eye iris
    │   ├── person2 name/                                       # person2 directory
    |   │   ├── eye iris images of person2 /                    # images of person eye iris
    │   ├── person3 name/                                       # person3 directory
    |   │   ├── eye iris images of person3 /                    # images of person eye iris                   
 
```
## Installation

##### - Install Python

[Windows](http://timmyreilly.azurewebsites.net/python-flask-windows-development-environment-setup/), [Mac](http://docs.python-guide.org/en/latest/starting/install/osx/), [Linux](https://docs.aws.amazon.com/cli/latest/userguide/awscli-install-linux-python.html)


##### - Install package module using ``pip``::
  ```
    $ pip install -i https://test.pypi.org/simple/ G6-iris-recognition
  ```  
 
## Run Project

Once all the settings of project are configured, you are ready to run your project. To start import G6_iris_recognition module.

```shell
   import G6_iris_recognition
```

After import, need to train existing images and create encoding module once on start :

```shell
   G6_iris_recognition.iris_test_model(train_database_path,train_encoding_model_path)
   train_database_path        ===>  Input_database/
   train_encoding_model_path  ===>  encodingModel/irisEncodings.pickle
```

Once model is trained then its ready to test with real-time images:

```shell
   iris_name = G6_iris_recognition.iris_recg(test_encoding_model_path,real_time_image_path) 
   test_encoding_model_path   ===>  encodingModel/irisEncodings.pickle
   real_time_image_path       ===>  real-time_image_path
   iris_name                  ===>  it returns predicted person name if image matches with trained image model person image & if not then it returns name as unmatch.
```


## Requirements :

  * Need clearer images from the scanner.
  * Images shouldn't capture on direct sunlight.
  * Person shouldn't use glass or lens on eye scanning.
  * All scanned images need to be on same shapes/size(eg - 320x240).
  * As per image size and quality/noise, need to change parameter of filters according.
  * 90% above eye iris need to be capture on image taken from scanner.
  * Need min 5 clearer images to train a model.
  * After all this done according, set threshold of Hamming Distance to recognize.



## Support

If you face any issue in configuration or usage with Gate6 Iris Recognition Package as per the instruction documented above. Please feel free to communicate with Gate6 Iris Recognition Package development team.

