Der Dalt Algorithmus wird nun von dem Dalt-Button ausgeführt. Gleichzeitig wurde die Funktion showImage geschrieben, um Code zu verschlanken und lediglich die Switchfunktionen simulate und daltonize für die Auswahl der Simulationsart zu nutzen.
PS: Mehrere Bilder zum Testen eingefügt
Zum Aufrufen des Algorithmus in der GUI muss ein Button Objekt der tkinter Klasse erstellt werden. Dieses wird erst nach einem erfolgreich ausgewählten Bild aktiv! Als nächstes steht die Implementation der daltonize-Funktion an, die durch command='daltonize' ausgeführt wird.
Lookup-Table für die Entfrenung der Gamma Korrektur implementiert
Zur Besseren Performance wird eine Lookup Table benötigt. Diese gleicht dynamisch alles Werte ab anstatt bei jedem einzelnen Pixelwert die Berechnung durchzuführen.
Anders als bei den anderen Fehlsichtigkeiten ist ein Überlauf des Wertebereichs möglich. Somit werden Werte, die 255 überschreiten standardmäßig auf diesen Maximalwert gesetzt.
Anders als bei den anderen Fehlsichtigkeiten ist ein Überlauf des Wertebereichs möglich. Somit werden Werte, die 255 überschreiten standardmäßig auf diesen Maximalwert gesetzt.
Betrachtung des Pixels (40,152) im Fall Tree Bild ergab die Lösung für das Aliasing:
Bei negativen Werten in der Matrix T^1*sim_mat*T ergeben sich Überläufe. Lösung durch Anpassen der GammaKorrektur auf Abstände statt Absolutwerte.
Statt das Array doppelt mit der flipud Funktion zu spiegeln, wird es direkt im Einleseprozess von BGR(OpenCV) zu RGB(Pillow und Algorithmus) konvertiert.
Durch Anpassungen in den Simulationsmatrizen ergeben sich Abschwächungsmuster. Somit können für verschiedene Probanden unterschiedliche Stärken der Sehschwäche simuliert werden.
Erste Funktionen in den Klassen implementiert; Erste Test gemacht. Ergebnisse noch nicht zufriedenstellend. Auch Implementierung einer Scrollbar nötig!!
Um den Grad der Faarbblindheit korrekt zu Simulieren, muss ein Widget eingebaut werden, welches den prozentualen Anteil der Differenz zwischen Simulation und echtem Wert vergleicht und mit dem ausgewählten Wert (z. B. 80%) neu gewichtet.
Um den Grad der Faarbblindheit korrekt zu Simulieren, muss ein Widget eingebaut werden, welches den prozentualen Anteil der Differenz zwischen Simulation und echtem Wert vergleicht und mit dem ausgewählten Wert (z. B. 80%) neu gewichtet.
Durch die NumPy Funktion numpy.flipud konnte das RGB Array umgedreht, der Algorithmus des Papers angewendet und schließlich eine Rücktransformation der RGB Werte stattfinden. Die erhaltenen Bilder entsprechen nun den Erwartungen.
Anders als im Paper werden die RGB Werte nicht in der Reihenfolge Rot Grün Blau (RGB), sondern in OpenCV als Blau grün rot (BGR) abgespeichert.
Also ist ein e Funktion zum "Umdrehen" der Matrix nötig!
Anders als im Paper werden die RGB Werte nicht in der Reihenfolge Rot Grün Blau (RGB), sondern in OpenCV als Blau grün rot (BGR) abgespeichert.
Also ist ein e Funktion zum "Umdrehen" der Matrix nötig!
Trotz Anpassungen sind noch einige Verbesserungen nötig: Grauanteile, wo keine sein sollten treten auf. Die Berechnungsalgorithmen müssen überprüft werden.
Einfügen der allgemeinen Tranformationsmatrix T und der Inversen T^-1
Zwar hatten wir bereits die M_HPE und M_sRGB eincodiert, jedoch lassen sich beide Matrizen mit Multiplikation bereits zusammenfassen, was den Code übersichtlicher macht. Zudem reicht nach Gammakorrektur nun eine Matrixmultiplikation für die komplette Konvertierung aus!
Vor der eigentlichen Anwendung des Algorithmus müssen die Gammakorrekturwerte gefiltert und vor der Darstellung des bearbeiteten Bildes wieder hinzugefügt werden.