虹膜检测

****瞳孔填充和定位****

此段代码包含三个文件eye.cpp,OsiCircle.cpp,OsiCircle.h。其中OsiCircle.h和OsiCircle.cpp是我在github上面下载的,主要功能是创建一个圆形的类,方便我们找到圆心和半径之后存起来后续代码调用(其实不需要这两个文件也行,自己可以创建一个画圆的结构体),链接是*https://codeload.github.com/hbhdytf/Irisextraction/zip/master*。

再来谈谈eye.cpp,里面大致分为三个方向,第一个函数是reconstructMarkerByMask此函数是对输入图像做一个形态学操作后输出像素值最小的位置的图像。第二个函数是fillWhiteHoles,这个函数是watersun给出的函数,实际作用是是对里面的瞳孔的像素填充,让瞳孔更“黑”,并且嵌入reconstructNakerByMask这个函数可以腐蚀掉一些睫毛之类的东西可以更加突出瞳孔和外轮廓。最后便是最麻烦的函数,detectPupil()这个函数的主要功能是找到瞳孔的圆心和半径,然后存入OsiCircle的对象中完成画圆操作,此函数首先进行对比(对传入的瞳孔的最大直径和最小直径对比图片的长宽乘上ratio),从而更新瞳孔长宽比例从而调整图像长宽和瞳孔的最大与最小直径,然后调用fillWhiteHoles进行填充和腐蚀,达到突出瞳孔的目的,此项做完,我们便可以对图像进行边缘检测(sobel),求出图像的x,y方向的梯度从而得到边缘,后面create the filters fh and fy操作我的理解是找到若干个圆心(理解可能错误),然后做的几次卷积我并不太明白啥意思(挠脑袋),最后便通过找到全局最大值找到了圆心和半径。 以上便是我对算法的全部理解,因为我也是第一次做虹膜检测所以可能对算法理解会有不少错误,请指正(拜托)

猜你喜欢

转载自blog.csdn.net/qq_38271045/article/details/78088674
今日推荐