Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Introduction

blurdetector — a pixel-art eye in a focus frame, telling a blurry flower from a sharp one

blurdetector is a fast command-line tool that scores photo sharpness and classifies every image as sharp or BLURRY, so a whole shoot can be culled in one pass — directly from RAW files (CR3, NEF, ARW, DNG, …), no conversion step required.

$ blurdetector photos --sort

file                  sharpness      global  verdict
-----------------------------------------------------
photos/IMG_0003.CR3        18.4         6.2  BLURRY
photos/IMG_0002.CR3       154.9        40.3  sharp
photos/IMG_0001.CR3       512.3        88.1  sharp

3 file(s): 2 sharp, 1 blurry  [threshold = 100.0]

Highlights

  • RAW-friendly and fast — RAW files are scored from the JPEG preview the camera already embeds; nothing is ever demosaiced. CR3 files get a dedicated path that reads the full-resolution embedded JPEG straight out of the container and decodes only its luminance plane.
  • Bokeh-aware — the sharpness score is the mean of the best tiles of a grid, not of the whole frame: one sharp region is enough to call a photo sharp, so portraits on creamy backgrounds are not flagged as blurry.
  • Parallel — files are analyzed concurrently with rayon; --jobs caps the thread count.
  • Batch-safe — a corrupt or unreadable file becomes an error row in the report and never aborts the run.
  • Calibration-stable — scores are byte-for-byte reproducible and guarded by a golden-file test suite: a threshold calibrated today keeps meaning the same thing in every future version.

Next steps

  • Installation — prebuilt binaries or cargo build.
  • Usage — the command line, option by option.
  • Calibration — pick the right cut-off for your camera and style.
  • Pipeline — what the score actually measures.
  • Score Stability — why scores never drift between versions.