Real NAC — top 5000 scan lines
Ground truth: rows 0–5000 of the NAC strip, 512×512.
Terrain ~60 km from Malapert at (-85.86°S, 334.6°E).
Synthetic — Blender pushbroom, line-by-line
Blender 4.5 Cycles pushbroom, one render per scan line,
SPICE-quaternion camera with NACR sample-axis flip. Cycles output
post-processed: divided by π·F₀·albedo → I/F reflectance units (the
same convention ISIS uses for the real NAC cube), then p0.5–p99.5
stretched like isis2std. Sun elev = 2.6° is physical
truth (confirmed by SPICE + ISIS caminfo); the "mostly black with
tiny lit highlights" look matches the grazing-sun geometry.
Synthetic — sun forced to 25° (sanity test)
Same pose + same AOI, but the sun direction is
overridden to 25° elevation at the actual azimuth. Physical sun
at this observation is ~3°; this card exists only to visually
answer "what if the sun WERE higher?" — compare to real_top.
Relief sanity — top-down, 45° NW sun, NAC footprint outlined
Pure Lambertian of DEM gradients for the 12×7 km
ground patch around the AOI. 45° sun from NW, no camera model.
Red outline = the NAC's top-5000-line
footprint (ray-projected through SPICE). Sub-meter craters the NAC
sees are smoothed out here (LOLA is 10 m posting). Use this to
check the AOI is right, not the physics.
Correlator — top 5000, body-frame
Three panels: real | synthetic warped into real's frame |
|residual|.
ECC = +0.1387 · NCC id=-0.103 → warp=+0.019
rotation = +0.62° · scale = (+0.878, -1.172) · skew = -170.09° · det = -1.030
translation (px) = (+59.7, +532.2) · best init = flipY
- ECC 0.139 indicates weak alignment — expect sub-structural mismatch (terrain detail differences).
- det=-1.030 is NEGATIVE — the synthetic had to be flipped to match the real image. Orientation bug: one axis of the camera 'right' or 'up' vector is reversed.
- scale_x=0.878 — cross-track pixel scale off by +12.2%. FOV or focal-length mismatch.
- scale_y=-1.172 — along-track pixel scale off by +17.2%. Line-rate / ground-speed ratio wrong.
- skew=-170.1° — non-orthogonal image axes. Usually a camera up/right vector that isn't perpendicular to forward, or a frame mis-rotation.
- translation=(+59.7, +532.2) px — synthetic covers a shifted region of ground; boresight or spacecraft-position offset.
Scene metadata
{
"dem_obj": "/home/chandmer/nvme-8tb-2/DEMEnhancement/outputs/smoke/dem_mesh.obj",
"bbox_sps_m": [
-8865.0,
106195.0,
21135.0,
136195.0
],
"dem_center_sps_m": [
6923.704453855879,
117637.05395496669,
2568.72021484375
],
"posting_m": 10.0,
"camera": {
"pos_sps_m": [
2188.3074400213495,
143247.6015596752,
66881.09592449688
],
"look_at_sps_m": [
6923.704453855879,
117637.05395496669,
2568.72021484375
],
"up_sps": [
-0.17562877029541718,
-0.9844564668102495,
0.0
],
"focal_length_mm": 699.62,
"sensor_width_mm": 36.64038889646912,
"fov_deg": 3.0,
"resolution": [
512,
512
],
"line_idx": 39592
},
"sun": {
"elev_deg": 2.264517069284455,
"az_deg": -32.36763037186056,
"energy": 1361.0,
"angle_deg": 0.53
},
"moon_radius_m": 1737400.0,
"crs_proj4": "+proj=stere +lat_0=-90 +lat_ts=-90 +lon_0=0 +x_0=0 +y_0=0 +R=1737400 +units=m +no_defs=True",
"et_mid": 619362176.0071776,
"obs_utc": 619362176.0071776
}
Files in outputs/smoke/
body_composite.png
body_warped.png
correlation_composite.png
nac_footprint_overlay.png
real.png
real_crop.png
real_full.png
real_malapert.png
real_top.png
relief_top.png
synthetic.png
synthetic_blender.png
synthetic_blender_stretched.png
synthetic_nac_s08.png
synthetic_nac_s08_body.png
synthetic_nac_s08_body_as_sps.png
synthetic_nac_s08_body_full.png
synthetic_nac_s08_full.png
synthetic_pushbroom_full.png
synthetic_pushbroom_partial.png
synthetic_pushbroom_raw.png
synthetic_s08_partial.png
synthetic_s08_top.png
synthetic_s08_warped.png
synthetic_top.png
synthetic_top5k_blender.png
synthetic_top5k_flip.png
synthetic_top_batch.png
synthetic_top_body.png
synthetic_top_body_native.png
synthetic_top_body_sun25.png
synthetic_top_line.png
top_body_composite.png
top_body_warped.png
/api/files ·
static /img/