![]() |
---|
Hallo alle miteinander. Ich habe eine Frage zur Berechnung der Richtungsableitung entlang eines Kreises. Ein wenig muss ich noch ausholen: Es geht um Bildverarbeitung, ich habe ein Bild am Anfang zur Verfügung(Beispiel: Bild1 aus der öffentlichen Datenbank MMU), daraus erstelle ich Ableitungsbilder in und Richtung(Horizontal respektive Vertikal). Jeweils Bilder 2 und 3 Achtung FRAGE:] Wie kriege ich die Richtungsableitung entlang eines Kreises aus den beiden Richtungsableitungen in bzw. Richtung heraus? /Achtung FRAGE:] Erschwert wird das durch den diskreten Fall, dass ein Kreis aus endlichen Punkten besteht, aber ich bin auch für eine stetige Lösung/Hinweise dankbar. Für alle, die mir helfen möchten (automatisch von OnlineMathe generiert): "Ich möchte die Lösung in Zusammenarbeit mit anderen erstellen." |
Hierzu passend bei OnlineMathe: Funktion (Mathematischer Grundbegriff) Online-Übungen (Übungsaufgaben) bei unterricht.de: |
![]() |
![]() |
wenn du eine richtungsableitung haben moechtest musst du noch sagen welche richtung dich denn nun interessiert... anhand der bilder jedoch, nehme ich an, dass die richtung von einer virtuellen lichtquelle vorgegeben wird. sieht so aus als soll von links nach rechts licht auf das gerenderte bild fallen (beim mittleren bild). damit ist dein richtungvektor beim rechten bild soll wohl licht von oben nach unten fallen.... dann richtungsvektor jetzt bildest du den gradienten fuer ein pixel. sprich in der diskreten welt bestimmst du die steigung der grauwerte in sämtliche richtungen. verfahren, wie man nun so eine steigung diskret abschätzt, gibt es wie sand am meer. such dir eine aus. die wohl einfachste methode ist, dir die direkten pixelnachbarn zu nehmen und dann eine gerade durch ihre grauwerte zu legen. dann ergeben sich 4 richtungen, die du betrachten musst. denjenigen mit der größten steigung suchst du dir aus. bilde einen vektor in diese richtung, der eine länge mit der gefundenen steigung hat. und schliesslich skalarmultipliziere das mit deinem richtungsvektor... tada, du hast die richtungsableitung fuer einen pixel gefunden. das machst du mit allen pixeln und es ergibt sich automatisch dieser kreis um der pupille. du musst also nicht explizit entlang eines kreises arbeiten lg |
![]() |
Hallo, danke für die Antwort. Falls es etwas unklar sein sollte, das sind keine virtuellen Lichtquellen. Diese beiden Bilder sind Ableitungen des Originalbildes in bzw. -Richtung. Ich möchte gerne aus diesen beiden Ableitungen eine Ableitung entlang eines Kreises machen, angenommen entlang der Pupille (sagen wir am obersten Punkt der Pupille angefangen im Uhrzeigersinn). Trifft deine Erklärung darauf zu? |
![]() |
nein meine erklärung ergibt im endeffekt auch eine ableitung in und richtung... mit meiner erklärung kann man halt auch in eine andere richtung ableiten... "Ich möchte gerne aus diesen beiden Ableitungen eine Ableitung entlang eines Kreises machen," diese aussage macht mathematisch keinen sinn... was ist eine ableitung entlang eines kreises? beschreib mal genau was für ein bild rauskommen soll... |
![]() |
eine Ableitung entlang des Kreises, das ergibt kein Bild sondern eben nur einen Kreis mit 1 pixel Dicke entlang der Pupille, und die Richtung ist ja nicht konstant. Ich weiß nicht wie ich es formulieren soll, das ist wahrscheinlich auch ein Problem |
![]() |
also wenn dir der kreis schon bekannt ist, wo du lang ableiten willst... dann brauchst du doch gar keine ableitung sondern malst einfach nur den kreis. wenn du allerdings automatisch einen kreis mit 1 pixel dicke um die pupille generieren moechtest, bist du mit den ableitungen auf dem holzweg. das wird schwierig. hier helfen kantenerkennungsalgorithmen. wenn du nur diesen "3D effekt" loswerden moechtest, den ich oben faelschlicherweise durch eine virtuelle lichtquelle erklärt habe, dann hier meine erklaerung an deine wuensche angepasst nochmal: jetzt bildest du den gradienten fuer ein pixel. sprich in der diskreten welt bestimmst du die steigung der grauwerte in sämtliche richtungen. verfahren, wie man nun so eine steigung diskret abschätzt, gibt es wie sand am meer. such dir eine aus. die wohl einfachste methode ist, dir die direkten pixelnachbarn zu nehmen und dann eine gerade durch ihre grauwerte zu legen. dann ergeben sich 4 richtungen, die du betrachten musst. denjenigen mit der größten steigung suchst du dir aus. diese groesste steigung ist der grauwert fuer dein aktuelles pixel. das machst du dann mit allen pixeln |
![]() |
Es geht tatsächlich um die automatische Erkennung einer Pupille, da gibt es momentan 2 Verfahren die sich durchgesetzt haben. Die eine von John Daugman beruht auf einem Integro Differentiellen Operator. Die Formel würde ich gerne reinkopieren aber ich krieg das nicht hin. Die Formel ist hier zu finden www.cl.cam.ac.uk~jgd1000/irisrecog.pdf auf Seite 2 rechts oben deklariert als "(1)" Vielleicht verstehe ich die Formel oder die Erklärung dazu auch falsch. Soweit ich verstanden habe, sucht diese Formel die Parameter für den Kreis (definiert mit Koordinaten des Mittelpunkts und dem Radius für den die Summe der Richtungsableitungen "entlang des Kreises" maximal ist. Hier nochmal der Link der wird irgendwie umformatiert www . cl . cam . ac . uk/~jgd1000/irisrecog.pdf |
![]() |
keine garantie auf richtigkeit... ich hab das nur überflogen... das ist keine richtungsableitung entlang eines kreises, sondern ein ringintegral... die formel in worten ausgedrueckt macht folgendes: man gibt also einen kreismittelpunkt und einen radius vor. entlang des kreises integriert man alle grauwerte des bildes auf. das ergebnis wird normiert. dann macht man diesen kreis ein wenig groesser. man integriert wieder alle grauwerte entlang des kreises auf und normiert das ergebnis. die normierung ist dazu da, die ergebnisse vergleichen zu koennen. ein groesserer wert bedeutet also, dass man mehr dunkle pixel auf dem kreisring liegen hat. jetzt interessiert aber nicht der absolutwert der grauanteile, sondern der kontrast. daher bildet man die ableitung in r-richtung... also vom kreismittelpunkt weg und fängt damit die änderung der grauwerte ein beim vergrößern des kreises. das ganze rundet man ein wenig ab mit dem gauss... das macht die übergänge etwas weicher (damit lässt sich steuern, in wie weit der kreis leicht innerhalb der pupille landet). diesen vorgang macht man fuer jede koordinate als kreismittelpunkt und sucht sich den mit dem besten ergebnis aus. das ist also mit einem suchalgorithmus verbunden. und somit hast du ein kantenerkennungssystem gebastelt. lg |
![]() |
So ähnlich ist es auch gedacht, es sollen Gradienten entlang dieses Kreises aufsummiert werden, und der Gaussfilter ist für Gradient in und Richtung, also habe ich 2 Werte für den Gradienten die ich aufsummieren muss. In welcher Art und Weise muss ich diese beiden Gradienten aufsummieren? Einfach Wurzel(GradientX² GradientY²)? Das mache ich gerade und es führt nicht zum gewünschten Ergebnis. In der Durchführung ist soweit ich erkennen kann kein Fehler, es muss irgendwo anders liegen. Ich vermute an einer Fehlinterpretation meinerseits bzgl der "Richtungsableitungen entlang des Kreises" Leider ist die Fachliteratur zu diesem Thema auch spärlich gesät |
![]() |
du musst (skalarprodukt) berechnen. wobei vom kreismittelpunkt weg zeigt und die laenge 1 haben muss. du musst dieses also immer neu bestimmen, je nachdem wo du dich gerade auf dem kreis befindest. mit und meine ich die ableitungswerte in jeweils und richtung. wenn du das allerdings so machen moechtest (warum auch immer? helf ich dir gerade bei deiner doktorarbeit? dann muss da aber mein name mit drauf), dann musst du dir noch eine vernünftige normierung ausdenken... da fällt mir jetzt nichts zu ein kurz vor dem schlafen gehen... vielleicht demächst nochmal. viel erfolg |
![]() |
Wenn überhaupt dann wird es für ne Bachelorarbeit. Falls das so weiter geht wohl eher nicht. Danke schon mal ich guck es mir morgen nochmal in Ruhe an |
![]() |
Hallo, jetzt habe ich meinen Fehler gefunden. Anfangs dachte ich, etwas an der Umsetzung müsste falsch sein, am Verständnis von "Richtungsableitung entlang eines Kreises". Aber der oben beschriebene IDO(siehe Formel in dem verlinkten PDF) wurde korrekt umgesetzt, es gab keinen Fehler am Verfahren an sich. Das dachte ich nur weil die Pupille nicht korrekt erkannt wurde, obwohl mit genau demselben Bild als Beispiel in einer meiner Quellen gearbeitet wurde. Der Fehler liegt leider eher daran, dass die Glanzlichter in der Mitte des Bildes dieses Verfahren stören und eine entsprechende Vorverarbeitung (Glanzlicht-Bereinigung) dringend nötig ist. Dies wird in meiner Quelle auch erwähnt, aber leider erst 1 Kapitel später. Ich danke trotzdem Allen die sich Zeit genommen haben mir zu helfen, allen voran natürlich CKims. Danke! |