// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // ! This script is provided "as is" by Applied Maths. ! // ! You are free to use and modify this script for your own needs. ! // ! Redistribution or reproduction of the script is prohibited. ! // ! DISCLAIMER: ! // ! Improper use of scripts may corrupt your database. ! // ! Running this script is entirely at your own responsibility. ! // ! Applied Maths accepts no lialibility for any consequences ! // ! resulting from its use. ! // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! integer i,j,resol,ok,lanenr; float vl,s0[],s1[],mean[]; string experlist,expername,key,filename; FPRINT fpr; CRFPRINT crfpr; DIALOG dlg; DlgAddText(dlg,"Select fingerprint to average:",15,15,150,15); for i=1 to DbGetExperCount do if DbGetExperClass(i)="FPR" then { if expername="" then expername=DbGetExperName(i); experlist=experlist+DbGetExperName(i)+" "; } DlgAddList(dlg,experlist,expername,15,35,150,100,"LIST"); DlgAddText(dlg,"Enter the key for the new entry: (blank= auto generate)",200,15,180,30); DlgAddEdit(dlg,key,210,55,160,20); DlgAddText(dlg,"Enter the file name for the fingerprint curve:",200,90,180,30); DlgAddEdit(dlg,filename,210,130,160,20); ok=0; while not(ok) do { if (not(dlgshow(dlg,"Create averaged fingerprint",400,400))) then stop; ok=1; if ok and (filename="") then { ok=0; message("ERROR: you should provide a file name"); } if ok then { for i=1 to DbGetFileCount do if DbGetFileName(i)=filename then ok=0; if not(ok) then message("ERROR: this file exists already"); } } setbusy("Scanning curves"); for i=1 to DbGetEntryCount do if DbGetSel(DbGetEntryKey(i)) then { if (FprLoadNorm(fpr,DbGetEntryKey(i),expername)) then { resol=FprGetCurveResol(fpr); for j=0 to resol-1 do { vl=FprGetCurveVal(fpr,j); s0[j]=s0[j]+1; s1[j]=s1[j]+vl; } } } setbusy(""); for i=0 to resol-1 do { if s0[i]>0 then mean[i]=s1[i]/s0[i]; else mean[i]=0; } key=DbAddEntry(key); CrFprCreate(crfpr,filename,expername); lanenr=CrFprAddLane(crfpr,expername,key); for i=0 to resol-1 do CrFprAddCurveVal(crfpr,lanenr,mean[i]); CrFprSave(crfpr); DbOpenEntryWin(key);