Jump to content

Stargazers Lounge Uses Cookies

Like most websites, SGL uses cookies in order to deliver a secure, personalised service, to provide social media functions and to analyse our traffic. Continued use of SGL indicates your acceptance of our cookie policy.

  • Announcements


Sign in to follow this  
  • entries
  • comments
  • views

About this blog

Entries in this blog


Yesterday I was bitten by kernel update (to 4.10.5) on my main computer (I use Fedora 25). The boot process would at some point just stop, with nothing suspicious in the last visible boot messages; the machine was responsive, though, and Ctrl-Alt-Del reboot was possible. Booting using the previous kernel was fine. After reviewing the boot log (where -1 means second-to-last boot, -0 would be the last (successful) boot etc.):

journalctl -k -b -1

it turned out there was a problem uploading firmware blob to my Radeon R7 370 (I use the standard open-source driver):

kernel: [drm] radeon: 2048M of VRAM memory ready
kernel: [drm] radeon: 2048M of GTT memory ready.
kernel: [drm] Loading pitcairn Microcode
kernel: radeon 0000:01:00.0: Direct firmware load for radeon/si58_mc.bin failed with error -2
kernel: [drm] radeon/PITCAIRN_mc2.bin: 31100 bytes
kernel: si_fw: mixing new and old firmware!
kernel: [drm:si_init [radeon]] *ERROR* Failed to load firmware!
kernel: radeon 0000:01:00.0: Fatal error during GPU init

Indeed, for my particular Radeon model the newer kernel tries to upload si58_mc.bin, but the file was missing.

The solution was to get the file from https://people.freedesktop.org/~agd5f/radeon_ucode/, put it in /usr/lib/firmware/radeon and regenerate initramfs images:

dracut --regenerate-all --force



Recently I’ve dusted off my old ray tracing code, done some OpenGL reading/refreshing, and implemented real-time ray (and path) tracing on GPU. It turns out the present-day GLSL (OpenGL shading language) is capable enough, and even an integrated Intel graphics has acceptable performance.

Video: https://www.youtube.com/watch?v=2lAmO1Ghtn0



The most important part is the ability to use the hierarchical scene graph (tree); thanks to this, ray tracing’s time complexity is only O(log n) w.r.t. the number of scene objects, as opposed to O(n) for hardware rasterisation (i.e. what today’s GPUs normally do). Even though GLSL doesn’t allow recursion, it’s simple to search the tree iteratively and even without simulating a stack (which would eat up precious GPU registers – I’ve tried that too).

Now that I feel more confident with OpenGL, GPU acceleration for Stackistry will probably arrive in the not-too-distant future. The quality estimation and the shift-and-add phases should be easiest to port into GLSL. Even if we remain strongly IO-bound (due to all the shuffling of images between RAM and GPU memory), I think a performance boost by a factor of several is possible.


It turns out ImPPG's image alignment (via phase correlation) function comes in handy when trying to capture a video of passenger aircraft at cruising altitudes. My rig for the experiment was a SW Newtonian 114/500 (hence the coma visible in asymmetric highlights) on AZ4 + PGR Chameleon 3 mono (ICX445) camera:




Raw video looked e.g. like this (scaled down):




I cut out fragments with the plane constantly visible, converted to image sequences and run them through ImPPG.


Airbus A321-211




Boeing 737 (click)




ImPPG has moved to GitHub: http://greatattractor.github.io/imppg/



ImPPG performs Lucy-Richardson deconvolution, unsharp masking, brightness normalization and tone curve adjustment. It can also apply previously specified processing settings to multiple images. All operations are performed using 32-bit floating-point arithmetic.


Supported input formats: FITS, BMP, JPEG, PNG, TIFF (most of bit depths and compression methods), TGA and more. Images are processed in grayscale and can be saved as: BMP 8-bit; PNG 8-bit; TIFF 8-bit, 16-bit, 32-bit floating-point (no compression, LZW- or ZIP-compressed), FITS 8-bit, 16-bit, 32-bit floating-point.


ImPPG can also align an image sequence, with possibly large and chaotic translations between images (aligned output images preserve number of channels and bit depth). This can be useful, for example, when preparing a solar time-lapse animation, where subsequent frames are offset due to inaccurate tracking of the telescope mount. Other possible applications are smoothing out of terrestrial landscape time-lapses or preparing raw frames (with serious image jitter) for stacking.


ImPPG is free and open-source, licensed under GNU GPL v3 (or later). Building from source code (C++) requires Boost, wxWidgets and (optionally) FreeImage & CFITSIO libraries and is possible on multiple platforms. Windows executables (32- and 64-bit) can be downloaded using the links below. See the README file for details on usage and building.




Sample results (processing and animation alignment):


Image processing tutorial


Solar processing tutorial by Michael H.F. Wilkinson


Astrobin users can add ImPPG to their “Gear” list: imppg




imppg-src.zip: source code
imppg-win32.zip: Windows program (32-bit)
imppg-win64.zip: Windows program (64-bit)


If you are not sure what you need: download the latest imppg-win32.zip, unpack it and run imppg.exe.


  • Version 0.4.1 (2015-08-30)
– Numerical sliders use 1-pixel steps instead of hard-coded 100 steps
– Output format selected in batch processing dialog is preserved
– Unsharp masking not slowing down for large values of "sigma"
– Increased the range of unsharp masking parameters

Bug fixes:
– Invalid output file name after alignment if there was more than one period in input name
– Crash when a non-existing path is entered during manual editing
– Program windows placed outside the screen when ImPPG was previously run on multi-monitor setup
– Restored missing Polish translation strings

  • Version 0.4 (2015-06-21)

New features:
– Image sequence alignment via solar limb stabilization
– FITS files support (load/save)
– Zooming in/out of the view


– View scrolling by dragging with the middle mouse button
– Logarithmic histogram setting is preserved


Bug fixes:
– Tone curve in gamma mode not applied during batch processing




  • Version 0.3.1 (2015-03-22)
New features:
– Polish translation; added instructions for creating additional translations

  • Version 0.3 (2015-03-19)

New features:
– Image sequence alignment via phase correlation


– Limited the frequency of processing requests to improve responsiveness during changing of unsharp masking parameters and editing of tone curve


Bug fixes:
– Incorrect output file extension after batch processing when the selected output format differs from the input


  • Version 0.2 (2015-02-28)
New features:
– Support for more image file formats via FreeImage. New output formats: PNG/8-bit, TIFF/8-bit LZW-compressed, TIFF/16-bit ZIP-compressed, TIFF/32 bit floating-point (no compression and ZIP-compressed).

– Enabled the modern-look GUI controls on Windows
Bug fixes:
– Selection border not marked on platforms w/o logical raster ops support (e.g. GTK 3)

  • Version 0.1.1 (2015-02-24)

Bug fixes:
– Blank output files after batch processing when L-R iterations count is 0


  • Version 0.1 (2015-02-21)


NOTE: This program has been superseded by ImPPG, which includes all the below functionality in a full-fledged GUI.

Image Post-Processor performs Lucy-Richardson deconvolution, histogram stretch, gamma correction and unsharp masking. Both a command-line tool and a graphical user interface (GUI) wrapper for processing of multiple files are available.

Discussion threads:



Building from source code (C++) requires Boost and wxWidgets (for the GUI) libraries and is possible on multiple platforms.


impp.zip: Windows command-line program, GUI and source code

impp-src.zip: source code of the command-line tool

impp-gui-src.zip: source code of the GUI

If you are not sure what you need: download the latest impp.zip, unpack it and run impp-gui.exe.

impp: version 0.3 (2014-11-30)

New features:

– better performance for large L-R "sigma" thanks to Young & van Vliet recursive convolution (Y&vV can be also forced by "--conv yvv")

impp-gui: version 0.1.2 (2014-11-30)

Bug fixes:

- fixed output directory sometimes having the deepest sub-folder appearing twice




impp: version 0.2 (2014-11-27)

New features:

– L-R deconvolution performance improved by 24%-40%, depending on L-R "sigma" and num. of threads



impp: version 0.1.1 (2014-11-26)

New features:

– measuring time of L-R deconvolution

– slightly improved performance

– added MS C++ makefile

Bug fixes:

– fixed code that would crash with OpenMP with some compilers

impp-gui: version 0.1.1 (2014-11-26)

New features:

– added MS C++ makefile

Bug fixes:

– fixed setting of output file name's extension




Version 0.1 (2014-11-21)






imgalt – Image Alignment Tool

author: GreatAttractor

Written with solar animation frame alignment in mind. Uses the phase correlation method to detect translations of an image sequence, which can be widely varying, the images severely cropped – exactly what one gets after a few hour solar session with telescope buffeted by wind, drift due to imperfect polar alignment and lack of manual correction in time etc.

The same method of image alignment is also included in ImPPG (starting with version 0.3).

Discussion threads:



imgalt.zip: Windows program

imgalt-src.zip: source code (requires Boost libraries; tested with GCC/G++ on Linux & Windows and with MS C++)

Binaries and source code may be freely distributed and used for any purpose. See the README file for details on usage and building.



Imgalt is a "console application" (it has no graphical interface). Running

from a console (a.k.a. "command prompt") is recommended, but not

necessary. This method will work as well:

  1. Unzip the imgalt.zip, say, to folder "imgalt" on your Desktop.
  2. Copy all the files you want to align (in BMP or TIFF format) to the same "imgalt" folder.
  3. Run imgalt.exe; it will open a window which displays progress.
  4. After a few moments you will have new, aligned files (with names ending in "_aligned"), also in the same "imgalt" folder.


More information in the README file.


  • Version 0.5 (2014/05/22)


New features:

– sub-pixel alignment










Sign in to follow this