Also, ich hab da gerade ne Kopfnuss. Ich habe einen Mega16 mit Kamera, EDO-RAM und GLCD ausgerüstet. Die Kamera (C-328) gibt mir 8-Bit Graustufen Bilddaten raus, die ich im externen RAM puffere. Das RAM (1MB) hängt als SIMM-30 parallel am Mega, der Zugriff geht also recht flott vonstatten. Die Bilddaten als Pixeldaten auf dem GLCD ausgeben ist ja noch keine Sache, aber nun möchte ich die Bilddaten in Vektordaten umwandeln um die Übertragung an PC und auch die Weiterverwendung der Bilddaten auf dem µC zu beschleunigen. Es geht im Wesendlichen darum, dass der µC aus dem Bild seinen Weg ermitteln soll. Meine Frage daher ist, wie geh ich die Berechnungen am einfachsten und effektivsten an?
Vergiß das mit den Vektordaten am besten wieder. Wenn du nur die Datenmenge reduzieren möchtest gibt es einfachere Verfahren (Vektorquantisierung (hat nichts mit Vektorgrafik zu tun), DPCM), bei der Weiterverarbeitung der Bilder auf dem Controller hilft dir das aber nichts. Wenn du das Bild vom Controller interpretieren lassen möchtest ist der erste Schritt die Vorverarbeitung: reduziere das Bild auf die Informationen die zur Lösung der Aufgabe erforderlich sind. Wenn dein Roboter z.B. das Bild von einem Weg aufnimmt, dann sollte nach der Vorverarbeitung der Weg weiß und unzugängliches schwarz sein. Damit hast du die Datenmenge schon mal auf 1/8 reduziert. Überleg mal wie du das machen könntest, von da an kannst du dich schrittweise weiter vorarbeiten.
Also Mittelwerte finden und dann über Schwellenwert auf 1-Bit s/w wandeln war nicht das Problem. Das Problem ist einfach, dass es mitunter Lücken in der Strecke gibt. Bei meiner Aufgabenstellung (nicht Hausaufgabe) hab ich leider keine eindeutige s/w-Vorlage, sondern Grauwerte in der ganzen Bandbreite.
ähm, ok, Sobel schaut mal nach Wiki ganz gut aus für mein Thema, aber hast Du ne Idee wie ich dashier:
in C ausdrücke? ... kann mir das jemand erklären was die Formel bedeutet? Also die Texterklärung war mir ja noch recht einleuchtend, aber die Beispielformel ists leider nicht. Wenn ichs recht verstanden habe werden die Helligkeitsdifferenzen zu den umliegenden Pixelwerte mehr oder weniger verstärkt, oder?
Hallo, ist ja sehr interessant hier. Der * bedeutet Faltung, in deinem Falle diskrete Faltung. Den Rest kann ich nicht erkennen, binde die Formel doch mal als Bild aus der wiki hier ein. Wie man ne Ableitung (diskret) in C rechnet bin ich auch noch nicht hintergestiegen, ich tippe auch auf die Differenz zum vorhergehenden.
>in C ausdrücke? Ich habe mir deinen Latexcode nicht genau angesehen, scheint aber etwas ähnliches wie auf http://en.wikipedia.org/wiki/Sobel zu sein. Und dort steht unter "technical details" ziemlich genau, wie es implementiert wird. Wenn dich das überfordert, solltest du die Finger vom Projekt lassen
naja, nachdem ich den Rechner gewechselt hab bekomme ich seltsamerweise von Wiki die Formeln schön angezeigt, auf der anderen Kiste wars in dem oben beschriebenen Format dargestellt, das hab ich echt nicht geblickt. Aber da ich nun die Funktion in Schönschrift habe ist die ja recht simpel, danke für den Tip. Ach so, Tips in der Richtung wenn du's nicht kannst lass es, find ich nicht sehr erhellend. So hätt ich nie laufen gelernt. Der Mensch wächst mit seinen Aufgaben / Herausforderungen. ;o)
Hm, wie faltet man eigentlich Matrizen? Hatte das bisher nur bei Funktionen.
Soweit ich es sehe, sind keine Matrizen gemeint, sondern eine diskretisierte Funktion über dem R^2, so dass es eine normale 2-dimensionale Faltungssumme ist. Kann aber auch falsch liegen, da ich die Seite nur überflogen habe.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.