CLAHE和Otsu都是90年代的成熟算法,前者在医学影像领域小有名气,但在指纹识别这种低内存场景的民用领域讨论度却并不高,大家更多在讨论 Gabor滤波器和方向场估计,认为那才是解决指纹增强的正统道路。
至于Otsu,在指纹识别领域反而被嫌弃,因为指纹图像存在严重的“双峰不明显”现象(背景和指纹灰度分布太接近), Otsu计算出的全局阈值往往会把整张指纹图全部变黑或全部变白,鲁棒性甚至不如经验丰富的师兄”手
调参数”。
“还真怀念OpenCV啊。”
写完遍历代码后,余江开始手写CLAHE算法,后世只需要一行代码的工作量,他在这里耗费了接近一个小时,最后当他把整个完整自动分割小程序完成时,时间刚好11点。
余江打开软盘,把徐师兄给他的100张低质量指纹拷贝到硬盘finger_seg_test文件夹,随后打开调试。
徐一博给他的指纹全部是日常采集报废,只能靠人工手绘分割的问题样本,要么是局部光照不均、一侧过暗一侧过曝;要么是指尖汗漬、油脂糊化,纹路粘连发雾;要么是秋冬干裂起皮、纹路断裂缺损......反正就没有一张是
正常的。
载入目录后,只用了不到10秒,分割便顺利完成,他看了一眼,按照实验室标准的像素级定量,分割准确率=像素匹配正确总数/整张图像总像素数,他这小玩意的分割准确率只有88%。
他很不满意,又调了两轮参数,直到把准确率干到了91%,这才把这小玩意封装成一个不到100k的可执行文件放进软盘。
“师兄,写了个小程序, finger_seg,你试试看,我先吃饭了。”
徐一博抬头,接过软盘,顺便伸了个懒腰,笑道:“这么快?你这是写了个啥?”
余江耸了耸肩:“就是个分割小程序,比你的好用多了。”
“行,那我试试看。”
见徐一博将软盘塞进软驱,余江也回到自己工位,拎着杯子走出实验室。
软驱嘎吱地响起,徐一博见这小程序不到100k,也不以为意,直接在桌面新建了一个文件夹,随后拷贝进去。
点击可执行文件后,一个朴实无华、甚至极致简陋的UI出现在眼前。
就只有三个按钮,“加载目录”,“分割”,“打开结果文件夹”。
除此之外就只有一个状态报告窗口。
没有对照窗口,也没有各种参数调整。
徐一博疑惑起来,下意识点了一下【分割】按钮,结果弹出窗口,里面只有一个提示“+”。
“我靠......就提示个加号?这家伙写程序这么懒的么………………”
吐槽了一句,他点击加载指纹目录,把包含了一万张低质量指纹的文件夹添加进去。
“我倒要看看你这家伙的小程序有多好用,不过这UI比组里的MFC都还要敷衍……………”
随着徐一博按下分割,他只感觉到,鼠标瞬间卡了一下。
紧接着,状态报告窗口开始跳动。
【指纹自动分割工具V1.0 | CLAHE+Otsu】
加载本地指纹库......检测到灰度BMP图像:10166张
初始化局部均衡算子+大津阈值计算模块......完成
No.00001光照不均样本|自适应阈值:119 分割成功
No.00002背景污渍样本|自适应阈值:131 ]分割成功
No... 分割成功
徐一博看着不断跳动的提示,先是凑近了一点,又眨了眨眼,随后皱起了眉头,直到五秒后,他才瞬间瞪大眼!
“我靠!”
他瞬间起身,鼠标快速点击界面的【分割】按钮。
“草!没停止按钮!”