В отличие от стандартных (и более сложных) сценариев де-размытия и суперразрешения, у меня есть доступ как к оригинальному (резкому) изображению G
, так и к размытому варианту B
. Я просто ищу ядро размывания h
. Таким образом, из-за B
берется с помощью реальной камеры соотношение составляет:Вычисление размытия между двумя изображениями
B=G*h+N
(где *
обозначает свертку и N
некоторые аддитивный шум)
Естественно, это переограничено проблема, поскольку h
мала по сравнению с G
и B
, и поэтому каждые несколько пикселей в паре изображений генерируют уравнение для записей h
.
Но каков был бы самый простой способ реализовать это? Мои мысли до сих пор:
- Перемещение в частотную область и выполнение деления (как предлагает this answer). Но это было бы неизбежно численно неустойчивым из-за шума?
- Перекрестная корреляция. Я только нашел примеры для одномерных сигналов и не мог понять, как использовать в 2D-случае изображений.
- Осторожно построение линейной системы с избыточным ограничением
G'h'=B'
ищетh'
, которая представляет собой векторную версию записей ядраh
с использованием некоторой процедуры оптимизации. Но это очень утомительно, и матрицаG'
и векторB'
должны быть огромными по размеру.
Конкретный пример на любом языке программирования от C++ до MATLAB был бы чрезвычайно полезен.
В первом подходе я не думаю, что шум делает результат численно неустойчивым.Но это просто предположение –
, почему вы думаете, что в реальном сценарии «h» фиксируется для всех пикселей? – Shai
Я бы предложил посмотреть: http://www.wisdom.weizmann.ac.il/~levina/papers/deconvLevinEtalCVPR11.pdf - проблема решена сложнее, они не предполагают знания 'G', но они имеют setp явно восстанавливающего 'h', который может быть полезен – Shai