Ich beschäftige mich immer wieder mal mit Themen rund um Videosignalverarbeitung (Analog wie auch digital), meine Kentnisse sind jedoch recht oberflächlich. Objekterkennung in Videosignalen, sagen wir mal von einer kleinen CCD-Kamera ist heutzutage ja eigentlich nichts besonderes mehr. Ich meine damit das eine Software aus einem Bild oder Bildstrom darin befindliche Objekte erkennt und ggf. auch verfolgt. Die dahinter steckende Theorie, sowie die grundlegenden Verfahren um sowas in Software und vor allem in Echtzeit umzusetzen würde ich gern verstehen. Was braucht es dazu alles? Ich habe irgendwie keine Idee wie ich da anfangen und wonach ich konkret suchen soll? Einzelne Fragen zu irgendwelchen Spezialbereichen daraus zu stellen scheint mir aktuell wenig sinnvoll, ich glaube ich muss erstmal ein paar Grundlagen büffeln...
Olli Z. schrieb: > ich muss erstmal ein paar > Grundlagen büffeln... Mach das!
Für den Privatbastler ist wahrscheinlich die OpenCV Bibliothek https://opencv.org/ am zugängigsten wenn es um die paar hundert Basisalgorithmen geht. Ein paar hundert Algorithmen ist dabei kein Witz. Damit kann man dann Copy-Paste von im Internet gefundenen Code zu Objekterkennung machen, oder man setzt sich mit einem halben Hochschulstudium für die Grundlagen auseinander.
Gast
#5965932
Mal was zum herumprobieren: https://www.codeproject.com/Articles/196168/Contour-Analysis-for-Image-Recognition-in-C
Gibt es denn sowas wie einen grundsätzlichen, theoretischen Ansatz für ein solches Problem? Oder sind aufgrund der genannten zahlreichen Algorithmen (100+) garkeine allgemeingültigen Vorgehensweisen nennbar? Wohlgemerkt, ich will garnicht den aktuellen Stand der Technik ergründen, sondern die Basiskonzepte denen es zugrunde liegt. Ich denke ja das man komplexe Objekte, besonders im 3D Raum irgendwie über ein neuronales Netz antrainieren muss. Wenn ich das Problem nun vereinfache und sage ich möchte nur im 2D Raum Objekte erkennen, evtl. auf Basis eines S/W-Bildes, wie erkennt eine Software in dem Array von Bytes ein geometrisches Objekt? Geht sowas über ein komplettes Bild oder über den Stream?
Gast
#5965971
Um sich in einem (fast) völlig unbekannten Thema ersteinmal grob zu orientieren, lohnt sich meiner Meinung nach ein Blick in Wikipedia. Einmal auf Deutsch https://de.wikipedia.org/wiki/Objekterkennung und einmal auf Englisch https://en.wikipedia.org/wiki/Outline_of_object_recognition Ich bevorzuge die englische Version, weil sie oft lesbarer und ausführlicher geschrieben und mit mehr Kontext und Literaturangaben versehen ist. Darüber hinaus ist eine Suche im Internet meist ziemlich hilfreich.
Gast
#5966020
Olli Z. schrieb: > Gibt es denn sowas wie einen grundsätzlichen, theoretischen Ansatz für > ein solches Problem? Im Prinzip läuft es immer darauf hinaus, "Merkmale" eines gesuchten Objektes zu definieren und geeignete Filter, die es ermöglichen, eben diese Merkmale möglichst zweifelsfrei und gleichzeitig effizient aufzuspüren. Das beides in kompetenter Form zu tun, erfordert ein tiefes Verständnis der Signalverarbeitung, welches du offensichtlich nicht besitzt. Da hilft nur eins: Lernen... Hart ist das Leben...
Für den Start würde ich mit den Tensorflow examples anfangen mit einem Pretrained Model (z.B.) ssd_mobilenet_v1_coco. Ist recht einfach:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |
58 | |
59 | |
60 | |
61 | |
62 | |
63 | |
64 | |
65 | |
66 | |
67 | |
68 | |
69 | |
70 | |
71 | |
72 | |
73 | |
74 | |
75 | |
76 | |
77 | |
78 | |
79 | |
80 | |
81 | |
82 | |
83 | |
84 | |
85 | |
86 | |
87 | |
88 | |
89 | |
90 | |
91 | |
92 | |
93 | |
94 | |
95 | |
96 | |
97 | |
98 | |
99 | |
100 | |
101 | |
102 | |
103 | |
104 | |
105 | |
106 | |
107 | |
108 | |
109 | |
110 | |
111 | |
112 | |
113 | |
114 | |
115 | |
116 | |
117 | |
118 | |
119 | |
120 | |
121 | |
122 | |
123 | |
124 | |
125 | |
126 | |
127 | |
128 | |
129 | |
130 | |
131 | |
132 | |
133 | |
134 | |
135 | |
136 | |
137 | |
138 | |
139 | |
140 | |
141 | |
Gast
#5966043
Olli Z. schrieb: > ich glaube ich muss erstmal ein paar > Grundlagen büffeln... Das ist gut für Grundlagen: ISBN: 978-3642130960
Das vereinfachte Vorgehen ist die Korrelation. Nun ist das direkt eher rechenintensiv, in Fourierraum aber einfach. Die Korrelation wird im Fourierraum zu einer Multiplikation. Also das Bild Fouriertransformieren, und mit den verschiedenen zu findenden, fouriertransformierten Mustern einzeln multiplizieren. Das in Echtzeit ist eine Menge Holz. Allenfalls, mit etwas mehr Theorie kann man's beschleunigen.
Gast
#5966807
Olli Z. schrieb: > Gibt es denn sowas wie einen grundsätzlichen, theoretischen Ansatz für > ein solches Problem? Oder sind aufgrund der genannten zahlreichen > Algorithmen (100+) garkeine allgemeingültigen Vorgehensweisen nennbar? > Wohlgemerkt, ich will garnicht den aktuellen Stand der Technik > ergründen, sondern die Basiskonzepte denen es zugrunde liegt. Der grundlegene Ansatz ist ein Vergleich zwischen Soll und Ist. Das kann ein direkter Vergleich von Pixelfolgen sein, oder man zerlegt die Pixelfolgen in Frequenzen und vergleicht es im Frequenzbereich unter Weglassen von Nichtbenötigtem. Um Vergleiche durchzuführen (was ist ein Kreis, was eine Kante, was eine Ecke und was ist eine Fläche gleicher Farbe) muss das Bild passend vorverarbeitet werden, also - globaler / lokaler offset raus - Rauschen raus - Beleuchtungsgradient raus Hinzu kommem Mechanismen, um Bewegungen zu erkennen, also Vergleiche das Bildes mit sich selbst. Dann kann man z.B. direkt ablesen, welche Bereiche sich wohin bewegt haben, was eine Hintegrund, eine Vordergrund oder Boden oder ein Objekt ist.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.