> Modules non standards > OpenCV > Transformations morphologiques
Transformations morphologiques
Transformations morphologiques :
- elles sont faites sur des image binaires avec le fond en noir et les objets en blanc.
- kernel = numpy.ones((3, 3), numpy.uint8); newImg = cv2.erode(img, kernel, iterations = 1) : effectue une érosion des parties blanches (les bords sont rognés). On peut préciser de refaire l'opération plusieurs fois avec iteration.
- kernel = numpy.ones((3, 3), numpy.uint8); newImg = cv2.dilate(img, kernel, iterations = 1) : effectue une dilatation des parties blanches (les bords sont agrandis). On peut préciser de refaire l'opération plusieurs fois avec iteration.
- kernel = numpy.ones((3, 3), numpy.uint8); newImg = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel) : effectue une ouverture, c'est à dire une érosion suivie d'une dilatation ce qui permet d'éliminer le bruit de fond.
- kernel = numpy.ones((3, 3), numpy.uint8); newImg = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel) : effectue une fermeture, c'est à dire une dilatation suivie d'une érosion ce qui permet d'éliminer le bruit de fond noir dans les parties blanches.
Image du canal bleu seuillé de départ :
newImg = cv2.split(img)[0]
(retVal, newImg) = cv2.threshold(newImg, 130, 255, cv2.THRESH_BINARY)
Exemple d'érosion sur l'image du canal bleu seuillé :
import numpy
newImg = cv2.split(img)[0]
(retVal, newImg) = cv2.threshold(newImg, 130, 255, cv2.THRESH_BINARY)
kernel = numpy.ones((3, 3), numpy.uint8)
newImg = cv2.erode(newImg, kernel, iterations = 1)
Exemple de dilatation sur l'image du canal bleu seuillé :
import numpy
newImg = cv2.split(img)[0]
(retVal, newImg) = cv2.threshold(newImg, 130, 255, cv2.THRESH_BINARY)
kernel = numpy.ones((3, 3), numpy.uint8)
newImg = cv2.dilate(newImg, kernel, iterations = 1)
Exemple d'ouverture sur l'image du canal bleu seuillé :
import numpy
newImg = cv2.split(img)[0]
(retVal, newImg) = cv2.threshold(newImg, 130, 255, cv2.THRESH_BINARY)
kernel = numpy.ones((3, 3), numpy.uint8)
newImg = cv2.morphologyEx(newImg, cv2.MORPH_OPEN, kernel)
Exemple de fermeture sur l'image du canal bleu seuillé :
import numpy
newImg = cv2.split(img)[0]
(retVal, newImg) = cv2.threshold(newImg, 130, 255, cv2.THRESH_BINARY)
kernel = numpy.ones((3, 3), numpy.uint8)
newImg = cv2.morphologyEx(newImg, cv2.MORPH_CLOSE, kernel)
Gradient morphologique : c'est la différence entre une dilatation et une érosion de l'image :
import numpy
newImg = cv2.split(img)[0]
(retVal, newImg) = cv2.threshold(newImg, 130, 255, cv2.THRESH_BINARY)
kernel = numpy.ones((3, 3), numpy.uint8)
newImg = cv2.morphologyEx(newImg, cv2.MORPH_GRADIENT, kernel)
Copyright python-simple.com
programmer en python, tutoriel python, graphes en python, Aymeric Duclert