Nota: Dado el interés que tiene este tema y los problemas que plantea Rogelio, hemos decidido hacer la traducción de la respuesta original al Español. Versión en Español al final.Hi Rogelio,
You have two different problems here:
Win32 XP w/2GB RAM.
When combining the third pane with the combination of the first two, it took 17 attempts to find a valid set of pair matches, and when it went for the #18 it indicated it would use 12000 stars ...
I have good news and bad news. The good news is that both problems have very easy solutions. The bad news is that the solution to the first problem will cost you money. Let's analyze the facts.
The bad news first. We need a little arithmetic. Your mosaic frames are 4000x2600 pixels in size (roughly). They are 32-bit images (either floating point or integer). Since you use a STL 11K camera (your image geometry confirms that), I assume you're working with RGB color images (3 channels). Then we have:
Amount of RAM required for one image: 4000x2600x4x3 -> 119 MB
Probable amount of RAM required for a 4-frame mosaic, taking into account rotation of mosaic frames -> 500 MB
Note that we are neglecting all auxiliary and control data structures, as image window and view objects, screen bitmaps, lookup tables and buffers, statistics, histograms, and quite a bunch of complex data structures that PI uses internally for each image.
Note also that unless you're building a one-row mosaic, the amount of memory required to store a 3-frame mosaic and a 4-frame mosaic is roughly the same (the only difference is in the additional room required to rotate the fourth frame). So you need 500 MB allocated in three contiguous chunks of some 167 MB to generate your 3-frame mosaic.
Let's make a step-by-step description of what you do to build your mosaic:
1. You turn on your computer. Windows XP 32-bit reserves approximately one gigabyte for its own use, including its kernel and all core services and device drivers. It can be somewhat less or more, depending on how you have configured your system. Then your firewall/antivirus program is loaded and executed (because you're running one, aren't you?). It will consume some memory, depending on the particular application you're using. If you have other applications or services configured to run at startup, they will also need some additional memory. Both your antivirus/firewall and the rest of resident applications will reduce the amount of free RAM available to applications.
2. You execute the PixInsight Core application. As of version 1.5.9.561, the 64-bit version of PixInsight Core for Linux (the reference implementation) has a RAM footprint of approximately 100 MB. I haven't measured the footprint on Windows 32-bit, but it should be similar.
3. You open your first two mosaic frames. This consumes roughly 240 MB of RAM.
4. You generate a two-frame mosaic. This is another 240 MB.
5. Of course, you close your two first mosaic frames, to save memory. This frees six contiguous chunks of 40 MB each, one for each channel of your first two mosaic frames. Note, however, that the six chunks won't form, in general, a contiguous hole of 240 MB. This is known as memory fragmentation, and is a problem inherent to all dynamic allocation systems.
6. You open your third mosaic frame. It occupies three of the 40 MB chunks that you freed in step 5. This is 120 MB.
7. You launch StarAlignment again to generate a 3-frame mosaic. Your mosaic requires three free contiguous holes of some 165 MB each, or a total of some 500 MB.
8. You get an out of memory error because Windows XP 32-bit won't allow an application to allocate 900 MB of physical RAM in a system where the maximum RAM available to applications is less than 1 GB. End of the story.
Let me introduce Vega to you. Vega is our physical Windows test machine here at our office (we have other Windows machines, but all of them are virtual ones). It is a nicely built Intel Core 2 6300 @ 1.86 GHz with 2 GB of RAM. It is, by today's standards, how to say, not at the bleeding edge of technology. Vega runs Windows Vista Business x64 up-to-date with SP2 installed.
Below you have a screenshot that shows Vega's main screen after building not one, neither two but three mosaics even larger than your mosaic. And it has only 2 GB of RAM:
http://forum-images.pixinsight.com/legacy/mosaic_64/mosaic_64-1.pngIf you don't trust me, here's a screenshot with the task manager open (sorry, it's in Spanish):
http://forum-images.pixinsight.com/legacy/mosaic_64/mosaic_64-2.pngNote also that there are two instances of PixInsight running. I used the other instance to copy and save the screenshot images.
The mosaics are composed of two 64-bit floating point images of 4000x4000 pixels each. Each mosaic requires some 743 MB of RAM as you see. On the above screenshot, the first instance of PixInsight is using 3 GB of RAM, just to store pixel data. Of course, a lot of disk swapping is necessary to achieve that. Vega has an enterprise-class Western Digital 750 GB SATA disk. After completing the second mosaic, the PixInsight Core application was perfectly responsive. After the third mosaic and a few minutes waiting for Vista to stabilize, it was usable although the GUI was somewhat slow. Vista's pagefile.sys file was about 4 GB at this point.
This is just to demonstrate you the power of a 64-bit operating system. The 64-bit version of PixInsight has no practical memory limits, other than the fact that when you have consumed your physical RAM, a lot of disk swapping is necessary, and that slows down everything.
So my advice is to buy or build a new computer. Throw a minimum of 8 GB on a modern and efficient motherboard with at least a quad-core processor and install a 64-bit operating system. If you insist in using Windows, buy a license of Windows 7 x64.
In the meanwhile, you can build your mosaic with 16-bit integer images on your WinXP32/2GB machine without problems (once you've solved the second issue, see below).
=======================
Now your second problem. This is very easy to fix, and I explain how in my third video on mosaic construction (which I'm going to continue working on as soon as I finish this post).
You just have to define two previews: one on your 2-frame mosaic image and one on your third mosaic frame. Each preview must cover (roughly) the overlapped area between both images. Then select the mosaic's preview as the reference image in StarAlignment, and apply it to the frame's preview. The mosaic in the above screenshot has been generated in this way, as it has minimal overlapping (< 2%).
When StarAlignment is executed on previews, it looks for star pair matches on the areas covered by the previews, but performs the image registration on the previews' parent images. This system allows us to build huge mosaics with no practical limit. For example, the two-frame mosaic that you can see on the screenshots above is part of a 256-megapixel, 16-frame mosaic.
StarAlignment has been designed for maximum registration accuracy, not as a "throw me anything and I'll align it anyway" system.
Sorry for being a bit technical, but there's no other way to explain this. StarAlignment's star pair matching system requires the number of outliers (false pair matches) in the initial set of putative star pair matches to be not too large. This is because the registration model (an eight-parameter homography) is computed with a special implementation of the RANSAC algorithm. RANSAC ensures that no false star match will enter the registration model, which greatly improves accuracy. However, RANSAC is sensitive to a large number of outliers in its input set. To overcome this limitation with a minimal user intervention, I designed and implemented the preview-based registration model that I've described in the preceding paragraphs.
As I've said I describe all of this in detail in the third video. Let me know if you need further information.
====================================================================
Hola Rogelio,
Tienes dos problemas diferentes aquí:
Win32 XP w/2GB RAM.
When combining the third pane with the combination of the first two, it took 17 attempts to find a valid set of pair matches, and when it went for the #18 it indicated it would use 12000 stars ...
Tengo buenas y malas noticias. La buena noticia es que ambos problemas tienen soluciones muy sencillas. La mala noticia es que la solución al primer problema te costará dinero. Analicemos los hechos.
Primero las malas noticias. Necesitamos un poco de artmética. Cada uno de los elementos de tu mosaico tiene 4000x2600 pixels (más o menos). Son imágenes de 32 bits (enteras o en punto flotante). Como usas una cámara STL 11K (la geometría de tus imágenes lo confirma), asumo que estás trabajando con imágenes RGB en color (3 canales). Entonces tenemos:
Cantidad de RAM necesaria para una imagen: 4000x2600x4x3 -> 119 MB
Cantidad probable de RAM necesaria para un mosaico de 4 elementos, teniendo en cuenta la rotación de los elementos del mosaico -> 500 MB
Ten en cuenta que estamos pasando por alto todas las estructuras auxiliares de control, como las ventanas de imagen, las vistas, los bitmaps de pantalla, las tablas lookup y los buffers, los histogramas, estadísticas y un buen puñado de estructuras de datos que PI usa internamente para cada imagen.
Ten en cuenta también que a menos que estés construyendo un mosaico de una fila, la cantidad de memoria necesaria para almacenar un mosaico de tres elementos es la misma, aproximadamente, que la que se necesita para un mosaico de cuatro elementos (la única diferencia es el espacio adicional necesario para girar el cuarto elemento). De manera que necesitas 500 MB ubicados en tres bloques contiguos de memoria de unos 167 MB cada uno para generar tu mosaico de tres elementos.
Hagamos una descripción paso a paso de lo que haces para construir tu mosaico:
1. Enciendes tu ordenador. Windows XP de 32 bits reserva aproximadamente un gigabyte para su propio uso, incluyendo el kernel y los servicios del mismo, así como todos los controladores de dispositivo. Puede ser algo más o algo menos, dependiendo de cómo tengas configurado tu sistema. Entonces tu programa de firewall/antivirus es cargado y ejecutado (porque estás usando uno, ¿verdad?). Consume alguna memoria, dependiendo de la aplicación en particular que estés usando. Si tienes otras aplicaciones o servicios configurados para ejecutarse en el inicio, también van a necesitar alguna memoria. Tanto tu antivirus/firewal como el resto de las aplicaciones residentes van a reducir la cantidad de memoria libre disponible para las aplicaciones.
2. Ejecutas la aplicación PixInsight Core. La versión 1.5.9.561 de 64 bits de PixInsight Core para Linux (la implementación de referencia) tiene un "footprint" en RAM de aproximadamente 100 MB. No he medido el footprint en Windows de 32 bits, pero debería ser similar.
3. Abres los dos primeros elementos de tu mosaico. Esto consume unos 240 MB de RAM.
4. Generas el primer mosaico de dos elementos. Esto supone otros 240 MB.
5. Por supuesto, ahora cierras los dos primeros elementos del mosaico, para ahorrar memoria. Esto libera seis bloques contiguos de 40 MB cada uno, uno para cada canal de tus dos primeros elementos de mosaico. Ten en cuenta, sin embargo, que estos seis bloques no van a formar, necesariamente, un agujero de 240 MB contiguos. Esto se conoce como fragmentación de memoria, y es un problema inherente a todos los sistemas que realizan ubicación dinámica.
6. Ahora abres el tercer elemento del mosaico. Ocupa tres de los bloques de 40 MB que has liberado en el paso 5. Esto son 120 MB.
7. Lanzas StarAlignment de nuevo para generar un mosaico de tres elementos. Tu mosaico requiere tres agujeros de unos 165 MB contiguos cada uno, o un total de unos 500 MB.
8. Recibes un error de falta de memoria porque Windows XP de 32 bits no va a permitir que una aplicación ubique 900 MB de RAM física en un sistema donde la cantidad máxima de RAM disponible para aplicaciones está por debajo de 1 GB. Fin de la historia.
Permíteme que te presente a Vega. Vega es nuestra máquina física para pruebas con Windows aquí en nuestra oficina (tenemos otras máquinas de Windows, pero todas son virtuales). Es una máquina muy bien construida con un Intel Core 2 6300 a 1.86 GHz con 2 GB de RAM. Se trata de una máquina que para los estándares actuales, cómo decirlo, no está al filo de la tecnología precisamente. Vega corre Windows Vista Business x64 actualizado con SP2 instalado.
A continuación tienes una copia de pantalla que muestra la pantalla principal de Vega tras haber construido no uno, ni dos, sino tres mosaicos más grandes que el tuyo. Y sólo tiene 2 GB de RAM:
http://forum-images.pixinsight.com/legacy/mosaic_64/mosaic_64-1.pngSi no me crees, aquí tienes una copia de pantalla con el administrador de tareas de Wndows abierto:
http://forum-images.pixinsight.com/legacy/mosaic_64/mosaic_64-2.pngTen en cuenta también que hay dos instancias de PixInsight en ejecución. Usé la otra instancia para copiar y guardar las copias de pantalla.
Los mosaicos están compuestos por dos imágenes de 64 bits en punto flotante de unos 4000x4000 píxeles cada una. Cada mosaico requiere unos 743 MB de RAM como puedes ver. En la copia de pantalla anterior, la primera instancia de PixInsight está utilizando 3 GB de RAM, tan sólo para almacenar datos de píxel. Por supuesto, es necesario mucho intercambio de datos en disco para conseguir esto. Vega monta un disco SATA Western Digital de clase enterprise de 750 GB. Tras completar el segundo mosaico, la aplicación PixInsight Core era perfectamente utilizable. Tras el tercer mosaico, y después de esperar unos minutos hasta que Vista se estabilizara, era también utilizable aunque la interfaz gráfica iba algo lenta. El archivo pagefile.sys de Vista tenía unos 4 GB en este momento.
Esto es sólo para demostrarte la potencia de un sistema operativo de 64 bits. La versión de 64 bits de PixInsight no tiene límite práctico de memoria, aparte del hecho de que cuando se consume la RAM física es necesario mucho intercambio con los discos, lo cual enlentece todo en gran medida.
Así que mi consejo es que compres o construyas un nuevo ordenador. Pon un mínimo de 8 GB en una placa base moderna y eficiente con al menos un procesador quad-core e instala un sistema operativo de 64 bits. Si insistes en usar Windows, compra una licencia de Windows 7 x64.
Mientras tanto, puedes construir tu mosaico sin problemas con imágenes de 16 bits en tu máquina WinXP32/2GB (una vez que hayas resuelto el segundo problema, lee más abajo).
=======================
Ahora tu segundo problema. Éste es muy fácil de resolver, y explico cómo hacerlo en mi tercer vídeo sobre construcción de mosaicos (el cual voy a continuar haciendo tan pronto como termine este mensaje).
Tan sólo tienes que definir dos previsualizaciones (previews): una para tu mosaico de dos elementos, y otra para el tercer elemento de tu mosaico. Cada previsualización debe cubrir (más o menos) el área de superposición entre ambas imágenes. Entonces selecciona la previsualización del mosaico como la imagen de referencia de StarAlignment, y aplícalo a la previsualización del tercer elemento del mosaico. El mosaico de las copias de pantalla anteriores ha sido generado de esta manera, ya que tiene una mínima superposición (< 2%).
Cuando StarAlignment es ejecutado sobre previsualizaciones, busca parejas de estrellas coincidentes en las áreas cubiertas por las previsualizaciones, pero lleva a cabo el registro de las imágenes madre de las mismas. Este sistema nos permite construir mosaicos enormes sin límite práctico. Por ejemplo, el mosaico de dos elementos que puedes ver en las copias de pantalla anteriores forma parte de un mosaico de 256 megapíxeles y 16 elementos.
StarAlignment ha sido diseñado para la máxima precisión de registro, no como un sistema del tipo "échame cualquier cosa y yo la alinearé sea como sea".
Perdón por ser un poco técnico, pero no hay otra forma de explicar esto. El sistema de emparejamiento de estrellas de StarAlignment requiere que el número de
outliers (falsas parejas) en el conjunto inicial de parejas coincidentes de estrellas no sea demasiado grande. Esto es porque el modelo de registro (una homografía con 8 parámetros) es calculado con una implementación especial del algoritmo RANSAC. RANSAC asegura que ninguna falsa pareja de estrellas entrará en el modelo de registro, lo cual aumenta la precisión considerablemente. Sin embargo, RANSAC es sensible a un gran número de outliers en su conjunto de entrada. Para superar este problema con una intervención mínima del usuario, diseñé e implementé el modelo de registro basado en previsualizaciones que he descrito en los párrafos anteriores.
Como he dicho voy a describir todo esto en el tercer vídeo. Dime si necesitas más información.