EDCC:快速高精度的掌纹识别算法

EDCC(Enhanced and Discriminative Competitive Code),用于掌纹识别。

使用该EDCC算法在多个已发布的掌纹数据库(multispectraltongji)上进行验证N(N = 2, 4, 6, 8),每个手掌的第一掌纹图像被用作训练样本,其余掌纹图像形成测试样本集。将测试样本集合中的每个样本与训练集合中每个类别的所有样本进行比较,以计算匹配分数。产生最高匹配分数的类被视为测试样本的类。

数据库 N = 2 N = 4 N = 6 N = 8
Multispectral_B 98.6800% 99.8750% 99.9667% 99.9800%
Multispectral_G 98.8400% 99.8500% 99.9333% 99.9500%
Multispectral_I 98.9200% 99.9000% 99.9000% 99.9000%
Multispectral_R 98.8400% 99.7500% 99.8667% 99.9000%
Tongji 98.8056% 99.6979% 99.9881% 99.9861%

EDCC算法的优点:

  1. 减少训练样本。
  2. 更快的识别速度。
  3. 识别精度更高。

更多细节 EDCC

安装

如果你想安装,有一些要求EDCC

  1. Linux / Unix操作系统
  2. OpenCV

脚步:

  1. git clone https://github.com/Leosocy/EDCC-Palmprint-Recognition.git
  2. cd EDCC-Palmprint-Recognition && mkdir -p build && cd build
  3. sudo cmake ..
  4. sudo make -j install

如何EDCC在你的项目中使用

  • C++In your CMakeLists.txt, add these lines:
    FIND_PACKAGE(EDCC REQUIRED)
    INCLUDE_DIRECTORIES(${EDCC_INCLUDE_DIRS})
    TARGET_LINK_LIBRARIES(YOUR_TARGET_NAME ${EDCC_LIBS})

     

    Then you can use those apis in edcc.h like this:

    #include <edcc.h>
    int main(int argc, char** argv)
    {
        const char* palmprint_image_path_1 = "IMAGE_PATH_1";
        const char* palmprint_image_path_2 = "IMAGE_PATH_1";
        const char* config_file_path = "config.json";
        #define CODE_BUFFER_MAX_LEN 1024
        unsigned char code_buffer_1[CODE_BUFFER_MAX_LEN] = {0};
        unsigned char code_buffer_2[CODE_BUFFER_MAX_LEN] = {0};
        size_t buffer_len_1 = 0;
        size_t buffer_len_2 = 0;
        int ret = GetEDCCCoding(palmprint_image_path_1,
                                config_file_path,
                                CODE_BUFFER_MAX_LEN,
                                code_buffer_1,
                                &buffer_len_1);
        ret = GetEDCCCoding(palmprint_image_path_2,
                            config_file_path,
                            CODE_BUFFER_MAX_LEN,
                            code_buffer_2,
                            &buffer_len_2);
        double coding_matching_score = 0.0;
        double image_matching_score = 0.0;
        GetTwoPalmprintCodingMatchScore(code_buffer_1,
                                        code_buffer_2,
                                        &coding_matching_score);
        GetTwoPalmprintMatchScore(palmprint_image_path_1,
                                  palmprint_image_path_2,
                                  config_file_path,
                                  &image_matching_score);
    }

     

  • PythonPython need 3.x.In your py, add these lines:
    from edcc_adapter import *
    
    EDCC_API = EdccApi()
    coding_1, coding_len_1 = EDCC_API.GetEDCCCoding("IMAGE_PATH_1", "CONFIG_PATH")
    coding_2, coding_len_2 = EDCC_API.GetEDCCCoding("IMAGE_PATH_2", "CONFIG_PATH")
    
    coding_matching_score = EDCC_API.GetTwoPalmprintCodingMatchScore(coding_1, coding_2)
    image_matching_score = EDCC_API.GetTwoPalmprintMatchScore("IMAGE_PATH_1", "IMAGE_PATH_2", "CONFIG_PATH")

Run samples

Before running the example, make sure make install succeed.

  • Run Python sample
    1. cd EDCC-Palmprint-Recognition && mkdir -p build && cd build
    2. sudo cmake ..
    3. sudo make -j run_py_sample
https://github.com/Leosocy/EDCC-Palmprint-Recognition

转载请注明:《EDCC:快速高精度的掌纹识别算法

发表评论