使用环境:Ubuntu 16.04;
1.安装opencv
下载opencv的自动安装脚本,便于操作:
- <span style="font-size:14px;">git clone https://github.com/bearpaw/Install-OpenCV.git</span>
安装2.4.9版,稳定可靠:
- cd Install-OpenCV/Ubuntu
- sudo ./dependencies.sh
- cd 2.4
- sudo chmod +x opencv2_4_9.sh
- sudo ./opencv2_4_9.sh
2.安装OSIRIS
下载这个文件到home目录,该下载资源在前一篇博文中已经介绍过了:http://svnext.it-sudparis.eu/svnview2-eph/ref_syst/Iris_Osiris_v4.1/download/Iris_Osiris_v4.1.tar.gz
解压
- tar zxvf Iris_Osiris_v4.1.tar.gz
- sudo chmod 777 -R Iris_Osiris_v4.1
- cd Iris_Osiris_v4.1/src
- make all
3.虹膜识别使用示例
在“Iris_Osiris_v4.1”目录下新建“虹膜数据”文件夹和“图像处理”文件夹,前者用于存放各种虹膜数据集,后者用于存储虹膜识别过程中产生的各种分割、归一化、编码中间数据图像等;在scripts文件夹中有两个文件夹Template和Matching,前者存放了虹膜处理的配置模板,后者存放了虹膜对比的配置模板;
一个完整的虹膜识别过程是先处理再对比,因此我们依次设置;
3.1 process步骤
Template文件夹里有configuration.ini和ImageListICE.txt两个文件,前者是配置模板,后者是虹膜图像列表样例;将这两个文件拷贝到“虹膜数据”文件夹,并分别改名为process.ini和process_CASIA-IrisV2.txt;
在“虹膜数据”文件夹下新建“CASIA-IrisV2”文件夹,并将中科院自动化所虹膜数据集 CASIA-IrisV2的几个虹膜图像拷贝进去:
编辑process_CASIA-IrisV2.txt文件:
- 0000_000.bmp
- 0000_001.bmp
- 0000_002.bmp
- 0000_003.bmp
- 0001_000.bmp
- 0001_001.bmp
- 0001_002.bmp
- 0001_003.bmp
编辑process.ini文件(只列出修改的部分):
- List of images = ../虹膜数据/process_CASIA-IrisV2.txt
- Load original images = ../虹膜数据/CASIA-IrisV2/
- Save segmented images = ../图像处理/SegmentedImages/
- Save contours parameters = ../图像处理/CircleParameters/
- Save masks of iris = ../图像处理/Masks/
- Save normalized images = ../图像处理/NormalizedImages/
- Save normalized masks = ../图像处理/NormalizedMasks/
- Save iris codes = ../图像处理/IrisCodes/
可见,该配置文件主要用于指明从哪里读图像列表,从哪里读图像,把虹膜处理的中间数据存储到哪里;
在“图像处理”文件夹下分别新建文件夹: SegmentedImages、 CircleParameters、 Masks、 NormalizedImages、 NormalizedMasks、 IrisCodes;
下面就可以开始process步骤了:
- cd ~/Iris_Osiris_v4.1/src
- ./osiris ../虹膜数据/process.ini
处理完毕后,可以在“图像处理”目录下的各个文件夹里观察虹膜处理过程中的中间处理数据:
例如, SegmentedImages目录中是对虹膜进行分割的处理结果:
3.2 match步骤
和上面一样,不过match步骤不需要再重新计算待对比虹膜了,只需要载入已经计算好的数据即可;将Matching文件夹里的configuration.ini和任一txt拷贝到“虹膜数据”文件夹,并分别改名为match.ini和match_CASIA-IrisV2.txt;
编辑match_CASIA-IrisV2.txt文件:
- 0000_000.bmp 0000_001.bmp
- 0000_002.bmp 0000_003.bmp
- 0001_000.bmp 0001_001.bmp
- 0001_002.bmp 0001_003.bmp
- 0000_000.bmp 0001_000.bmp
- 0000_001.bmp 0001_001.bmp
- 0000_002.bmp 0001_002.bmp
- 0000_003.bmp 0001_003.bmp
在自动化所的这个数据集中,下划线之前号码相同的代表同一个人,因此上述txt文件的前四组对比是类内对比(intra class match),后四组对比是类件对比(inter class match);
编辑match.ini文件(只列出修改部分):
- List of images = ../虹膜数据/match_CASIA-IrisV2.txt
- Load normalized masks = ../图像处理/NormalizedMasks/
- Load iris codes = ../图像处理/IrisCodes/
- Save matching scores = ../图像处理/score_CASIA-IrisV2.txt
下面就可以开始match步骤了:
- cd ~/Iris_Osiris_v4.1/src
- ./osiris ../虹膜数据/match.ini
在“图像处理”目录下的“score_CASIA-IrisV2.txt”文件中就可以看到对比结果了:
- 0000_000.bmp 0000_001.bmp 0.156118
- 0000_002.bmp 0000_003.bmp 0.171024
- 0001_000.bmp 0001_001.bmp 0.190329
- 0001_002.bmp 0001_003.bmp 0.166667
- 0000_000.bmp 0001_000.bmp 0.398026
- 0000_001.bmp 0001_001.bmp 0.399329
- 0000_002.bmp 0001_002.bmp 0.388128
- 0000_003.bmp 0001_003.bmp 0.375283
根据虹膜识别理论,match score小于0.32的是同一个人,大于0.32的不是同一个人,可见上述对比结果都是符合实际的,虹膜识别成功!
开源虹膜识别代码OSIRIS4.1的使用入门介绍完毕,该开源代码、以上编辑过的配置文件、若干张自动化所虹膜库图像都可以在qq群里下载:
虹膜识别算法研究QQ群:422376177