Podejścia
Istnieje wiele metod dekonwolucji (mianowicie operator degradacji jest liniowy i niezmienny w czasie / przestrzeni).
Wszyscy próbują poradzić sobie z faktem, że problem jest źle przygotowany w wielu przypadkach.
Lepszymi metodami są te, które dodają pewną regularyzację do modelu danych do przywrócenia.
Mogą to być modele statystyczne (Priors) lub dowolna wiedza.
W przypadku obrazów dobry model jest gładki lub rzadki w gradiencie.
Jednak ze względu na odpowiedź zastosowane zostanie proste podejście parametryczne - Minimalizacja błędu najmniejszych kwadratów między przywróconymi danymi w modelu a pomiarami.
Model
Model najmniejszych kwadratów jest prosty.
Funkcja celu jako funkcja danych jest określona przez:
fa( x ) =12)∥ h ∗ x - y∥2)2)
Problem optymalizacji wynika z:
argminxfa( x ) = argminx12)∥ h ∗ x - y∥2)2)
Gdzie x to dane do przywrócenia, h to Jądro Rozmycia (w tym przypadku Gaussa) i yjest zbiorem podanych pomiarów.
Model zakłada, że pomiary podano tylko dla ważnej części splotu. Mianowicie jeślix ∈Rn i h ∈Rk następnie y∈Rm gdzie m = n - k + 1.
Jest to operacja liniowa w skończonej przestrzeni, dlatego można ją zapisać za pomocą formularza Matrix:
argminxfa( x ) = argminx12)∥ H.x - y∥2)2)
Gdzie H.∈Rm × n jest macierzą splotu.
Rozwiązanie
Rozwiązanie Least Squares daje:
x^=(H.T.H.)- 1H.T.y
Jak widać, wymaga inwersji macierzy.
Możliwość odpowiedniego rozwiązania tego problemu zależy od liczby warunków operatoraH.T.H. który jest posłuszny war( H) =war(H.T.H.)----------√.
Analiza numeru stanu
Co kryje się za tym numerem warunku?
Można na nie odpowiedzieć za pomocą algebry liniowej.
Jednak bardziej intuicyjne, moim zdaniem, podejście byłoby myślenie o tym w dziedzinie częstotliwości.
Zasadniczo operator degradacji tłumi energię generalnie o wysokiej częstotliwości.
Ponieważ częstotliwość jest w zasadzie zwielokrotnieniem elementarnym, można powiedzieć, że najłatwiejszym sposobem na odwrócenie tego jest dzielenie elementów przez filtr odwrotny.
Cóż, to co zostało zrobione powyżej.
Problem pojawia się w przypadkach, gdy filtr tłumi energię praktycznie do zera. Mamy wtedy prawdziwe problemy ...
Właśnie to mówi nam numer stanu, jak mocno niektóre częstotliwości były tłumione w stosunku do innych.
Powyżej można zobaczyć numer warunku (za pomocą jednostek [dB]) jako funkcję parametru STD filtra Gaussa.
Zgodnie z oczekiwaniami, im wyższy STD, tym gorsza liczba warunków, ponieważ wyższy STD oznacza silniejszy LPF (wartości malejące na końcu są kwestiami numerycznymi).
Rozwiązanie numeryczne
Utworzono zespół Gaussian Blur Kernel.
Parametry są n = 300, k = 31 i m = 270.
Dane są losowe i nie dodano hałasu.
W MATLAB rozwiązano układ liniowy, w pinv()
którym zastosowano Pseudo odwrotność opartą na SVD i \
operator.
Jak widać, przy użyciu SVD rozwiązanie jest znacznie mniej czułe, zgodnie z oczekiwaniami.
Dlaczego wystąpił błąd?
Patrząc na rozwiązanie (dla najwyższego STD):
Jak widać, sygnał jest bardzo dobrze przywracany, z wyjątkiem początku i końca.
Wynika to z użycia Valid Convolution, która niewiele mówi nam o tych próbkach.
Hałas
Gdybyśmy dodali hałas, wszystko wyglądałoby inaczej!
Powodem, dla którego wyniki były dobre wcześniej, jest fakt, że MATLAB mógł obsłużyć DR danych i rozwiązać równania, mimo że miały dużą liczbę warunków.
Ale duża liczba warunków oznacza, że filtr odwrotny silnie wzmacnia (Aby odwrócić silne tłumienie) niektóre częstotliwości.
Gdy zawierają szum, oznacza to, że hałas zostanie wzmocniony, a odbudowa będzie zła.
Jak widać powyżej, teraz rekonstrukcja nie będzie działać.
Podsumowanie
Jeśli ktoś dokładnie zna Operatora Degradacji, a SNR jest bardzo dobry, zadziałają proste metody dekonwolucji.
Głównym problemem dekonwolucji jest to, jak mocno Operator Degradacji tłumi częstotliwości.
Im bardziej tłumi, tym więcej SNR jest potrzebnych do przywrócenia (jest to w zasadzie idea filtra Wienera ).
Częstotliwości ustawione na zero nie mogą zostać przywrócone!
W praktyce, aby uzyskać stabilne wyniki, należy dodać kilka priorytetów.
Kod jest dostępny w moim repozytorium GitHub Stack29change Signal Processing Q2969 .