Différence entre le seuillage adaptatif et le seuillage normal dans opencv
J'ai ce gris flux vidéo:
L'histogramme de cette image:
La thresholded image par :
threshold( image, image, 150, 255, CV_THRESH_BINARY );
j'obtiens :
Qui je m'attends.
Quand je fais le seuillage adaptatif avec :
adaptiveThreshold(image, image,255,ADAPTIVE_THRESH_GAUSSIAN_C, CV_THRESH_BINARY,15,-5);
j'obtiens :
Qui ressemble à la détection des contours et pas de seuillage. De ce que j'attendais était en noir et blanc . Donc ma question est, pourquoi est-ce que regarder comme la détection des contours et pas de seuillage.
merci à l'avance
source d'informationauteur Olivier_s_j
Vous devez vous connecter pour publier un commentaire.
Seuil adaptatif fonctionne comme cette:
Seuil œuvres différemment:
Il semble donc qu'il adaptiveThreshold calcule un seuil pixel par pixel, alors que le seuil de calcule pour l'ensemble de l'image -- il des mesures de l'ensemble de l'image par une règle, tandis que l'autre fait une nouvelle "règle" pour chaque pixel.
J'ai eu le même problème en faisant seuillage adaptatif pour l'OCR fins. (désolé c'est Python pas du C++)
Le dernier paramètre est la taille du voisinage utilisé pour calculer le seuil pour chaque pixel. Si votre quartier est trop petit (le mien était de 3), il fonctionne comme la détection de contours. Une fois que je l'ai fait plus grand, il a fonctionné comme prévu. Bien sûr, la "bonne" taille dépendra de la résolution de votre image, de la taille et des caractéristiques que vous cherchez.