![]() |
Winkelerkennung mit Webcam für Bauelemente
Guten Tag zusammen
Ich habe eine frage, ist es mit verhältnismässig geringem Aufwand möglich, den Winkel bzw. die Ausrichtung eines Objektes mit einer Webcam zu erkennen? Es geht darum, die Ausrichtung eines Bauteils mittels Webcam zu erkennen. Das einzige was im Bild scharf dargestellt ist, ist das Bauteil. Alles andere ist verschwommen... Gibt es dazu bereits irgendwelche Libs oder DLL's um Objekte innerhalb eines Bildes erkennen zu können? Danke schonmal für eure Tipps :) Gruss Claudio |
AW: Winkelerkennung mit Webcam für Bauelemente
Falls der Preis keine Rolle spielt:
![]() Damit geht sowas: ![]() (Nachdem die 3D Daten zur Verfügung stehen) |
AW: Winkelerkennung mit Webcam für Bauelemente
Danke für deine Antwort :)
Nun weiss ich wenigstens dass es irgendwie geht hehe :) Der Preis spielt natürlich schon eine wesentliche rolle... Am liebsten kostenlos :) Es geht mir hier nicht um Präzisionsmessungen sondern mehr darum das Bauteil so genau wie mit einfachen mitteln möglich auszurichten... |
AW: Winkelerkennung mit Webcam für Bauelemente
welche form hat das objekt? ist das problem zweidimensional?
|
AW: Winkelerkennung mit Webcam für Bauelemente
Ja das problem ist lediglich 2 dimensional
|
AW: Winkelerkennung mit Webcam für Bauelemente
Also ich habe da mal Code geschrieben, um die Ausrichtung eines Rechtecks zu bestimmen. Heraus kam dann der Winkel in dem das Rechteck steht.
Das ganze habe ich über eine Hauptachsentransformation realisiert, aber es kann gut sein dass es da noch einfachere Lösungen gibt .... |
AW: Winkelerkennung mit Webcam für Bauelemente
Kannst du mir da noch ein paar Tipps geben?
|
AW: Winkelerkennung mit Webcam für Bauelemente
Das Programm ist in C# geschrieben, hier mal der wesentliche Code:
PHP-Quellcode:
Vorher muss noch der Schwerpunkt berechnet werden. Der Winkel der errechnet wird, beschreibt die Neigung der ersten Hauptachse ("Längsachse") zur Waagerechten.
private void CalcAngle(ref CalcInfo img)
{ // Flächenmomente ermitteln double Ixy = 0, Ixx = 0, Iyy = 0; for (int y = 0; y < img.Height; y++) { for (int x = 0; x < img.Width; x++) { // Über alle Pixel des Bildes iterieren if (img.rgbValues[y * img.Width + x] == img.color) // Falls der Pixel zum Objekt gehört { // Momente 2. Ordnung Ixx += (y - img.CenterY) * (y - img.CenterY); // CenterXY beschreibt den Flächenmittelpunkt Iyy += (x - img.CenterX) * (x - img.CenterX); Ixy += (x - img.CenterX) * (y - img.CenterY); } } } // Winkel berechnen double phi = Math.Atan2(2 * Ixy, Iyy - Ixx); img.Angle = -0.5 * phi; } Zur Lage der Hauptachsen: ![]() |
AW: Winkelerkennung mit Webcam für Bauelemente
Ich hab neulich per Zufall ein (war es Youtube?)-Video gesehen. Da wurde Spielkonsolenzubehör (Eye-Toy oder das WII-Pandon) für sowas benutzt. Finde das aber gerade nicht.
|
AW: Winkelerkennung mit Webcam für Bauelemente
das Bild mittels KantenFilter bearbeiten, dann kann man Hough Transformation auf das Kantenbild anwenden, man erhält bei Liniendetection den Winkel als Parameter
auf Sourge forge habe ich eine Demo, was fehlt im Demo Code: gibt es viele Kanten im Bild , muss man man die relevanten aussortieren, Stichwort "NON MAXIMA SUPRESSION" Ist bei Kaufsoftware natürlich dabei - noch nicht aber auf source forge :-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz