Restoring Degraded Mugshot Photography: What Actually Works
Mugshot archives from the 1970s through early 2000s are full of unusable scans. Flash burn, film grain, poor lighting, and cheap scanning equipment left most records at 200 DPI or lower with crushed blacks and blown highlights. The workflow to recover useful detail is not hard, but most people skip the fundamentals and end up with artifacts that look worse than the original. The process starts with raw file management. Do not work on the original scan. Make a duplicate and name it with a date and source ID. I once spent three hours trying to reconstruct a subject's left eye on a 1983 intake photo only to realize I had been editing the wrong file layer because the naming convention was lazy. Every correction should be non-destructive, on its own layer, with a visible mask. The first step is color channel analysis. Open the RGB channels separately and look for the one with the cleanest histogram. Mugshots shot on film often have one channel with less noise than the others. In my workflow, I usually keep the Red channel for skin tone recovery and the Blue channel for background separation, then merge the cleanest parts using layer masks. This alone recovers more detail than any single AI upscaler will produce on a straight apply.
After channel selection, I run a light unsharp mask at 40% strength before any denoising. This sounds backward. Most people denoise first, which smooths out the micro-edges you actually need to enhance later. By sharpening the raw scan first, you establish edge data that denoising can preserve instead of obliterate. The result is cleaner detail retention in the final output. For the actual upscaling, I use a combination of traditional interpolation and targeted AI refinement rather than letting a single model handle the entire image. I start with a Gaussian or Lanczos upscale to 2x or 4x, then isolate the face region and run it through a dedicated restoration model. Running the full image through an AI model at once introduces halos around high-contrast edges like the badge strip and the numbered placard. Those artifacts are obvious and nearly impossible to remove cleanly after the fact. Here is the part beginners miss: the placard text and the barcode strip are usually the most valuable forensic data in a mugshot. AI upscalers tend to hallucinate or smear numbers. I keep the original scan of just that strip at full resolution and overlay it on the restored image afterward. This preserves the actual digit values while the rest of the photo gets enhanced. I did not learn this the easy way. In 2019, I submitted a fully AI-upscaled file to a case review board and got rejected because the date on the intake form had shifted by one digit. The model had smoothed the texture enough to change the character shape. That was the last time I trusted an upscaler with text regions.
Denoising should happen after the upscale, not before. Use a luminance-preserving denoiser that separates chroma noise from luminance noise. Mugshot film grain is mostly luminance, and standard denoisers treat it as detail and blur it away. Set the luminance threshold carefully. You want the grain reduced enough to see structure, not removed enough to create a plastic skin effect. A setting around 25-35 on most tools hits that balance for scanned film. White balance is another place where the default auto-settings fail. Indoor mugshot photography often used warm incandescent or fluorescent sources mixed with direct flash. The auto balance will push the image in the wrong direction because the skin tones dominate the scene. I set the white balance by sampling the gray background strip or the white label on the placard, not the skin. Once the background is neutral, the skin tones fall into a realistic range without additional adjustment. For the final output, save two files. One is the fully restored version for general reference. The other is the original scan with a side-by-side comparison layout that includes the date, scanner settings, and a notes field documenting every adjustment layer. Archival standards and legal review boards both require provenance. A restored image without documentation is just an interpretation, not a record.
Get the Full Details

There are limitations that no workflow completely solves. Severe flash blowout where the sensor or film was fully saturated cannot be recovered. If the detail is gone, it is gone. AI can guess what the skin should look like, but guessing is not restoration. In those cases, the honest output is a contrast-enhanced version of the original with a note flagging the affected regions. I have seen too many people present AI-invented details as fact. That is not helpful to anyone. Another bottleneck is resolution ceiling. If the original scan is below 150 DPI and the subject is small in the frame, even the best pipeline produces soft results. The input quality sets the hard limit. No amount of channel work or targeted refinement will create information that was never captured. I usually reject projects where the source is below that threshold and recommend re-scanning at higher DPI if the physical record is still available. It takes longer upfront but saves time downstream. If you need a starting point for the tooling, GIMP handles the layer-based non-destructive workflow for free. For AI upscaling, Real-ESRGAN with a face-restore extension is the current reliable option. I pair it with Topaz Photo AI when speed matters, but I always cross-check the output against the manual mask approach described above. Neither tool is perfect, and each has failure modes that are obvious in practice if you know where to look.
The process takes roughly 20 to 45 minutes per image depending on condition. A clean 300 DPI scan might take 20. A degraded 120 DPI flash-burned print could take 45 or more, and some will still not be usable. Budget accordingly.