Correction of line-noise from Lumenera Skynyx 2-2C and 2-2M cameras

There seems to be an issue with the drivers for Skynyx 2-2 cameras where vertical lines are introduced in the data. The lines are one pixel wide and alternate in brightness. The nature of alternation is not as a constant offset, nor is it a constant scaling factor and it is thus difficult to correct using some master frame. The effect is not always present but seems to be dependent on the camera exposure settings. I have even seen it being present on the G-channel only of a color image sequence. On the Yahoo forum for LucamRecorder I found Sean Walkers excellent method (http://tech.groups.yahoo.com/group/LucamRecorder/message/396) for correcting this on the stacked image from Registax. I chose to correct the flaw on my raw images instead so that the line-noise does not contribute to image noise during the stacking process and other processing steps. Note that the procedure requires that the .ser file from the Skynyx camera is converted to a series of tiff or fts files which can then be processed individually.

The correction procedure is quite simple and goes like this (outline below is for MaxIm DL, but can be adapted to most other image processing programs):

  • Rotate image 90 degrees
  • Deinterlace - so that an odd and even image is produced. One will be brighter than the other, due to the "lines" being one pixel wide each.
  • Perform pixel math so that these images are combined at 50% intensities, thus producing an average.
  • Rotate image 90 degrees back to original orientation
  • Since an image sequence often contains thousands of individual images the correction is best carried out using MaxIm's scripting feature. The example below is for VBScript (thanks to Ron Wodaskii for teaching me this!):

    Set myDoc = WScript.CreateObject("MaxIm.Document")
    myDoc.DisplayName = "Temporary image document"

    openPath = "C:\capture\240409\S00000_Tif\F0000.tif"
    myDoc.OpenFile openPath
    myDoc.RotateLeft()
    Set myDoc2 = myDoc.Duplicate
    myDoc.Deinterlace(True)
    myDoc2.Deinterlace(False)
    myDoc2.Add(myDoc)
    myDoc.Close
    myDoc2.ScaleConstant(0.5)
    myDoc2.RotateRight()
    myDoc2.saveFile openPath , 5, false, 1, false
    myDoc2.Close

    The last part from 'openPath' to 'myDoc2.close' is then repeated with a new file name until the entire sequence has been corrected. Any programming tool can be used to generate the script file (I used Matlab). The procedure works very well, as illustrated by the example images above.


    Here's my main page where you can see more of the pictures I have taken so far.


    Comments greatly appreciated! (mikael@leif.org)