Photogrammetry on Mars

Launch Photogrammetry ↗
Study 01

Perseverance / Descent

Mars 2020 · EDL imagery
Onboard / camera view
Active cameraSaved pathSaved surface
Loading reconstruction…
— / 380
Drag to orbit · + / − to zoomFrame order / model units

A viewpoint moving toward the surface

A sequence of downward-looking images becomes a set of camera positions above a recovered patch of terrain. The view makes the relationship between changing perspective, overlapping coverage and the reconstructed surface visible.

Instrument
Rover down-look camera
Saved solve
380 solved cameras · stored terrain mesh
Source
NASA / JPL-Caltech

The ED instrument code identifies the rover down-look camera. The landing event was February 18, 2021, but these saved labels contain sol 0002 and later clock values. Those product fields are not treated as independently verified descent timing.

Frame 268 matches approximately 02:05.67 in NASA’s landing video: backshell/parachute separation and the transition to powered descent. The abrupt rocking is visible in the source sequence. Physical scale remains uncalibrated.

Source record & technical sheets

EDF_0002_0667110746_695ECV_N0010052EDLC00002_0010LUJ01_1200

Perseverance / Descent — source sample 1
Source sample 1
Perseverance / Descent — source sample 2
Source sample 2
Perseverance / Descent — source sample 3
Source sample 3
Perseverance / Descent — source sample 4
Source sample 4

Technical sheets: Camera positions ↗ · Image to surface ↗ · Motion ↗

NASA PDS Analyst’s Notebook · Mars 2020 filenames ↗
NASA PDS Analyst’s Notebook · Product types ↗
NASA · Perseverance trajectory reconstruction through landing ↗

Full source record ↗

THE PROCESS

From mission imagery to spatial reconstruction

I started with images from space missions. I collected the files, read the identifiers, and looked for sequences with enough overlap to reconstruct.

The result is a way to work with the images spatially: to see where the viewpoints sit, how a surface comes together, and what happens when I move outside the original camera view.

01

Collect

NASA’s public image collections supplied the starting material. A Python collection script turned the downloads into a local working archive, keeping the filenames available for the next step.

Not every image belonged in the same reconstruction. Different cameras, products and observation sequences had to remain distinguishable.

The Rocket Lab onboard reconstruction has its own project: Launch Photogrammetry ↗. Its source chain stays separate from the NASA imagery.

Original Python collection log showing downloaded Curiosity images
Original collection log / March 2024.
02

Decode

The filenames carry information about the instrument, product, sequence and acquisition time. Reading those fields makes it possible to group the material before reconstruction.

Select a field in this Mastcam-Z filename. The remaining suffix stays intact.

___N0030770_1100LUJ01_1200

ZL / Left Mastcam-Z

The instrument identifier distinguishes the left camera from the right camera, whose code is ZR. This selected solve contains left-camera images only.

The clock is not a UTC date. The “_1200” browser-image suffix is not decoded as a native mission field.

Original folder structure grouping images by camera, product, filter, sequence and sol
Original sorting diagram / camera, product, filter, sequence and sol. The screenshot’s “INSTRUMENT” column contains sequence names.
03

Reconstruct

The photographs do not arrive as a ready-made mesh. The reconstruction estimates viewpoints and shared points from image correspondences. A stored surface then gives the study a form that can be examined from outside those original views.

I keep the source image next to its camera. A flat image becomes one view of a larger spatial arrangement.

Holes, disconnected regions and unstable results remain part of the record. They show what the available images supported and where the reconstruction stops.

Original stitch test showing overlapping Mars photographs and missing image regions
Stitch Test 002 / an intermediate image experiment from the archive.

Source image

A mission photograph or selected frame, with its source identity retained.

Camera

A viewpoint estimated in the saved reconstruction.

Image links

Stored feature matches, or separately labeled ray–surface intersections.

Surface

The saved mesh or point cloud, including missing regions.

04

Make

The scan becomes a scene: a place to choose a viewpoint, reveal structure, isolate a fragment, or make a new camera move.

The original scan-detail recording connects the reconstruction process to the images made from it. Across the portfolio, the same process can connect a scan of an object, a person or an interior to the work it becomes.

Mast Cam Scan Details — still from Andrew’s original archive recording
Mast Cam Scan Details / original archive recording. Watch the recording ↗
The sol 3 labels and 284-image project connect it to the panorama study family; the exact stored mesh revision has not been matched.

Position

Paths come from the image solution. They are not independently measured mission trajectories.

Time

Frames give order. Acquisition cadence needs a frame-to-time map before displacement becomes speed.

Scale

Model units need a supported physical calibration before they can be read as meters.

The method continues across source images, saved reconstructions and new work. The process stays visible alongside the outcome.

Sources & attribution

Independent research, reconstruction and visualization: Andrew Kenney.
Mission capture: NASA / JPL-Caltech; Mastcam-Z imagery: NASA / JPL-Caltech / ASU / MSSS.

Source previews retain their archived processing. Surfaces use the saved image colors; Color can be switched off to inspect their structure. Ingenuity and Curiosity navigation imagery remains monochrome. Panorama point colors are sampled from the saved frame previews using the recovered cameras. The current Ingenuity study is Flight 6; the separate Flight 36 / sol 642 archive solve remains distinct.

Dataset identities & source record ↗