Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

funciones Gabor para codificar imagenes

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: funciones Gabor para codificar imagenes Responder citando

Hola a todos, necesito una funcion que dada una imagen me devuelva un codigo de bits.
La funcion tiene que hacer el procesamiento de la imagen por medio de filtros de Gabor en 2D que son filtros que tienen la peculiaridad de ser localizados en frecuencia y ademas de ser muy utilizados para caracterizacion de texturas.
Es ta funcion la necesito para mi proyecto fin de carrera que se trata de un reconocedor de iris.
Una vez que capturo la imagen la tengo que pasar por esta funcion y despues almacenar el codigo resultante y este codigo es el que tengo que almacenar. Cada codigo se correspondera con una imagen de un iris concreto, y los filtros de gabor utilizados son para que no afecten los cambios de luz y algunas variaciones mas...
La verdad es que no tengo mucha idea de los filtros de Gabor con que cualquier ayuda me vendrá muy bien.
Se que este tema tiene que ver mas con matematicas que con programacion y a lo mejor no estoy en el foro adecuado pero confio en vosotros¡¡¡. Muchas gracias.
Volver arriba
Mensaje    Asunto: Responder citando

Espero te sirva

http://www.kung-foo.tv/gaborapi.html

ademas de

/code

* Copyright (C) 2002 Multimedia Information Processing Laboratory
* http://www.cse.cuhk.edu.hk/~miplab
* The Chinese University of Hong Kong
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/

#include <stdlib.h>
#include <math.h>
#include <stdio.h>
#include "objectweight.h"
#include "objectbox.h"
#define FRONT 255
#define BKGRND 0
#define ALPHA 1
////////////////////////////////////////////////////////////////////////////////
// Gabor Feature Extract algroithm from ICPR '96 p250--253 //
////////////////////////////////////////////////////////////////////////////////
//Gabor Function ,
void GaborFunction(int x,int y,float sita,float lmd,float sigmaX,float sigmaY,float *realpart,float* impart)
{
float R1,R2;
float temp;
R1=x*cos(sita)+y*sin(sita);
R2=-x*sin(sita)+y*cos(sita);
temp=exp(-0.5*(R1*R1/(sigmaX*sigmaX)+R2*R2/(sigmaY*sigmaY)));
*realpart=temp*cos(2*3.14*R1/lmd);
*impart=temp*sin(2*3.14*R1/lmd);
}
////////////////////////////////////////////////////////////////////////////////
//Gabor Transformation at 1 point (X, Y)
////////////////////////////////////////////////////////////////////////////////
float GaborAtOnePoint(int X,int Y,unsigned char *img,int m_X,int m_Y,float sita,float lmd,float sigmaX,float sigmaY)
{
float realpart=0.0,impart=0.0;
float sumreal=0.0, sumim=0.0;
int i,j;
for(i=-X;i<m_X-X;i++)
for(j=-Y;j<m_Y-Y;j++)
if(img[(Y+j)*m_X+X+i]!=BKGRND)
{
GaborFunction(i,j, sita, lmd, sigmaX, sigmaY,&realpart,& impart);
sumreal+=realpart;
sumim+=impart;
};
return (sqrt(sumreal*sumreal+sumim*sumim));
}
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
float* GaborTransformation(unsigned char *img,int m_X, int m_Y, int sx, int sy, int degree)
{
float *weight;
weight=ObjectWeightPoint(img, m_X, m_Y);
int *objectbox;
objectbox=ObjectBoxCircumscribe(img, m_X, m_Y, weight);
float lmd=2*1.414;
float sigmaX=0.5*lmd;
float sigmaY=0.5*lmd;
int x, y, stepx, stepy, X, Y, k, n;
int lx,ly,rx,ry;
lx=objectbox[0];
rx=objectbox[1];
ly=objectbox[2];
ry=objectbox[3];
delete weight;
delete objectbox;
if((lx-ALPHA)<0 ||(ly-ALPHA)<0||(rx+ALPHA)>m_X||(ry+ALPHA)>m_Y)
{
return NULL;
}
float sita, *GaborFeature=new float[degree*sx*sy];
lx-=ALPHA;
ly-=ALPHA;
rx+=ALPHA;
ry+=ALPHA;
stepx=(rx-lx+1)/sx;
stepy=(ry-ly+1)/sy;
n=0;
for(k=0; k<degree; k++)
{
for(y=0;y<sy;y++)
{
for(x=0;x<sx;x++)
{
X=lx+stepx*x;
Y=ly+stepy*y;
sita=(3.14*k)/degree;
GaborFeature[n]=GaborAtOnePoint(X,Y,img, m_X,m_Y, sita, lmd, sigmaX, sigmaY);
n++;
}
}
}
return GaborFeature;
}
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
Volver arriba
Mensaje    Asunto: Responder citando

http://www.cse.cuhk.edu.hk/~miplab/C3L/src/zjin/gabor.htm

Espero te sirva este enlace...

Discula en el mensaje anterior no me habia indentificado

Saludos
_________________
Ing. Gabriel Góngora Navarrete
TouchSoftwares Inc

http://www.touchsoftwares.com
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Gabor Responder citando

Muchas gracias a los dos¡¡¡ Voy a echarle un vistazo a las paginas y a ver como funciona el codigo. Laughing

Gracias ¡¡¡ Un saludo Tony
Volver arriba
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.