PixInsight 1.8.8-12 Released

Juan Conejero

PixInsight Staff
Staff member
Hi all,

Today we have released a new version of PixInsight: 1.8.8-12. This release provides important improvements, stability enhancements and bug fixes on all supported platforms.

Installation packages for PixInsight 1.8.8-12 are now available to all licensed users for Linux, macOS and Windows:

https://pixinsight.com/dist/

As happens with all updates to the PixInsight core application, this version cannot be downloaded as an application update. You have to install version 1.8.8-12 manually:
  • Linux: The installation packages are xz-compressed tar archives (.tar.xz). To install one of these archives, just extract its full contents on any directory, preferably on one located under your home directory. Then become root and run the installer program from a terminal. Normally you should just type "yes" and press Enter to accept the default settings. Say './installer --help' for detailed information on command-line arguments.

  • macOS: If you have a previous version of PixInsight already installed, you must uninstall it by moving the /Applications/PixInsight folder to trash (also known as bin on macOS 10.15 and later). Run the .pkg installation package and follow the instructions. All our macOS installation packages are digitally signed with our corporate Apple developer certificate and have been notarized by Apple.

  • Windows: Run the installation package for version 1.8.8-12 and follow the instructions. The installer will remove a previous version automatically, so there is no need to uninstall it. All executable files in the PixInsight distribution for Windows, as well as our installation packages, have been signed with our corporate Extended Validation (EV) code signing certificate.
If you have version 1.8.6, 1.8.7, or any 1.8.8-x version already installed, this new version does not require a license reactivation. If you are still using a 1.8.5 version or older, see the official 1.8.6 version announcement for a detailed description of our new licensing system. See also FAQ 2.10 for additional information on license reactivations.


New Image Weighting Algorithms

Version 1.8.8-12 introduces a completely redesigned and reimplemented version of the PSF Signal Weight algorithm (PSFSW), along with its PSF Signal Power Weight variant (PSFSPW). Both variants are tightly integrated with our standard preprocessing pipeline, from image calibration and demosaicing to image integration and drizzle integration, including all intermediate processes and scripts, such as SubframeSelector and WeightedBatchPreprocessing.

PSFSW and PSFSPW strive to provide comprehensive, sensitive and robust image quality estimates, able to capture a wide range of properties of the data in a single metric. An article with a technical description of the algorithm, practical examples, quantitative evaluations to demonstrate the performance of these new methods and a thorough statistical analysis will be released during the next days.


Improved SubframeSelector Tool

SubframeSelector now lets you select an auxiliary property for the main graph. Previously the secondary property was always Weight. Now you can choose it freely to generate more interesting and useful graphs where one can compare arbitrary pairs of properties or functions. Besides this, we have improved the user interface by replacing the old push buttons with tool buttons with icons.

SFS-1.jpg


Besides the electrons and data number (DN) units that have always been available to represent some measurements, such as Median and Noise, SubframeSelector implements now the normalized [0,1] range, which is from now on the default option for coeherence with the PixInsight platform.


New FindingChart Tool

This tool allows you to generate finding charts representing the position, dimensions and orientation of your images on the sky, including customizable synthetic star fields and annotations. This is an extended reimplementation of the original code I wrote for our AstroBin+PixInsight collaboration a few months ago.

FC-1.jpg


FindingChart provides many parameters to allow you customize your charts, including chart size in pixels, resolution in arcseconds per pixel, limiting magnitude, annotation items, and colors. This is an initial version of this nice tool, where I want to implement more advanced options, such as selectable projections, chart orientation parameters, the possibility of representing multiple images, etc. I hope you like it as much as I do.

FC-2.jpg



Improved LocalNormalization Tool

LocalNormalization implements now an improved, more robust version of its multiscale image normalization algorithm. This is the first stage in a series of improvements that I have planned for this essential tool with the purpose of achieving the expected (and required) levels of robustness and accuracy. Here are two extreme examples. The first one with two M45 frames from a data set by Edoardo Luca Radice:

LN-1.jpg


In this example the LocalNormalization process is able to remove the strong gradients to copy the gradients of the reference image, as well as the corresponding scale variations. The last image is the result of applying LN with the scale component disabled (i.e., scale set to constant = 1)

The second example is a heavy torture test for any normalization algorithm:

LN-2.jpg


In the example, P is the normalization reference image in all cases. Q is a different frame from the same data set, and Q_normalized is the result of LocalNormalization with default parameters. R is the result of applying the PixelMath expression shown to the Q image. This expression:

iif( $T, $T * sin(pi()*(1 - X())) + 0.01*(1 - Y()), 0 )

introduces strong multiplicative and additive gradients as you can see. The LN process is able to recover the data remarkably well in this difficult case, and the plane trail artifacts have no detectable influence in the result.


PixelMath Improvements

A new PixelMath function is now available:

ostat( k, a, b, c[, ...] )
ostat( k, image[, x0, y0, w, h] )

Order statistic function:
  1. The kth order statistic of a set of three or more scalar arguments.
  2. The kth order statistic of the specified image.
The order k is expected to be expressed in the [0,1] range, where 0 represents the first order statistic (or the minimum value of the sample) and 1 the last order statistic (or the maximum value of the sample). k=0.5 corresponds to the median value of the sample.

In the second form, the optional x0, y0, w, and h parameters define a rectangular region of interest (ROI). These parameters are, respectively, the left coordinate, the top coordinate, the width and the height of the ROI, all of them expressed in integer pixel units. If a ROI is specified, the order statistic will be computed exclusively for pixel samples within the intersection between the ROI and the image bounds. If no ROI is specified, the order statistic will be computed for the entire image. Invariant subexpression: When the second argument is an image reference with optional scalar ROI coordinates (second form).

PM-1.jpg


This function is a fundamental statistical analysis tool that we have been lacking for a long time in PixelMath. More are to come in next versions.


Updated Scripts

WeightedBatchPreprocessing version 2.3.2.
WBPP engine adapted to the new PSF Signal weighting algorithms. Adapted to changes in the ImageIntegration process. Core version 1.8.8-12 required.

AnnotateImage version 2.2.3. We now use Table 4 of the Catalogue of Galactic Planetary Nebulae (CGPN) instead of Table 1 for accurate J2000 object positions. This solves all issues with misplaced CGPN object annotations in previous versions. Since Table 4 contains multiple records for each object, a special routine has been implemented to remove catalog records with duplicate object names.

CatalogstarGenerator version 2.1.7. New engine parameters to support the new FindingChart tool in PixInsight 1.8.8-12.

MakefileGenerator version 1.125. The default macOS SDK version is 12.1 (macOS Monterey). New FindingChart standard module.


Recommended Platforms and Supported Operating Systems

The reference implementation of PixInsight, where you may expect the maximum performance and best user experience, is the Linux version. Currently our primary development platforms are:
We strongly recommend running PixInsight on Kubuntu Linux 20.04 LTS with the KDE Plasma desktop environment.

PixInsight 1.8.8-12 for Linux requires GLIBC 2.27 or a newer version.

PixInsight 1.8.8-12 for macOS is only compatible with macOS 10.15 Catalina, 11.x Big Sur and 12.x Monterey. macOS 10.14 Mojave and older versions are no longer supported. All of our macOS installation packages are digitally signed with our corporate Apple developer certificates and have been notarized by Apple.

PixInsight 1.8.8-12 for Windows is compatible with Windows 10 and Windows 11 exclusively. Windows 8.1, Windows 7 and older versions are not supported. The application might run on Windows 7, but there is no guarantee and please do not report problems on Windows 7 and Windows 8. All of our Windows executables have been digitally signed with our corporate extended validation (EV) code signing certificate.


Known Issues

FreeBSD and Linux
  • Recent versions of the KDE Plasma desktop environment include a morphing popups desktop effect that causes problems with recent PixInsight versions. If this effect is enabled, it slows down some dragging operations in the PixInsight core application, such as dragging icons and view selectors. You should disable this effect, which is very easy from KDE's System Settings panel.

  • On recent versions of the KDE Plasma desktop environment, a display tearing prevention option (v-sync) is enabled by default. This option can cause input lag problems, such as slow cursor movement over image windows, with certain hardware configurations. If you experience these problems, this option should be disabled for optimal PixInsight performance:
    • System Settings > Display and Monitor > Tearing prevention: set to 'Never'
    • Click Apply
Linux
  • PixInsight is not compatible with the open-source Nouveau graphics driver. If your distribution is using Nouveau, you must remove it to use the proprietary NVIDIA driver in order to use PixInsight.
Windows
  • On some laptops with nonstandard screen resolutions, such as the Microsoft Surface, PixInsight cannot find valid screen scaling factors automatically. On these machines, you may have to run the PixInsight core application with the --ui-scaling command-line argument. For example, to apply a UI scaling factor of 2:

    C:\Program Files\PixInsight\bin\PixInsight.exe --ui-scaling=2

    You only have to do this once, since the scaling factor will be stored in application preferences automatically. Of course, if you already are using a version 1.8.6 or later and the interface looks correct, then you don't need to do this; this is only required for some new installations.

All Platforms
  • The StarNet module uses the TensorFlow library, which requires a processor with support of AVX2 and FMA instructions. This excludes very old machines with Intel processors released before 2013 and Apple machines with M1 processors (because the Rosetta emulator on macOS Big Sur does not support AVX2 instructions). The macOS installation package for version 1.8.8-12 includes a post-install script that will delete the StarNet module automatically when the host machine runs an ARM processor, so there should be no problems on Apple Silicon computers.

    If you are using a vintage pre-2013 Intel processor, or if the StarNet module has not been deleted automatically on your M1 machine for some odd reason, PixInsight 1.8.8-12 won't work as it is installed by default. However, this problem is very easy to fix: just remove the StarNet module. Do the following:
Linux
Enter the following command from a terminal:​
sudo rm /opt/PixInsight/bin/StarNet-pxm.so​
macOS
Remove the following file:​
/Applications/PixInsight/bin/StarNet-pxm.dylib​
Windows
Remove the following file:​
C:\Program Files\PixInsight\bin\StarNet-pxm.dll​
In all cases you need administrative privileges to remove the required file, which you also need to install PixInsight. After this simple action, PixInsight will run without problems on your old machine.​
  • The INDIClient module is only available in the Linux version of PixInsight. We hope to solve this problem to release macOS and Windows versions of this module as soon as possible. Sorry for the inconvenience.

In Memoriam

It is with great sadness that we have been informed that our friend Niall Saunders passed away last month. Besides an excellent person and a good friend, Niall was a strong supporter of PixInsight since the beginning. His numerous contributions to this forum are remarkable for his knowledge, cleverness and passion. We'll miss him.


——————————————————————————

Happy New Year to all PixInsight users, to their families and friends. We hope you enjoy this new PixInsight version and we wish you all the best for 2022. ?
 
Last edited:
Hi Juan

Are the PSF and PSF Power implementations in 1.8.8-12 different to 1.8.8-11 i.e. if you have images calibrated in -11, should they be re-processed from scratch to take the full advantage of -12.

Regards

Chris

ps RIP Niall, i have learnt a lot from his comments over the years, he will be sorely missed.
 
Hi Chris,

Are the PSF and PSF Power implementations in 1.8.8-12 different to 1.8.8-11 i.e. if you have images calibrated in -11, should they be re-processed from scratch to take the full advantage of -12.

Yes, completely different. Everything should be re-calibrated (and re-demosaiced if appropriate) with version 1.8.8-12. Sorry for the inconvenience.
 
Juan, there is a conflict on your new instructions for Windows above where you indicate that there is no longer a need to uninstall before installing. On the distribution page for Windows, it still says to uninstall first before installing.
Larry
 
Hi Juan

First, thanks for this update - the continued efforts of you and your team to keep improving Pixinsight is greatly appreciated!

Can I ask a question about the behaviour of PixelMath when executed on a View with a Mask enabled? It seems the behaviour changed from 1.8.8-10 to 1.8.8-11 and has now reverted in 1.8.8-12 back to the 1.8.8-10 behaviour! Specifically the following seems to be the situation:

1.8.8-10: If "Replace target image" is selected - mask is applied; if "Create new image" is selected - mask is ignored.
1.8.8-11: If "Replace target image" is selected - mask is ignored; if "Create new image" is selected - mask is ignored.
1.8.8-12: If "Replace target image" is selected - mask is applied; if "Create new image" is selected - mask is ignored.

It is of course, possible that I am wrong about this change but if not please would you confirm whether the current 1.8.8-12 behaviour is the intended behaviour going forward? Thanks.

Wishing you all the best for 2022.

Mike
 
PSFSW and PSFSPW strive to provide comprehensive, sensitive and robust image quality estimates, able to capture a wide range of properties of the data in a single metric. An article with a technical description of the algorithm, practical examples, quantitative evaluations to demonstrate the performance of these new methods and a thorough statistical analysis will be released during the next days.
First, it is amazing how quickly and smoothly you and the PI team can continuously improve the PI program. You never have the "do it and forget it" syndrome, but always strive for constant improvement! Thank you.

Will the coming technical description article be in the form of Reference Documentation, a Forum Post, or other?
Were any of the Reference Documentations updated along with 1.8.8-12 release? A revision date, or PI version, or other process version information, in the header of the reference document would be helpful.
Thks,
Roger
 
First, it is amazing how quickly and smoothly you and the PI team can continuously improve the PI program. You never have the "do it and forget it" syndrome, but always strive for constant improvement! Thank you.

Will the coming technical description article be in the form of Reference Documentation, a Forum Post, or other?
Were any of the Reference Documentations updated along with 1.8.8-12 release? A revision date, or PI version, or other process version information, in the header of the reference document would be helpful.
Thks,
Roger
The reference documentation for NormalizeScaleGradient and PhotometricMosaic were both updated. The version number in the screen shots should now match those displayed by the scripts.

I would strongly recommend reading their 'Quick Start Guide' again. Significant changes have been made.

Happy New Year
 
Hmmm.... I run StarNet on 1.8.8-12, and I get "rgb_starnet_weights.pb not found" when I drag the triangle. Are the rgb and mono pb files supposed to be there? If not, why the error? I'd saved the old directory, and just copied the previous release's .pb files to the new one, and it seems to work.
 
When using PSFPW as weighting in SubFrameSelector, is it recommended to only use it on calibrated subframes?

The debug in the console suggests so, right?

** Warning: Noise estimates are not available in the image metadata and are being calculated from possibly non-raw or uncalibrated data. Image weights can be wrong or inaccurate.
 
Hi Juan

First, thanks for this update - the continued efforts of you and your team to keep improving Pixinsight is greatly appreciated!

Can I ask a question about the behaviour of PixelMath when executed on a View with a Mask enabled? It seems the behaviour changed from 1.8.8-10 to 1.8.8-11 and has now reverted in 1.8.8-12 back to the 1.8.8-10 behaviour! Specifically the following seems to be the situation:

1.8.8-10: If "Replace target image" is selected - mask is applied; if "Create new image" is selected - mask is ignored.
1.8.8-11: If "Replace target image" is selected - mask is ignored; if "Create new image" is selected - mask is ignored.
1.8.8-12: If "Replace target image" is selected - mask is applied; if "Create new image" is selected - mask is ignored.

It is of course, possible that I am wrong about this change but if not please would you confirm whether the current 1.8.8-12 behaviour is the intended behaviour going forward? Thanks.

Wishing you all the best for 2022.

Mike

Let's start clarifying some important concepts about masks in PixInsight. Masks are always applied by the PixInsight core application after processes are executed. In other words, the masking process is automatic, transparent, and independent on executed processes. For this reason every process that modifies pixels is automatically maskable in PixInsight.

Let's analyze PixelMath's behavior regarding masks. When you generate a new image from PixelMath there is no active mask for the newly generated image, and hence no masking can happen. So the following behavior is normal and expected:

1.8.8-12: If "Replace target image" is selected - mask is applied; if "Create new image" is selected - mask is ignored.

It has always worked that way since I wrote the first version of the PixelMath tool, back in 2005 if I remember well. If you have observed a different behavior, then something very strange has happened.

And finally, let's describe a simple solution to the problem. The following is like a 'template' solution that you can always apply when the create new image option is enabled:
  • Declare a variable to store the result of your main PixelMath expression. For example, let's declare a result variable.

  • Use the result variable as follows:

    result = <your-expression>;
    result*$M + $T*(1 - $M)

    where you must replace <your-expression> with the actual PixelMath expression that you want to execute. The $M metasymbol represents the active mask of the target image.
For example, let's say that we want to multiply an image by 0.5, applying its active mask, and generating the result as a new image (create new image option checked)

result = 0.5*$T;
result*$M + $T*(1 - $M)

EDIT: Of course, the result variable is not really needed. In this example you can simply write:

0.5*$T*$M + $T*(1 - $M)

You'll have to enclose your expression between parentheses it it's more complex than a single operation or function, such as for example:

($T - med( $T ) + med( reference ))*$M + $T*(1 - $M)

but this requires some fluency with PixelMath's language.

EDIT2: You can also apply an inverted mask by just swapping the role of $M in the mixing equation. For example:

0.5*$T*(1 - $M) + $T*$M


Let me know if this helps and Happy New Year!
 
Last edited:
When using PSFPW as weighting in SubFrameSelector, is it recommended to only use it on calibrated subframes?

The debug in the console suggests so, right?

** Warning: Noise estimates are not available in the image metadata and are being calculated from possibly non-raw or uncalibrated data. Image weights can be wrong or inaccurate.

This topic answered this question.
 
Let's start clarifying some important concepts about masks in PixInsight. Masks are always applied by the PixInsight core application after processes are executed. In other words, the masking process is automatic, transparent, and independent on executed processes. For this reason every process that modifies pixels is automatically maskable in PixInsight.

Let's analyze PixelMath's behavior regarding masks. When you generate a new image from PixelMath there is no active mask for the newly generated image, and hence no masking can happen. So the following behavior is normal and expected:



It has always worked that way since I wrote the first version of the PixelMath tool, back in 2005 if I remember well. If you have observed a different behavior, then something very strange has happened.

And finally, let's describe a simple solution to the problem. The following is like a 'template' solution that you can always apply when the create new image option is enabled:
  • Declare a variable to store the result of your main PixelMath expression. For example, let's declare a result variable.

  • Use the result variable as follows:

    result = <your-expression>;
    result*$M + $T*(1 - $M)

    where you must replace <your-expression> with the actual PixelMath expression that you want to execute. The $M metasymbol represents the active mask of the target image.
For example, let's say that we want to multiply an image by 0.5, applying its active mask, and generating the result as a new image (create new image option checked)

result = 0.5*$T;
result*$M + $T*(1 - $M)

EDIT: Of course, the result variable is not really needed. In this example you can simply write:

0.5*$T*$M + $T*(1 - $M)

You'll have to enclose your expression between parentheses it it's more complex than a single operation or function, such as for example:

($T - med( $T ) + med( reference ))*$M + $T*(1 - $M)

but this requires some fluency with PixelMath's language.

EDIT2: You can also apply an inverted mask by just swapping the role of $M in the mixing equation. For example:

0.5*$T*(1 - $M) + $T*$M


Let me know if this helps and Happy New Year!

Thanks for the clarification Juan, that makes sense. I'm not sure what I must have done in 1.8.8-11 to get a different result! Anyway, the intended behaviour is clear and logical so thank you.
 
Many thanks for the new updates. It seems the PixInsight development team never rest!

A minor issue of a missing horizontal scroll bar in the Normalize Scale Gradient script... The scroll bar appears when adding files but is missing if the script is closed (with the files listed) and then re-opened.

Thanks, John, for this script and a special thanks for updating manual entry on Image scale.:)

John
 
Is there a conflict with -12 and PSFImage by Hartmut?
I can't find the script anymore.
However, other scripts like GAME are still there.

Edit: I manually added it back. Not sure what happened during the update.
 
Last edited:
Many thanks for the new updates. It seems the PixInsight development team never rest!

A minor issue of a missing horizontal scroll bar in the Normalize Scale Gradient script... The scroll bar appears when adding files but is missing if the script is closed (with the files listed) and then re-opened.

Thanks, John, for this script and a special thanks for updating manual entry on Image scale.:)

John
Bug confirmed.
I have attached the fixed script to:
 
Last edited:
Is there a conflict with -12 and PSFImage by Hartmut?
I can't find the script anymore.
However, other scripts like GAME are still there.

Edit: I manually added it back. Not sure what happened during the update.
Hi crackout, it happened to me as well in last two updates that some "external" scripts were missing, e.g. the whole EZsuite.
It is enough to run Resources > Updates > Check for updates and follow up, to have the scripts you are enrolled to reappear.

Hope this helps, and happy new year!
 
The reference documentation for NormalizeScaleGradient and PhotometricMosaic were both updated. The version number in the screen shots should now match those displayed by the scripts.
John, you are always on top of all your work, including the drudgery of documentation. I will re-read the Quick Start Guide to help keep me up to date.
Roger
 
just out of curiosity, and apologies for the ignorance on the technical matters. It looks like the strategy is to improve/change existing tools to perform similar to what the NSG script has introduced, so why not just integrating it instead?
 
just out of curiosity, and apologies for the ignorance on the technical matters. It looks like the strategy is to improve/change existing tools to perform similar to what the NSG script has introduced, so why not just integrating it instead?

We need accurate and robust image quality estimators and local normalization algorithms integrated with our entire preprocessing pipeline, from image calibration/demosaicing to image integration and drizzle integration. These are fundamental elements of our platform and we need implementations coherent with the rest of processes and tools. Besides this, our methodology and style of development are different, so we are working on our own standard implementations. The next version 1.8.8-13 of PixInsight, which will be released this month, includes a new LocalNormalization process that solves all existing problems with the current tool. We are working hard to design and implement the efficient and robust local normalization algorithm that our platform and our users deserve.
 
Back
Top