FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
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! |
#2
|
||||
|
||||
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. |
#3
|
|||
|
|||
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!! |
#4
|
|||
|
|||
Gracias.
Ya he hecho que funcione sin tener un bmp antes. Un saludo Joaquín |
#5
|
||||
|
||||
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:
|
#6
|
|||
|
|||
Cita:
b:=round(65535/256); Prueba con desplazamientos que son más rápidos: b:=(f[i,j] shr 8); |
#7
|
|||
|
|||
Gracias Sergio.
|
|
|
|