A Voyager 1 map of Jupiter
This map of Jupiter was created from 270 images obtained by the Voyager 1 spacecraft on February 27, 1979 from a distance of about 7.5 million km. Latitudes are planetographic with a uniform interval from -90 (bottom) to 90 (top). Longitudes are in System III with longitude 0 at the left/right edges of the map and longitude 180 at the center. The map should be rendered by projecting it onto an ellipsoid with an equatorial radius of 71516 km and a polar radius of 66871 km or some equivalent units. Below is more detailed information about the map.
The map is available in two different versions, the original 2022 version and an improved version added in 2025. The overall color of the new 2025 version of the map should be more accurate since an improved method was used to generate synthetic green data (the original imaging data consists of orange and violet filtered images only). This is described in more detail below.
Click one of the images below to download either version of the full size map (5.9 MB and 7.6 MB 7200x3600 pixel JPG). Polar maps are also available at the bottom of this page. They were generated from the 2022 version.
Voyager 1 Jupiter map (2022 version) | Voyager 1 Jupiter map (2025 version with improved green) |
![]() |
![]() |
Source data and processing
On February 27, 1979 between 03:55:47 and 12:52:35, Voyager 1 obtained 270 images of
Jupiter with its narrow angle camera, 135 through the orange filter and 135 through the
violet filter. This imaging sequence consists of 3x3 mosaics of orange/violet image pairs,
resulting in a total of 15 3x3 mosaics. These mosaics were assembled into the map above.
Due to overlap the true number of images in the map is probably closer to 200 than 270.
The size of the map is 7200x3600 pixels which oversamples the data slightly. I did this to
compensate against the slight loss of resolution caused by the resampling/reprojection of
the images.
The source data used consists of calibrated images from the Ring-Moon Systems Node of NASA's Planetary Data System (PDS). I used the calibrated images and not the geometrically corrected (and calibrated) images. The reason is that even though various artifacts and noise have been removed from both the calibrated images and the geometrically corrected images there are still some residual artifacts (in particular very subtle horizontal lines) that are easier to remove from images that have not been geometrically corrected. I removed these artifacts using a flat field image I created from a specially processed average of many calibrated images. I then used control point information available with the geometrically corrected images to warp the resulting images and create my own geometrically corrected images. These images were then reprojected to simple cylindrical projection. They were also illumination-adjusted on the fly. This was done using a Minnaert function where the Minnaert k parameter varies as a function of both latitude and filter (orange/violet). Varying the Minnaert parameter as a function of latitude instead of using the same parameter value everywhere greatly reduces the amount of manual work required to remove residual seams between adjacent images. In particular, the photometric properties of the polar regions differ significantly from areas closer to the equator.
The viewing geometry was taken from the Voyager 1 SPICE kernels. However, the camera pointing information was very inaccurate (typically off by ~100 pixels) and had to be corrected. For images where Jupiter's limb is visible I used limb fits to correct the pointing. For other images I used features visible in adjacent, overlapping images where the pointing had already been corrected. Despite some cloud motions this turned out to be slightly more accurate than limb fits from wide angle images obtained at exactly the same time as the narrow angle images. Following this I had illumination-adjusted orange and violet map-projected images.
The next step was to create synthetic map-projected green images. The most common method to generate synthetic green is to use a weighted average of the orange and violet data to generate green. This was done in the original 2022 version of the map.
The resulting orange, green and violet (O, G and V) images were then used to create an an OGV color map-projected image. The map-projected OGV images were then assembled into 15 3x3 mosaics. These 15 mosaics were then mosaicked into a global, seamless OGV map.
I also corrected the orange and violet images to more closely approximate red and blue images. In the original 2022 version of the map I used a weighted average of orange and violet to generate synthetic red and blue (for red, the violet weight is negative).
Missing data and gaps
Once I had finished mosacking everything together, small gaps remained near the poles. For
the south polar region the reason is obvious (Voyager 1 was about 2.7° north of Jupiter's
equatorial plane) but the reason was also extremely dim lighting near the poles, highly
oblique viewing geometry and inaccurate camera pointing. I filled these small gaps using
smooth and featureless dummy data. The dummy data is indicated with black in the mask map
below. The black area also indicates real data that is useless (dim lighting, extremely
oblique geometry etc.) as well as small areas that I modified manually to remove seams
between adjacent images/mosaics.
Accuracy
The positional accuracy of the map is difficult to estimate very accurately since I don't
know exacly how good the limb fits are. However, two overlapping images corrected using
two different limb fits can be compared. The typical difference in these cases is 3-5
pixels in latitude/longitude near the equator. 5 pixels corresponds to an error of 0.25
degrees in latitude/longitude. The error might be bigger (~0.5 degrees?) at some
locations. Some of this difference is probably caused by cloud movements. Closer to the
poles the error increases but it is not large (the biggest difference I saw was 1-2
degrees at very high latitudes).
Needless to say, the error is larger where images from the start and end of the imaging sequence overlap. These images were obtained about 9 hours apart. This resulted in an obvious seam near longitude 255 that I removed manually. I first carefully modified the seam's location in the overlap area to include uniform areas where possible and not any major high contrast features like prominent spots. A sample of the seam before I removed it manually can be seen below (click the image for the full size version). The left overlapping image has been darkened to make the seam more obvious but as can be seen, even without manual modifications the seam is rather subtle at most locations.
Improved color (2025 version of the map)
In the new 2025 version of the global map I generated a new and improved 'version' of the synthetic green data. This synthetic green data was generated using a more accurate and sophisticated method than the one I used earlier. Green images are available in lower resolution images in addition to orange and violet. I used these images as ground truth when creating the new version. In the new version, a 6th degree polynomial was used to generate synthetic green data for most of the map but in specific areas (e.g. the SEB), the green color was computed from a smoothed surface where green is the 'elevation'. The surface was generated from the orange-green-violet ground truth data mentioned above. Compared to real green images, the green 'error' drops down to ~25% of the green 'error' one gets when the simpler weighted average is used to generate green.
In the new 2025 version of the map I also used a more complicated method to generate an RGB image from the orange, green and violet data. I used Jupiter's average visible light spectrum and the orange, new synthetic green and violet values to estimate the spectrum at each point in the map. I then computed RGB values from the spectrum.
Polar maps
Below are polar maps showing the same data as the above maps. They show the
region from latitude 50 degrees to the pole.
N polar region without grid | N polar region with lat/lon grid | N polar region bad data mask |
![]() |
![]() |
![]() |
S polar region without grid | S polar region with lat/lon grid | S polar region bad data mask |
![]() |
![]() |
![]() |