OpenCV a une fonction courante cvequalizehist () qui fonctionne bien sur des images fanées / contrastées. Cependant, lorsqu'une image déjà à contraste est donnée, le résultat est un contraste faible. J'ai eu la raison - l'histogramme étant distribué uniformément et des choses. P>
question est - comment puis-je connaître la différence entre un contraste faible et une image à contraste élevé? P>
Je travaille sur des images en niveaux de gris et je fixe correctement leur contraste afin que les seuiller ne suppriment pas le texte que je suis censé extraire (c'est une histoire différente). Suggestions Bienvenue - ESP sur la manière de savoir si la majorité des pixels de l'image sont gris clair (ce qui signifie que l'égaliseur doit être effectué) S'il vous plaît aider! P>
4 Réponses :
Vous pouvez probablement simplement utiliser une mesure statistique simple de l'image pour déterminer si une image contient suffisamment de contraste. La variance de l'image serait probablement un bon point de départ. Si la variance est inférieure à un certain seuil (à déterminer de manière empirique), vous pouvez le considérer comme "contraste faible". P>
Il est vrai que la variance augmente avec contraste pour une image donnée, mais parce que c'est une mesure statistique, elle ignore les relations spatiales dans l'image. Donc, il peut fonctionner comme un indicateur de contraste fiable parfois, mais cela ne sera souvent pas.
@Arunirc je dois calculer le contraste d'une image. Je l'ai fait en calculant "méchant" d'une image. Ai-je raison? Parfois, je reçois la valeur SD plus de 100 ans. Quel serait le seuil d'un bon contraste. Et quelle est la gamme de SD pour le convertir en une échelle de 100.
Si vous réglez le contraste, vous pouvez donc le seuil plus tard, vous pourrez éviter l'étape de réglage de contraste si vous définissez votre seuil de manière adaptative à l'aide de méthode de l'OHTSU . p>
Si vous êtes toujours intéressé à trouver le contraste de l'image, lisez-le. P>
Bien qu'il existe un Nombre de façons différentes pour calculer "contraste" . Souvent, ces métriques sont appliquées localement par opposition à toute l'image, afin de rendre le résultat plus sensible au contenu de l'image: p>
De là, vous pouvez utiliser un certain nombre de fonctionnalités pour déterminer le contraste: p>
Cela peut servir de meilleure indication de contraste d'image que la seule variance d'image globale. Voici pourquoi: p>
(STDDEV: 50.6) p>
(STDDEV: 7.9) p>
Les deux images sont parfaitement en contraste (le fond gris est juste là pour le rendre évident que c'est une image), mais leurs écarts types (et donc variance) sont complètement différents. P>
J'ai appliqué le seuil de seuillage d'Otsu au départ, mais la partie de texte et son arrière-plan ont été noirs. Sur l'égalisation de l'histogramme, puis seules il allait bien.
J'ai supprimé mon commentaire précédent - il a été ajouté par accident. Est-ce que les calculs de contraste locaux vous ont-ils n'importe où? Je n'ai pas vu les images avec qui vous travaillez, il est donc difficile pour moi de suggérer quoi que ce soit au-dessus de ce qui a déjà été dit. Si vous postez une image d'exemple, votre question peut devenir plus facile à répondre.
Désolé pour la réponse tardive (si vous êtes toujours autour: p). Finition actuellement un codage d'extraction de contour après quoi je vais commencer les ajustements de contraste. Un simple développement standard avec des seuils déterminés expérimentalement semble exécutif.
y (x) = a * x + b code>. li>
- Calculez RMSE de
real_cumulative_frequency (x) -y (x) code >. li>
- Si ce RMSE est proche de zéro - l'image est déjà égalisée. (Cela signifie que pour les images égalisées Les histogrammes cumulatifs doivent être linéaires) li>
ol>
Une idée est prise de ici . P>
edit: strong>
J'ai illustré cette approche dans Mon blog A> (Exemple de code C compris). P>
:: Il ne suffit pas assez de std .... << a href = "http://fr.wikipedia.org/wiki/contrast_(Vision)" rel = "nfollow noreferrer"> en.wikipedia.org/wiki/ Contraste_ (Vision) > ... Vos commentaires seront utiles ...
Il existe de nombreuses façons différentes de calculer le contraste. Mais à mon avis si op tente de découvrir cvequalizehist () code> a été effectué sur l'image ou non - alors vous devez prendre en compte les spécificités de égalisation de l'histogramme pour détecter cette opération (ou son absence) dans l'image.
Il y a un support fourni dans la skimage pour cela. Exemple: p> skimage.exposure.is_low_contrast code>. Référence
Je dois calculer le contraste d'une image. Je l'ai fait en calculant "méchant" d'une image. Ai-je raison? Parfois, je reçois la valeur SD plus de 100 ans. Quel serait le seuil d'un bon contraste. Et quelle est la gamme de SD pour le convertir en une échelle de 100.
Bien diviser SD de 255, puisque la valeur d'un pixel, en supposant une image 8 bits, ne peut pas être plus que cela. puis multipliez par votre échelle appropriée. 100. Ceci s'appelle la normalisation. repos vous pouvez essayer différentes images
Merci, je l'ai fait ça. Quelle est la gamme de seuils d'une bonne image serait-elle?
@ 2Vision2 Eh bien, je suis désolé c'est quelque chose qu'il pas possible de dire au hasard. Meilleure chose: vous vérifiez les valeurs sur quelques images et la résolvez-vous!