OpenCV Moyenne/écart type de filtre
Je lance ce dans l'espoir que quelqu'un aura tenté quelque chose d'aussi ridicule avant. Mon objectif est de prendre une image d'entrée, et le segment à partir de l'écart-type d'une petite fenêtre autour de chaque pixel. Bascially, cela devrait mathématiquement ressembler à un de gauss ou de la boîte de filtre, en cela qu'elle est appliquée à un moment de la compilation (ou même au moment de l'exécution) de l'utilisateur spécifié la taille de la fenêtre autour de chaque pixel, et le tableau de destination contiendra les informations sur l'écart type de chaque pixel dans une image de la même taille que l'original.
L'idée est de faire cela sur une image dans l'espace HSV, de sorte que je peux facilement trouver des régions de couleur homogènes (c'est à dire ceux avec de petits locaux de la Sdd dans la Teinte et s'Assit avions) et les extraire de l'image pour un traitement plus détaillé.
La question est donc, quelqu'un a construit un filtre personnalisé comme ça avant? Je ne sais pas comment faire la SD dans un simple type de boîte de filtre à noyau, comme ceux utilisés pour gauss et flou, donc je suppose que je vais devoir utiliser le FilterEngine construire. Aussi, j'ai oublié de mentionner que je suis en train de faire cela en C++.
De vos conseils et de réflexions sont très appréciées.
OriginalL'auteur gankoji | 2012-07-12
Vous devez vous connecter pour publier un commentaire.
Wikipedia a une belle explication de écart-type, que vous pouvez utiliser pour pour un écart-type de filtre.
En gros, ça se résume à brouiller l'image avec une zone de filtre, le flou de la place de l'image, la boîte de filtre, et en prenant la racine carrée de leur différence.
Mise à JOUR: C'est probablement la meilleure façon de prouver à l'équation de Wikipedia...
Vous pouvez penser à la OpenCV
blur
de la fonction en tant que représentant de la la valeur attendue (c, E[X].k.un. la moyenne de l'échantillon) du quartier de l'intérêt. Les échantillons aléatoires X dans ce cas sont représentés par les pixels de l'image dans le quartier local. Par conséquent, en utilisant le dessus de l'équivalence, nous avons quelque chose commesqrt(blur(img^2) - blur(img)^2)
dans OpenCV. Cette façon de faire permet de calculer le local, les moyens et les écarts-types.Aussi, juste au cas où vous êtes curieux au sujet de la preuve mathématique. Cette équivalence est connu comme le formule de calcul de la variance.
Ici est de savoir comment vous pouvez le faire dans OpenCV:
Ce produit les images suivantes:
Original
Dire
Écart-Type
Espère que ça aide!
Génial! Glad vous avez trouvé cet exemple utile. En gros, je suis en utilisant l'équivalence mathématique qui est indiqué dans l'article de Wiki. J'ai aussi mis à jour la réponse, nous l'espérons, pour expliquer plus en plus complète de la mode.
Ahh, je vois l'équivalence que vous avez mentionné. Désolé, je ne suis pas une statistique buff, je n'avais aucune idée de qui était le cas! Je vais essayer de mettre en œuvre ce code, lundi, lorsque je serai de retour au bureau, et vous laisser savoir comment ça se passe. Merci encore!
J'ai mis à jour la réponse avec un lien vers la dérivation de l'équivalence dans le cas où vous êtes curieux de connaître les mathématiques 🙂
bonjour, très bon tutoriel....j'ai à la moyenne de la différence entre deux bord détecté images...très nouveau pour opencv j'ai fait dans matlab pls aider dans opencv...avec la formule
OriginalL'auteur mevatron