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……分割成功
徐一博看著不斷跳動的提示,先是湊近了一點,又眨了眨眼,隨後皺起了眉頭,直到五秒後,他才瞬間瞪大眼!
「我靠!」
他瞬間起身,滑鼠快速點擊界面的【分割】按鈕。
「草!沒停止按鈕!」
徐一博看著迅速刷屏的編號和後面那一排分割成功的提示,他只感覺頭皮瞬間發麻。
他幾乎是有些畏懼地點擊結果文件夾。 文件夾打開,只見無數個指紋同名文件已經鋪滿了窗口,他隨便點開一張,只見標準的 8位純黑白二值圖瞬間映入眼帘。
徐一博只感覺心跳開始加速。
他迅速打開ground truth文件夾。
這裡裝著他們好幾波人純手工繪製的金標圖。
——為了對比指紋分割精度,全靠人工手動在畫圖軟體中精準圈出有效指紋脊線,逐張精細手繪的標準二值掩碼,這份手繪圖紙,是唯一標準答案,也是全組統一認定的「正確分割模板」。
「我靠!沒有前面的,唐師兄,指紋庫前面兩百張的金標圖給我一下。」
徐一博迅速起身大喊。
後方唐文杰師兄抬起頭來,有些驚訝:「你現在要來幹啥?不是早就處理好了的麼?」
「我現在要馬上對比一下!我有點受不了,心臟有點受不了。」徐一博重重呼氣。
他的咋呼頓時引起了眾人的注意。
見他一臉焦急慌亂,周琴起身走到身後,好奇地瞥著他的顯示器,只看到一張指紋的黑白二製圖:「這一看就是分割成功了的嘛,你要金標圖幹什麼?」
「周琴,我給你講個恐怖的事……」 徐一博深深地吸氣,他將圖片最小化,露出正在暢快奔跑的程序。
「餘江用了倆小時,寫了自動指紋分割工具……」
「自動分割,那要看什麼指紋……我去!全是垃圾指紋?!」周琴正不以為意,卻猛地看到狀態報告欄的說明,瞬間瞪大了眼:「這一秒多少張?」
「感覺有十張!」
徐一博指著下方的狀態統計,目前顯示【分割準確率】為91%,他整個人的聲音都在顫抖:「我不知道他這個是軟體的執行報告成功率還是分割成功的準確率……如果是分割準確率……我他媽……我他媽……」
徐一博就沒說下去了。
這些垃圾指紋,全是過不了他們自動分割算法所遺留下來的「垃圾」,但偏偏這些指紋,才是課題的重點!
因此,課題組才會人工肉眼分割。
而就這,綜合分割準確率也才71%。
這些光照不均、乾枯、斷裂、帶有污漬和磨損的指紋,甚至他手動分割調整半天,有時候眼都盯瞎了,都只有50%的準確率。
聽著徐一博的聲音,唐文杰師兄瞬間驚訝起來,他迅速將前兩百張指紋的金標圖拷貝進軟盤。
隨後,他取出軟盤,走到徐一博的身後。 徐一博的動靜早已引起了全組人的注意,此時也臨近中午,眾人紛紛起身,圍到他身後。
「我去,這是自動分割垃圾指紋?」
「這麼快?餘江寫的?」
「不是,他這準確率是怎麼來的?」
徐一博沒有說話,只是將軟盤插進軟碟機。
餘江的程序很吃資源,圖片打開得很慢。
但他很有耐心,最小化分割程序後,他慢慢等待著,然後打開第一張金標圖片。
所有人的眼睛同時落在顯示器上。
然後……
第二張、第三張、第四張、第五張……