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 20-01-2005
elcaracas elcaracas is offline
Miembro
 
Registrado: ene 2005
Posts: 26
Poder: 0
elcaracas Va por buen camino
Matriz de Pixeles. Necesito velocidad!!

Hola. Mi problema es el siguiento.

Estoy haciendo un programa de tratamiento de archivos *.FIT. estos archivos guardan una matriz de números enteros de 16-bits (0 a 65535). Estos se dividen por 256 y la pasamos a 8-bits. En realidad es una foto en blanco y negro con 65536 niveles de grises y la paso a 256 niveles de grises. La represento pixel a pixel para visualizarla, del siguiente modo:

Supongamos que f[i,j] es la matriz que guarda la información de la foto.
la foto es de 512x512 pixeles:

el código es el siguiente:

for j:=0 to 511 do
for i:=0 to 511 do
begin
b:=round(f[i,j]/256); {b:byte}
Image1.canvas.pixel[i,j]:=rgb(b,b,b);
end;

pero esto va extremadamente lento.

Alguien sabe como puedo representar esta matriz mas rápido?

Muchas gracias!
Responder Con Cita
  #2  
Antiguo 21-01-2005
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Poder: 20
Héctor Randolph Va por buen camino
Hola amigo!

Te recomiendo que leas este truco publicado en el foro que trata el tema de acceso rápido a los pixeles de una imagen:

¿Cómo se puede acceder de forma rápida a los píxeles de un TBitmap?

También te sería útil leer los hilos que se han abierto últimamente relacionados con este tema, por ejemplo:

http://www.clubdelphi.com/foros/showthread.php?t=17391


Un Saludo.
Responder Con Cita
  #3  
Antiguo 22-01-2005
elcaracas elcaracas is offline
Miembro
 
Registrado: ene 2005
Posts: 26
Poder: 0
elcaracas Va por buen camino
Muchas Gracias hector.

He estado jugando con scanline y va muchisimo mas rápido. pero el inconveniente es que tengo que cargar un bmp primero, y ese bmp no lo tengo, ya que la imagen la obtengo de una matiz que saco de un fichero que no tiene el formato bmp,jpg,raw,u otro gráfico.

Tengo que cargar una imagen bmp, la que sea, de las dimensiones de mi fotografía, que a priori puede ser cualquiera, para modificarla y meter la matriz.

¿alguna Idea?.

Gracias!!
Responder Con Cita
  #4  
Antiguo 23-01-2005
elcaracas elcaracas is offline
Miembro
 
Registrado: ene 2005
Posts: 26
Poder: 0
elcaracas Va por buen camino
Gracias.

Ya he hecho que funcione sin tener un bmp antes.

Un saludo

Joaquín
Responder Con Cita
  #5  
Antiguo 23-01-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Sería conveniente que publicaras el código finalmente utilizado por si alguien más pudiera estar interesado en tu solución.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #6  
Antiguo 23-01-2005
<Sergio> <Sergio> is offline
Miembro
 
Registrado: sep 2004
Posts: 72
Poder: 20
<Sergio> Va por buen camino
Cita:
Empezado por elcaracas
b:=round(f[i,j]/256); {b:byte}
¿Seguro que funciona bien para este caso?

b:=round(65535/256);

Prueba con desplazamientos que son más rápidos:

b:=(f[i,j] shr 8);
Responder Con Cita
  #7  
Antiguo 25-01-2005
elcaracas elcaracas is offline
Miembro
 
Registrado: ene 2005
Posts: 26
Poder: 0
elcaracas Va por buen camino
Gracias Sergio.
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


La franja horaria es GMT +2. Ahora son las 14:58:30.


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