This software and reference materials are provided "as is" without warranty as to their performance, merchantability, fitness for any particular purpose, or against infringement. The author assumes no responsibility for the use or inability to use this software. The author shall not be liable for indirect, special or consequential damages resulting from the use of this product. The author shall have no liability or responsibility for software altered, modified, or converted by you or a third party, damages resulting from accident, abuse or misapplication, or for problems due to the malfunction of your equipment or software not supplied by the author.
Requirements:
- windows 7 to 11 (32 or 64 bits)
- linux + wine 6 to 8 (wine 8 preferred)
- macos + wine 7.7 (gcenx wine-crossover)
- under windows 32bit (or wine 6) 2GByte of memory can be used
- under windows 64bit (or wine 7/8) 4GByte of memory can be used
- under windows (or wine 7/8) undo bitmaps can be stored in page-file backed shared memory (up to 6GByte)
- astrometry.net (plate solving) can be used natively under wine on linux/macos and wsl on windows
![]() |
* Arithmetic functions between image and image buffer with copy/paste | * AsinH, Sqrt, Ln, Exp and Sqr stretching of image or LRGB channels |
* ASTRO-TIFF 1.0 support | * Auto ASinH stretching, RGB and Mono |
* Auto Median stretching, RGB and Mono | * Background Extraction for Color Balance, Flatness Correction and Gradient Reduction |
* Blurring: Blur, Box, Gaussian with protected Gauss Blur chroma/luma operation (bilateral blur) | * Channel add operation for SHO addition to LRGB images |
* Channel/Image registering through platesolving | * CLAHE (contrast limited adaptive histogram equalization) - locally improves contrast in images limiting noise amplification |
* Color space conversion RGB / HSL / CIE L*a*b / YCbCr | * Command line parameters and options to allow scripting |
* Copy/Paste of XCF top layer (16 and 32 bits) | * Curves adjusting RGB / HSL / L*a*b |
* Dark subtraction and Flat division | * Debayering and Bayering (bilinear) |
* Draw shapes/text on selection | * EAA (electronically assisted astronomy) support - can stack images as they are captured or afterwards |
* Edge detection: Laplacian, Laplacian of Gaussian, High Pass, Blur Map | * Exports/Imports RGBL channels into/from another window for separate processing (stretching, background extraction, noise reduction, etc...) |
* Fullscreen mode | * G'MIC interface - execute any G'MIC commands over the current image |
* G'MIC special Haar-Wavelet command interface for image denoising | * G'MIC special Richardson-Lucy command interface for image deblurring |
* Gamma adjusting (with sRGB/Linear quick operations) | * Gradient Tool for gradient removal - select two points in the image to extract a gradient background and remove it |
* Gray Scale and Channels Extraction | * Histogram display, equalization and specification |
* HSL and RGB adjusting | * Image barrel/pincushion correction and geometric stretching |
* Image inversion, mirroring, rotation | * Image Math - apply operations to images having the main, buffer, mask and clipboard images as operators |
* Image rank operations: Erode, Dilate, Mean, Median, Variance, StdDev, etc... | * Image resizing and cropping with auto cropping of borders |
* Imports and exports PSD image files (merged image only) | * Imports and exports XCF image files (top layer only) |
* Imports and exports XISF image files | * Imports ORA image files |
* Imports SBIG Type 3 image files | * Includes Bright Star Catalogue up to magnitude 5 and Tycho 2 Catalogue up to magnitude 12 color index and magnitude information |
* Includes UCAC4 Catalogue magnitudes and color indexes for stars between magnitudes 12 and 14 as extra (large instalation) | * Interfaces with Starnet++ 1.1 and 2.0 for starless image extraction |
* LCE (local contrast enhancement) | * Levels adjustment |
* Levels RGB auto background helpers | * Local Normalization (adapted from description) |
* LRGB/SHO channel processing | * Macro recording, playing, saving and loading - repeat/redo operations |
* Masked Undo (allows to undo previous operation using a mask of pixel undo levels), mask generation from image (transfer curve) | * Max merge channel operation for SHO addition to LRGB images |
* Modulate Saturation by Lightness (HSL) | * Mouse draw/clone/undo/blur/unsharp/lighten/darken |
* Opens and saves TIF, FITS, PNG, JPG and BMP image files | * Opens RAW image files using dcraw.exe |
* Optionally performs initial ASinH stretch on 32bits TIF and FITS images before converting to 16bits | * PIP (power of inverted pixels) (adapted from description) - shadows enhancement |
* Plate solving through ANSVR or astrometry.net local instalation, nova.astrometry.net web server or local mirror. | * Plate solving through image submission (FITS or JPEG) or star list submission available. |
* Plot (annotation) image generation from plate solve information and DSO/Stars internal databases of positions/radius and also outlines | * Resize/Rotate interpolations: Nearest, Linear, Cosine, Cubic, Lanczos |
* RGB alignment to image maximum point (ideal after debayering) | * RGB alignment/shifting/rotation/resizing (with custom rotation center) |
* SCNR (subtractive chromatic noise reduction) (adapted from description) - green noise removal | * SGBNR (gauss blur with details protected by Laplace mask) (adapted from description) |
* Sharpening: Unsharp Mask (Gaussian) with chroma/luma operation | * SMI Enhancement (adapted from description) - enhancement of faint detail |
* Star Extraction - fast draft star extraction for separate processing | * Uses ASCOM platform to connect to ASCOM devices as Cameras to image capture |
* Wavelet decomposing (softening/sharpening/contrasting) | * Wavelet denoising (soft thresholding) |
* White/Color Balance based on background, selection or stars B-V (after platesolving) |
Developed in Delphi and uses Graphics32, LibTiffDelphi, DCRAW and TPNGImage Delphi libraries.
Includes LZ4 Fast LZ compression library for XISF file support.
Interfaces with ASCOM, Starnet++, G'MIC and ANSVR software.
Interfaces with Astrometry astrometric calibration service with image and star list submission.
Exchanges 16bits images with Gimp through XCF Copy/Paste and Import/Export
Parts of Image16 were developed in AltPE (8bit image editor), AstroTimer (astro image capturing) and Solver (plate solving) projects.
Libraries for handling of 16bit mono (16bit channel), 32bit color (Graphics32 interface) (8bit channels), 48bit (main library for 16bit channels) and 96bit (32bit channels) bitmaps are included in the source, with the possibility of 48bit bitmaps beeing stored in page-file backed shared memory.
Libraries for FITS, JPG, ORA, PNG, PSD, PXM, RAW, STX, TIFF, XCF and XISF input/output are included in the source.
Available with or without optional UCAC4 catalogue based information on magnitudes and color indexes for stars between magnitudes 12 and 14.
OSC processing
This program can be used to process images after stacking, one RGB image produced stacking several color images captured with a DSLR or dedicated OSC camera or several images produced stacking groups of images captured using a dedicated monochrome camera and filters.
Either way you have at least an image to process and normally this is a 32bits depth image if TIFF or FITS format. Image16 handle the images on a 16bits depth space and offers the option of proceed to stretch the image before converting from 32bits to 16bits applying a ASinH auto stretch. The difference can seen on the resulting histograms where the one from the image stretched while in 32bits is much smoother.
![]() Image without stretching |
![]() Image with auto stretching in 16bits |
![]() Image with auto stretching in 32bits |
A this point the process can start by extracting the background using Manual Background Extraction. A grid of background points (B) are to be defined from which a grid of points will interpolated (I) which in turn will be interpolated to generate the synthetic background image to be used to reduce the effects of light polution on the background subtracting it or to reduce exposure errors that could not be eliminated using flats dividing by it.
The initial grid of B points can be set using the mouse point by point or automatically using a level as reference of what is to be considered acceptable as background. Clicking with the left mouse button defines points and the right mouse button can be used to clear points, clicking or dragging the mouse through the picture using the shift, alt and ctrl keys to enlarge the cleaned area.
To set the points automatically a grid size is defined from 10x10 to 100x100 cells, a box size of 10x10 to 400x400 pixels, an option to overlap defines if the box is constrained by the cell size or not, a margin which defined the border of the image excluded from the search for B points, a tolerance that defines how much near the upper background level from the lowest point found on the box can a point be and still be considered as background and contribute to the value of the final background level assigned to the box that is going to be represented by a B point and an option to recenter points which recenters the center point of each box to the weighted average point of the box point considered as contributing to the background level.
The defaults are good to automatically define a background excluding lighter areas. The overlap and option can be unset to force to define a regular grid.
The automatically defined points can be selectably cleared to remove non background area from the computed background using the gamma slider to exagerate the level to more clearly identify areas to be cleared.
After extracting, use edit to remove points that should be cleared or to manually add points.
Several grid configurations can added and the restart button clears all point so that the process can be started from scratch again. Sometimes is desirable to define thin grids on the borders without recentering and mix that with coarse grid on the center of the image. If you a have exposure defect to be correted by dividing the image by the synthetized background the defect area should be covered by a thinner and not recentered grid so that the points can represent the defect.
The generated background can be extracted, copyed to the buffer for further operation or directly used in a subtraction or division or even as a gray area for a white balance based on the extracted background.
![]() before defining background points |
![]() a 40x40 grid without overlap and recenter and (box size around 75x75) |
![]() a 40x40 grid with overlap and recenter, yellow point contributed |
![]() subtraction result |
After extracting the background we can proceed to use SCNR, a form of subtractive color noise reduction specially useful to deal with green noise.
Several options are available but the default Average/Average Neutral applied to the green color while keeping the lightness normally works well.
![]() before SCNR |
![]() after SCNR |
Platesolving the image and using the information to compare the color of the stars to their B-V information defining the corrections that can be made to R and B channels in order to reduce the difference.
Image16 can use ANSVR directly or either nova.astrometry.net or a local astrometry mirror and submit the image for plate solving. For nova.astrometry.net a API key is needed and each user must get its own from the site after registration and login. ANSVR direct access is limited to image submission but Image16 can generate a star positions list and submit it to astrometry. In order to use a local astrometry mirror the URL must be defined. For ANSVR to be able to plate solve the image the Index Manager must be used to download the correct indexes for the image resolution.
For faster plate solving is better to reduce the search area, a center point and a radius (degrees) is useful. The platesolve interface offers the possibility to search for a deep sky object or a star from the internal database that includes objects from several catalogues: Abell, Barnard, Caldwell, Bright Star, IC, LBN, Messier, NGC, Sh-2 and UGC. Another way to reduce the plate solve time is to define the resolution of the image and for this you can fill the focal length of the device and the pixel size of the camera used to capture this image which will be used to compute the resolution in arcsec/pixel or it can be directly entered. With the resolution a low and high resolution will be used to narrow the search field.
![]() platesolving parameters |
![]() platesolving completed |
![]() star color correction |
Next can be saturation adjustment using HSL Adjust. Gamma adjustment using B/W protection to reduce the effect on extremes of the histogram.
![]() adjusting saturation |
![]() adjusting gamma |
Now a mask can be generated from the image allowing for masked undo where the mask zones in white will suffer a total undo while the zones in black will suffer no undo. After generated the mask can be converted to monochrome and blurred and inverted for some operations to reverse the undo effect.
The mask can be used for partial undo of a chroma only bilateral blur (limiting the effect relatively to the local variance of the pixel) with a set threshold (limits its effects acording do the luminance of the pixels).
Or to partially undo a wavelets denoising or a wavelets decomposing. Wavelets denoising and decomposing work by splitting the image in several images each of them representing a scale or frequency and then working on each scale separately, applying a threshold below which data is considered noise and ignored the image is denoised, and changing the composition of the recomposed imaged low or high frequencies can be enhanced.
![]() generating a undo mask |
![]() smoothing the chroma on the darker areas of the image |
![]() using wavelets threshold denoising |
![]() using wavelets decomposing to enhance detail |
LCE, local contrast enhancement can be used one or more time varying the radius of the effect.
![]() applying LCE |
![]() after LCE |
Starnet++ can be used to separate the stars from the nebulosity so that each can be processed differently.
The starless image can then be copyed to the buffer and subtracted and the result is a stars only image.
Both images can now be processed. The stars image was color corrected again using the stars B-V and the starless was given more saturation.
Both images were added again, starless was copyed and pasted on the original image window buffer that was then added to the image.
![]() running Starnet++ on the image |
![]() the result: a starless image |
![]() subtracting the starless from the image |
![]() adding the starless and the stars again |
RGB processing
NGC6992 RGB+HO data from www.deepskywest.com
“Image Acquisition by the staff at Deep Sky West Remote Observatory (www.DeepSkyWest.com)”
![]() green channel image |
![]() import red channel image |
![]() only green image was plate solved |
![]() importing red channel |
![]() importing blue channel |
![]() color level correction |
![]() background extraction |
![]() after b-v correction, import Halpha |
![]() max merge Ha to red channel |
![]() max merge O to green channel |
![]() max merge O to blue channel |
![]() RGB+HOO |
SHO processing (Hubble palette)
Rosette Nebula NGC2244 SHO data from rockchucksummit.com
![]() Ha as green channel image |
![]() import SII as red channel |
![]() importing OIII as blue channel |
![]() after channel stretching and SCNR |
![]() after stretching, saturation and LCE |
Screen [o = 1 - (1 - a)(1 - b)]
Overlay [if (a<0.5) { o = 2ab } else { o = 1 - 2(1 - a)(1 - b) }]
SoftLight [o = 2ab + (1 - 2b)a^2]
Reflect [o = a^2 / (1 - b)]
Freeze [o = 1 - (1 - a)^2 / b]
Interpolate [o = 0.5 - 0.25*cos(pi*a) - 0.25*cos(pi*b)]
Macros can be recorded and saved or programmed with a text editor and then loaded and executed in order to repeat or script processing. Combining the command line format of load an image and loading/running macros from files or passing a macro sequence as a parameter, image16 can be scripted and then used to batch process images. Macro sequences are inline macros where a set of macro lines are separated by \n and the parameters inside steps are separated by \t.
First line: Designation\tVersion
Next lines: MainBitmap\tAuxBitmap\tFunction\tParameters
MainBitmap/AuxBitmap encoding
ibNone none
ibMain main
ibBuffer buffer
ibMask mask
ibTemp temp
Parameters are separated by |
Functions
ifAdd bitmap1 bitmap2 alpha - adds bitmap2 to bitmap1 (with alpha)
ifApplyBlur bitmap radius threshold protection chroma luma alpha - applies chroma/luma and bilateral (protected), thresholded blurring to bitmap (with alpha)
ifApplyCLAHE bitmap cell maxa alpha - applies CLAHE to bitmap (with alpha)
ifApplyCurves bitmap colorspace(0=RGB,1=HSL,2=Lab) channel1 channel2 channel3 curve1 curve2 curve3 alpha - applies curves (with alpha)
ifApplyDoG bitmap sigma order chroma luma alpha - applies chroma/luma DoG to bitmap (with alpha)
ifApplyFlatImage bitmap flatimage flatinverted darkflatimage darkflatinverted - applies flat/darkflat to bitmap
ifApplyGammaHSL bitmap H S L alpha - applies gamma adjustment to RGB channels (with alpha)
ifApplyGammaL bitmap gamma black sinbwprotection alpha - applies gamma adjustment to L channel (with alpha)
ifApplyGammaRGB bitmap R G B alpha - applies level adjustment to RGB channels (with alpha)
ifApplyLN bitmap sigma1 sigma2 alpha - applies local normalization (with alpha)
ifApplyPIP bitmap radius threshold chroma luma alpha - applies chroma/luma thresholded PIP to bitmap (with alpha)
ifApplyRank bitmap ranktype(0=Min,1=Max,2=Open,3=Close,4=Mean,5=Median,6=Variance,7=StdDev,8=Mode,9=GeometricMean,10=RootMeanSquare) radius alpha - applies rank operation to bitmap (with alpha)
ifApplyRankShape bitmap ranktype(0=Min,1=Max,2=Open,3=Close,4=Mean,5=Median,6=Variance,7=StdDev,8=Mode,9=GeometricMean,10=RootMeanSquare) radius shape(0=square, 1=roundedsquare, 2=cross, 3=star, 4=box) alpha - applies rank operation to bitmap (with alpha)
ifApplySCNR bitmap scnrtype(0=MaxMask,1=AddMask,2=AvgMaxNeutral) color(0=R, 1=G, 2=B) maxavgmin(-1=Min<->0=Avg<->1=Max) keepl alpha - applies SCNR subtractive color noise reduction filter to bitmap (with alpha)
ifApplySMI bitmap radius threshold chroma luma alpha - applies chroma/luma thresholded SMI Enhancement to bitmap (with alpha)
ifApplyStarsBVColorBalance bitmap hueorrgb alpha - applies color correction comparing found stars B-V information (after platesolving) with the color on image (with alpha)
ifApplyTones bitmap curve alpha - applies hue adjusting curve (with alpha)
ifApplyUnsharpMask bitmap convolution(0=gaussian,1=laplacian,2=laplacianofgaussian) radius threshold chroma luma alpha - applies chroma/luma unsharpmask thresholded sharpening to bitmap (with alpha)
ifAssign bitmap1 bitmap2 - assigns bitmap2 to bitmap1
ifAutoASinHStretch bitmap - auto ASinH stretchs the bitmap
ifAutoBGExtraction sourcebitmap destbitmap width point level grid cell margin tolerance - automatically extracts the background
ifAutoBGHistogramRGB bitmap - automatically tries do adjust RGB histograms individually to match background profiles in order to reach background neutrality
ifAutoBGOperation bitmap oper(0=Subtract, 1=Divide, 2=DivideByInt, 3=SubMult) width point level grid cell margin tolerance - automatically extracts the background and performs the selected operation on the image
ifAutoCrop bitmap - automatically crops near black margins
ifAutoMedianLevels bitmap target mediandispersion alpha - applies automatic Median level correction
ifAutoMedianLevelsRGB bitmap target mediandispersion alpha - applies automatic independent RGB Median level correction
ifAutoStarExtract bitmap radius alpha - star/nebulosity separation tool that tries to extract stars up to the selected radius
ifBayeringCFABilinear bitmap cfatype(0=BGGR, 1=GRBG, 2=RGGB, 3=GBRG, 4=RGBG, 5=BGRG, 6=GRGB, 7=GBGR) - applies bilinear bayering to the image with the selected CFA (doubles the image size)
ifBlindPlateSolve bitmap imagepath, resolution, reshi, reslo, ra, dec, radius - plate solves a image bitmap/filename saving the data acquired in filename.solved.txt and filename-plot.png files
ifChannelAsColor bitmap channel(0=R, 1=G, 2=B) - extracts only the selected channel to the correspondent color channel
ifChannelAsGray bitmap channel(0=R, 1=G, 2=B, 3=H, 4=S, 5=L, 11=R+G, 12=R+B, 13=G+B) - extracts only the selected channel to all color channel
ifCIELabToRGB bitmap - convert an image from CIELab color space to RGB
ifClose - close the window
ifConvolve bitmap kernel divisor - convolves bitmap with kernel and divides all pixel values by divisor
ifCrop bitmap left top right bottom - crops an image to the rectangle coordinates
ifCropCentered bitmap left top right bottom - center crops an image to the width and height of the rectangle coordinates
ifDebayeringCFABilinear bitmap cfatype(0=BGGR, 1=GRBG, 2=RGGB, 3=GBRG, 4=RGBG, 5=BGRG, 6=GRGB, 7=GBGR) - applies bilinear debayering to the image with the selected CFA
ifDistance bitmap1 bitmap2 alpha - sets bitmap1 equal to the distance between the two bitmaps (with alpha)
ifDistort bitmap p1 p2 p3 p4 stretchop(0=default, 1=nearest, 2=linear, 3=fastcosine, 4=cosine, 5=cubic, 6=kcosine, 7=bspline, 8=mitchell, 9=catmullrom, 10=lanczos2, 11=lanczos3, 12=lanczos4) - pincushion/barrel distortion of image with polar coordinates polynomial r=r*(p1+p2*r^3+p3*r^5+p4*r^7)
ifDivide bitmap1 bitmap2 alpha - sets bitmap1 equal to the division of bitmap1 by bitmap2 (with alpha)
ifDivideInt bitmap1 bitmap2 alpha - sets bitmap1 equal to the division of bitmap1 by bitmap2 intensity (with alpha)
ifEqualizeHistCDFL bitmap alpha - equalizes the image histogram (Global Histogram Equalization)
ifExchange bitmap1 bitmap2 - exchanges bitmaps
ifGetStarnetStarless bitmap filename - gets filename.starless.tif
ifGMICCmd bitmap commands - executes G'MIC commands
ifGray bitmap alpha - converts to luminance (Y) (with alpha)
ifHalveBitmap bitmap - combines each 4 pixels cell into one halving the bitmap size
ifHSLToRGB bitmap - convert an image from HSL color space to RGB
ifInvert bitmap - inverts bitmap
ifLightness bitmap alpha - converts to lightness (L) (with alpha)
ifMax bitmap1 bitmap2 alpha - sets bitmap1 equal to the maximum of bitmap1 and bitmap2 (with alpha)
ifMin bitmap1 bitmap2 alpha - sets bitmap1 equal to the minimum of bitmap1 and bitmap2 (with alpha)
ifMirror bitmap - mirrors bitmap
ifModulateSByL: ApplyBitmapModulateSByL48(bm, TSByLModType(GetIntParm(parms, 0)), GetFloatParm(parms, 1, 0.5), GetFloatParm(parms, 2, 1));
ifMosaicRotateStretch bitmap - rotates and stretches the plate solved image so that the orientstion is 180 and the resolution is rounded to the nearest 0.1 arcsec/pixel
ifMultiply bitmap1 bitmap2 alpha - sets bitmap1 equal to the multiplication of bitmap1 by bitmap2 (with alpha)
ifMultiplyInt bitmap1 bitmap2 alpha - sets bitmap1 equal to the multiplication of bitmap1 by bitmap2 intensity (with alpha)
ifNegative bitmap - inverts bitmap pixel values
ifPopUndo - undo
ifPower bitmap1 bitmap2 alpha - sets bitmap1 equal to the power of bitmap1 by bitmap2 (with alpha)
ifPushUndo - save undo
ifRescaleL bitmap alpha - rescales bitmal L (with alpha)
ifResize bitmap width height - resizes the bitmap
ifRGBPixelAlign bitmap - RGB aligns the bitmap
ifRGBShiftScaleRotate bitmap xdR, ydR, xdB, ydB, angR, angB, scaR, scaB, xCent, yCent - shifts scales and rotates a bitmap RGB channels
ifRGBSubPixelAlign bitmap - RGB sub-pixel aligns the bitmap
ifRGBSubPixelAlignMax bitmap radius - RGB sub-pixel aligns the bitmap to the area surrounding the maximum intensity point
ifRGBToCIELab bitmap - convert an image from RGB color space to CIELab
ifRGBToHSL bitmap - convert an image from RGB color space to HSL
ifRGBToYCbCr bitmap - convert an image from RGB color space to YCbCr
ifRotate bitmap angle - rotates the bitmap
ifRotateChannels bitmap - rotates bitmap channels R->G->B->R
ifRotateCrop bitmap angle - rotates and crops the bitmap
ifRotateQ bitmap - rotates bitmap 90º clockwise
ifSave - save/saveas
ifSpecifyHistogramCDFL bitmap histcurve alpha - sets the image histogram
ifStretch bitmap angle p1 p2 p3 p4 stretchop(0=default, 1=nearest, 2=linear, 3=fastcosine, 4=cosine, 5=cubic, 6=kcosine, 7=bspline, 8=mitchell, 9=catmullrom, 10=lanczos2, 11=lanczos3, 12=lanczos4) - stretches/distort the image with at an angle rectangular coordinates polynomial x=x*(p1+p2*x^2+p3*x^4+p4*x^6)
ifStretchAExp bitmap black value alpha - applies black clipping and Exponential stretching to bitmap (with alpha)
ifStretchALog bitmap black value alpha - applies black clipping and Logarithmic stretching to bitmap (with alpha)
ifStretchASinH bitmap black value alpha - applies black clipping and ASinH stretching to bitmap (with alpha)
ifStretchASqr bitmap black value alpha - applies black clipping and Square stretching to bitmap (with alpha)
ifStretchASqrt bitmap black value alpha - applies black clipping and Square Root stretching to bitmap (with alpha)
ifStretchHistLvls bitmap blackin middlein whitein blackout whiteout rgbbits(1=B, 2=G, 4=R, 8=L) alpha - stretchs histogram curve channels (with alpha)
ifStretchHistogramLevels equals ifStretchHistLvls (without alpha)
ifSubtract bitmap1 bitmap2 alpha - sets bitmap1 equal to the subtraction of bitmap1 by bitmap2 (with alpha)
ifSubtractDarkImage bitmap filename invert - subracts dark image from image with optional inversion of the dark image
ifSubtractMultiply bitmap1 bitmap2 alpha - sets bitmap1 equal to the subtraction/multiplication of bitmap1 by bitmap2 [b1=((b1-b2)*(max/(max-b2)))] (with alpha)
ifWaveletDecompose bitmap alphas chroma luma - wavelet decompose and recompose image chroma/luma according to alphas
ifWaveletDenoise bitmap thresholds alphas chroma luma - wavelet decompose denoise according to thresholds and recompose image chroma/luma according to alphas
ifWaveletDenoiseDecompose=ifWaveletDenoise(0,1,3,4)+ifWaveletDecompose(2,3,4)
ifWaveletExtractBackground bitmap - wavelet decompose and retrieve background scale
ifWaveletRemoveBackground bitmap - wavelet decompose and retrieve background scale and divide image buy extracted background
ifWhiteBalanceBG bitmap alpha curve(0=linear, 1=gamma) width point level grid cell margin tolerance - automatically extracts the background then uses the background to color balance the image
ifYCbCrToRGB bitmap - convert an image from YCbCr color space to RGB
note: these procedure were minimally tested with success, handle with care, no warranty implied
WINE instalation on Linux example
----------
--- enable support for 32-bit applications
sudo dpkg --add-architecture i386
--- check wget command line tool is installed
sudo apt update
sudo apt install software-properties-common wget curl
----------
--- import repository GPG key
sudo mkdir -pm755 /etc/apt/keyrings
sudo wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key
----------
--- on Linux Mint 21 or Ubuntu 22.04 LTS
sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/jammy/winehq-jammy.sources
--- on Ubuntu 22.10
sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/kinetic/winehq-kinetic.sources
----------
sudo apt update
sudo apt install --install-recommends winehq-stable
----------
--- version check
wine --version
----------
--- wine configuration
winecfg
----------
--- prompt gecko install
wine explorer
----------
--- configure gnome timeout if necessary on ubuntu 22
gsettings set org.gnome.mutter check-alive-timeout 180000
note: these procedure were minimally tested with success, handle with care, no warranty implied
ANSVR (https://adgsoftware.com/ansvr/) on Linux installation example
install ansvr under wine (not tested) or
------------------- install astrometry.net
apt install astrometry.net
--- check
/usr/bin/solve-field --version
------------------- create ansvr base folder
sudo mkdir /opt/ansvr
sudo chmod 777 /opt/ansvr
--- extract folder \cygwin_ansvr\opt\ansvr to /opt/ansvr from ansvr-setup-0.22.exe using 7zip (download from https://adgsoftware.com/ansvr/)
cd /opt/ansvr
------------------- use ansvr indices downloader
---
--- astrometry indices download
---
--- 4219 x1 # 23.3 to 33.3 deg (1400 to 2000 arcmin)
--- 4218 x1 # 16.7 to 23.3 deg (1000 to 1400 arcmin)
--- 4217 x1 # 11.3 to 16.7 deg (680 to 1000 arcmin)
--- 4216 x1, # 8 to 11.3 deg (480 to 680 arcmin)
--- 4215 x1, # 5.67 to 8 deg (340 to 480 arcmin)
--- 4214 x1, # 4 to 5.67 deg (240 to 340 arcmin)
--- 4213 x1, # 2.83 to 4 deg (170 to 240 arcmin)
--- 4212 x1, # 2 to 2.83 deg (120 to 170 arcmin)
--- 4211 x1, # 1.42 to 2 deg (85 to 120 arcmin)
--- 4210 x1, # 1 to 1.42 deg (60 to 85 arcmin)
--- 4209 x1, # 0.7 to 1 deg (42 to 60 arcmin)
--- 4208 x1, # 0.5 to 0.7 deg (30 to 42 arcmin)
--- 4207 x12, # 22 to 30 arcmin
--- 4206 x12, # 16 to 22 arcmin
--- 4205 x12, # 11 to 16 arcmin
--- 4204 x48, # 8 to 11 arcmin
--- 4203 x48, # 5.6 to 8 arcmin
--- 4202 x48, # 4 to 5.6 arcmin
--- 4201 x48, # 2.8 to 4 arcmin
--- 4200 x48, # 2 to 2.8 arcmin
---
--- 4205 to 4219 # 11 arcmin to 2000 arcmin => 1.3GB
sudo ./download_indexes 4205 4219
--- check
ls -lais /usr/share/astrometry/data
------------------- edit astrometry.net configuration file in order to point to the folder populated by ansvr utility
--- edit /etc/astrometry.cfg and point indices path /usr/share/astrometry/data filled by ansvr download_indexes
sudo nano /etc/astrometry.cfg
# In which directories should we search for indices?
add_path /usr/share/astrometry/data
------------------- create ansvr upload/temporary/logs folder
sudo mkdir /var/tmp/platesolve
sudo chmod 777 /var/tmp/platesolve
------------------- install perl json module if necessary
apt install libjson-perl
------------------- run ansvr local astrometry.net server
./ansvr
--- check for process listening on port 8080
sudo lsof -i -P -n | grep LISTEN
--- check configuration page on browser
http://localhost:8080/api/config
--- apis enabled
--- http://localhost:8080/api/login
--- http://localhost:8080/api/upload
--- http://localhost:8080/api/submissions
--- http://localhost:8080/api/cancel
--- http://localhost:8080/api/jobs
--- http://localhost:8080/wcs_file
------------------- stop ansvr local astrometry.net server
./stop_ansvr
note: these procedure were minimally tested with success, handle with care, no warranty implied
## start %localappdata%\Local\cygwin_ansvr\Cygwin.bat
$ time for i in {1..10} ; do bash -c "echo Hello" ; done
Hello
...
Hello
real 0m2.766s
user 0m0.046s
sys 0m0.321s
$ mkpasswd -c > /etc/passwd
$ mkgroup -c > /etc/group
$ vi /etc/nsswitch.conf
## change lines ##
passwd: files # db
group: files # db
$ cat /etc/nsswitch.conf
# /etc/nsswitch.conf
...
passwd: files # db
group: files # db
...
## restart %localappdata%\Local\cygwin_ansvr\Cygwin.bat
$ time for i in {1..10} ; do bash -c "echo Hello" ; done
Hello
...
Hello
real 0m0.664s
user 0m0.153s
sys 0m0.200s
note: these procedure were minimally tested with success, handle with care, no warranty implied
## gcenx wine-crossover
## https://github.com/Gcenx/homebrew-wine
brew install --cask --no-quarantine gcenx/wine/wine-crossover
## check: https://www.sysnettechsolutions.com/en/install-wine-macos/
note: these procedure were minimally tested with success, handle with care, no warranty implied
## download Command Line Tool (CLI) from https://www.starnetastro.com/download/
## goto to starnet++ folder to clear quarantine ...
sudo chmod +x starnet++
sudo xattr -c *sh *so *++
## or download experimental from https://www.starnetastro.com/experimental/
note: these procedure were minimally tested with success, handle with care, no warranty implied
brew install astrometry-net
cd /usr/local/Cellar/astrometry/0.93
mkdir data
cd data
curl -O http://broiler.astrometry.net/~dstn/4200/index-42[08-19].fits
curl -O http://broiler.astrometry.net/~dstn/4200/index-4207-[00-11].fits
note: these procedure were minimally tested with success, handle with care, no warranty implied
## for Ubuntu/Mint download G'MIC for Ubuntu version from https://gmic.eu/download.html
sudo apt install '/home/%USER%/Downloads/gmic_3.2.1_ubuntu22-04_jammy_amd64.deb'