Newer
Older
casic_iris_recognize / iris_encode.py
zhangyingjie on 23 Sep 2021 13 KB irst commit
import cv2
import numpy as np



def get_gabor_filters():
    gabor1 = [
        [-0.25, -0.25, -0.25, -0.25, -0.25, 0.50, 0.50, 0.50, 0.50, 0.50, -0.25, -0.25, -0.25, -0.25, -0.25],
        [-0.25, -0.25, -0.25, -0.25, -0.25, 0.50, 0.50, 0.50, 0.50, 0.50, -0.25, -0.25, -0.25, -0.25, -0.25],
        [-0.25, -0.25, -0.25, -0.25, -0.25, 0.50, 0.50, 0.50, 0.50, 0.50, -0.25, -0.25, -0.25, -0.25, -0.25],
        [-0.50, -0.50, -0.50, -0.50, -0.50, 1.00, 1.00, 1.00, 1.00, 1.00, -0.50, -0.50, -0.50, -0.50, -0.50],
        [-0.50, -0.50, -0.50, -0.50, -0.50, 1.00, 1.00, 1.00, 1.00, 1.00, -0.50, -0.50, -0.50, -0.50, -0.50],
        [-0.50, -0.50, -0.50, -0.50, -0.50, 1.00, 1.00, 1.00, 1.00, 1.00, -0.50, -0.50, -0.50, -0.50, -0.50],
        [-0.25, -0.25, -0.25, -0.25, -0.25, 0.50, 0.50, 0.50, 0.50, 0.50, -0.25, -0.25, -0.25, -0.25, -0.25],
        [-0.25, -0.25, -0.25, -0.25, -0.25, 0.50, 0.50, 0.50, 0.50, 0.50, -0.25, -0.25, -0.25, -0.25, -0.25],
        [-0.25, -0.25, -0.25, -0.25, -0.25, 0.50, 0.50, 0.50, 0.50, 0.50, -0.25, -0.25, -0.25, -0.25, -0.25],
    ]

    gabor2 = [
        [0.25, 0.25, 0.25, 0.25, 0.25, -0.50, -0.50, 0.00, 0.50, 0.50, -0.25, -0.25, -0.25, -0.25, -0.25],
        [0.25, 0.25, 0.25, 0.25, 0.25, -0.50, -0.50, 0.00, 0.50, 0.50, -0.25, -0.25, -0.25, -0.25, -0.25],
        [0.25, 0.25, 0.25, 0.25, 0.25, -0.50, -0.50, 0.00, 0.50, 0.50, -0.25, -0.25, -0.25, -0.25, -0.25],
        [0.50, 0.50, 0.50, 0.50, 0.50, -1.00, -1.00, 0.00, 1.00, 1.00, -0.50, -0.50, -0.50, -0.50, -0.50],
        [0.50, 0.50, 0.50, 0.50, 0.50, -1.00, -1.00, 0.00, 1.00, 1.00, -0.50, -0.50, -0.50, -0.50, -0.50],
        [0.50, 0.50, 0.50, 0.50, 0.50, -1.00, -1.00, 0.00, 1.00, 1.00, -0.50, -0.50, -0.50, -0.50, -0.50],
        [0.25, 0.25, 0.25, 0.25, 0.25, -0.50, -0.50, 0.00, 0.50, 0.50, -0.25, -0.25, -0.25, -0.25, -0.25],
        [0.25, 0.25, 0.25, 0.25, 0.25, -0.50, -0.50, 0.00, 0.50, 0.50, -0.25, -0.25, -0.25, -0.25, -0.25],
        [0.25, 0.25, 0.25, 0.25, 0.25, -0.50, -0.50, 0.00, 0.50, 0.50, -0.25, -0.25, -0.25, -0.25, -0.25],
    ]

    gabor3 = [
        [-0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50,
         0.50, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25],
        [-0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50,
         0.50, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25],
        [-0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50,
         0.50, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25],
        [-0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00,
         1.00, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50],
        [-0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00,
         1.00, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50],
        [-0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00,
         1.00, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50],
        [-0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50,
         0.50, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25],
        [-0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50,
         0.50, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25],
        [-0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50,
         0.50, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25],
    ]

    gabor4 = [
        [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, -0.50, -0.50, -0.50, -0.50, 0.00, 0.50, 0.50, 0.50, 0.50,
         -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25],
        [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, -0.50, -0.50, -0.50, -0.50, 0.00, 0.50, 0.50, 0.50, 0.50,
         -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25],
        [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, -0.50, -0.50, -0.50, -0.50, 0.00, 0.50, 0.50, 0.50, 0.50,
         -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25],
        [0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, -1.00, -1.00, -1.00, -1.00, 0.00, 1.00, 1.00, 1.00, 1.00,
         -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50],
        [0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, -1.00, -1.00, -1.00, -1.00, 0.00, 1.00, 1.00, 1.00, 1.00,
         -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50],
        [0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, -1.00, -1.00, -1.00, -1.00, 0.00, 1.00, 1.00, 1.00, 1.00,
         -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50],
        [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, -0.50, -0.50, -0.50, -0.50, 0.00, 0.50, 0.50, 0.50, 0.50,
         -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25],
        [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, -0.50, -0.50, -0.50, -0.50, 0.00, 0.50, 0.50, 0.50, 0.50,
         -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25],
        [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, -0.50, -0.50, -0.50, -0.50, 0.00, 0.50, 0.50, 0.50, 0.50,
         -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25],
    ]

    gabor5 = [
        [-0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25,
         -0.25, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50,
         -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25,
         -0.25],
        [-0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25,
         -0.25, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50,
         -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25,
         -0.25],
        [-0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25,
         -0.25, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50,
         -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25,
         -0.25],
        [-0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50,
         -0.50, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00,
         -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50,
         -0.50],
        [-0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50,
         -0.50, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00,
         -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50,
         -0.50],
        [-0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50,
         -0.50, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00,
         -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50,
         -0.50],
        [-0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25,
         -0.25, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50,
         -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25,
         -0.25],
        [-0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25,
         -0.25, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50,
         -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25,
         -0.25],
        [-0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25,
         -0.25, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50,
         -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25,
         -0.25],
    ]

    gabor6 = [
        [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, -0.50,
         -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, 0.00, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, -0.25,
         -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25,
         -0.25],
        [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, -0.50,
         -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, 0.00, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, -0.25,
         -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25,
         -0.25],
        [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, -0.50,
         -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, 0.00, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, -0.25,
         -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25,
         -0.25],
        [0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, -1.00,
         -1.00, -1.00, -1.00, -1.00, -1.00, -1.00, -1.00, 0.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, -0.50,
         -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50,
         -0.50],
        [0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, -1.00,
         -1.00, -1.00, -1.00, -1.00, -1.00, -1.00, -1.00, 0.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, -0.50,
         -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50,
         -0.50],
        [0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, -1.00,
         -1.00, -1.00, -1.00, -1.00, -1.00, -1.00, -1.00, 0.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, 1.00, -0.50,
         -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50,
         -0.50],
        [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, -0.50,
         -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, 0.00, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, -0.25,
         -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25,
         -0.25],
        [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, -0.50,
         -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, 0.00, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, -0.25,
         -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25,
         -0.25],
        [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25, -0.50,
         -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, -0.50, 0.00, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, 0.50, -0.25,
         -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25, -0.25,
         -0.25],
    ]

    gabor_filter1 = np.array(gabor1,dtype=np.float)
    gabor_filter2 = np.array(gabor2,dtype=np.float)
    gabor_filter3 = np.array(gabor3,dtype=np.float)
    gabor_filter4 = np.array(gabor4,dtype=np.float)
    gabor_filter5 = np.array(gabor5,dtype=np.float)
    gabor_filter6 = np.array(gabor6,dtype=np.float)

    gabor_filters = [gabor_filter1,gabor_filter2,gabor_filter3,gabor_filter4,gabor_filter5,gabor_filter6]

    return gabor_filters


def add_borders(pSrc, width):

    result = cv2.copyMakeBorder(pSrc,0,0,width,width,cv2.BORDER_REPLICATE,value=0)
    src_cols = pSrc.shape[1]
    result_cols = result.shape[1]
    result[:,0:width] = pSrc[:,src_cols-width:]
    result[:,result_cols - width:] = pSrc[:,0:width]

    return result

def encode_image(image, gabor_filters):

    max_width = gabor_filters[-1].shape[1]
    max_width = (max_width - 1) / 2
    max_width = int(max_width)

    resized = add_borders(image, int(max_width))

    encode_image = np.zeros((image.shape[0]*len(gabor_filters), image.shape[1]),dtype=np.float)

    rows = image.shape[0]
    cols = image.shape[1]

    for (i,filter) in enumerate(gabor_filters):
        img1 = cv2.filter2D(resized,ddepth=cv2.CV_32F,kernel=filter)
        ret, img2 = cv2.threshold(img1,0,255,cv2.THRESH_BINARY)
        encode_image[i*rows:i*rows+rows , : ] = img2[:,max_width:max_width+cols]

    return encode_image



if __name__ == '__main__':

    image = cv2.imread('/home/ubuntu/桌面/test.png',0)
    re = add_borders(image, 50)

    gabor_filters = get_gabor_filters()
    test = encode_image(image, gabor_filters)

    cv2.imshow("test",test)
    cv2.waitKey(0)