Sharpness Scoring

Sharpness Scoring

RawCull can automatically rank every image in a catalog by sharpness, so the sharpest frames rise to the top and out-of-focus or motion-blurred shots sink to the bottom.


Overview

When you click Sharpness, RawCull analyses each RAW file:

  • A small thumbnail is extracted from the ARW file — no full RAW decode needed.
  • Apple Vision locates the main subject. The final score weights 75 % subject region + 25 % full frame. If no salient region is detected, the full-frame score is used.
  • A Laplacian edge-detection kernel measures per-pixel sharpness energy. High-ISO noise is suppressed by a pre-blur whose radius scales automatically with ISO and image resolution.
  • Scores are catalog-relative: the p90 of the session is anchored at 100, so every other frame is expressed as a percentage of it. A score of 60 means the frame is 60 % as sharp as the sharpest typical shot in that session.

Running a Sharpness Score

The Score Sharpness button appears in the grid toolbar. The toolbar function for showing the grid view is:

  • show all thumbnails in a grid
RawCull startup screen
  1. Open a catalog and wait for thumbnails to finish generating.
  2. Click Score Sharpness (scope icon) in the toolbar above the grid.
  3. A Scoring… label replaces the button while analysis runs (up to six images concurrently).
  4. When complete, a coloured score badge appears on every thumbnail and the grid re-sorts sharpest-first.
RawCull startup screen

Click Re-score to run again after adjusting Focus Mask Controls or switching the aperture filter.


Reading the Score Badge

ColourNormalised scoreMeaning
Green65 – 100Sharp — well-focused, fine detail visible
Yellow35 – 64Acceptable — slightly soft or minor motion blur
Red0 – 34Soft — missed focus, camera shake, or significant motion blur

The number in the badge is the normalised score (0–100).


Sorting by Sharpness

After scoring, the grid sorts sharpest-first automatically. Toggle this off and back on with the Sharpness button in the toolbar. The same toggle is available in the sidebar for list views.


Filtering by Aperture

The Aperture picker restricts scoring and sorting to one shooting style:

FilterAperture rangeTypical use
AllAll imagesDefault — no filtering
Wide (≤ f/5.6)f/1.4 – f/5.6Birds, wildlife, portraits
Landscape (≥ f/8)f/8 and aboveTripod landscape, architecture, macro

Changing the filter immediately re-filters the grid and re-applies the sharpness sort within the filtered set.


Auto-Calibration from Burst

Calibration runs automatically when you click Score Sharpness. It analyses the current catalog to derive the best Threshold and Laplacian strength values for that session, then applies them to the Focus Mask Controls sliders. Pre-blur, Erosion radius, and Dilation radius are not changed.

Calibration requires at least 5 scoreable images. You can still adjust any slider manually after calibration.


The Focus Mask Overlay

Enable the Focus Mask overlay in the zoom window controls to see the same edge-detection output that drives the score, painted in red. Tight, bright lines = high score; faint glow = low score.

Focus Mask Controls

ControlEffect
Pre-blur radiusBase Gaussian smoothing before edge detection. Scales automatically with ISO and resolution — increase for very noisy files.
ThresholdMinimum edge strength included in the mask — higher = only the sharpest edges
Erosion radiusMorphological erosion before dilation — removes isolated speckle noise
Dilation radiusMorphological dilation — expands edge regions to fill small gaps
Laplacian strengthAmplification of the raw edge response — increase to separate sharp and soft frames more aggressively
Feather radiusGaussian softening on the final mask edge — visual only, does not affect the score
Border insetFraction of the image dimension excluded from each edge (default 4 %) — prevents Gaussian artifacts from inflating the score
Salient weightHow much the subject-region score drives the result vs. the full-frame score (default 75 %)
Subject size factorSmall proportional bonus based on how much of the frame the subject fills (default 0.1)
Subject classificationRuns an extra Vision pass to label the subject category on each thumbnail. Disable for faster re-scores
Show raw LaplacianDisplays the unthresholded Laplacian output — useful for diagnosing tuning issues

Changes take effect on the next scoring run.


Understanding Low Scores

Motion blur — shutter speed too slow to freeze the subject. Focus Mask shows a diffuse halo rather than sharp lines.

Missed or soft focus — autofocus tracked the background or a wing tip. Focus Mask shows strong edges somewhere other than the subject centre.

Small or distant subject — if Vision cannot detect a salient region, the scorer falls back to the full frame, diluting the score with background. Reduce salient weight and re-score if distant subjects feel underrated.

High ISO noise — extreme noise can mimic sharp edges and temporarily inflate scores. Increase Pre-blur radius in Focus Mask Controls and re-score.


Tips

  • Score after culling for exposure — removing badly exposed frames keeps the normalised scale more meaningful.
  • Re-score with the aperture filter active — the 100 baseline anchors to the sharpest frame within that aperture range.
  • Use the Focus Mask to validate scores — open the zoom window and enable the overlay before discarding any borderline frame. Trust your eye on close calls.
  • Scores reset when you open a new catalog — each catalog has its own relative scale; scores across sessions are not comparable.

Last modified April 27, 2026: Updated docs (2a64e8d)