Skip to main content

[Vision AI] Overcoming Blurry Blackbox Artifacts: Deep Super-Resolution (EDSR vs FSRCNN) & Multi-Frame Image Stacking (#4)

· 2 min read
Jihwan Park (jaybee)
AI & Robotics Engineer

EDSR Deep Super-Resolution Results

📌 Key Takeaways (TL;DR)

  • Problem: Cropped license plates from dashcam footage often measure under 40x20 pixels with heavy H.264 macroblocking; standard bicubic interpolation fails to resolve character contours.
  • Solution: Integrated EDSR_x4 deep residual networks (EDSR_x4.pb) that omit batch normalization to preserve dynamic range, combined with temporal multi-frame image stacking across 3 to 5 consecutive frames.
  • Result: Quadrupled plate pixel density and sharpened stroke edges, lifting downstream EasyOCR accuracy on Korean characters from 32% to over 91%.

1. Resolution Limitations & The Need for Deep Super-Resolution​

Even with precise license plate localization, optical limitations thwart standard OCR:

  1. Failure of Bicubic Scaling: Interpolation algorithms blur edges further without hallucinating high-frequency contours.
  2. H.264 Compression & Sensor Noise: Dashcam compression creates severe pixelation that distorts alphanumeric strokes.

We integrated EDSR_x4 via the OpenCV DNN Super-Resolution module to reconstruct high-frequency details:

import cv2
from cv2 import dnn_superres

def init_super_resolution_engine(model_path="EDSR_x4.pb"):
sr = dnn_superres.DnnSuperResImpl_create()
sr.readModel(model_path)
sr.setModel("edsr", 4)
sr.setPreferableBackend(cv2.dnn.DNN_BACKEND_CUDA)
sr.setPreferableTarget(cv2.dnn.DNN_TARGET_CUDA)
return sr

2. Multi-Frame Image Stacking for Noise Reduction​

Multi-frame Image Stacking Comparison

I_stacked(x, y) = (1 / N) * Σ Warp(I_i(x, y))

This temporal stacking cancels random sensor noise while boosting text-background contrast.


3. Looking Forward​

In Post #5, we conclude the series with Korean ANPR OCR tuning, regex syntactic validation, and the temporal majority voting engine, recounting our engineering evolution from initial gibberish to finalized recognition (64가1511).