News:

MASM32 SDK Description, downloads and other helpful links
MASM32.com New Forum Link
masmforum WebSite

Enhancing face recognition

Started by Farabi, April 18, 2010, 11:46:39 AM

Previous topic - Next topic

Farabi



Am I right translating it?

Quote

isless MACRO r1:req, r2:req
    LOCAL error, true, false, clear
    ; Gregg macro, greg is MASM32 forum member
    finit
    fld r2
    fld r1
    fcom
    fstsw ax
    fwait
    sahf
    jpe   error
    ja    false
    jb    true
    jz    false
    error:
    mov eax, -1
    jmp clear
    true:
    mov eax, 1
    jmp clear
    false:
    xor eax, eax
    clear:
    fstp st(0)
    fstp st(0)
    EXITM <eax>
ENDM 
I changed the line 15 to distSq += d_i*d_i/eigenValMat->data.fl;
Quote
fCVFindNearestNeighbor proc lpStruct:dword,lpProjectedFace:dword,lpResult:dword
   LOCAL leastDistSq,distSq:qword
   LOCAL i, iTrain, iNearest:dword
   LOCAL PTF,PTFM,d_i:dword
   LOCAL lDiS,DiS:real10
   LOCAL buff[256]:dword
   
   fld CDBL(8.9884656743115775e+307)
   fstp leastDistSq

   mov esi,lpStruct
   xor ecx,ecx
   mov iTrain,ecx
   mov i,ecx
   xor eax,eax
   dec eax
   mov iNearest,eax
   
   loop_iTrain:
      fld CDBL(0.0)
      fstp distSq
      loop_i:
                     
;--------------------------------------------------IN HERE------------------------------------------
         mov ecx,i
         mov eax,lpProjectedFace
         fld dword ptr[eax+ecx*4]
         
         mov eax,iTrain
         mov ecx,[esi].fMem.nEigens
         mul ecx
         add eax,i
         mov edx,[esi].fMem.projectedTrainFaceMat
         mov edx,[edx].CvMat.data.fl
         fsub dword ptr [edx+eax*4]
         fmul st(0),st(0)  ;distSq += d_i*d_i/eigenValMat->data.fl;
         mov eax,[esi].fMem.eigenValMat
         mov eax,[eax].CvMat.data.fl
         mov ecx,i
         fdiv dword ptr [eax+ecx*4]
         fadd distSq
         fstp distSq
;----------------------------------------------------------End Here----------------------------------------
      inc i
      mov eax,i
      cmp eax,[esi].fMem.nEigens
      jl loop_i
      
      fld distSq
      fstp DiS
      fld leastDistSq
      fstp lDiS
      
      mov eax,isless(DiS,lDiS)
      .if eax==TRUE
         fld distSq
         fstp leastDistSq
         push iTrain
         pop iNearest
      .endif
      xor ecx,ecx
      mov i,ecx
   inc iTrain
   mov eax,iTrain
   cmp eax,[esi].fMem.nTrainFaces
   jl loop_iTrain
   
   
   mov eax,lpResult
   fld leastDistSq
   fstp qword ptr[eax]
   
   mov eax,iNearest
   
   ret
fCVFindNearestNeighbor endp


Those who had universe knowledges can control the world by a micro processor.
http://www.wix.com/farabio/firstpage

"Etos siperi elegi"