Yaklaşımlar
Dekonvolüsyon için birçok yöntem vardır (yani bozunma operatörü doğrusal ve Zaman / Uzay Değişmez).
Hepsi, sorunun birçok durumda hasta olduğu gerçeğiyle başa çıkmaya çalışır.
Daha iyi yöntemler, geri yüklenecek verilerin modeline bir miktar düzenlilik katan yöntemlerdir.
İstatistiksel modeller (Öncelikler) veya herhangi bir bilgi olabilir.
Görüntüler için iyi bir model, parça halinde pürüzsüz veya degradelerin seyrekliğidir.
Ancak cevap uğruna basit bir parametrik yaklaşım alınacaktır.
model
En küçük kareler modeli basittir.
Verilerin bir fonksiyonu olarak objektif fonksiyon:
f( x ) =12∥ h ∗ x - y∥22
Optimizasyon sorunu şu şekilde verilir:
argminxf( x ) = argminx12∥ h ∗ x - y∥22
Nerede x geri yüklenecek verilerdir, h Bulanıklaştırma Çekirdeği (bu durumda Gaussian) ve yverilen ölçümler kümesidir.
Model, ölçümlerin sadece evrişimin geçerli kısmı için verildiğini varsayar. Yani eğerx ∈R,n ve h ∈R,k sonra y∈R,m nerede m = n - k + 1.
Bu, sonlu uzaydaki doğrusal bir işlemdir, dolayısıyla bir Matris Formu kullanılarak yazılabilir:
argminxf( x ) = argminx12∥ Hx - y∥22
Nerede 'H∈R,m × n evrişim matrisidir.
Çözüm
En Küçük Kareler çözümü:
x^=('HT'H)- 1'HTy
Görülebileceği gibi bir matris inversiyonu gerektirir.
Bunu yeterince çözme yeteneği, operatörün durum numarasına bağlıdır'HT'H hangi itaat eder cond( H) =cond('HT'H)----------√.
Durum Numarası Analizi
Bu koşul sayısının arkasında ne var?
Buna Lineer Cebir kullanarak cevap verilebilir.
Ama bence daha sezgisel bir yaklaşım, bunu Frekans Alanında düşünmek olurdu.
Temel olarak bozunma operatörü, genellikle yüksek frekansın enerjisini zayıflatır.
Şimdi, frekansta bu temelde bir eleman akıllıca çarpma olduğundan, tersine çevirmenin elemanın akıllıca bölme olduğunu tersine çevirmenin kolay yolu söylenebilir.
Yukarıda yapılan şey budur.
Sorun, filtrenin enerjiyi pratik olarak sıfıra indirdiği durumlarda ortaya çıkar. O zaman gerçek problemlerimiz var ...
Temel olarak Durum Numarası bize bunu söylüyor, bazı frekansların diğerlerine göre ne kadar zayıfladığını.
Yukarıda, Koşul Numarası ([dB] birimlerini kullanarak) Gauss Filtresi STD parametresinin bir fonksiyonu olarak görülebilir.
Beklendiği gibi, STD ne kadar yüksek olursa, daha yüksek STD daha güçlü LPF anlamına geldiği için durum numarası da o kadar kötü olur (Sonunda aşağı inen değerler sayısal sorunlardır).
Sayısal Çözüm
Gauss Bulanıklığı Çekirdeği topluluğu oluşturuldu.
Parametreler n = 300, k = 31 ve m = 270.
Veriler rastgele ve gürültü eklenmedi.
MATLAB'da, pinv()
SVD tabanlı Yalancı Ters ve \
operatör kullanan Lineer Sistem çözüldü .
Görüldüğü gibi, SVD kullanarak çözüm beklendiği gibi çok daha az hassastır.
Neden bir hata var?
Bir çözüme bakma (En yüksek STD için):
Görüldüğü gibi, sinyal başlangıç ve bitiş dışında çok iyi geri yüklenir.
Bunun nedeni, bize bu örnekler hakkında çok az şey anlatan Geçerli Konvolüsyonun kullanılmasıdır.
gürültü, ses
Gürültü eklersek, işler farklı görünürdü!
Sonuçların daha önce iyi olmasının nedeni, MATLAB'ın çok sayıda durum olmasına rağmen verilerin DR'sini işleyebilmesi ve denklemleri çözebilmesidir.
Ancak büyük koşul sayısı, ters filtrenin bazı frekansları güçlü bir şekilde yükseltmesi (Güçlü zayıflamayı tersine çevirmek) anlamına gelir.
Bunlar gürültü içerdiğinde, gürültünün yükseltileceği ve restorasyonun kötü olacağı anlamına gelir.
Yukarıda görebileceğiniz gibi, şimdi yeniden yapılanma çalışmaz.
özet
Degradasyon Operatörünü tam olarak biliyor ve SNR çok iyi ise, basit dekonvolüsyon yöntemleri işe yarayacaktır.
Dekonvolüsyonun ana konusu Degradasyon Operatörünün frekansları ne kadar zayıflattığıdır.
Ne kadar fazla zayıflarsa, geri yüklemek için o kadar çok SNR gerekir (Bu temelde Wiener Filtresinin arkasındaki fikirdir ).
Sıfıra ayarlanan frekanslar geri yüklenemez!
Uygulamada, istikrarlı sonuçlar elde edebilmek için bazı öncelikler eklemelisiniz.
Kod, StackExchange Sinyal İşleme Q2969 GitHub Depomda bulunabilir .