Dies ist eine konzeptionelle Frage, die für viele Papiere und Tutorials zu erklären erfordert. Wie in den Kommentaren erläutert, versuche ich jedoch, die Merkmalsextraktion näher auszuführen. Feature Deskriptoren sollten robust gegen Skalierung, Translation und Rotation sein. Diese Robustheit wird wörtlich als invariante Merkmale bezeichnet. Zum Beispiel sind Momente und ihre Ableitungen eine der bekanntesten Arten von Invarianten gegen Rotation, Skalierung und Translation. Sie können die Verwendung von Hu-Momenten wie in dieser paper erläutert finden. Flammen- oder Branderkennung ist etwas anderes. Das Merkmal entspricht der Flamme kann aus der dynamischen Textur des Feuers extrahiert werden. Zum Beispiel hat Feuer eine spezielle Farbstruktur, die es vom Hintergrund trennt. Die herkömmlichen Flammendetektoren verwenden Infrarotsensoren, um eine Flamme zu detektieren. In der Bildverarbeitung oder in der RGB-Welt können wir dasselbe tun, indem wir die Natur der Flamme selbst betrachten. Flame emittiert einen signifikanten Teil seiner Energie durch Wärme und Infrarotstrahlung. Man kann also erwarten, dass ein großer Teil des roten Kanals der Flamme gewidmet wird. Sehen Sie sich das folgende Bild an.
in dem verarbeiteten Bild wird der rote Kanal durch Einführung eine Schwelle zu BW Bild umgewandelt. Um es klarer zu sagen, habe ich die 3 Kanäle wie folgt getrennt.
R: G: B:
Es ist offensichtlich, dass der rote Kanal mehr über die Flamme zu sagen hat. Daraus kann geschlossen werden, dass die Flamme dort ist, wo R Kanal einen Teil seiner Information hat, dann G und schließlich B Kanal. Siehe this.
Ihr Merkmalsvektor ist dann ein dreidimensionaler Vektor, der zum Beispiel die Kontur der Flamme in drei RGB-Kanälen darstellt. SVM-Klassifikatoren können jetzt verwendet werden. Manchmal kann das Video flammige Segmente enthalten, die vermieden werden sollten und ansonsten zu Fehlalarmen führen. SVM hilft Ihnen, einen Flammenkandidaten zu akzeptieren oder abzulehnen. Um Ihre Support-Vektor-Maschine zu trainieren, sammeln Sie einige echte Flammen und einige Bilder, die von Ihrem Feature Extractor falsch eingeschätzt werden können. Beschriften Sie sie dann mit positiven und negativen Merkmalen. Lassen Sie opencv schließlich die Magie tun und trainieren Sie sie. Weitere Informationen zu SVM finden Sie in diesem Video von Patrick Winston, MIT, unter youtube.
UPDATE ---- Da Sie neugierig auf die Erstellung von Feature-Vektor sind, brachte ich Ihnen das folgende Beispiel. Angenommen, R-, G- und B-Kanäle sind fein getrennt, so dass man sie statistisch als unabhängig bezeichnen kann; Dies ist in realen Bildern nicht der Fall, in denen R-, G-, B-Ebenen nicht statistisch unabhängig sind.
Daher wird ein Punkt im RGB-Bild 3 Darstellungen in RGB-Kanälen haben. Zum Beispiel wird eine Flamme 3 Punkte auf allen R, G, B Ebenen machen. Beispielsweise wird hier die Fläche jedes Spots nachverfolgt. Beschriften Sie den Flammenfleck im RGB-Bild mit "A".
Die Darstellungen der Fläche A wurden oben in R-, G-, B-Bildern dargestellt. A_r, A_g, A_b bezeichnen den entsprechenden Bereich des Bereichs A auf R-, G- bzw. B-Ebenen.
Daher wird Punkt A durch ein Triplett (Ar, Ag, Ab) in der xyz-Ebene dargestellt. SVM akzeptiert nun diesen Vektor als Eingabe und entscheidet, ob er eine echte Flamme bedeutet.
Die Bereiche, normalisiertes Format, ist eine der vielen geometrischen Funktionen, die Sie in den Entscheidungsprozess einbeziehen können. Andere nützliche Eigenschaften dieser Art sind Seitenverhältnisse, Momente und so weiter.
Kurz gesagt, müssen Sie Folgendes tun:
1 - Finden Sie die Flamme gefallenen Bereichen.
2 - Verfolgen Sie den Kandidatenfleck in allen R-, G- und B-Ebenen.
3 - Extrahieren Sie das Feature (ich schlage Momente) in jeder Ebene.
4 - Bilden Sie den Merkmalsvektor
5 - Führen Sie die SVM mit diesem Vektor
Ich hoffe, dass Sie diesen Kommentar hilfreich.
Sie filename.train wird Zuerst müssen Sie Funktionen aus Ihren Bildern extrahieren, um eine SVM zu trainieren. Feature-Extraktionsalgorithmen hängen stark von der Anwendung ab. Wenn Sie OpenCV verwenden, würde ich empfehlen, diese Tutorials über Keypoint-Detektoren und Feature-Extraktion zu betrachten. http://docs.opencv.org/master/db/d27/tutorial_py_table_of_contents_feature2d.html#gsc.tab=0 –
Muss ich meine Bilder in einem bestimmten Format haben? oder jpg ist machbar? –
Und wo stelle ich die extrahierten Features? Ich kann nicht in der Svm-Zugmethode herausfinden, welcher Parameter ist das –