Source: https://guthlabs.ai/docs/instruments/motion-blur-panning-shutter-speed-estimator/

instrument / verified-with-binding-errata

# Motion Blur / Panning Shutter Speed Estimator

The current ledger marks this instrument verified with errata that must be applied at binding time.

Status: **VERIFIED_WITH_ERRATA**Lifecycle: **verified-with-binding-errata**

## Inspectable records

[01**Overview**Purpose and lifecycle](<https://guthlabs.ai/docs/instruments/motion-blur-panning-shutter-speed-estimator/>)[02**Mechanism**Method and assumptions](<https://guthlabs.ai/docs/instruments/motion-blur-panning-shutter-speed-estimator/mechanism/>)[03**Implementation**Binding and validation](<https://guthlabs.ai/docs/instruments/motion-blur-panning-shutter-speed-estimator/implementation/>)[04**Qualification**Evidence and errata](<https://guthlabs.ai/docs/instruments/motion-blur-panning-shutter-speed-estimator/qualification/>)

## Ledger state

The current ledger marks this instrument verified with errata that must be applied at binding time.

**Area**: Audio, Music, Photography & Color

**Tranche**: tranche-5

**Evidence ID**: t5-097

**Ledger rows**: 1

No ledger note is attached.

## Review findings

The disclosed label that this is a simplified motion model is appropriate but incomplete. Verdict remains NEEDS_REVIEW because pixelPitch is missing from the declared inputs and the specification claims a shutter-speed range without defining how that range is derived. The test vectors explicitly exercise the stated simplified formula under documented SI-unit assumptions.

### Formula and scope findings

- The angular-velocity formula subjectSpeed/distance is only an approximation for transverse subject motion and assumes small angles; the relevant quantity should generally be transverse relative speed, not total speed.

- The blur formula is dimensionally valid only when focalLength and pixelPitch use the same physical length units and the angular displacement is small; a more exact image displacement uses focalLength multiplied by tan(angular displacement).

- The declared inputs omit pixelPitch, although pixelPitch is required by the blur formula.

- A single desired blur amount produces a target or maximum shutter time, not a shutter-speed range. The specification does not define the lower and upper bounds of the range or separate freeze and intentional-blur modes.

- No formula is provided for camera motion, subject rotation, depth change, or motion direction, all of which can materially affect blur.

### Unit assumptions

- subjectSpeed is in m/s unless explicitly converted; distance to subject is in meters.

- focalLength and pixelPitch must be expressed in the same length units; the vectors convert focal length to meters and pixel pitch from micrometers to meters.

- angular velocity is treated as radians per second; radians are dimensionless in the blur-pixel calculation.

- desiredBlur is interpreted as a maximum allowed blur in pixels.

- The tested output is the maximum shutter time satisfying blurPixels = angularVelocity × shutterTime × focalLength / pixelPitch; it is not a complete shutter-speed range.

## Boundary hardening

**BREAK_CLAIMED** · SELF_FLAGGED

The specification's formula requires pixel pitch, but pixel pitch is absent from the listed inputs. It also promises a shutter-speed range without defining range bounds or any formula branches. Zero distance and zero desired blur additionally produce undefined or non-finite shutter-speed results that require validation handling.

## Errata and corrections

### Tranche errata

**maximum_shutter_time_s / hz** · vector 1

0.0025 / 400

0.00025 / 4000

10× slip; her own v2/v4 use the same formula correctly

## Inspectable example

4 review vectors are recorded. One source-bound sample is shown below.

````
{
  "inputs": {
    "subject_speed_m_per_s": 10,
    "distance_m": 50,
    "focal_length_m": 0.2,
    "pixel_pitch_m": 0.000005,
    "desired_blur_px": 2
  },
  "expected_outputs": {
    "maximum_shutter_time_s": 0.0025,
    "equivalent_shutter_speed_hz": 400
  },
  "working": "angularVelocity = 10 / 50 = 0.2 rad/s.\\nshutterTime = desiredBlur × pixelPitch / (angularVelocity × focalLength)\\n= 2 × 0.000005 / (0.2 × 0.2)\\n= 0.000010 / 0.04\\n= 0.0025 s.\\nEquivalent shutter rate = 1 / 0.0025 = 400 Hz, conventionally 1/400 s."
}
````

## Related workflows

No source-defined multi-instrument workflow membership is recorded.

## Sources and evidence

These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.

- `VERIFIED_LEDGER.json · VERIFIED_WITH_ERRATA`

- `evidence-tranche5/tranche5-results.json`

- `BOUNDARY_HAZARD_CATALOG.json`
