[PYTHON] Le visage de Mia Nanasawa est (ノ ´ □ `) ノ Aucun traitement de bruit n'est appliqué au beau visage d'origine

introduction

七沢みあノイズ

** Mia Nanasawa est mignonne, n'est-ce pas? ** **

"cette?" "C'est différent de l'habitude. C'est étrange ..."

Si vous effectuez un zoom avant ...

Y a-t-il quelque chose ** comme du sel de sésame avec des points noirs et blancs ** mélangés?

Cela ne vous permet pas de vous concentrer sur votre joli visage.

** Lissez ** et ** supprimez les points noirs et blancs **!

Qu'est-ce que le lissage?

** Brouiller l'image **. OpenCV propose quatre types de méthodes de flou (filtres).

―― 1: filtre de moyenne mobile (filtre de moyenne)

―― 2: filtre gaussien

―― 3: filtre médian

―― 4: filtre bilatéral

データ

【Mise en garde】 ・ «Luminosité» est simplement une réduction de la saturation des couleurs. ・ "Luminosité" prend en compte la différence de luminosité en fonction de la couleur.

image.png ** ex) Pour le bleu (R: 0 G: 0 B: 255) ** image.png

1: filtre de moyenne mobile (filtre de moyenne)

データ データ
#flou signifie «flou».
img = cv2.imread("nana.jpg ")#Charger le fichier image avec openCV
img_blur = cv2.blur(img, (3, 3))#Premier argument=Fichier d'image,Deuxième argument=Largeur de filtre,Largeur verticale
imgs = cv2.hconcat([img, img_blur])#Connectez des images de hauteur égale horizontalement

cv2.imwrite("nana1.jpg ",imgs)#Enregistrer le fichier image avec openCV
データ

☚ La figure de gauche est l'image originale ☛ La figure de droite est l'image avec ** filtre de moyennage **

La figure de droite a un bruit plus flou. Il semble difficile de l'effacer complètement. ..

Filtre de moyenne (taille de filtre de 1x1 à 6x6)

img1 = cv2.blur(img, (1, 1))
img2 = cv2.blur(img, (2, 2))
img3 = cv2.blur(img, (3, 3))
img4 = cv2.blur(img, (4, 4))
img5 = cv2.blur(img, (5, 5))
img6 = cv2.blur(img, (6, 6))

imgs_1 = cv2.hconcat([img1, img2, img3])
imgs_2 = cv2.hconcat([img4, img5, img6])
imgs = cv2.vconcat([imgs_1, imgs_2])#Connectez verticalement des images de largeur égale
cv2.imwrite("nana2.jpg ", imgs)

nana6.jpg

À partir du coin supérieur gauche, l'image aura la taille du filtre augmentée. Vous pouvez voir que le flou de l'image est ** de plus en plus fort **. ** La photo en bas à droite permet désormais de se concentrer sur Mia sans se soucier du sésame blanc! !! ** **

2: filtre gaussien

Poids calculés dans le filtre selon la ** distribution gaussienne **.

データデータ

** [Différence par rapport au filtre de moyenne] ** La ** valeur de remplacement ** doit être remplacée de manière à ce que le pixel remarquable au milieu ** ait le poids le plus élevé ** et le pixel externe le poids le plus petit **. Cette caractéristique permet de brouiller l'image ** tout en laissant plus d'informations autour des pixels.

img_gauss = cv2.GaussianBlur(img, (3, 3), 3)#Le troisième argument est σ de la fonction gaussienne
imgs = cv2.hconcat([img, img_gauss])
cv2.imwrite("nana3.jpg ", imgs)
データ

☚ La figure de gauche est l'image originale ☛ La figure de droite est l'image avec ** filtre gaussien (σ = 3) **

Ce n'est pas très différent du ** 1 filtre de moyenne **

3: filtre médian

La ** médiane ** extraite des pixels contenus dans le filtre spécifié et remplacée.

** [Différence par rapport au filtre de moyenne] ** La ** valeur de remplacement ** n'est pas la valeur de pixel moyenne, mais la valeur de pixel ** toujours existante ** est utilisée.

img_med = cv2.medianBlur(img, 3)
imgs = cv2.hconcat([img, img_med])
cv2.imwrite("nana4.jpg ", imgs)
データ

☚ La figure de gauche est l'image originale ☛ La figure de droite est l'image avec ** filtre médian **

** Wow ぉ ぉ ぉ ぉ ぉ ぉ ぉ ぉ ぉ ぉ ぉ ぉ ぉ ぉ ぉ ぉ ぉ ぉ ぉ ぉ ** ** Le sel de sésame est parti ** ** Je suis la Mia la plus mignonne de tous les temps! !! ** **

4: filtre bilatéral

** Autres que les arêtes ** sont des filtres gaussiens. Le poids est réglé à "0" dans la partie où la différence de luminosité est grande, et le filtre gaussien est exécuté.

データ →  データ

** [Différences par rapport aux filtres de lissage conventionnels] ** ** Il est possible de rendre l'image floue en laissant le bord (contour) **

img_bi = cv2.bilateralFilter(img, 9, 75, 75)
imgs = cv2.hconcat([img, img_bi])
cv2.imwrite("nana5.jpg ", imgs)
データ

☚ La figure de gauche est l'image originale ☛ La figure de droite est l'image avec ** filtre bilatéral **

résultat

Le sel de sésame cette fois était un bruit clair, il s'est donc avéré qu'il valait mieux appliquer un ** filtre médian **.

J'ai également estimé que le ** filtre bilatéral ** conviendrait si ** la saturation du bruit ** est proche du bruit ** des données d'origine **.

S'il y a du bruit dans votre image préférée, filtrons-la!

Recommended Posts

Le visage de Mia Nanasawa est (ノ ´ □ `) ノ Aucun traitement de bruit n'est appliqué au beau visage d'origine
Renvoie la quantité d'entités encodées à chaud à la valeur de catégorie d'origine
Utilisez la commande pushd, qui est plus pratique que la commande cd, pour revenir instantanément au répertoire d'origine.
L'histoire selon laquelle CSS n'est plus appliqué lorsque l'application Django est téléchargée de local vers AWS