# Acceptance Test: Image Registration Rate >95% - Baseline

## Summary
Validate AC-9 requirement that ≥95% of images successfully register (find enough matching features for pose estimation) under normal flight conditions.

## Linked Acceptance Criteria
**AC-9**: Image Registration Rate > 95%. The system can find enough matching features to confidently calculate the camera's 6-DoF pose (position and orientation) and "stitch" that image into the final trajectory.

## Preconditions
- ASTRAL-Next system operational
- Normal flight conditions (no extreme weather, lighting, or terrain)
- Multi-layer architecture (L1, L2, L3) active
- Registration success criteria defined

## Registration Success Definition
An image is **successfully registered** if:
1. L1 sequential tracking succeeds (≥50 inlier matches), OR
2. L2 global retrieval succeeds (correct satellite tile, confidence >0.6), OR
3. L3 metric refinement succeeds (cross-view match confidence >0.5)

An image **fails registration** only if ALL three layers fail.

## Test Data
- **Primary Dataset**: AD000001-AD000030 (baseline segment, normal conditions)
- **Secondary Dataset**: AD000001-AD000060 (full flight, includes challenges)
- **Expected**: ≥95% registration rate for both datasets

## Test Steps

### Step 1: Process Baseline Segment (Normal Conditions)
**Action**: Process AD000001-AD000030, track registration outcomes
**Expected Result**:
```
Total images: 30
L1 successful: 28 (93.3%)
L2 successful (L1 failed): 2 (6.7%)
L3 successful (L1+L2 failed): 0 (0%)
Total registered: 30 (100%)
Registration rate: 100% > 95% (AC-9 PASS)
Status: BASELINE_EXCELLENT
```

### Step 2: Analyze L1 Registration Performance
**Action**: Examine L1 sequential tracking success rate
**Expected Result**:
```
L1 attempts: 29 (frame-to-frame pairs)
L1 successes: 28
L1 failures: 1
L1 success rate: 96.6%
Failure case: AD000003→004 (202.2m jump, expected)
L1 failure handling: L2 activated successfully
Status: L1_BASELINE_PASS
```

### Step 3: Analyze L2 Fallback Performance
**Action**: Examine L2 global retrieval when L1 fails
**Expected Result**:
```
L2 activations: 2 (L1 failure triggers)
L2 successes: 2
L2 failures: 0
L2 success rate: 100%
Cases: AD000004 (after 202m jump), AD000033 (after 220m jump)
L2 contribution: Prevented 2 registration failures
Status: L2_FALLBACK_WORKING
```

### Step 4: Process Full Flight with Challenges
**Action**: Process AD000001-AD000060, including sharp turns and outliers
**Expected Result**:
```
Total images: 60
L1 successful: 53 (88.3%)
L2 successful (L1 failed): 6 (10%)
L3 successful (L1+L2 failed): 0 (0%)
Registration failures: 1 (1.7%)
Registration rate: 98.3% > 95% (AC-9 PASS)
Status: FULL_FLIGHT_PASS
```

### Step 5: Identify and Analyze Registration Failures
**Action**: Investigate any frames that failed all three registration layers
**Expected Result**:
```
Failed frame: AD000048 (hypothetical example)
L1 failure: 268.6m jump from AD000047, overlap ~0%
L2 failure: Satellite data outdated, wrong tile retrieved
L3 failure: Cross-view match confidence 0.3 (below 0.5 threshold)
Outcome: User intervention requested (AC-6 human-in-the-loop)
Acceptable: <5% failure rate allows for extremely difficult cases
Status: FAILURE_WITHIN_TOLERANCE
```

### Step 6: Calculate Final Registration Statistics
**Action**: Compute comprehensive registration metrics
**Expected Result**:
```
Dataset: AD000001-060 (60 images)
Successfully registered: 59 images
Registration failures: 1 image
Registration rate: 98.3%

AC-9 Requirement: >95%
Actual Performance: 98.3%
Margin: +3.3 percentage points
Status: AC-9 PASS with margin
```

## Pass/Fail Criteria

**PASS if**:
- Registration rate ≥95% on baseline dataset (AD000001-030)
- Registration rate ≥95% on full flight dataset (AD000001-060)
- Multi-layer fallback working (L2 activates when L1 fails)
- Registration failures <5% (allowing for extremely difficult frames)

**FAIL if**:
- Registration rate <95% on either dataset
- L2 fallback not activating when L1 fails
- Registration failures >5%
- System crashes on unregistered frames (should handle gracefully)

## Layer Contribution Analysis

### Layer 1 (Sequential Tracking)
- **Role**: Primary registration method (fastest)
- **Success Rate**: 85-95% (normal overlap conditions)
- **Failure Cases**: Sharp turns, low overlap

### Layer 2 (Global Retrieval)
- **Role**: Fallback for L1 failures (slower but robust)
- **Success Rate**: 85-95% when activated
- **Failure Cases**: Stale satellite data, ambiguous locations

### Layer 3 (Metric Refinement)
- **Role**: Precision improvement, not primary registration
- **Success Rate**: 80-90% when attempted
- **Failure Cases**: Large view angle difference, seasonal mismatch

### Multi-Layer Defense
```
Registration Success = L1 OR L2 OR L3
P(success) = 1 - P(all fail)
P(success) = 1 - (0.10 × 0.10 × 0.15)
P(success) = 1 - 0.0015
P(success) = 99.85% > 95% (AC-9)
```

## Registration Failure Handling
When registration fails for a frame:
1. System flags frame as UNREGISTERED
2. Continues processing subsequent frames
3. Attempts to re-register after later frames provide context
4. If still fails after 3 attempts, requests user input (AC-6)
5. Does not crash or halt processing

## Quality Metrics Beyond Registration Rate
- **Mean inlier count**: >100 matches (L1 successful cases)
- **Mean confidence**: >0.8 (registered frames)
- **Pose covariance**: <50m uncertainty (registered frames)
- **Trajectory continuity**: No gaps >3 frames

## Notes
- AC-9 threshold of 95% balances operational utility with real-world challenges
- 5% failure allowance (~3 frames per 60) accommodates extreme cases
- Multi-layer architecture critical for achieving high registration rate
- "Atlas" multi-map approach counts disconnected fragments as registered
- Registration rate > positioning accuracy (AC-1/AC-2) requirements

