Virtual Pixel



The optical path from my telescope/CCD camera is fixed, resulting into 1.4 arc sec/pixel resolution. This is an ideal configuration for many deep sky objects, resulting in relative wide field images of 37' x 25' (nearly the full Moon). However, when the seeing is very good, then this is a strong limitation as the image resolution becomes CCD limited. Also "small" objects give very small pictures with lack of detail. As an example, here is the full scale image I get from the Ring Nebula:

Several techniques like drizzle allow to get a larger image, but they are not mathematically accurate.

"Virtual pixel" allows, starting from 4 images taken with a CCD camera having a pixel area P, to generate one image with a pixel area P/4. In clear, my ST8E camera with 1.5 Mega pixels of 9μ x 9μ is transformed into a camera with 6 Mega pixels of 4.5μ x 4.5μ.

 Pros & Cons


  • Allows nearly professional quality images (3060 x 2040 pixels)
  • Pixel sampling of .7 arc sec with my optical configuration
  • Keeps the same Field Of View (37'5 x 25')
  • Allows to keep optical path unchanged (no Barlow, no need for new flats)
  • Induces very little artefacts with image restoration algorithms.


  • Each virtual pixel receives 1/4 of the light for a given exposure time (same as having a real 6 Mega pixel camera with 4.5μ square pixels). Exposure times have to be multiplied by 4 to get the same signal/noise ratio.
  • Requires a special guiding program able to take 4 pictures shifted by .5 pixels.
  • To be effective, requires a very steady sky, very well collimated scope, perfect focusing and a very good guiding control.
  • Gives very poor results if conditions vary between pictures. This includes change in sky darkness, change in air transparency and light pollution.
  • Cannot be used for planets or Moon (requires guide star). 


Four shots 'I', 'J', 'K', 'L' are needed. 'I' is the reference image, 'J' is taken with an horizontal shift of .5 pixel, 'K' with a vertical shift of .5 pixel, 'L' with horizontal + vertical shifts of .5 pixel.
A special guding program has been developped: All 4 shots use the same guide reference star and the .5 pixel shift is applied during the telescope guiding process.
The following figure shows the relative positionning of pixel y=n, x=m for the 4 shots:
    In,m in black (reference image)
    Jn,m in brown (horizontal shift .5 pixel)
    Kn,m in red (vertical shift .5 pixel)
    Ln,m in orange (horizontal + vertical shift .5 pixel)
'Virtual pixels', noted Pi,j, with 1/4 the area or the real pixels are delimited by the I, J, K, L pixels


Virtual pixels values can be determined by the following recursive formulas, starting from the upper left corner:

    P2n+1,2m+1 = In,m - (P2n,2m + P2n,2m+1 + P2n+1,2m)
    P2n+1,2m+2 = Jn,m - (P2n,2m+1 + P2n,2m+2 + P2n+1,2m+1)
    P2n+2,2m+1 = Kn,m - (P2n+1,2m + P2n+1,2m+1 + P2n+2,2m)
    P2n+2,2m+2 = Ln,m - (P2n+1,2m+1 + P2n+1,2m+2 + P2n+2,2m+1)

With P0,m = Pn,0 = 0  for all m,n values (upper line = 0, left column = 0)

Similar formulas can be determined starting from the other corners, giving 4 ways to compute a single virtual pixel. The final virtual pixel value will then be an average of the 4 computed values.

Because each virtual pixel depends from previous virtual pixels values, the above formulas are very unstable in a real imperfect world. Therefore, a relaxation coefficient K has to be added. The final formulation is:

    P2n+1,2m+1 = In,m - (P2n,2m + P2n,2m+1 + P2n+1,2m) / K
    P2n+1,2m+2 = Jn,m - (P2n,2m+1 + P2n,2m+2 + P2n+1,2m+1) / K
    P2n+2,2m+1 = Kn,m - (P2n+1,2m + P2n+1,2m+1 + P2n+2,2m) / K
    P2n+2,2m+2 = Ln,m - (P2n+1,2m+1 + P2n+1,2m+2 + P2n+2,2m+1) / K

A value of K = 1.75 has been found satisfactory in most cases. Note that if K is very big, we get the classical "drizzle" formula.

Experimental Results

Following pictures show the results obtained on a star field (portion of M13) with a resolution of .7"/pixel:

Original image enlarged x2

Virtual Pixel, K=1
Note the streaks caused by instabilities

Virtual Pixel, K=1.75

Below is a portion of the above images enlarged x2 (0.35" / pixel)

The Virtual Pixel algorithm shows it's power when combined with deconvolution. Below are the same images processed by Maximum Entropy deconvolution.

As can be expected nothing good happens. Deconvolution cannot guess missing information! Streaks caused by instabilities are also restored... Star separation as small as .7" can be detected


Virtual Pixel proves to be a very efficient technique in emulating x4 definition CCD. However it is very demanding in time, guiding, sky quality... and should be reserved only for those few magic nights where everything goes right.

Images done using Virtual Pixel, but not with the best conditions yet:

M51, M57, M76, NGC 891, NGC 6946, NGC 7662 (blue snowball)