Восстановление изображений

[ Images ]

14 Dec 2012

Восстановление

f - нормальное изображение, f̂ - восстановленное.

Есть много способов восстановить.

1 способ:

f - f̂ L2 -> min

Предположим, g(x) = f * g + n

Вероятностная модель искажения изображения

Случайные величины - яркости пикселя. (256-ти уровневая шкала)

Случайное поле - случайная функция нескольких переменных.

  1. Исходное изображение - случайное поле.
  2. n - случайное поле, с ограничением:
    1. M(n)=0 (матожидание)
  3. 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 (это уже комплекснозначные спектры, тут нормальное обычное произведение комплексных чисел)

Предположения:

  1. ∫ N = 0
  2. ∫ F N = 0

Тогда ищем F̂ = Φ G - передаточная функция Винера

∫ (F̂ - F)(F̂̄ - F̄) -> minΦ

Введем скалярную вариацию R: Φ = Φ0 + τ R

Подставим Φ0 в нашу формулу и сделаем её зависимой от скалярного аргумента :∀ R: Di(..) -> minΦi

Viner filter - фильтр Винера.

Ищем такое Φ0 что Viner filter ∀R

Задача выпуклая и всё клёво получается.

Viner Task

Дифференцируем интеграл:

Viner Task Diff

И подставляем получившееся произведение и приравниваем:

∫ (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*

Viner Filter 1, но лучше фильтр Винера записать, как Viner Filter 2

Но на практике это неудобно вааащпе(((( Так как ни шума, ни мощности сигнала не дано. Так что проще заменить отношение сигнала к шуму константой. Хотя удобнее сделать не константу, а что-нибудь поточнее - K(u,v)

Вопрос: Где взять H - ядро искажающего оператора?

На практике есть несколько рекомендаций:

  1. Оценка H по фрагмент{у/ам}: G=HF, H=G/F (из участка изображения) Недостатки: искать незашумленный участок, локальность и вообще плохо(( Если ничего нет, тогда можно.
  2. На основе экспериментов
  3. На основе матмоделирования. (годится для построения фильтра для смаза).

Если экспозиция не мгновенная, а в промежутке [0,T] - стопудово смаз будет. Пусть аппарат проходит за это время плоский путь (x(t),y(t))

Если смаз параллельный:

Smaz - модель смаза.

Что здесь H? Цель: G~HF

Строим обратное преобразование Фурье:

Reverse Furie

G=FH+N

Если N- мало, N-простое, то можно F=G/H

Если H где-то обращается в 0 или другие проблемы, то Viner Task 6