ImageImageImageImage
Hazte Socio (El Foro siempre Gratis)
Paga con Tarjetas+ Info www.arde.cc/socios

Visión artificial

Foro donde postear temas generales de programación

Moderator: Junta Directiva

Post Reply
User avatar
Kaelyn
Posts: 9
Joined: Thu Jun 05, 2008 3:10 am

Re: Visión artificial

Post by Kaelyn » Fri Jun 06, 2008 3:26 am

exacto tengo q realizar lo mismo q la cmucam :D
no tiene gracia q me compre la cmucam, seria trabajo q yo no haria
:D :P

User avatar
Kaelyn
Posts: 9
Joined: Thu Jun 05, 2008 3:10 am

Re: Visión artificial

Post by Kaelyn » Fri Jun 06, 2008 4:05 am

ya cuando solucione todos mis problemas se los presnto aqui :P

oka gracias es q soy novata :( me entienden


:wink:
Last edited by Kaelyn on Fri Jun 06, 2008 7:44 pm, edited 1 time in total.

Ranganok
Usuario Desarrollador
Usuario Desarrollador
Posts: 3874
Joined: Mon Nov 07, 2005 3:10 pm
Location: Barbaros del Valle
Contact:

Re: Visión artificial

Post by Ranganok » Fri Jun 06, 2008 9:33 am

Kaelyn, intenta no escribir un post para cada frase ya que aumenta el tamaño del tema innecesariamente, si te has olvidado de poner algo puedes editar el post anterior.

S2

Ranganok Schahzaman
skiras.blogspot.com

"En igualdad de condiciones la explicación más sencilla es la cierta"

User avatar
oab_boa
Novato
Novato
Posts: 13
Joined: Tue Jul 08, 2008 5:26 pm

Error de acceso a pixel

Post by oab_boa » Mon Dec 15, 2008 5:17 pm

Buen Dia amigos, este es mi primer mensaje ya que hace poco que estoy registrado, estoy siguiendo a modo de tutorial este foro, usando builder-C++ 6. Estoy teniendo complicaciones en el acceso a un pixel de la imagen usando punteros, lo que tengo es esto:

unsigned char *Puntero;

Puntero = Imagen.punt.lpIndex;

for(int x=0; x<320; x++){
for(int y = 0; y<240; y++){
r = *Puntero; //el color rojo está en el primer byte
g = *(Puntero+1); //el verde en el segundo
b = *(Puntero+2); // y el azul en el tercero

*Puntero = r+10;
*(Puntero+1) = g+10;
*(Puntero+2) = b+10;
Puntero += 3; //subo de tres en tres bytes
}
}

Lo cual anda perfectamente pero haciendo unrecorrido secuencial del puntero de 3 en 3 bytes

Estoy teniendo problemas de Violacion de acceso si quiero hacer un acceso directo en la forma:

Puntero += 3*(320*fila+culumna); en vez de usar

Puntero += 3;

solo me accede con un maximo de fila=14, columna=10.

Se entiende el problema?

Le paso a alguien o solo estiy haciendo mal uso del puntero.

Gracias y saludos a todos.

Ranganok
Usuario Desarrollador
Usuario Desarrollador
Posts: 3874
Joined: Mon Nov 07, 2005 3:10 pm
Location: Barbaros del Valle
Contact:

Re: Visión artificial

Post by Ranganok » Mon Dec 15, 2008 6:55 pm

Creo que el problema es que estas haciendo un mal uso del puntero:

Tienes un array Imagen[320][240][3] es decir de 230400 bytes (=320*240*3). Es decir que tienes un máximo de 240 filas y 320 columnas.

Para posicionarte dentro de un pixel de la imagen directamente tienes que ir a la fila X y la columna Y de la siguiente forma:

Puntero = 3 * (320 * X + Y) + Imagen.punt.lpIndex;

El 3 es porque cada pixel tiene 3 bytes (R,G,B), 320 porque cada fila tiene 320 columnas e Imagen.punt.lpIndex porque es la posición de memória que marca el inicio del Array.

Si vas haciendo

Puntero += 3*(320*X+Y);

dentro del bucle (for) quiere decir que cada iteración en vez de irte al píxel siguiente harás un salto de X filas e Y columnas por lo que es posible que al poco rato te salgas del Array (por culpa del +=).

S2

Ranganok Schahzaman
skiras.blogspot.com

"En igualdad de condiciones la explicación más sencilla es la cierta"

User avatar
fusion
Usuario Avanzado
Usuario Avanzado
Posts: 388
Joined: Tue Oct 09, 2007 2:12 pm
Nombre: Javier Lopez Segura
Location: Madrid
Contact:

Re: Visión artificial

Post by fusion » Mon Dec 15, 2008 8:38 pm

Me parece es al reves:

puntero=3*(y*320+x)

User avatar
oab_boa
Novato
Novato
Posts: 13
Joined: Tue Jul 08, 2008 5:26 pm

Re: Visión artificial

Post by oab_boa » Mon Dec 15, 2008 8:53 pm

fusion wrote:Me parece es al reves:

puntero=3*(y*320+x)
Voy aprobarlo, entre las pruevas que hice, esta la tenia en mente pero por algo no la implemente,

vere que pasa, a simple vista parece que tenes razon, ya que como puse yo anteriormente estaba desplazando y en el acceso directo no preciso desplazar, solo acceder directamente.

gracias !!!!!!!

User avatar
oab_boa
Novato
Novato
Posts: 13
Joined: Tue Jul 08, 2008 5:26 pm

Re: Visión artificial

Post by oab_boa » Tue Dec 16, 2008 1:02 pm

Tanto Ranganok como Fusion tenian razon, me estaba llendo del array porque desplazaba el puntero en lugar de ir directamente a la posicion que buscaba.

gracias y saludos a ambos

User avatar
oab_boa
Novato
Novato
Posts: 13
Joined: Tue Jul 08, 2008 5:26 pm

Re: Visión artificial

Post by oab_boa » Mon Nov 15, 2010 9:44 pm

Buenas gente del foro,
He retomado un trabajo en VA que tenia suspendido hace algun tiempo, y que habia nacido desde este mismo foro.

Queria acudir a sus memorias si es que quedan todavia, resulta que implemente el modelo HLS y me gustaria saber si alguien ya lo implemento (creo que si) para evaluar resultados y de paso el metodo para usar este espacio de colores en la busqueda de zonas en la imagen. Se entiende mi consulta?

Gracias de ante mano.

Orlando

Ranganok
Usuario Desarrollador
Usuario Desarrollador
Posts: 3874
Joined: Mon Nov 07, 2005 3:10 pm
Location: Barbaros del Valle
Contact:

Re: Visión artificial

Post by Ranganok » Tue Nov 16, 2010 9:42 am

Uff, hace años implementé el paso de RGB a HLS, (cuando mif sacó la primera versión del manual de visión artificial), pero creo que ya no lo tengo...

Estaba en C# y era bastante rápido.

Lo bueno del HLS es que puedes indentificar colores similares más fácilmente que con el RGB (sólo necesitas la H con limitacions de L y S).

¿Qué es lo que quieres exáctamente?

S2

Ranganok Schahzaman
skiras.blogspot.com

"En igualdad de condiciones la explicación más sencilla es la cierta"

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest