В продолжении статьи про восстановление расфокусированных и смазанных изображений хочу поделиться своими результатами восстановления реальных изображений с помощью фильтра Винера. В качестве библиотеки обработки изображений использовалась OpenCV 3.4. Фотокамера – Nikon D320, объектив Nikon DX AF-S NIKKOR 18-105mm, расфокусировка осуществлялась вручную, съёмка осуществлялась без штатива.
Результаты восстановления расфокусированных изображений
При расфокусировке искажающая система хорошо аппроксимируется цилиндрической функцией рассеяния точки (ФРТ) радиуса r.
Цилиндрическая ФРТ
Ниже приведены результаты восстановления трёх реальных расфокусированных изображений одного и того же объекта (страницы книги). Съёмка проводилась без штатива с расстояния примерно 50 см. Степень расфокусировки объектива вручную увеличивалась от кадра к кадру. Параметры фильтра Винера r и отношение сигнал/шум (SNR) подбирались вручную таким образом, чтобы обеспечить наилучшее визуальное качество восстановления. Для компенсации краевых эффектов производится плавное уменьшение яркости изображения на краях.
Изображение A
Результат восстановления изображения A. r = 53, SNR = 5200
Изображение B
Результат восстановления изображения B. r = 66, SNR = 4400
Изображение C
Результат восстановления изображения C. r = 102, SNR = 7100
Видно, что даже при существенной расфокусировке читаемость текста практически
полностью восстанавливается.
Результаты восстановления смазанных изображений автомобильных номеров
Смаз изображения возникает при взаимном движении камеры и объекта относительно друг друга во время экспозиции. Рассмотрим только тот случай, когда снимаемый объект линейно перемещается относительно неподвижной камеры. В таком случае искажающая система хорошо аппроксимируется ФРТ в виде отрезка, который направлен вдоль движения объекта. Такая ФРТ задаётся двумя параметрами: L длина и THETA угол смаза.
ФРТ при линейном смазе
Ниже представлено искажённое изображение двух легковых автомобилей, полученное при недостаточно короткой экспозиции, приведшей к появлению заметного смаза.
Искажённое изображение двух легковых автомобилей
Ниже представлены результаты восстановления номеров обоих автомобилей с помощью фильтра Винера. Значение параметров L, THETA и SNR подбирались таким образом, чтобы обеспечить наилучшее визуальное качество восстановления номера автомобиля.
Результат восстановления номера светлого автомобиля. L = 78, THETA = 15, SNR = 300
Результат восстановления номера тёмного автомобиля. L = 125, THETA = 0, SNR = 700
Видно, что даже при значительном смазе удаётся восстановить читаемость номеров
автомобилей.
Алгоритм фильтрации реализован на C++ OpenCV в виде консольного приложения.
Исходные коды можно найти по ссылкам ниже.
https://github.com/VladKarpushin/out_of_focus_deblur/tree/full_color_version
https://github.com/VladKarpushin/motion_deblur
https://docs.opencv.org/4.0.0-alpha/de/d3c/tutorial_out_of_focus_deblur_filter.html
https://docs.opencv.org/4.0.0-alpha/d1/dfd/tutorial_motion_deblur_filter.html
Литература
- R.C. Gonzalez, R.E. Woods. Digital image fundamentals. 1987.
- И.С. Грузман, В.С. Киричук, В.П. Косых, Г.И. Перетягин, А.А. Спектор. Цифровая обработка изображений в информационных системах. 2000.
Автор: VladislavBK