Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - mschuster

Pages: [1] 2 3 ... 12
Bug Reports / 1.8.8-2 iMac drizzle weight issue?
« on: 2019 December 06 07:35:34 »
Hi Juan,

I see an unexpected artifact in drizzle weights, x1, square, drop shrink 1. The artifact affects the drizzle integrated result. The artifact does not appear if drop shrink is 0.9.

All files (~300 MB):

Edit: Process icons:

Drizzle weights, with "block structured" artifact:

Difference image, showing that artifact affects the result (difference created by the PixelMath icon):

Hi Juan,

On this example, ImageIntegration generates this message:

Code: [Select]
* Rescaling output image. Integration range: [-1.37814204e-03,8.56981397e-01]

However the ImageIntegration output is not in the full range [0, 1] as I expected, instead it is [2.931992e-03, 9.946846e-01].

Is this a bug?

Zipped folder, with all frames, LocalNormalization reference and results, Integration results and log, and process icons.

The negative pixels were generated by using a low median LN reference. (133 MB)

PCL and PJSR Development / Label framestyle
« on: 2019 November 25 19:29:54 »
Hi Juan,

Some time ago I remember you provided me this stylesheet to create a sunken label.

This works ok, but has one very minor issue on retina Mac. The label appears aligned 1px to high, so the baseline of the text within the Label ending being 1px higher than adjacent plain labeling: text to the left of the Label.

Is there a solution?

Code: [Select]
   this.addValue = function(pane, text, toolTip) {
      var value = new Label(this);

      value.text = text;
      value.toolTip = toolTip;
      value.styleSheet = this.scaledStyleSheet("QLabel {" +
         "border-top: 1px solid gray;" +
         "border-left: 1px solid gray;" +
         "border-bottom: 1px solid white;" +
         "border-right: 1px solid white;" +

      return value;

Bug Reports / PI 1.8.8-1 Mac 10.14.6 minor image display issue
« on: 2019 November 20 19:26:57 »
Hi Juan,

1) Open noise.xisf, make sure it opens in a Gray 1:2 window with no scroll bars.
2) View > Zoom In, View > Zoom Out, image display OK.
3) View > Zoom In, click the window's Zoom to Optimal Fit icon, note noise along image righthand edge.
4) Click window's Zoom to Optimal Fit icon repeated, note slight image shift on each click, small aliasing artifacts visible on each click.

noise.png screen shot

Bug Reports / Minor 1.8.8 Mac ImageIntegration metadata issue
« on: 2019 November 09 07:24:33 »
Hi Juan,

FYI: I noticed that 1.8.8 Mac has changed ImageIntegration metadata (specifically keyword capitalization):

previously: ImageIntegration.pixelCombination: average
now: ImageIntegration.pixelCombination: Average

Maybe this happens in 1.8.7 also, I have not checked.

This change breaks MureDenoise parsing as its grep strings are looking for lower case only.

I will make the fix. It may take a bit of time as I have not yet linked up to the GitLab, and also I am in the middle of adding a new feature to MureDenoise, so need to coordinate that.


Bug Reports / Minor 1.8.8 Mac browser scrolling issue
« on: 2019 November 08 12:08:26 »
Hi Juan,

Open AperaturePhotometry.
Click the Browse Documentation button.
Drag the scroll bar page position button to the bottom of the scroll bar in one dragging motion.
Move the mouse pointer out of the scroll bar.
Move the mouse pointer back into the scroll bar, at some random vertical position.
Document auto-scrolls to the mouse position, without clicking.
Document continues to scroll as the mouse is moved within the scroll bar without the mouse button being pressed.

Bug Reports / Statistics process bug
« on: 2019 March 25 08:25:06 »
Hi Juan,

Incorrect Statistics after Pixelmath, see below.

macOS 10.14.3


Please download this frame.

Launch PI.
Open Statistics process, select 16-bit, normalized on, open Options, check all available metrics, Save, OK.
Open light_01_c, select light_01_c view in Statistics, copy Statistics results, values listed below.
Apply Pixelmath "$T + median($T)" to frame with "Rescale results" option off.
Note that this is a location change and not a scale change.
Copy Statistics results, values listed below.
Note that values "median" did not change, and values "avgDev", "MAD", "sqrt(BWMV)", and "sqrt(PBMV)" did change.
These changes are suspect given a strict change in location.
Save the resulting frame as light_01_c_location and open this frame in a new window.
Select light_01_c_location view in Statistics.
Copy Statistics results, values listed below.
Note that light_01_c_location values differ from the light_01_c post Pixelmath values, and appear to be equal to expected values (ie median is doubled and scale metrics are invariant (up to some apparent roundoff error)).
Also that Sn and Qn did not suffer from this problem.

Although I have not tested this, and I could be mistaken, I am worried that ImageStatistics Core JavaScript object might suffer a similar bug across an image change within a script.

light_01_c pre Pixelmath:
count (%)      99.99933
count (px)     2082062
mean           481.672
modulus        1002871438.753
norm           1002871438.753
sumOfSquares   41379490.289
meanOfSquares  19.874
median         336.139
variance       1070453.545
stdDev         1034.627
avgDev         297.668
MAD            176.344
sqrt(BWMV)     208.955
sqrt(PBMV)     209.696
Sn             175.286
Qn             168.396
minimum        3.050
maximum        56862.308
minimumPos       1341,  1057
maximumPos       1651,   142

light_01_c post Pixelmath:
count (%)      100.00000
count (px)     2082076
mean           817.808
modulus        1702738966.855
norm           1702738966.855
sumOfSquares   55256990.093
meanOfSquares  26.539
median         336.139
variance       1070447.914
stdDev         1034.625
avgDev         603.676
MAD            498.358
sqrt(BWMV)     527.862
sqrt(PBMV)     510.238
Sn             175.288
Qn             168.398
minimum        336.139
maximum        57198.448
minimumPos        237,   131
maximumPos       1651,   142

count (%)      100.00000
count (px)     2082076
mean           817.808
modulus        1702738966.855
norm           1702738966.855
sumOfSquares   55256990.093
meanOfSquares  26.539
median         672.277
variance       1070447.914
stdDev         1034.625
avgDev         297.669
MAD            176.345
sqrt(BWMV)     208.957
sqrt(PBMV)     209.700
Sn             175.288
Qn             168.398
minimum        336.139
maximum        57198.448
minimumPos        237,   131
maximumPos       1651,   142

Hi Juan,

This is a reproducible process container error, iMac 10.11.6, PI 1195.

• Open any image.
• Apply Crop process to the image, with zero cropping values.
• Create a script process instance on the workspace, and apply it to the image. Script below.
• Using History Explorer, create a process container instance for these two applications.
• Apply this process container to a second image.

Error: Invalid view update request: The image is already being processed.

The error occurs on the script's call to beginProcess().

It appears that all scripts that attempt to update the target fail on beginProcess(). The Crop here is a placeholder, substitute any other process and the error remains.


Script, which does nothing other than the begin and end process calls:
Code: [Select]

A new script Utilities > ViewIdReplace should appear as an auto update soon.

Especially during script testing, but also more generally when processing, I often end up renaming the id's of newly created views and previews.

I envision a view id renaming script that accepts a pattern and a replacement string. Multiple instances of this script may be created in the workspace.

Then I drag the appropriate instance onto the view or preview rather than manually renaming.

Here are some examples.

• When I drag a view to create a clone, I want to replace the "_clone" in the name with something else like "_work". This will do it.

So you launch the script, specify a pattern and a replacement, drag an instance onto the workspace, optionally give it a name, and then drag it to the view you want to rename.

• When I create a new preview, I want to replace the "Preview01", or whatever the ending digits are, with something else like "work". This will do it, using a regular expression of the form /pattern/. Here the "." matches any character, and the "*" matches the preceeding pattern 0 or more times. So ".*" matches anything, and the entire id gets replaced with "work":

• When I open two images with the same name, I end up with digits appending one or both, like "integration" and "integration1". Maybe I want to replace the ending digits, if present or not, with something else like "_work". This will do it. "\d*" matches 0 or more digits, and "$" matches the end of the id, so the replacement applies only at the end:

The documentation has a couple more examples, and both the documentation and tooltips show the various pattern options that are available.

Note when the script is open, you cannot drag an instance directly onto a view (error appears), you must drag it onto the workspace, dismiss the script, and then drag the instance. This limitation may be removed in a future release.

Wish List / PixelMath > Create new image > Image Id
« on: 2016 December 20 08:40:56 »
An option to specify a prefix and/or a postfix for the new Image Id, like the option in ImageCalibration and StarAlignment.

Sometimes I apply PixelMath to several images, this option would avoid the manual work I do renaming Ids.


This would be nice to have.


Trying to figure out how to use multiscaleLinearTransform to filter an image by removing layers. Seeing a segmentation violation sometimes,  other times seeing an array of nulls.


Code: [Select]
var image = new Image(ImageWindow.windowById("test").mainView.image);

var array = image.multiscaleLinearTransform(6);

// What does array contain?
console.writeln("array.length: ", array.length);
for (var i = 0; i != array.length; ++i) {
   console.writeln("i: ", i, ", array[i]: ", array[i]);

MureDenoise Version 1.21

Mike Schuster

The MureDenoise script denoises linear monochannel images corrupted by mixed Poisson-Gaussian noise. MureDenoise is applicable to single frame images and average combinations of equally exposed and registered frames.

The script supports an astronomical image processing workflow in which the denoising step occurs immediately after the calibration and optional average combination steps and prior to other linear or nonlinear processing steps.

The script applies an interscale wavelet mixed noise unbiased risk estimator (MURE) to find a denoised output image that minimizes an estimate of the oracle mean-squared error (MSE), or "risk", between the denoised output image and the unknown noise-free image.

Note: For linear multichannel images from monocolor detectors, run the monochannel denoiser on each channel separately. The script does not work properly for images from one shot color (OSC) detectors.

Warning: The script is adapted to denoise linear monochannel images mainly corrupted by shot noise, read noise, and dark current noise which is typically the case for astronomical data. The script does not work properly for other noise distributions, for saturated images, for debayered images, for linearly or nonlinearly processed images, for median combinations, or for drizzle combinations.

Warning: Do not combine denoised images. Signal-to-noise ratio (SNR) will be enhanced by combining noisy images and denoising the result. Combined images must be equally exposed, have the same pixel resolution, and be registered by projective transformation with no distortion correction.

More more information and examples, please see the script's documentation.

PCL and PJSR Development / PJSR: image.assignMask?
« on: 2015 October 28 10:08:22 »
Is there a variant of Image.assign(Image) that respects the mask of the view's ImageWindow? That is, a variant that does the proper mask blend when a ImageWindow has an enabled mask? I want to replace the assign in the following code with a variant that respects the mask, and works properly when the view is a preview also. I cannot find anything.


Code: [Select]

PS I could code this in PJSR but doing so is a bit slow and it seems like a commonly useful function justified for support.

Wish List / Readout and HT wish
« on: 2015 October 23 14:18:59 »
When looking at differences between almost equal images (i.e. PixelMath a - b + 0.5), all the data can be clustered very closely to 0.5.

It would be nice if ReadOutOptions > Binary integer range displayed fractional parts in addition to integer parts. Sometimes I like to read out in DN (16-bit) and having the display rounded to an integer is not very useful for these difference images. Maybe an optional fractional part display (eg. "%.3f").

When looking at these difference images in HT with 16-bit plot resolution, maybe only a few (10 for example) of these bins are populated near the 0.5 value. So in this case histogram displays 10 peaks separated by a zero level when zoomed in closely with shadow and highlight set to minElement and maxElement. It would be nice to see a fuller histogram without so much quantization. Would it be possible to add more bins? One idea might be simply just add larger resolution options, another might be to renormalize so that the 64k bins spanned [shadow, highlight] rather than [0, 1], but maybe this all would be too slow?


Pages: [1] 2 3 ... 12