Восстановление
f - нормальное изображение, f̂ - восстановленное.
Есть много способов восстановить.
1 способ:
f - f̂ | L2 -> min |
Предположим, g(x) = f * g + n
Вероятностная модель искажения изображения
Случайные величины - яркости пикселя. (256-ти уровневая шкала)
Случайное поле - случайная функция нескольких переменных.
- Исходное изображение - случайное поле.
- n - случайное поле, с ограничением:
- M(n)=0 (матожидание)
- f и n - не коррелируют между собой, то есть M(fn)=0
f -> F
Известна формула: ∫ f² dxdy = ∫ | F | ² dxdy |
Искажение: g = h * f + n
Нужно найти фильтр ᵩ, который поможет уменьшить искажение.
Чтобы задачу можно было решить в каком-то конечном виде, определим класс восстанавливающих фильтров. Пусть класс будет такой же - инвариантных от сдвига.
Будем искать ᵩ̂ = ᵩ * g
То есть, найти такую ᵩ, что D( ᵩ * (h * f + n) - f) -> min
Эту задачу решает фильтр Винера
Всё делаем в частотной области.
На входе имеем:
G = F H + N (это уже комплекснозначные спектры, тут нормальное обычное произведение комплексных чисел)
Предположения:
- ∫ N = 0
- ∫ F N = 0
Тогда ищем F̂ = Φ G - передаточная функция Винера
∫ (F̂ - F)(F̂̄ - F̄) -> minΦ
Введем скалярную вариацию R: Φ = Φ0 + τ R
Подставим Φ0 в нашу формулу и сделаем её зависимой от скалярного аргумента :∀ R: Di(..) -> minΦi
- фильтр Винера.
Ищем такое Φ0 что ∀R
Задача выпуклая и всё клёво получается.
Дифференцируем интеграл:
И подставляем получившееся произведение и приравниваем:
∫ (G²(ΦτR̄ + Φ̄τR) - GF̄R - ḠFR) | τ = 0 = 0 |
G² = (FH + N)(F̄H + N̄) = F²H² + F̄HN + FHN̄ + N²
GF = F²H + NF, NF - можно опустить, так как они для любого R должны давать ноль. Это только когда они сами ноль.
ḠF = F²H̄ + N̄F
R * (Φ(F²H² + N²) - F²H * ) + RW * , где W - скобка при R *
В итоге достаточно найти, когда W=0
Φ0(F²H² + N²) = F²H*
, но лучше фильтр Винера записать, как
Но на практике это неудобно вааащпе(((( Так как ни шума, ни мощности сигнала не дано. Так что проще заменить отношение сигнала к шуму константой. Хотя удобнее сделать не константу, а что-нибудь поточнее - K(u,v)
Вопрос: Где взять H - ядро искажающего оператора?
На практике есть несколько рекомендаций:
- Оценка H по фрагмент{у/ам}: G=HF, H=G/F (из участка изображения) Недостатки: искать незашумленный участок, локальность и вообще плохо(( Если ничего нет, тогда можно.
- На основе экспериментов
- На основе матмоделирования. (годится для построения фильтра для смаза).
Если экспозиция не мгновенная, а в промежутке [0,T] - стопудово смаз будет. Пусть аппарат проходит за это время плоский путь (x(t),y(t))
Если смаз параллельный:
- модель смаза.
Что здесь H? Цель: G~HF
Строим обратное преобразование Фурье:
G=FH+N
Если N- мало, N-простое, то можно F=G/H
Если H где-то обращается в 0 или другие проблемы, то