Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-08-2008
Esau Esau is offline
Miembro
 
Registrado: may 2003
Ubicación: Canto Rey
Posts: 140
Poder: 21
Esau Va por buen camino
Reconocimiento de Imagenes

Hola Foro:

Les cuento que necesito de vuestra ayuda para solucionar un pequeño problema que me han propuesto.

Les cuento un poco para poderlos ubicar.
En mi oficina estamos escaneando documentos en grandes volúmenes, para subirlos a nuestras bases de datos.

Cada registro tiene un numero no determinado de imágenes pueden ser 4,3,2, o solo una imagen, eso no lo sabemos,
El punto es que para poder escanearlas entre grupo de imágenes que le pertenecen a un solo registro hemos puesto un separador de documentos que es una imagen con seis bloques mas o menos como se muestra en el archivo adjunto:

Es decir que en el directorio donde se almacenan las imágenes, luego de escanearlas, tenemos archivos correlativos en nombres más o menos de esta forma:
0001.tif
0002.tif  este es el separador de documentos:
0003.tif
0004.tif
0005.tif  este es el separador de documentos:
0006.tif
0007.tif
0008.tif
0009.tif  este es el separador de documentos:

La idea es bien simple: cuando subo las imágenes con los registros hago esto:
Para el primer registro le corresponde la imagen 0001,
Salto la imagen que uso como separador
Para el segundo registro le corresponde las imágenes 0003 y 0004.
Salto la imagen que uso como separador.
Para el tercer registro le corresponde la imagen 0006, 0007 y 0008.
Vuelvo a saltar la imagen y continúo sucesivamente…

Bien el problema es el siguiente:

Que no tengo como reconocer la imagen separadora.
Hasta el momento he suplido el problema agregando un campo en cada registro que dice número de imágenes y el digitador debe contar las imágenes y ponerlos en el campo correspondiente, pero eso es susceptible a errores.
La idea es subir los registros con las imágenes y que por medio de un algoritmo de reconocimiento de imágenes se pueda realizar el salto correspondiente.
Hasta el momento todos mis intentos han sido infructuosos:
La idea que me esta dando vueltas por la cabeza pero que aun no puedo implementar seria dividir cada cuadro y sacar una muestra del cuadro en cuestión y revisar todos los Pixeles y preguntar si es blanco o negro de acuerdo a cada cuadro que se esta examinando:
Todas las imágenes separadoras son de blanco y negro y utilizo el formato Tif para guardarlas.
La idea es crear una función que nos devuelva verdadero si la imagen que se esta examinando es un separador y falso si es que no lo es.
De esta forma podríamos subir grandes cantidades de imágenes con sus registros sin necesidad de poner el número de imágenes en un campo.
Bueno la Ayuda por parte de Uds. si la conocen seria como saber si la imagen que se esta examinando es un separador o no. El problema es que no tengo idea de cómo hacer el algoritmo.

Saludos cordiales,
Imágenes Adjuntas
Tipo de Archivo: jpg SeparadorIII.jpg (1.017 Bytes, 100 visitas)
Responder Con Cita
  #2  
Antiguo 28-08-2008
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Poder: 19
ElDioni Va por buen camino
Thumbs up

No se que cosas has probado ya, pero a mi, a bote pronto, se me ocurre que tu tengas un TImage con la imagen de separación cargada y en otro TImage vayas cargando las imagenes que quieres montar, vas comparando las imagenes y si coincide ya sabes que es la de separacion.
Te pongo un hilo donde se habla de como comparar dos imagenes que espero te ayude.

http://www.clubdelphi.com/foros/show...light=comparar

Un saludo
Responder Con Cita
  #3  
Antiguo 28-08-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
hola, la funcion deberia recorrer cada pixel por cuadrado y ir mirando si debe ser blanco o negro, algo asi como

Código Delphi [-]
function iguales : boolean;
var
  i, j : integer;
  col, row : integer; 
const
 tamanyo_cuadro : integer = 30;
begin
for i := 0 to Image1.Width do                   
for j := 0 to image1.Height do                  
begin                                                   
     col := i div tamanyo_cuadro; // 0,1
     row := j div tamanyo_cuadro; // 0,1,2
     if (col + row) mod 2 = 0 then c := clBlack else c := clWhite;
     if not Image1.Canvas.Pixels[i,j] = c then begin iguales := false; exit; end;
end;
iguales := true;
end;

Última edición por coso fecha: 28-08-2008 a las 11:11:17.
Responder Con Cita
  #4  
Antiguo 28-08-2008
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Si el separador tiene solo 6 pixels (por lo que veo en la imagen adjunta 2x3) y el resto de imágenes escaneadas son más grandes, podrías saber que es un separador porque la imagen es pequeña.
Código:
if (TamanoImagen<7) then
   EsSeparador
else
   NoEsSeparador
También podrías saber que el separador es de 3 pixeles de alto por 2 de ancho.
Si la imagen que llega es de 3x2, sabrás que es el separador.
Código Delphi [-]
if  (Image1.Picture.Bitmap.Width = 2)  and
   (Image1.Picture.Bitmap.Height = 3) then
   EsSeparador;
else
   NoEsSeparador;

Última edición por duilioisola fecha: 28-08-2008 a las 11:09:29.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Reconocimiento sencillo de imagenes soydiego Gráficos 5 14-06-2007 22:04:56
Reconocimiento de Voz MarianoL Varios 10 26-10-2006 16:04:39
Reconocimiento de imagenes pacofbill Gráficos 1 22-03-2005 19:21:03
reconocimiento de voz fcran C++ Builder 0 02-10-2004 08:12:39
reconocimiento de imagenes the darkness Gráficos 10 07-05-2004 02:22:38


La franja horaria es GMT +2. Ahora son las 08:36:58.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi