Traitement d'image par Python 100 knock # 12 motion filter

introduction

Salut, je suis Ramu. Cette fois, nous allons implémenter un filtre de mouvement, qui est un filtre qui ajoute du mouvement à l'image.

12ème: Filtre de mouvement

Un filtre de lissage est un filtre qui lisse une image. En appliquant ce filtre, vous pouvez rendre l'image entière floue. Surtout avec ce filtre de mouvement, un flou fluide est possible.

Ce filtre remplace le pixel d'intérêt par la moyenne diagonale des pixels périphériques. Par exemple, un filtre de mouvement 3x3 ou 5x5 ressemble à ceci:

\frac{1}{3} 0 0
0 \frac{1}{3} 0
0 0 \frac{1}{3}
\frac{1}{5} 0 0 0 0
0 \frac{1}{5} 0 0 0
0 0 \frac{1}{5} 0 0
0 0 0 \frac{1}{5} 0
0 0 0 0 \frac{1}{5}

En supposant que le pixel d'intérêt est le centre, la somme des produits des pixels périphériques et des valeurs de filtre correspondantes doit être remplacée par le pixel d'intérêt. Pour un filtre 3 × 3, $ I (x_0, y_0) × \ frac {1} {3} + I (x_1, y_1) × \ frac {1} {3} + I (x_2, y_2) × \ frac { Remplacez le pixel d'intérêt par la valeur 1} {3} $. Or, la valeur moyenne des lignes diagonales des pixels périphériques est affectée au pixel d'intérêt.

De plus, comme dans le temps précédent, le traitement de filtrage ne peut pas être effectué sur le bord de l'image, donc un traitement de remplissage à 0 utilisant 0 est effectué pour les pixels inexistants.

Code source

motionFilter.py


import numpy as np
import cv2
import matplotlib.pyplot as plt


def motionFilter(img,k):
  w,h,c = img.shape
  size = k // 2

  #0 processus de remplissage
  _img = np.zeros((w+2*size,h+2*size,c), dtype=np.uint8)
  _img[size:size+w,size:size+h] = img.copy().astype(np.uint8)
  dst = _img.copy()

  #Création de filtre
  ker = np.zeros((k,k), dtype=np.float)
  for i in range(-1*size,k-size):
    ker[i+size,i+size] = 1/k

  #Processus de filtrage
  for x in range(w):
    for y in range(h):
      for z in range(c):
        dst[x+size,y+size,z] = np.sum(ker*_img[x:x+k,y:y+k,z])

  dst = dst[size:size+w,size:size+h].astype(np.uint8)

  return dst


#Lecture d'image
img = cv2.imread('image.jpg')

#Filtre de mouvement
#Deuxième argument: taille du filtre
img = motionFilter(img,21)

#Enregistrer l'image
cv2.imwrite('result.jpg', img)
#Affichage de l'image
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.show()

ファイル名 ファイル名

L'image de gauche est l'image d'entrée et l'image de droite est l'image de sortie. L'image de sortie semble floue et vous pouvez voir qu'elle est lissée. De plus, contrairement aux autres filtres de lissage, il s'écoule dans la direction diagonale du filtre.

en conclusion

Si vous avez des questions, n'hésitez pas à nous contacter. [Github] de imori_imori (https://github.com/yoyoyo-yo/Gasyori100knock/blob/master/Question_01_10/answers_py/answer_6.py) a la réponse officielle, veuillez donc vérifier cela également. .. De plus, comme python est un débutant, veuillez signaler toute erreur.

Recommended Posts

Traitement d'image par Python 100 knock # 12 motion filter
Traitement d'image par Python 100 knock # 10 filtre médian
Traitement d'image avec Python
Traitement d'image par Python 100 knock # 9 Filtre Gaussien
Traitement d'image avec Python (partie 2)
100 coups de traitement du langage avec Python 2015
Traitement d'image avec Python (partie 1)
Traitement d'image avec Python (3)
Traitement d'image par filtre de lissage Python 100 knock # 11 (filtre moyen)
[Python] Traitement d'image avec scicit-image
100 traitements de langage avec Python
100 traitements de langage avec Python (chapitre 3)
100 traitement d'image par Python Knock # 2 Échelle de gris
traitement d'image python
Bases du traitement d'images binarisées par Python
100 traitement d'image avec Python Knock # 8 Max Pooling
100 traitements de langage avec Python (chapitre 2, partie 2)
Traitement d'image avec Python et OpenCV [Tone Curve]
Traitement d'image par Python 100 Knock # 6 Traitement de réduction de couleur
100 traitements de langage avec Python (chapitre 2, partie 1)
Dessin avec Matrix-Reinventor of Python Image Processing-
Traitez facilement des images en Python avec Pillow
Traitement d'image avec Python 100 knocks # 7 pooling moyen
Traitement d'image léger avec Python x OpenCV
Premier traitement d'image Python
Traitement d'image avec PIL
Traitement d'image à partir de zéro avec python (5) Transformation de Fourier
Traitement d'image à partir de zéro avec python (4) Extraction de contour
Traitement d'image avec la configuration de l'environnement Python pour Windows
Traitement d'image avec PIL (Pillow)
Remarques sur le traitement d'images HDR et RAW avec Python
Traitement du signal acoustique avec Python (2)
Traitement du signal acoustique avec Python
Tri des fichiers image avec Python (2)
Tri des fichiers image avec Python (3)
100 Language Processing Knock Chapitre 1 (Python)
100 Language Processing Knock Chapitre 2 (Python)
Tweet avec image en Python
Tri des fichiers image avec Python
Traitement d'image par python (Pillow)
Collection de traitement d'image en Python
[Jouons avec Python] Traitement d'image en monochrome et points
Découpez une image avec python
Principes de base du traitement d'image en temps réel avec opencv
[Python] Utilisation d'OpenCV avec Python (filtrage d'image)
[Python] Traitement parallèle facile avec Joblib
100 Language Processing Knock Chapitre 1 en Python
[Python] Utilisation d'OpenCV avec Python (transformation d'image)
Notes personnelles pour le traitement d'images python
Traitement d'image 100 coups Q9, Q10 (filtre) speedup
Faisons du scraping d'images avec Python
Le débutant en Python a essayé 100 traitements de langage Knock 2015 (05 ~ 09)
Trouver la similitude d'image avec Python + OpenCV
100 Language Processing Knock Chapitre 1 par Python
Envoyer l'image avec python et enregistrer avec php
Génération d'images dégradées avec Python [1] | np.linspace
Le débutant en Python a essayé 100 traitements de langage Knock 2015 (00 ~ 04)
Traitement d'image par Python 100 knock # 4 Binarisation Otsu (méthode d'analyse de discrimination)
Créer une visionneuse de traitement d'image avec PySimpleGUI
Créez une image factice avec Python + PIL.