Si la imagen a transformar al formato bmj cumple las

Info icon This preview shows pages 57–59. Sign up to view the full content.

Si la imagen a transformar al formato BMJ cumple las especificaciones anteriores, el código sigue ejecutándose, siendo el siguiente paso la obtención de información sobre la memoria disponible. 3 N. del A.- Se recomienda observar las definiciones de las estructuras en el capítulo 3.
Image of page 57

Info icon This preview has intentionally blurred sections. Sign up to view the full version.

B ENJAMÍN A RIAS P ÉREZ F OTOGRAMETRÍA D IGITAL Y P ROGRAMACIÓN 82 5.2.1.4.- Obtención de información de la memoria disponible La primera parte del archivo BMJ contiene el archivo en formato BMP original, y la copia de éste sobre el primero se puede realizar de forma simple, byte a byte. Sin embargo, si el archivo original contiene 1.000 bytes, e.g., se emplearán 1.000 operaciones de lectura y otras tantas de escritura, i.e., 2.000 operaciones de lectura y escritura, que a su vez se pueden transformar a tiempo en función del ordenador con el que se trabaje y en función del dispositivo del almacenamiento. Por lo tanto esto no es muy práctico a efectos de rendimiento temporal del código. Para paliar este inconveniente, se puede recurrir a funciones de la API de Windows que permitan manejar bloques de memoria. Entonces el elemento de lectura/escritura pasa de ser 1 byte a ser un bloque de bytes, con lo que disminuye de forma considerable el número de operaciones, y por tanto el tiempo empleado. Los pasos básicos para copiar un bloque de memoria son 4 : 1.- Asignación de memoria de la pila global. 2.- Bloqueo de la memoria asignada. Una vez bloqueada la memoria, ésta no se puede mover ni destruir, en cambio se puede copiar. 3.- Copia del contenido de la memoria bloqueada a otro bloque. 4.- Desbloqueo de la memoria bloqueada. 5.- Liberación del bloque de memoria. Se puede considerar que el paso 4º es el inverso del 2º, que el paso 5º es el inverso del 1º. Es necesario salir de Visual Basic para poder realizar estas operaciones, puesto que las funciones que aporta Visual Basic no permiten manejar bloques de memoria. Por lo tanto, hay que realizar llamadas a funciones de la API que permiten hacer este tipo de operaciones. Con estas operaciones se reduce el tiempo de lectura/escritura del archivo original sobre el archivo final. Pero cabe plantearse una pregunta, ¿qué ocurre cuando el bloque de memoria excede de la memoria que Windows maneja?, que implica otra cuestión, ¿se pueden realizar operaciones con grandes bloques de memoria?. La respuesta a esta última pregunta es que afirmativa. En cuanto a la primera pregunta, cuando se quiere asignar un bloque de memoria que excede la capacidad de Windows para manejarlo, Windows se dedica a ampliar la memoria virtual y su archivo de paginación, hasta que pueda asignar la memoria. Esto implica tiempo de espera mientras que Windows reorganiza la memoria virtual, y además este tiempo de espera es indeterminado, por lo tanto es un cabo suelto que conviene atar . Una posibilidad (hay varias), es determinar cuánta memoria RAM hay disponible en el ordenador, y realizar las operaciones de bloques de memoria con bloques de un tamaño inferior a dicha memoria disponible. De esta forma se realizan varias operaciones de lectura/escritura en
Image of page 58
Image of page 59
This is the end of the preview. Sign up to access the rest of the document.
  • Fall '18
  • Pixel, NeXT, Procesamiento digital de imágenes, BENJAMÍN ARIAS PÉREZ

{[ snackBarMessage ]}

What students are saying

  • Left Quote Icon

    As a current student on this bumpy collegiate pathway, I stumbled upon Course Hero, where I can find study resources for nearly all my courses, get online help from tutors 24/7, and even share my old projects, papers, and lecture notes with other students.

    Student Picture

    Kiran Temple University Fox School of Business ‘17, Course Hero Intern

  • Left Quote Icon

    I cannot even describe how much Course Hero helped me this summer. It’s truly become something I can always rely on and help me. In the end, I was not only able to survive summer classes, but I was able to thrive thanks to Course Hero.

    Student Picture

    Dana University of Pennsylvania ‘17, Course Hero Intern

  • Left Quote Icon

    The ability to access any university’s resources through Course Hero proved invaluable in my case. I was behind on Tulane coursework and actually used UCLA’s materials to help me move forward and get everything together on time.

    Student Picture

    Jill Tulane University ‘16, Course Hero Intern