L’utilisation d’une valeur de seuil globale peut ne pas être un bon choix lorsque l’image a des conditions d’éclairage différentes dans différentes zones. Donc, dans ce cas, nous pouvons vouloir utiliser le seuillage adaptatif. Il utilise l’algorithme qui calcule le seuil pour de petites régions de l’image afin d’
[pastacode lang=”python” manual=”cv2.AdaptiveThreshold(src%2C%20dst%2C%20maxValue%2C%20adaptive_method%3DCV_ADAPTIVE_THRESH_MEAN_C%2C%20thresholdType%3DCV_THRESH_BINARY%2C%20blockSize%3D3%2C%20param1%3D5)%20″ message=”” highlight=”” provider=”manual”/]
obtenir différents seuils pour différentes régions de la même image et il nous donne de meilleurs résultats pour les images avec des conditions d’éclairage variables.
Les éléments sont:
- src – Source image monocanal 8 bits ou image du premier canal en 8 bits.
- dst – Image de destination de la même taille et du même type que src.
- maxValue – Valeur non nulle attribuée aux pixels pour lesquels la condition est satisfaite.
- adaptiveMethod – Algorithme de seuillage adaptatif à utiliser, ADAPTIVE_THRESH_MEAN_C (la valeur seuil est la moyenne de la zone de voisinage) ou ADAPTIVE_THRESH_GAUSSIAN_C (la valeur seuil est la somme pondérée des valeurs de voisinage où les pondérations sont une fenêtre gaussienne). adaptiveMethod décide comment la valeur de seuil est calculée.
- thresholdType – le type seuillage qui doit être soit THRESH_BINARY ou THRESH_BINARY_INV.
- blockSize – taille d’un voisinage de pixels qui est utilisé pour calculer une valeur de seuil pour le pixel : 3, 5, 7, et ainsi de suite.
- C – Constante soustraite de la moyenne ou moyenne pondérée. Normalement, il est positif mais peut également être nul ou négatif. C’est juste une constante qui est soustraite de la moyenne ou moyenne pondérée calculée.
Voici le code d’un exemple du seuillage adaptatif :
[pastacode lang=”python” manual=”%23%20Importer%20les%20modules%20%0Aimport%20cv2%0Aimport%20numpy%20as%20np%0Afrom%20matplotlib%20import%20pyplot%20as%20plt%0Afrom%20matplotlib.pyplot%20import%20*%0A%0Aimg%20%3D%20cv2.imread(‘%2Fcontent%2Fdrive%2FMyDrive%2FClassification%2FComputational%20Imaging%2Fmoi.jpg’%2C0)%0Aimg%20%3D%20cv2.medianBlur(img%2C5)%0A%0Aret%2Cth1%20%3D%20cv2.threshold(img%2C150%2C255%2Ccv2.THRESH_BINARY)%20%23%20binarisation%20%0Ath2%20%3D%20cv2.adaptiveThreshold(img%2C255%2Ccv2.ADAPTIVE_THRESH_MEAN_C%2C%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20cv2.THRESH_BINARY%2C15%2C2)%0Ath3%20%3D%20cv2.adaptiveThreshold(img%2C255%2Ccv2.ADAPTIVE_THRESH_GAUSSIAN_C%2C%5C%0A%20%20%20%20%20%20%20%20%20%20%20%20cv2.THRESH_BINARY%2C15%2C2)%0A%0Atitles%20%3D%20%5B’%20Image%20original’%2C%20’Seuillage%20global%20(v%20%3D%20150)’%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20’Seuillage%20moyen%20adaptatif’%2C%20’Seuillage%20gaussien%20adaptatif’%5D%0Aimages%20%3D%20%5Bimg%2C%20th1%2C%20th2%2C%20th3%5D%0A%0Afor%20i%20in%20range(4)%3A%0A%20%20%20%0A%20%20%20%20plt.subplot(2%2C2%2Ci%2B1)%2Cplt.imshow(images%5Bi%5D%2C’gray’)%0A%20%20%20%20plt.title(titles%5Bi%5D)%0A%20%20%20%20plt.xticks(%5B%5D)%2Cplt.yticks(%5B%5D)%0Aplt.show()” message=”Seuillage adaptatif ” highlight=”” provider=”manual”/]
Related Posts