2017-02-21 5 views
0

J'essaie de créer un programme qui détecte les personnes en vidéo CCTV et j'ai fait beaucoup de progrès. Malheureusement, la quantité de bruit dans les vidéos varie beaucoup entre les différentes caméras et l'heure du jour, donc avec chacun des exemples de vidéos. Cela signifie que le NoiseSigma requis varie de 1-25.OpenCV: moyen efficace pour définir automatiquement NoiseSigma dans BackgroundSubtractorMOG

J'ai utilisé une fonction fastNlMeansDenoisingColored et cela m'a aidé un peu, mais le NoiseSigma est toujours un problème. Serait-il efficace de faire une boucle sur la vidéo une fois, et d'avoir une idée de la bruine de la vidéo et de faire une relation pour le bruit vs NoiseSigma? Toutes les idées seront les bienvenues.

Répondre

0

Je ne pense pas qu'il soit possible de déterminer le niveau de bruit dans une image (ou une vidéo) sans avoir de données de référence qui ne contiennent aucun bruit. Une chose qui me vient à l'esprit est d'enregistrer des paysages statiques et de mesurer comment les images diffèrent les unes des autres, puis d'essayer de trouver une relation (espérance linéaire) entre la mesure et NoiseSigma. S'il n'y avait pas de bruit, la différence accumulée entre les cadres serait 0. Par différence accumulée je veux dire quelque chose comme ceci:

for i=1, i<frames.count(), ++i 
{ 
    cumulativeError += sum(abs(frame(i) - frame(i-1))) 
} 
cumulativeError/=frames.count() 

Où somme additionne tous les éléments d'une image (image) pour produire de la valeur scalaire. S'il vous plaît gardez à l'esprit que je suis juste mon intuition ici et ce n'est pas une méthode que j'ai vu auparavant.