Enrollment 28.2.0
Loading...
Searching...
No Matches
Iris Directory Reference
Directory dependency graph for Iris:

Directories

 
IrisAttributes

Files

 
Iris.h
 
IrisCapture.h
 
IrisDetector.h
 
IrisExecutor.h
 
IrisPosition.h
 
IrisSegment.h

Detailed Description

The library can be used to detect iris from iris captures.

Overview

The library can be used to detect iris from iris captures. Iris capture can contains entire eye. There MUST be only one iris in capture. Each capture MUST be passed to detector that recognize Iris.

Iris Detection

Prior to further processing the Iris in IrisCapture MUST be detected

Eye Capture

The iris is detected with function IrisCapture::DetectWith.

  • c++
    auto img = Image::Decode(BinaryFile::ReadAll("assets/eye_L.png"));
    const auto ic = IrisCapture::Create(std::move(img), IrisPosition::LEFT_EYE);
    IrisDetector id(cfg);
    auto segment = ic->DetectWith(id);
    const std::string name = "output/iris_L.png";
    segment->iris->image->SaveAs(name);
    auto roundingSegments =
    ic->DrawSegment(*segment, Shapes::InnoBlue, Shapes::InnoBlue);
    roundingSegments->SaveAs("output/iris_rounding_box.png");
  • java
    Image img = Image.Decode(BinaryFile.ReadAll("assets/eye_L.png"));
    IrisCapture capture = new IrisCapture(img, IrisPosition.LEFT_EYE);
    IrisDetector.Config cfg = IrisDetector.Config.Default();
    IrisDetector detector = new IrisDetector(cfg);
    IrisSegment segment = capture.DetectWith(detector);
    Iris iris = segment.getIris();
    iris.getImage().SaveAs("output/iris_L.png");
    Image roundigCircle = capture.DrawSegment(
    segment, Shapes.InnoBlue, Shapes.InnoBlue);
    roundigCircle.SaveAs("output/iris_rounding_box.png");
  • csharp
    Image img = Image.Decode(BinaryFile.ReadAll("assets/eye_L.png"));
    IrisCapture capture = new IrisCapture(img, IrisPosition.LEFT_EYE);
    IrisDetector.Config cfg = IrisDetector.Config.Default();
    IrisDetector detector = new IrisDetector(cfg);
    IrisSegment segment = capture.DetectWith(detector);
    Iris iris = segment.iris;
    iris.image.SaveAs("output/iris_L.png");
    Image roundigCircle =
    capture.DrawSegment(segment, Shapes.InnoBlue, Shapes.InnoBlue);
    roundigCircle.SaveAs("output/iris_rounding_box.png");

The output of example is detected iris

Detected Iris

Extraction

We provide Internal Innovatrics template for Iris. The main goal is to create template for further processing e.g. 1:1 Verification.

  • c++
    auto img = Image::Decode(BinaryFile::ReadAll("assets/eye_L.png"));
    const auto ic = IrisCapture::Create(std::move(img), IrisPosition::LEFT_EYE);
    auto detectorCfg = IrisDetector::Config();
    detectorCfg.SetDetector(IrisDetector::Config::Type::ACCURATE);
    IrisDetector id(detectorCfg);
    // Detect iris
    auto iris = ic->DetectWith(id)->iris;
    auto cfg = IrisExtractorConfig();
    auto irisTemplate = iris->Extract(cfg);
    BinaryFile::WriteAll("output/iris.ics", irisTemplate->data);
    std::cout << " Template Version: " << irisTemplate->GetVersion() << std::endl;
  • java
    Image img = Image.Decode(BinaryFile.ReadAll("assets/eye_L.png"));
    IrisCapture ic = new IrisCapture(img, IrisPosition.LEFT_EYE);
    IrisDetector.Config detectorCfg = new IrisDetector.Config();
    detectorCfg.SetDetector(IrisDetector.Config.Type.ACCURATE);
    IrisDetector id = new IrisDetector(detectorCfg);
    // Detect iris
    Iris iris = ic.DetectWith(id).getIris();
    IrisExtractorConfig cfg = new IrisExtractorConfig();
    cfg.SetExtractor(IrisExtractorConfig.Type.ACCURATE);
    ExtractedIris irisTemplate = iris.Extract(cfg);
    BinaryFile.WriteAll("output/iris.ics", irisTemplate.getData());
    System.out.println(" Template Version: " + irisTemplate.GetVersion());
  • csharp
    var img = Image.Decode(BinaryFile.ReadAll("assets/eye_L.png"));
    var ic = new IrisCapture(img, IrisPosition.LEFT_EYE);
    var detectorCfg = new IrisDetector.Config();
    detectorCfg.SetDetector(IrisDetector.Config.Type.ACCURATE);
    var id = new IrisDetector(detectorCfg);
    // Detect iris
    var iris = ic.DetectWith(id).iris;
    var cfg = new IrisExtractorConfig();
    cfg.SetExtractor(IrisExtractorConfig.Type.ACCURATE);
    var irisTemplate = iris.Extract(cfg);
    BinaryFile.WriteAll("output/iris.ics", irisTemplate.data);
    System.Console.WriteLine(" Template Version: " + irisTemplate.GetVersion());

1 to 1 Verification

We provide verification of iris templates. The main goal is to calculate Similarity Score for given probe and gallery templates. The examples uses same image for probe and gallery

Iris
  • c++
    auto img = Image::Decode(BinaryFile::ReadAll("assets/eye_L.png"));
    const auto ic = IrisCapture::Create(std::move(img), IrisPosition::LEFT_EYE);
    IrisDetector id;
    auto iris = ic->DetectWith(id)->iris;
    auto probe = iris->Extract();
    auto gallery = iris->Extract();
    auto score = probe->SimilarWith(*gallery);
    std::cout << " Match Score: " << score << std::endl;
  • java
    Image img = Image.Decode(BinaryFile.ReadAll("assets/eye_L.png"));
    IrisCapture ic = new IrisCapture(img, IrisPosition.LEFT_EYE);
    IrisDetector id = new IrisDetector();
    Iris iris = ic.DetectWith(id).getIris();
    ExtractedIris probe = iris.Extract();
    ExtractedIris gallery = iris.Extract();
    long score = probe.SimilarWith(gallery);
    System.out.println(" Match Score: " + score);
  • csharp
    Image img = Image.Decode(BinaryFile.ReadAll("assets/eye_L.png"));
    IrisCapture ic = new IrisCapture(img, IrisPosition.LEFT_EYE);
    IrisDetector id = new IrisDetector();
    Iris iris = ic.DetectWith(id).iris;
    ExtractedIris probe = iris.Extract();
    ExtractedIris gallery = iris.Extract();
    uint score = probe.SimilarWith(gallery);
    System.Console.WriteLine(" Match Score: " + score);

Quality

Template quality is calculated from a iris template. The quality is an integer number between 1 (blank image) and 100 (maximum quality).

  • c++
    auto img = Image::Decode(BinaryFile::ReadAll("assets/eye_L.png"));
    const auto ic = IrisCapture::Create(std::move(img), IrisPosition::LEFT_EYE);
    IrisDetector id;
    auto iris = ic->DetectWith(id)->iris;
    auto irisTemplate = iris->Extract();
    std::cout << " Template Quality: " << +irisTemplate->CalculateQuality()
    << std::endl;
  • java
    Image img = Image.Decode(BinaryFile.ReadAll("assets/eye_L.png"));
    IrisCapture ic = new IrisCapture(img, IrisPosition.LEFT_EYE);
    IrisDetector id = new IrisDetector();
    Iris iris = ic.DetectWith(id).getIris();
    ExtractedIris irisTemplate = iris.Extract();
    System.out.println(" Template Quality: " + irisTemplate.CalculateQuality());
  • csharp
    Image img = Image.Decode(BinaryFile.ReadAll("assets/eye_L.png"));
    IrisCapture ic = new IrisCapture(img, IrisPosition.LEFT_EYE);
    IrisDetector id = new IrisDetector();
    Iris iris = ic.DetectWith(id).iris;
    ExtractedIris irisTemplate = iris.Extract();
    System.Console.WriteLine(" Template Quality: " +
    irisTemplate.CalculateQuality());

ISO Conversion

ISO Image format

It is possible to convert Iris to ISO image compliant with ISO 19794-6:2011 and back from image to IrisCapture.

  • c++
    auto image = Image::Decode(BinaryFile::ReadAll("assets/eye_L.png"));
    IrisAttributes ia;
    ia.SetCaptureDeviceVendorID(IrisCaptureDeviceVendorID(11));
    ia.SetCaptureDeviceTypeID(IrisCaptureDeviceTypeID(7));
    const auto irisCapture =
    IrisDetector irisDetector;
    auto iris = irisCapture->DetectWith(irisDetector)->iris;
    std::cout << " Conversion Iris to ISO image" << std::endl;
    auto encoder = PngImageEncoder();
    auto isoImage = iris->ToIsoImage(encoder);
    std::cout << " Conversion ISO to Iris image" << std::endl;
    auto irisImage = irisCapture->FromIsoImage(isoImage);
  • java
    Image image = Image.Decode(BinaryFile.ReadAll("assets/eye_L.png"));
    IrisAttributes ia = new IrisAttributes();
    ia.SetCaptureDeviceTechnology(IrisCaptureDeviceTechnology.CMOS_CCD);
    ia.SetCaptureDeviceVendorID(new IrisCaptureDeviceVendorID(11));
    ia.SetCaptureDeviceTypeID(new IrisCaptureDeviceTypeID(7));
    IrisCapture irisCapture = new IrisCapture(image, IrisPosition.LEFT_EYE, ia);
    IrisDetector irisDetector = new IrisDetector();
    IrisSegment segment = irisCapture.DetectWith(irisDetector);
    Iris iris = segment.getIris();
    System.out.println(" Conversion Iris to ISO image");
    PngImageEncoder encoder = new PngImageEncoder();
    Bytes isoImage = iris.ToIsoImage(encoder);
    System.out.println(" Conversion ISO to Iris image");
    IrisCapture irisImage = IrisCapture.FromIsoImage(isoImage);
  • csharp
    Image image = Image.Decode(BinaryFile.ReadAll("assets/eye_L.png"));
    IrisAttributes ia = new IrisAttributes();
    ia.SetCaptureDeviceVendorID(new IrisCaptureDeviceVendorID(11));
    ia.SetCaptureDeviceTypeID(new IrisCaptureDeviceTypeID(7));
    IrisCapture irisCapture = new IrisCapture(image, IrisPosition.LEFT_EYE, ia);
    IrisDetector irisDetector = new IrisDetector();
    Iris iris = irisCapture.DetectWith(irisDetector).iris;
    System.Console.WriteLine(" Conversion Iris to ISO image");
    var encoder = new PngImageEncoder();
    var isoImage = iris.ToIsoImage(encoder);
    System.Console.WriteLine(" Conversion ISO to Iris image");
    var irisImage = IrisCapture.FromIsoImage(isoImage);

ISO Masked and Cropped Image

The SDK support masking and cropping detected iris into image that is compliant with ISO/IEC 19794-6:2011. After iris detection use function Iris::GetISO19794IrisImage().

  • c++
    auto image = Image::Decode(BinaryFile::ReadAll("assets/eye_L.png"));
    auto irisCapture = IrisCapture::Create(std::move(image), IrisPosition::LEFT_EYE);
    IrisDetector irisDetector;
    auto iris = irisCapture->DetectWith(irisDetector)->iris;
    auto maskedImage = iris->GetISO19794IrisImage();
    maskedImage->SaveAs("output/eye_L_iso197946.png");
  • java
    Image image = Image.Decode(BinaryFile.ReadAll("assets/eye_L.png"));
    IrisCapture irisCapture = new IrisCapture(image, IrisPosition.LEFT_EYE);
    IrisDetector irisDetector = new IrisDetector();
    IrisSegment segment = irisCapture.DetectWith(irisDetector);
    Iris iris = segment.getIris();
    Image maskedImage = iris.GetISO19794IrisImage();
    maskedImage.SaveAs("output/eye_L_iso197946.png");
  • csharp
    var image = Image.Decode(BinaryFile.ReadAll("assets/eye_L.png"));
    var irisCapture = new IrisCapture(image, IrisPosition.LEFT_EYE);
    var irisDetector = new IrisDetector();
    Iris iris = irisCapture.DetectWith(irisDetector).iris;
    Image maskedImage = iris.GetISO19794IrisImage();
    maskedImage.SaveAs("output/eye_L_iso197946.png");
ISO/IEC 19794-6:2011 masked iris