Seite 1 von 1

Verbesserung der Wert/-Farb-vergleiche

Verfasst: Montag 17. Juni 2019, 11:54
von Felix92
Huhu und zwar probiere ich derzeit aus ein besseres bzw. gleichmäßigeres Ergebnis bei der Analyse eines Videos anhand der "Farbvergleiche" zu erhalten. (Also es funktioniert ist allerdings bei unterschiedlichem Licht/Umgebungseinfluss relativ "ungenau")
Probiert habe ich bisher GRAY und HSV sowie unten zu sehen einfach den prozentualen Anteil im RGB zu nehmen.
Vlt hat ja jmd einen Vorschlag oder weiß wie man dieses Problem beheben bzw. die Werte "zuverlässiger" machen kann.
Bei meinem Beispielvideo macht z.B.: der prozentuale Rotwert einen ordentlichen Sprung wenn die Kameraperspektive verändert wird (die Werte sind allerdings von Video zu Video verschieden "stark" so das ich nicht fest sagen kann aber Wert xyz tue das)

Bild
Bild

Code: Alles auswählen

def check_board_area(self, progress):
        """
        a method that analyse the video frame per frame and save the Clips (Board) in a list
        """
        video = cv2.VideoCapture(self.__file_path)
        maxframes = int(video.get(cv2.CAP_PROP_FRAME_COUNT))
        try:
            times = list()
            for frame_number in count():
                if frame_number % 30 == 0:
                    progress(frame_number/maxframes*100)
                is_ok, frame = video.read()

                if not is_ok:
                    if times:
                        self.board_subvideos.append((times[0], times[-1]))
                    break

                frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
                average = cv2.mean(frame)

                #summe = average[0] + average[1] + average[2]
                #percentage_red = (100 * average[0]) / summe
                #percentage_green = (100 * average[1]) / summe
                #percentage_blue = (100 * average[2]) / summe

                if average[0] > 158:
                    times.append(video.get(cv2.CAP_PROP_POS_MSEC) / 1000)
                elif times:
                    self.board_subvideos.append((times[0], times[-1]))
                    times.clear()
        finally:
            video.release()
Danke für eure Hilfe :)
MfG Felix

Re: Verbesserung der Wert/-Farb-vergleiche

Verfasst: Montag 17. Juni 2019, 12:59
von __deets__
Mir ist nicht klar, was du erreichen willst. Was ist ein Clip, warum ist es das gleiche wie ein Board?

Re: Verbesserung der Wert/-Farb-vergleiche

Verfasst: Montag 17. Juni 2019, 14:25
von Felix92
Also wie man oben sehen kann wird im Video manchmal auf die Tafel gezoomt bisher habe ich diesen Zoom anhand von Änderungen im Farbraum festgestellt was bei unterschiedlichen Einwürkungen von Aussen (Licht, etc.) allerdings ziemlich unsicher ist bei mehreren unterschiedlichen Videos ...daher meine Frage: gibt es Ideen wie ich diese Farbvergleiche "sicherer" machen kann oder eine ganz andere Idee/Lösung für solche Probleme ? :)
Clips sind Teilvideos / Board ist das Tafelvideo es gibt im Projekt mehrere Teilvideos daher die Bezeichnung ..ist für meine Frage aber nicht von Bedeutung :) es geht eigentlich nur um diesen Abschnitt:

Code: Alles auswählen

frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
                average = cv2.mean(frame)

                #summe = average[0] + average[1] + average[2]
                #percentage_red = (100 * average[0]) / summe
                #percentage_green = (100 * average[1]) / summe
                #percentage_blue = (100 * average[2]) / summe

                if average[0] > 158:
MfG

Re: Verbesserung der Wert/-Farb-vergleiche

Verfasst: Montag 17. Juni 2019, 15:40
von __deets__
Das Problem ist, dass du potentiell (sieht zumindes so aus als ob das passieren koennte) die gesamte Tafel aus den Augen verlierst.

Wenn du *manchmal* eine Tafel erkennst, und dort wenig false positives hast, dann koenntest du mit Verfahren wie sie hier dargestellt werden https://www.pyimagesearch.com/2018/07/3 ... -tracking/ die Tafel im Auge behalten, auch wenn gezoomt wird.

Re: Verbesserung der Wert/-Farb-vergleiche

Verfasst: Montag 17. Juni 2019, 20:09
von Felix92
Gibt es in OpenCV nicht die Möglichkeit Licht komplett auszuschließen und nur die "reinen" Farben zu betrachten ich denke das würde das ganze schon wesentlich präziser zu es muss nicht perfekt sein ich möchte die Fehleranfälligkeit nur wenn möglich etwas senken :)

Re: Verbesserung der Wert/-Farb-vergleiche

Verfasst: Montag 17. Juni 2019, 20:13
von Felix92
Ich weiß das wenn er an die Tafel zoomt der rotanteil ziemlich steigt wenn ich diesen Anteil ohne Berücksichtigung der Helligkeit bzw. des Lichtes hätte würde das ausreichen dann könnte ich den Mittelwert bestimmen und sagen z.B.: percentage_red > Mittelwert rot + 20:
do

Re: Verbesserung der Wert/-Farb-vergleiche

Verfasst: Montag 17. Juni 2019, 20:17
von noisefloor
Hallo,
Gibt es in OpenCV nicht die Möglichkeit Licht komplett auszuschließen und nur die "reinen" Farben zu betrachten
Das macht so physikalisch gar keinen Sinn, weil die Farben Licht mit einer bestimmten Wellenlänge sind. Oder anders: kein Licht -> keine Farbe.

Gruß, noisefloor

Re: Verbesserung der Wert/-Farb-vergleiche

Verfasst: Montag 17. Juni 2019, 20:46
von Felix92
Ja war vermutlich doof beschrieben ich suche halt eine Möglichkeit Umgebungseinflüsse größtmöglich auszuschließen

Re: Verbesserung der Wert/-Farb-vergleiche

Verfasst: Montag 17. Juni 2019, 20:55
von __deets__
Die Farben die du siehst sind die Farben die du siehst. Wenn die Kamera da zb aufgrund eines anderen Bildausschnittes anders aussteuert, oder farbiges Licht in die Szene reflektiert von einer Wand - dann SIND die Farben anders, und deine Robustheit muss woanders herkommen. Und was passiert, wenn die Tafel benutzt wird? Das ändert das doch auch.

Ich habe dir andere verfahren genannt. Hast du dir das mal angeschaut?

Re: Verbesserung der Wert/-Farb-vergleiche

Verfasst: Dienstag 18. Juni 2019, 07:15
von Zizibee
Felix92 hat geschrieben: Montag 17. Juni 2019, 20:09 Gibt es in OpenCV nicht die Möglichkeit Licht komplett auszuschließen und nur die "reinen" Farben zu betrachten
Wenn du die Farben unabhängig ihrer Helligkeit betrachten willst, gibt es dafür den HSV-Farbraum. Dort ist die Helligkeit einer der drei Koordinaten, aus denen sich die Farbei zusammen setzt und daher gesondert betrachtet werden kann.
Allerdings hattest du ja schon geschrieben, dass du dir den angeschaut hast...

Re: Verbesserung der Wert/-Farb-vergleiche

Verfasst: Dienstag 18. Juni 2019, 08:14
von Sirius3
Felix92 hat geschrieben: Montag 17. Juni 2019, 20:46 ich suche halt eine Möglichkeit Umgebungseinflüsse größtmöglich auszuschließen
Danach suchen alle, die sich mit Bilderkennung beschäftigen. Und richtig gut funktionierende Verfahren wurden meines Wissens noch nicht gefunden. Ein falscher Schatten bringt auch heute noch jede KI in Probleme.

Vielleicht reicht bei Dir aber schon ein einfacher Weiß- bzw. Grün-Abgleich.

Re: Verbesserung der Wert/-Farb-vergleiche

Verfasst: Dienstag 18. Juni 2019, 17:44
von Felix92
Das mit dem Grünabgleich habe ich probiert ist allerdings zu ungenau mit schwarz/weiß müsste ich mal testen

Re: Verbesserung der Wert/-Farb-vergleiche

Verfasst: Dienstag 18. Juni 2019, 17:47
von Felix92
Vlt. kann ich mit round() auch noch ein bisschen was rausholen optimal wäre es halt nur 2 werte zu bekommen für Tafel und nicht Tafel