[PYTHON] Suppression du bruit de l'image

Aperçu

Implémentation du chapitre 14 "Suppression du bruit d'image" dans la modélisation fragmentée.

A été comparé.

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

résultat

ch14-denoise.png Les nombres sont [rapport signal / bruit de crête (PSNR)](https://ja.wikipedia.org/wiki/peak rapport signal / bruit) [db]

K-SVD Bien que cela prenne beaucoup de temps de calcul, NL-means , BM3D était plus fort et envahi par la végétation. Peut-être que c'est implémenté ...

Méthode

Image de test

Un bruit gaussien de σ = 20 a été ajouté à Barbara et utilisé comme image de test. Le bruit a été supprimé par chaque méthode. barbara_sig20.png

Réduction des ondelettes

Une conversion en ondelettes a été effectuée et un traitement de seuil strict a été effectué. Les performances ont changé en fonction du seuil. wavelet_shrinkage_threshold.png wavelet_shrinkage.png

Réduction DCT basée sur les patchs en double

Un patch 8x8 a été extrait de l'image. Le patch a été converti en DCT et soumis à un seuil strict. La moyenne des patchs qui se chevauchent a été prise. Les performances ont changé en fonction du seuil.

dct_shrinkage_threshold.png dct_shrinkage.png

Apprentissage de la courbe de réduction

Le traitement de seuil peut être considéré comme une courbe montrant la relation entre la valeur d'entrée et la valeur de sortie. La courbe de réduction optimale a été apprise à partir d'une paire de patchs avec et sans bruit par ajustement polypoly. $ F_{local}(S) = \Sigma_{k=1}^{M}||p_{k}^{0}-AS\\{A^{T}p_{k}\\}||^{2}_{2}$

S est un traitement de seuil, $ A ^ {T} $ est une conversion DCT, $ p ^ {0} $ est un patch sans bruit et M est le nombre total de données d'entraînement. Le paramètre de S (coefficient de polypoly) qui minimise $ F_ {local} $ a été calculé par la méthode des moindres carrés.

Apprenez la courbe de réduction pour chaque élément de DCT. La taille du patch est de 6 $ \ fois 6 $. Puisque la DCT non redondante est utilisée, le nombre d'éléments après DCT est également de 6 $ \ fois 6 $. Le nombre de courbes de réduction est de 36.

Données d'entraînement pour un apprentissage de courbe réduit

lena_200_200.png Des correctifs ont été extraits de la zone de 200 $ \ fois 200 $ de la lena et utilisés comme données d'entraînement. Standardisé en soustrayant 127 et en divisant par 128.

résultat

La courbe de chaque cellule représente une courbe de réduction pour chaque coefficient DCT. c_local.png recon_dct_shrinkage_curve.png

Apprentissage de la courbe de réduction globale

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

Trouvez les paramètres de la courbe de réduction qui minimise. $ R_ {k} $ est l'opérateur qui extrait le kème patch de l'image. c_global.png recon_dct_global_shrinkage_curve.png La pente de la courbe de réduction est quasiment nulle, mais elle semble utilisable pour le moment ... Puisque le composant DC devient 0, il est mis à l'échelle en post-traitement. (L'implémentation peut être étrange ...)

Suppression du bruit OMP avec dictionnaire DCT redondant

Un patch 8x8 a été extrait de l'image. Le patch a été converti en DCT de manière redondante et codé de manière éparse par OMP. La moyenne des patchs qui se chevauchent a été prise. Des images bruyantes et des moyennes pondérées ont été prises.

Le nombre d'éléments non nuls dans la représentation creuse obtenue par OMP est $ k_0 = 4 $. Tolérance OMP $ \ epsilon = 8 ^ 2 \ fois 20 ^ 2 \ fois 1,15 $. Une moyenne pondérée a été prise avec un poids de 0,5 pour l'image bruyante et un poids de 1 pour l'image bruyante.

Dictionnaire DCT redondant Convertir un patch $ 8 \ fois 8 $ en un composant $ 16 \ fois 16 $ A_DCT.png recon_dct_dictionary.png

Suppression du bruit OMP avec le dictionnaire K-SVD

Des correctifs ont été extraits de l'image bruyante et un dictionnaire a été recherché par K-SVD. En utilisant le dictionnaire obtenu, le traitement a été effectué de la même manière que ci-dessus.

Dictionnaire K-SVD A_KSVD_sig20.png recon_ksvd_dictionary.png

NL-means Les célèbres NL-means de Buades et al. Du point de vue de l'apprentissage du dictionnaire, NL-means peut être considéré comme un apprentissage extrême du dictionnaire, avec différents dictionnaires pour chaque pixel.

Considérons une fenêtre de recherche centrée sur le pixel d'intérêt. Pensez à un ensemble de correctifs centré sur chaque pixel dans la fenêtre de recherche comme un dictionnaire. Le coefficient de chaque atome est calculé sur la base de l'erreur quadratique avec le patch centré sur le pixel d'intérêt (patch d'intérêt). C'est une expression proche du patch d'intérêt.

De ce point de vue, l'apprentissage du dictionnaire et les moyens NL peuvent être améliorés respectivement. recon_nlm.png

BM3D Le célèbre BM3D de Dabov et al. C'est le plus puissant contre le bruit gaussien. BM3D peut également être considéré du point de vue de l'apprentissage du dictionnaire.

Par block matching (BM), des patchs similaires au patch d'intérêt sont collectés dans la fenêtre de recherche et empilés pour former un patch 3D. Patchs Sperciify 3D (Wavelet, DCT, etc.), traitement de seuil dur, réduction de Wiener et suppression du bruit (filtrage coopératif).

Cela conduit à un apprentissage structuré du dictionnaire et à une combinaison de regroupement et d'apprentissage par dictionnaire. recon_bm3d.png

Résumé

référence

text.jpg

Recommended Posts

Suppression du bruit de l'image
Reconnaissance d'image
Explorateur d'images
[AI] Apprentissage en profondeur pour le débruitage d'image
[Traitement d'image] Postérisation
[Note] Redimensionnement de l'image
Suppression du flou d'image
Méthode de collecte d'images
Image d'apprentissage gonflée
Mémo de lecture d'image
Normaliser la luminosité de l'image
Premier classificateur d'images
Traitement d'image 100 coups ①
Image de fermeture