Sharpening enhances high-frequency detail by amplifying edges. Unsharp masking subtracts a blurred version; Laplacian kernels detect and add second-derivative structure. Both risk amplifying noise.
Images can be understood in terms of spatial frequency. Low-frequency content consists of gradual intensity changes — large uniform regions, smooth colour gradients. High-frequency content corresponds to rapid changes — edges, fine texture, sharp transitions. Blurring reduces high-frequency content; sharpening amplifies it.
The distinction matters because different processing goals target different frequencies. Noise reduction suppresses high frequencies (unfortunately also blurring edges). Sharpening boosts high frequencies (unfortunately also amplifying noise). This fundamental tradeoff means sharpening and denoising are competing objectives — in practice, you must choose a balance or apply them in a specific order.
Unsharp masking (USM) is the classic sharpening technique. Despite the name, it sharpens by subtracting a blurred copy from the original: sharpened = original + α × (original − blurred). The term (original − blurred) isolates the high-frequency detail (edges). Adding it back amplifies those edges.
With α = 1: sharpened = 2×original − blurred. The blur radius controls which frequencies are amplified — a large radius sharpens coarse structure; a small radius sharpens fine texture. α controls the strength of the effect. Too large an α causes ringing artefacts (halos at edges) and visible noise amplification.
The name comes from the darkroom technique: a blurred (unsharp) negative was sandwiched with the original to create a mask that, when used in printing, boosted edge contrast. Digital USM is mathematically identical — subtract the blur, add back the difference.
The Laplacian is a second-order differential operator: ∇²f = ∂²f/∂x² + ∂²f/∂y². In images, it detects regions of rapid intensity change in all directions simultaneously. The discrete Laplacian kernel is: [[0,−1,0],[−1,4,−1],[0,−1,0]], or with diagonals: [[−1,−1,−1],[−1,8,−1],[−1,−1,−1]].
To sharpen, the Laplacian response is subtracted from the original (since Laplacian gives positive response inside bright regions): sharpened = original − ∇²f. This is equivalent to a combined sharpening kernel: [[0,−1,0],[−1,5,−1],[0,−1,0]]. The centre value (5) reinforces the pixel's own value while the negative neighbours create edge enhancement.
Uses first-order blur subtraction. More controllable — blur radius and α are separate parameters. Can be tuned for broad vs. fine sharpening. Slower (requires a separate blur pass).
Uses second-order derivatives. Single-pass convolution — faster for small kernels. Less controllable, stronger noise amplification. Good for unambiguous sharp edges, bad for noisy inputs.
Every sharpening method amplifies noise because noise is high-frequency content. This is the fundamental tradeoff: sharpen edges → sharpen noise. The practical workflow is denoise first, then sharpen. This preserves the structural edges while reducing the noise floor before amplification.
The bilateral filter is particularly useful before sharpening — it smooths noise in flat regions while leaving edges intact, so the subsequent sharpening step amplifies real structure rather than artefacts. In CNN-based pipelines, denoising and sharpening are often jointly learned end-to-end.
Say the answer out loud before revealing — recalling is what makes it stick. Next: Correlation vs Convolution →
What is the unsharp mask formula and why does it sharpen?
What does the combined Laplacian sharpening kernel [[0,−1,0],[−1,5,−1],[0,−1,0]] do?
Why does sharpening amplify noise and what is the recommended workflow?
When would you prefer Laplacian sharpening over unsharp masking?