Re: [Eqalign-devel] =?iso-8859-1?q?Me_est=E1_dando_guerra_la_QHY?=
Brought to you by:
antoniofga,
isoplut
From: Antonio F. <ant...@ya...> - 2007-10-04 18:36:30
|
Este tema del GDI es muy interesante!!, lo siento chicos, me incorporo al hilo en un par de horas, ahora sólo tuve tiempo de leer el correo pero es la hora del baño-cena-cuento-cama de Matías, el ritual de todos los días :-)) Sólo una cosa, hasta donde pude averiguar el GDI no permite guardar TIFF 16, en su día me hice con las librerías de FreeImage para eso; pero si, por ahora, lo que queremos es captarla como cámara guía, lo que tenemos que hacer es convertir el formato de profundidad de bit 16 a profundidad 8. Otra cosa más, la Luna es en color ¿no?, al recogerlo en un formato de 16bits grayscale, como debe ser, lo que vas a tener es una imagen RAW como dices, con la matriz de bayer bien clarita. Lo primero que hay que hacer es "debayerizarla", también tengo código para eso. Y otra cosa, en el proyecto hay un miniplanteamiento de una clase de tipo FloatImage, aunque sería más lento, si lo que se quiere es guardar la imagen en 16bits, se puede utilizar como "trampolín" al FreeImage. Es más lento porque el buffer de FreeImage es más óptimo, pero en ese formato (el de FloatImage) tengo diseñados algunos filtros: estadísticos (mediana/media/stddev) histogramas, curvas, rotaciones, remuestreos, desenfoques, unsharpmask, DDP,... aunque se puede utilizar FreeImage directamente (que también también implementa algunos tratamientos básicos en 32 bits) y dejar el proceso a un programa especializado... como debe ser. En fin, luego sigo con calma. ----- Original Message ----- From: "Andres del Pozo Prieto" <and...@gm...> To: "Lista de correo de desarrollo EQAlign" <eqa...@li...> Sent: Thursday, October 04, 2007 6:31 PM Subject: Re: [Eqalign-devel] Me está dando guerra la QHY Francisco José wrote: > Pues eso, hartito me tiene... os planteo otra duda, a ver, tengo este > código: > > // El buffer será de 2621440 bytes (16 bits por pixel, > // la cámara tiene 1310720 pixels) > PixelFormat format = PixelFormat.Format16bppGrayScale; > System.Drawing.Bitmap bmp = new > System.Drawing.Bitmap(1280, 1024, format); > System.Drawing.Imaging.BitmapData bmpData = > bmp.LockBits(new System.Drawing.Rectangle(0, 0, bmp.Width, > bmp.Height), System.Drawing.Imaging.ImageLockMode.ReadWrite, format); > GETBUFFER(bmpData.Scan0,1310720); > bmp.UnlockBits(bmpData); > > Entiendo que en bmpData.Scan0 tengo el comienzo de la imagen RAW ¿y > ahora qué he de realizar para obtener la imagen? Si intento guardar o > fijarla a un control PictureBox me dice que el argumento es inválido > en una excepción en tiempo de ejecución, por ejemplo: > > bmp.Save(@"c:\test.bmp", ImageFormat.Bmp); Si no recuerdo mal el formato BMP no admite el formato de greyscale de 16bits. Puedes probar si te lo guarda en formato TIFF. > Ya mareado, y siendo honesto, he localizado en una web este código, > pero genera imágenes de 32bits RGB, logro guardar la imagen pero > claro, la cámara es monocromo y a 16: > > [DllImport("kernel32.dll")] > private static extern uint CopyMemory (IntPtr dest, IntPtr > Source, int Length); > > private Bitmap Bitmap32FromUnmanagedArray1(IntPtr image, int > width, int height) > { > Bitmap bmp = new Bitmap(width, height, > PixelFormat.Format32bppRgb); > > BitmapData bmData = bmp.LockBits(new Rectangle(0, 0, > bmp.Width, bmp.Height), > ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb); > > IntPtr dest = bmData.Scan0; > IntPtr source = image; > int len = width*4; > > if ( bmData.Stride == len ) > { > CopyMemory(dest, source, width*height*4); > } > else > { > for( int y = 0; y < bmp.Height; y++ ) > { > CopyMemory(dest, source, len); > > source = new IntPtr(source.ToInt32() + len); > dest = new IntPtr(dest.ToInt32() + bmData.Stride); > } > } > > > bmp.UnlockBits(bmData); > > return bmp; > } > > Cambiando Format32bppArgb por Format16bppGrayScale me da error de > acceso a memoria, soy torpe, ¿qué hago mal? Además de cambiar el pixelformat a 16bits tienes que cambiar los dos factores 4 por 2!!! Saludos, Andrés. ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ _______________________________________________ Eqalign-devel mailing list Eqa...@li... https://lists.sourceforge.net/lists/listinfo/eqalign-devel |