2017-02-21 2 views
0

Ich versuche, ein Programm zu machen, das Menschen in CCTV-Aufnahmen erkennt und ich habe eine Menge Fortschritte gemacht. Leider variiert die Menge an Rauschen in den Videos zwischen den verschiedenen Kameras und der Tageszeit, also bei jedem der Beispielvideos. Dies bedeutet, dass das benötigte NoiseSigma von 1-25 variiert.OpenCV: Effektive Möglichkeit, NoiseSigma automatisch in BackgroundSubtractorMOG zu setzen

Ich habe eine fastNlMeansDenoisingColored Funktion verwendet und das half ein bisschen, aber das NoiseSigma ist immer noch ein Problem.

Wäre es effektiv, vielleicht einmal durch das Video zu schleifen und irgendwie eine Vorstellung davon zu bekommen, wie laut das Video ist und eine Beziehung für Rauschen gegen NoiseSigma eingeht? Irgendwelche Ideen wären willkommen.

Antwort

0

Ich glaube nicht, dass es möglich ist, den Rauschpegel in einem Bild (oder Video) ohne Referenzdaten zu bestimmen, die kein Rauschen enthalten. Eine Sache, die mir in den Sinn kommt, ist, eine statische Szenerie aufzunehmen und zu messen, wie sich alle Frames voneinander unterscheiden und dann versuchen, eine Beziehung (hoffentlich linear) zwischen dem Takt und NoiseSigma zu finden. Wenn es keinen Lärm, würde die akkumulierte Differenz zwischen den Bildern sein 0. akkumulierte Differenz ich so etwas wie dies bedeuten:

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

Wo Summe aller Elemente eines Bildes (Frame) addiert skalaren Wert zu erzeugen. Bitte bedenke, dass ich hier nur meiner Intuition folge und es ist keine Methode, die ich zuvor gesehen habe.

Verwandte Themen