[PYTHON] Entfernung von Bildrauschen

Überblick

Implementiert Kapitel 14 "Entfernen von Bildrauschen" in Sparse Modeling.

Wurde verglichen.

Notizbuch ch14-01.ipynb ch14-02.ipynb ch14-03.ipynb ch14-04.ipynb ch14-05.ipynb

Ergebnis

ch14-denoise.png Die Zahlen sind [Spitzensignal-Rausch-Verhältnis (PSNR)](https://ja.wikipedia.org/wiki/peak Signal-Rausch-Verhältnis) [db]

K-SVD Obwohl es viel Rechenzeit kostet, bedeutet NL-means , BM3D war stärker und überwachsen. Vielleicht ist es implementiert ...

Methode

Testbild

Gaußsches Rauschen von σ = 20 wurde zu Barbara hinzugefügt und als Testbild verwendet. Das Rauschen wurde durch jede Methode entfernt. barbara_sig20.png

Wavelet-Reduktion

Es wurde eine Wavelet-Umwandlung durchgeführt und eine harte Schwellenwertverarbeitung durchgeführt. Die Leistung hat sich je nach Schwellenwert geändert. wavelet_shrinkage_threshold.png wavelet_shrinkage.png

Doppelte Patch-basierte DCT-Reduzierung

Ein 8x8-Patch wurde aus dem Bild extrahiert. Der Patch wurde DCT-konvertiert und mit einem harten Schwellenwert versehen. Der Durchschnitt der überlappenden Flecken wurde genommen. Die Leistung hat sich je nach Schwellenwert geändert.

dct_shrinkage_threshold.png dct_shrinkage.png

Reduktionskurvenlernen

Die Schwellenwertverarbeitung kann als Kurve betrachtet werden, die die Beziehung zwischen dem Eingabewert und dem Ausgabewert zeigt. Die optimale Reduktionskurve wurde aus einem Paar Patches mit und ohne Rauschen durch Polypoly-Anpassung gelernt. $ F_{local}(S) = \Sigma_{k=1}^{M}||p_{k}^{0}-AS\\{A^{T}p_{k}\\}||^{2}_{2}$

S ist die Schwellenwertverarbeitung, $ A ^ {T} $ ist die DCT-Konvertierung, $ p ^ {0} $ ist ein rauschfreies Patch und M ist die Gesamtzahl der Trainingsdaten. Der Parameter von S (Polypolysekoeffizient), der $ F_ {local} $ minimiert, wurde durch die Methode der kleinsten Quadrate erhalten.

Lernen Sie die Reduktionskurve für jedes DCT-Element. Die Patchgröße beträgt $ 6 \ times 6 $. Da nicht redundante DCT verwendet wird, beträgt die Anzahl der Elemente nach DCT ebenfalls $ 6 \ mal 6 $. Die Anzahl der Reduktionskurven beträgt 36.

Trainingsdaten für reduziertes Kurvenlernen

lena_200_200.png Patches wurden aus dem $ 200 \ times 200 $ -Bereich von Lena extrahiert und als Trainingsdaten verwendet. Standardisiert durch Subtrahieren von 127 und Dividieren durch 128.

Ergebnis

Die Kurve jeder Zelle repräsentiert eine Reduktionskurve für jeden DCT-Koeffizienten. c_local.png recon_dct_shrinkage_curve.png

Globales Reduktionskurvenlernen

F_{global}(S) = ||y_{0} - \frac{1}{n}\Sigma_{k=1}^{M}R_{k}^{T}AS\\{A^{T}p_{k}\\}||^{2}_{2}

Finden Sie die Parameter der Reduktionskurve, die minimiert wird. $ R_ {k} $ ist der Operator, der den k-ten Patch aus dem Bild extrahiert. c_global.png recon_dct_global_shrinkage_curve.png Die Steigung der Reduktionskurve beträgt fast 0, scheint aber vorerst verwendbar zu sein ... Da die DC-Komponente 0 wird, wird sie in der Nachbearbeitung skaliert. (Die Implementierung kann seltsam sein ...)

OMP-Rauschunterdrückung mit redundantem DCT-Wörterbuch

Ein 8x8-Patch wurde aus dem Bild extrahiert. Der Patch wurde redundant DCT-konvertiert und von OMP spärlich codiert. Der Durchschnitt der überlappenden Flecken wurde genommen. Es wurden verrauschte Bilder und gewichtete Durchschnittswerte aufgenommen.

Die Anzahl der Nicht-Null-Elemente in der von OMP erhaltenen spärlichen Darstellung beträgt $ k_0 = 4 $. OMP-Toleranz $ \ epsilon = 8 ^ 2 \ mal 20 ^ 2 \ mal 1,15 $. Ein gewichteter Durchschnitt wurde mit einer Gewichtung von 0,5 für das verrauschte Bild und einer Gewichtung von 1 für das verrauschte Bild genommen.

Redundantes DCT-Wörterbuch Konvertieren Sie einen $ 8 \ times 8 $ -Patch in eine $ 16 \ times 16 $ -Komponente A_DCT.png recon_dct_dictionary.png

OMP-Rauschunterdrückung mit K-SVD-Wörterbuch

Aus dem verrauschten Bild wurden Patches extrahiert und ein Wörterbuch von K-SVD durchsucht. Unter Verwendung des erhaltenen Wörterbuchs wurde die Verarbeitung auf die gleiche Weise wie oben durchgeführt.

K-SVD Wörterbuch A_KSVD_sig20.png recon_ksvd_dictionary.png

NL-means Buades et al. Berühmte NL-Mittel Aus der Perspektive des Wörterbuchlernens können NL-Mittel als extremes Wörterbuchlernen mit unterschiedlichen Wörterbüchern für jedes Pixel angesehen werden.

Stellen Sie sich ein Suchfenster vor, das auf dem interessierenden Pixel zentriert ist. Stellen Sie sich eine Reihe von Patches vor, die auf jedem Pixel im Suchfenster als Wörterbuch zentriert sind. Der Koeffizient jedes Atoms wird basierend auf dem quadratischen Fehler berechnet, wobei das Patch auf dem interessierenden Pixel zentriert ist (Patch von Interesse). Dies ist ein enger Ausdruck des interessierenden Fleckens.

Unter diesem Gesichtspunkt können Wörterbuchlernen und NL-Mittel jeweils verbessert werden. recon_nlm.png

BM3D Das berühmte BM3D von Dabov et al. Es ist das stärkste gegen Gaußsches Rauschen. BM3D kann auch aus der Perspektive des Wörterbuchlernens betrachtet werden.

Durch Block Matching (BM) werden Patches, die dem interessierenden Patch ähnlich sind, im Suchfenster gesammelt und zu einem 3D-Patch gestapelt. Spasify-Konvertierung (Wavelet, DCT usw.) von 3D-Patches, Hard-Threshold-Verarbeitung, Wiener-Reduktion, Rauschunterdrückung (kooperative Filterung).

Es führt zu strukturiertem Wörterbuchlernen und einer Kombination aus Clustering und Wörterbuchlernen. recon_bm3d.png

Zusammenfassung

Referenz

text.jpg

Recommended Posts

Entfernung von Bildrauschen
Bilderkennung
Bildcrawler
[AI] Deep Learning für das Entrauschen von Bildern
[Bildverarbeitung] Posterisierung
[Hinweis] Ändern der Bildgröße
Entfernung von Bildunschärfe
Bildersammelmethode
Aufgeblasenes Lernbild
Bildlesememo
Bildhelligkeit normalisieren
Erster Bildklassifikator
Bildverarbeitung 100 Schläge ①
Bild der Schließung