How to calibrate streaming video


There is a misconception that one cannot calibrate a video stream the same way CCD cameras calibrate FITS files. For years I have had a developed method to do this using AVISynth, but I frequently do not find this necessary, as the background apertures in LiMovie measure the average background contribution to the pixel intensity and subtracts this out of the reduced Object intensity. There are times though when long integration times produce excessive hot pixels and thermal noise where it is desirable to calibrate the video. Below I have written the simple procedure that I use and include the 5 lines of AVISynth code that can easily perform this video calibration.



Raw video around Saturn down to 15th magnitude Video with calibration performed



Here are some useful links for the tools needed to perform this simple calibration:


         AVISynth (this is a required program that takes video files and performs image processing based on scripts):



         VirtualDub (useful because it can run an AVISynth script and it can be used to export image sequences of dark frames)


         ImageJ (Free image processor to average a stack of images into a single dark image)

         ( )


         LiMovie (photometrically reduces video intensities)



Steps to perform the calibration:


1.       At the end of recording the video live place a lens cap or flat black cover over the aperture of your telescopes and record a few seconds of dark images.

2.       Use VirtualDub to export the dark frames collected as a sequence of PNG images.

3.       Import the PNG images into an image processing program that allows you to stack and average all the dark frames into a single image. (I use ImageJ)

4.       Use the AVISynth AVS script below and edit the path and filename for the raw video and the single averaged dark PNG image.




Here is the dark frame I used to subtract from the Raw video.




Use the following 5 lines of code and save them as Filename.AVS:


ClipMain = ("Drive:\path\filename.avi")




RawFrameCount = framecount


ClipDark = ImageSource("Drive:\path\filename.png", end = RawFrameCount, use_DevIL=true)


Overlay(ClipDark, mode="subtract", opacity=1)



         ClipMain is your raw video filename

         ClipDark is the PNG filename created of your average dark field

         Run the AVS file in either VirtualDub to save an AVI with the dark field subtracted calibrated video, or in LiMovie for photometric reduction.





Drawing a diagonal line across the video frame you can see the intensity profile in the Raw video corrected in both noise and flatness in the Calibrated video.

(The bump in the middle of both lines is from Saturn)



Scott Degenhardt


Jovian Extinction Event Principal Investigator