< overcast.video

Showcase: enhance — "Enhance & Resolve"

A CityJet Avro RJ85 sits in a ramp photo, its registration painted on the rear

fuselage. Crop that registration and knock it down to surveillance quality — 64

pixels wide, heavy sensor noise — and it becomes an unreadable smudge. Baseline

OCR on the smudge misreads the tail number as E-RUC, a garbled and wrong

identifier. One pass of overcast's enhance — a deterministic clean-up (ffmpeg

denoise + 2× upscale, no generative model) — recovers it: re-OCR reads

EI-RJC, which the full-resolution source crop confirms exactly. A generative

super-resolution tier (fal aura-sr, clearly reconstructive) produces the

crispest-looking result and also reads EI-RJC — but its pixels are synthesized:

on repeat runs it slips the final letter (EI-RJO / EI-RJQ), the case's

honesty beat. The recovered registration identifies the airframe: **CityJet Avro

RJ85, EI-RJC**.

Source media (provenance / license)

CityJet taxiing at Schiphol (AMS - EHAM), The Netherlands, 18may2014, pic-3" by

Alf van Beem, Wikimedia Commons, CC0 (public-domain dedication):

https://commons.wikimedia.org/wiki/File:EI-RJC_Avro_Regional_Jet_RJ85_CityJet_taxiing_at_Schiphol_(AMS_-_EHAM),_The_Netherlands,_18may2014,_pic-3.JPG

The registration EI-RJC is a public aircraft identifier, not personal data.

(the ground-truth control):

ffmpeg -i cityjet-eirjc.jpg -vf "crop=360:240:2660:1275" reg-eirjc-full.png

noise + JPEG recompression):

ffmpeg -i reg-eirjc-full.png -vf "scale=60:-2,noise=alls=45:allf=t+u" -q:v 6 reg-eirjc-degraded.jpg

(final crop is 64×42; noise is seeded randomly, so this exact file is kept for

reproducibility)

Command sequence


cd /path/to/case-studies
overcast case init --case showcase/enhance --name "Enhance & Resolve" --json

# make sure enhance uses the builtin deterministic ffmpeg ops (clears any binding)
overcast provider setup apply --verb enhance --choice ffmpeg --yes --json --case showcase/enhance

# line of investigation
overcast target add "CityJet Avro RJ85 in the ramp photo" \
  --question "Recover the aircraft registration from the surveillance-quality crop and identify the airframe" \
  --case showcase/enhance --json                                   # -> tgt_6aca61

# establish the scene
overcast see showcase/_media/enhance/cityjet-eirjc.jpg \
  --prompt "Establish the scene: what kind of aircraft is this and where is the registration marked?" \
  --case showcase/enhance --json                                   # -> rec_dc59298f4b14844b

# BASELINE: OCR the degraded crop — misreads the registration as E-RUC (wrong)
overcast see showcase/_media/enhance/reg-eirjc-degraded.jpg --ocr \
  --case showcase/enhance --json                                   # -> rec_abc87b3d222775db (OCR: "E-RUC")
overcast note "BEFORE: 64px surveillance-quality crop ... baseline OCR misreads as 'E-RUC' ..." \
  --ref rec_abc87b3d222775db --tag enhance,before,ocr --confidence low --case showcase/enhance

# ENHANCE (deterministic, builtin ffmpeg: hqdn3d denoise + 2x upscale)
overcast enhance showcase/_media/enhance/reg-eirjc-degraded.jpg --ops denoise,upscale \
  --case showcase/enhance --json                                   # -> .overcast/media/reg-eirjc-degraded_enhanced_4b29594531.png (provider: ffmpeg)

# AFTER: re-OCR the enhanced output — reads EI-RJC (the true registration)
overcast see showcase/enhance/.overcast/media/reg-eirjc-degraded_enhanced_4b29594531.png --ocr \
  --case showcase/enhance --json                                   # -> rec_8cff224fc268734c (OCR: "EI-RJC")
overcast note "AFTER (deterministic): denoise + 2x upscale ... reads 'EI-RJC' ..." \
  --ref rec_8cff224fc268734c --tag enhance,after,ocr,recovered --confidence medium --case showcase/enhance

# GENERATIVE TIER (clearly reconstructive): bind fal, aura-sr restore, re-OCR, unbind
overcast provider setup apply --verb enhance --choice fal --yes --json --case showcase/enhance
FAL_ENHANCE_IMAGE_MODEL=fal-ai/aura-sr overcast enhance showcase/_media/enhance/reg-eirjc-degraded.jpg \
  --case showcase/enhance --json                                   # -> .overcast/media/reg-eirjc-degraded_fal.png (model: fal:fal-ai/aura-sr)
overcast see showcase/enhance/.overcast/media/reg-eirjc-degraded_fal.png --ocr \
  --case showcase/enhance --json                                   # -> rec_67ad88235e1a7e52 (OCR: "EI-RJC"; repeat runs slip to EI-RJO / EI-RJQ)
overcast provider setup apply --verb enhance --choice ffmpeg --yes --json --case showcase/enhance   # restore profile

# CONTROL: full-resolution source crop confirms EI-RJC
overcast see showcase/_media/enhance/reg-eirjc-full.png --ocr \
  --case showcase/enhance --json                                   # -> rec_a60d758c191b839b (OCR: "EI-RJC")

# finding + verdict
overcast finding create "Registration recovered from the degraded crop: CityJet Avro RJ85 EI-RJC ..." \
  --ref rec_8cff224fc268734c --target tgt_6aca61 --confidence medium --case showcase/enhance
overcast note "ENHANCE & RESOLVE — verdict: ... EI-RJC ..." --tag tldr --confidence medium --case showcase/enhance

# export
overcast brief --export showcase/enhance/brief.html --theme csi --case showcase/enhance

OCR before / after (verbatim)

| stage | registration read | notes |

|---|---|---|

| degraded (baseline, rec_abc87b3d222775db) | E-RUC | WRONG — a dropped character and garbled letters |

| enhance denoise+upscale (rec_8cff224fc268734c) | EI-RJC | correct; deterministic, invents no detail |

| fal aura-sr, reconstructive (rec_67ad88235e1a7e52) | EI-RJC | crispest to the eye; synthesized pixels, slips to EI-RJO / EI-RJQ on repeat runs |

| full-res control (rec_a60d758c191b839b) | EI-RJC | ground truth, confirms the recovery |

Honesty caveats

can hallucinate. The recovered registration was treated as a LEAD until the

full-resolution control confirmed it; the finding says so explicitly.

EI-RJC correctly and stably. The generative super-resolution looks crisper but

is non-deterministic: across repeat runs its final character came back as C, O,

or Q — "AI enhance" is a lead to corroborate, not sole proof.

and restored to the builtin ffmpeg choice immediately after.