Newer
Older
AppendIrisCodeUtils / casic / iris / CasicIrisRec.h
#ifndef CASIC_IRIS_REC
#define CASIC_IRIS_REC

#define NORM_WIDTH 512
#define NORM_HEIGHT 64
#define M_PI 3.1415926535897323846

#include <QPair>
#include <QByteArray>
#include <opencv2/opencv.hpp>

namespace iristrt
{

class CasicIrisRec
{

public:
    CasicIrisRec();
    CasicIrisRec(const char * gaborFilterFileName,const char * applicationPointsFileName);
    ~CasicIrisRec();

    cv::Mat normalize(cv::Mat image, int iris_x, int iris_y, int iris_r,int pupil_x, int pupil_y, int pupil_r);
    cv::Mat encodeToImage(cv::Mat normalizedImage);
    QByteArray extractFeature(cv::Mat irisCode, cv::Mat maskNorm);

    float matchImage(cv::Mat code1, cv::Mat code2, cv::Mat normalizedMask1, cv::Mat normalizedMask2);
    float matchFeatureCode(uchar * feature1, uchar * feature2);

private:

    std::vector<cv::Mat> gaborFilters;
    cv::Mat applicationPoints;
    std::vector<QPair<int, int>> mvApplicationPoints;

    std::vector<cv::Mat> loadGaborFilters(const char * gaborFilterFileName);
    cv::Mat loadApplicationPoints(const char * applicationPointsFileName);

    cv::Mat addBorders(cv::Mat pSrc, int width);
    uchar ** reduceIrisCode(uchar * feature);
    uchar ** reduceIrisMask(uchar * feature);

}; // end of class CasicIrisRec

} // end of namespace iristrt

#endif