RoboticsLabURJC / 2017-tfm-jorge_vela

1 stars 2 forks source link

Añadir extracción de canales del gradiente: ChannelsExtractorGradHist #7

Closed jmbuena closed 4 years ago

jmbuena commented 5 years ago

Aquí añadiríamos lo que se hace en el siguiente código Matlab de chnsCompute.m:

p=pChns.pGradHist; nm='gradient histogram';
if( p.enabled )
  binSize=p.binSize; if(isempty(binSize)), binSize=shrink; end
  H=gradientHist(M,O,binSize,p.nOrients,p.softBin,p.useHog,p.clipHog,full);
  chns=addChn(chns,H,nm,pChns.pGradHist,0,h,w);
end

Así que necesitaríamos llamar a gradientHist.m que a su vez llama a gradientMex.cpp.

jorgevelap commented 4 years ago

Estoy teniendo problemas al trabajar con la clase ChannelsExtractorGradHist. No consigo obtener los mismos resultados con Matlab y con c++. He probado a poner los mismos parámetros ( H = gradientHist( M, O, [binSize,nOrients,softBin,useHog,clipHog,full] ) ) en ambos casos y siempre da diferentes resultados.
Revisando el código, he visto que cuando llama a la funcion gradHist antes llama a esta funcion: pl[0] = mxCreateMatrix3(hb,wb,nChns,mxSINGLE_CLASS,1,(void**)&H); en la que se modifica la H, pero esa función la hace el para cuando vienen los datos de matlab.

Voy a seguir mirando a ver si encuentro el problema / solución, pero no veo que mas puede estar pasando o como resolverlo.

Es el ultimo paso que queda para tener chnsCompute terminado, ya que los anteriores problemas están solucionados.

Muchas gracias.

jorgevelap commented 4 years ago

Primeras pruebas de chnsCompute realizadas. El problema principal era que la orientación del gradiente variaba en una parte para este caso, al arreglarlo los test continuaban saliendo bien y ya se obtiene la misma M,O,H y la imagen LUV igual que en matlab.

jmbuena commented 4 years ago

¡Fenomenal!

jmbuena commented 4 years ago

Ya tenemos la extracción de canales de gradiente funcionando.