 Willkommen zu unserem nächsten Talk hier am Freitag beim Divock Bridging Bubbles. Es geht um ICC-Profile, Fab-Profile, eine der großen Bisterien von Computern. Direkt neben Druckern etwas, was nur sehr wenige verstehen. Also bin ich sehr froh, jetzt hier Amy einladen zu dürfen. Sie ist aus Argentinien und das ist ihr erster Divock Talk. Der hat schon einige gemacht, aber noch nie beim Divock. Und sie ist Teil des Krita-Entwicklungsteam für die, die euch von euch Krita vielleicht schon kennen. Das ist eine... Es ist sehr interessant, das jetzt mal von jemandem zu hören, der Fabmanagement wirklich versteht. Und ich bin sehr gespannt darüber mehr zu lernen. Also wie immer stellt gerne Fragen. Wir sammeln die in dem Pad. Und nach dem Talk werden wir also durch diese Fragen gehen. Ich schätze mal, es wird einige geben. Ich werde auf jeden Fall wahrscheinlich auch einige haben. Und wie immer, lasst uns loslegen. Und ich bin hier und wir sprechen nachher über die Fragen. Also Amy, ich übergebe an dich. Hab viel Spaß und bring uns was bei über Fabmanagement. So, hi, ihr kennt mich. Mein Name ist Amy Park. Das Thema von diesem Talk ist etwas, was ich bei meiner Arbeit sehr wichtig finde. Über die letzte Grenze in ICC Fab Profilen. So, ich bin ein Vollzeitentwickler für das Krita von KDE. Ich habe einen Hintergrund in Abräumen und in der Programmierung von solchen Systemen. Ich arbeite an vielen Open Source Projekten. Bei verschiedenen Projekten findet mich auf meiner Webseite www.tsamyspark.mi So, ihr wisst, dass ich mit hauptsächlich an Krita arbeite. Was ein Bitbearbeitung ist in der KDE Suite. Es ist eine Software für Bitbearbeitungsprofis. Und wir wollen auch so viele Hintergründe und Systeme unterstützen. Wir unterstützen Linux, Windows, MacOS und wir arbeiten auch an Android-Unterstützung. Um das zu machen, brauchen wir eine sehr große Test Suite, um möglichst viele Fehler aufzufangen, um später Leuten trennen zu sparen. Unser Hauptbranch hat im Moment über 4.500 C++ Einheiten, was insgesamt fast eine Million Zahlen kaut sind. Und die Komplexität steigt die ganze Zeit sehr schnell zwischen verschiedenen Compilern und Bibliotheks-Versionen und Betriebssystemen und CPU-Architekturen und solchen Sachen. Aber warum ist das jetzt wichtig? Das ist, weil bis vor Kurzem hat unsere Test Suite immer nur ein Farbraum getestet. Und das ist der YCBCR, das Profi. Wir konnten keinen anderen machen, weil es kaum andere frei verfügbare ICC-Profile gibt. Es gibt nur zwei von 1996 von Sun Systems, die auch copy-righted sind. So, und jetzt habt ihr wahrscheinlich eine Menge Fragen, wie zum Beispiel, was ist überhaupt YCBCR? Und was ist überhaupt ein Farbraum? Was ist ein ICC-Profil? Was ist irgendeiner von diesen verwirrenden Begriffen hier? Und das ist, was ich in diesem Talk beantworten möchte. Also ich möchte, habe das jetzt ganze hier ein paar Abschnitte aufgeteilt. Erstmal geht es um Farbmanagement. Dann gibt es eine Einführung in den YCBCR Farbraum. Und im dritten Teil zeige ich dann, wie man einen eigenen Farbraum erstellen kann. Und zuletzt noch ein paar abschließende Worte. Für den ersten Teil, das Farbmanagement. Gibt es hier eine sehr formale Definition im Farbmanagement? Reden Sie von Hardware, Software und Prozessen, um Farbe in verschiedenen, differen, meist digitale Systemen zu bearbeiten. Zu verwalten. Also warum brauchen wir das? Zweitens, wie wird das verwaltet? Und drittens, wie werden diese Farben definiert? So, für die erste Frage, warum brauchen wir Farbmanagement? Da ist das Ding, dass es meistens um Geräte unabhängige Übersetzungen von Farben geht. Also wie kann ich sicherstellen, dass die Farbe, die ich auf meinem Bildschirm habe, auf deinem Bildschirm auch so aussieht, oder auf dem Papier? Das ist wichtig, weil jedes Gerät hat andere Bildschirme oder andere, alles, was da involviert ist. Und deswegen ist diese Verwaltung wichtig, um die verschiedenen Geräte zu repräsentieren. Und sowohl bei Eingabegeräten als auch bei Ausgabegeräten. Eingabegeräte wie Kameras und Ausgabegeräte wie Bildschirme. Die zweite Frage ist, wie wird das verwaltet? Da müssen wir jetzt die drei Cs beantworten. Das eine ist Kalibrierung. Also wie kann man ein Gerät so einrichten, dass es einen reproduzierbaren Zustand hat? Zweitens die Charakterisierung. Da geht es um die Messerung davon, wie ein Gerät auf Farbeingaben antwortet und das dann zu beschreiben auf eine Geräte unabhängige Art und das in einem Geräteprofil quasi abzulegen. Und zuletzt die Umwandlung, der wichtigste Schritt. Das ist das Wichtigste für uns, da jetzt darum quasi ein Bild von einem Quellprofil zu umwandeln, sodass es auf das Zielprofil passt. So, nächste Frage. Wie werden Farben definiert? Die werden definiert als Koordinaten in einem Farbraum. Geometrisch gesehen ist ein Farbraum ein endimensionales Modell. Das heißt, verschiedene Farben können übersetzt werden in Vector-Koordinaten. Und wenn man schon mal ein bisschen mit der Wertentwicklung gearbeitet hat, kennt man ein paar Farbräume schon ganz gut. Das ist der eine davon, ist zum Beispiel RGB, Rot-Grün-Blau, der zweite ist HSV, Farbesättigung und Wert und HSL, das ist Farbesättigung und Helligkeit. Mathematisch gesehen ist ein Farbraum definiert als ein Koordinatensystem, indem wir einen Unterraum definieren und jede unterstützte Farbe wird quasi in einen bestimmten Punkt in diesem Unterraum übersetzt. Es ist quasi der Satz der unterstützten Farben ist das Gammit der Spannen dieses Unterraums. Um ein Farbraum aufzubauen, brauchen wir jetzt ein paar Dinge. Erstens brauchen wir drei unterschiedliche unabhängige Elemente, zum Beispiel ein Rot, ein Grün, ein Blau. Und zweitens brauchen wir einen Weißpunkt. Das ist quasi die Helligkeit, die Farbe, der das Licht quasi was benutzt wurde, um die Farben zu messen. Und das Ganze übersetzt sich dann in so ein Farbdiagramm und das sieht man hier auf der rechten Seite. Und das ist das YB-CDCR. Und jetzt gibt es hier verschiedene Möglichkeiten und da gibt es eins was definiert ist und das nennt sich Open Loop Management. Die Open Loop Verwaltung. In Open Loop Fahrverwaltung werden die Berechnungen in einem bestimmten Raum gemacht. Der nennt sich der Profilverbindungsraum, PCS. Und das ist quasi ein Zwischenraum, der Geräte unabhängig ist. Und das heißt, jede Transformation zu einem Gerät ist quasi insgesamt eine Umwandlung von und zu dem PCS. Das heißt, damit wir jetzt nicht eine Übersetzung von jedem einzelnen Gerät zum anderen machen, wie zum Beispiel von Kamera zu Drucker und was weiß ich. Wir können das Ganze umwandeln zu einer einzigen Umwandlung zu dem PCS-Raum und dann von dem PCS-Raum wieder zum nächsten Gerät. Jetzt kommen wir zu vier Schlüsselkomponenten. Zunächst haben wir diesen Perfect Connection Space. Die haben wir schon gesehen. Das zweite ist das Farbmanagement Module, eine Software Library, die die Umwandlungen durchführt. Das kommt meistens als Teil des Betriebssystems. Aber es gibt auch von anderen Anbietern was. Dann brauchen wir ein Geräteprofil, das halt die Daten enthält, umzuwandeln zwischen dem PCS und dem Quarbraum des Geräts. Und wir werden versuchen, einen solches zu machen. Und dann brauchen wir die Rendering Intents. Das ist also die Frage, was man macht mit Farben, die nicht im Garmut drin sind, die nicht dargestellt werden können. Und dann muss das Farbmanagement Module, das auch vorher sagtbar durchführen können. Okay. Wie verarbeiten die Farbwerte? Das ECC-Profil ist die aktuelle Spezifikation. Gibt da so Matrix und TRC und eine Möglichkeit, und dann gibt es noch Tabellen zum Nachschladen. Matrix, TRC, das ist eine Dreimal-Dreimal-Matrix und eine Tone Reproduction, also TRC. Diese Spezifikation kann nur von RGB zu Grauwerten konvertieren. Und dies wird nicht direkt gespeichert. Es gibt eine Farbproduktionsprovidere C für jeden Kanal. Und die Kontrollaten der drei Grundwerte geben dann eine Dreimal-Dreimal-Matrix. Dies ist hier die Informationsfluss von Gerätsfarbraum zum Profile Connection Space für die Umwandlung. Wenn man fängt also mit dem Geräteraum an, dann werden die Ton-Reproduktion-Kurven angewendet, um diese Matrix zu erreichen. Mit dieser Matrix kommt man dann weiter zum Profile Connection Space zu einem dreidimensionalen Vektor. Um dies umgekehrt zu machen, muss man einfach die Umwandlung in eine umgekehrten Richtung ausführen. Man fängt dann mit dem Profile Connection Space. Nun eröffnet man die inverse Matrix an, die inverse Ton-Reproduktion-Kurven und kommt dann zum Geräte-Raum. Das Wichtigste ist, dass all dies automatisch durchgeführt werden muss vom Farbmanagement-Modul. Und das zweite Mechanismus muss ich nicht sagen, haben Sie Nachschlagetabellen. Da geht es um N-Kanal-Fahrpräume WC-MyK oder für komplexere Farbumwandlungen für die einfach die einfache Matrix der Ton-Reproduktion-Kurve nicht ausreicht. Zunächst wird die Transformationsrichtung explizit in verschiedenen Tags gespeichert. Und es gibt zwei wichtige Wege, in die man diese Umwandlung durchgeführt werden kann. Das erste Standversion ist, dass man 8 oder 16 mit vorzeichendlose Ganzzahlen verwenden kann. Um, dann geht es A nach B0 zum Profi-Connection-Space und B nach A0 vom Profi-Connection-Space. Das sind also Tags, die verwendet werden. Und die Alternative kann aber auch sein, dass man mit Gleitkommazahlen arbeiten kann. Dann ist die Rede von D nach B0 vom Gerät zum PCS und B nach D0 vom Profi-Connection-Space. Und man sollte bemerken, dass man diese also voran bekommt, wenn das unterstützt wird. Die Ganzzahlen-Version A zu B0 und B zu 0 sind Strukturen für die Transformation von Farben. Bis zu fünf Elemente und vier mögliche Arten, die zum Nutzen werden unterstützt. Zum Beispiel vom Gerät zum Profi-Connection-Space, können wir eine Wir können wir je benutzen, das sind Tonen, Tonen, THC, dann kann man das verkehren mit einer Matrix. Dann gibt es noch A, Farb, Nachstattabelle und dann B. Und es gibt in Modus der schwierigste oder komplexeste. Und auch wenn der Speichel ist das Schwierigste, das größte, A, dann Farb, Nachstattabelle, dann M, die Matrix und dann B. Für die Konvertierung vom Profi-Connection-Space wird die umgekehrte Richtung angewendet. Und hier sollte man bemerken, dass die Matrix eine vierte Spalte hat, eine Offset-Spalt. So sieht es dann aus, wie man mit Color-Lookup-Tables, also Farb-Nachschlag-Tabellen, durchführt. Wir fangen an mit dem Geräte-Farbraum. Dann haben wir hier diese A-Kurven, eine Kurve für jeden Kanal. Die Nachschlag-Tabelle, dann die M-Matrix, dann wird die Matrix angewendet, dann wird B angewendet und dann endet man eben PCS im Profi-Connection-Space. Die Richtung wird alles umgekehrt. Alle Kurven, die jetzt angewendet werden, sind die Inversen des Vorringes, die Matrix, die M-Kurven, die Nachschlag-Tabelle und die A-Kurven. Die Alternative, die D nach B0 und B nach D0, das sind also Geltron-Transformationen und da kann jetzt jede Komponente, die Matrix, die Transformation-Kurven, die können also so oft wie gewollt in jeder Reihenfolge angewendet werden und Farb-Nachschlag-Tabellen auch noch. Es gibt allerdings das Problem, dass Apples-Call-A-Sync-Viewer das nicht unterstützt. Die parametrischen Kurven, die hier unterstützt werden, die Typen sind sehr viel weniger und warum das wichtig ist, sehen wir dann im letzten Abschnitt. Und der letzte Teil eines solchen Profils ist die Illumination. Die Quellen hier werden Illuminanten oder Weißpunkte genannt. Und das ICC verwendet vor allem den B50 Weißpunkt. Das ist also das Licht kurz vor Dämmerung oder kurz nach Abenddämmerung. Und viele Farbbremmen benutzen andere Weißpunkte. Und in diesem Fall müssen wir angeben, dass wir die Dämerung und die Dämerung haben müssen. Wir müssen angeben, was eine chromatische Adaptionsmatrix ist. Sie gleicht die Farben an von dem Verwindenweißpunkt an zu dem unter D50. Die sind sehr leicht online suchbar und gibt in der Natur viel Forschung. Man fängt an mit dem Wert für alle Bedingungen. Dann haben wir eine Adaptionsmatrix und bekommen den angepassten Wert für den ICC die 50 Weißpunkt. Dann gibt es diese YCBCR Farbraum. Das ist das, was wir einen gerätunabhängigen Farbraum nennen und einen encoding in diesem Farbraum. Es ist gerätunabhängig, und nicht von einem bestimmten Gerät abhängt. Es ist ein Farbraum, weil es eine mathematische Transformation des RGB-Raums ist. Und es ist ein encoding, weil es angibt, wie digital repräsentiert werden soll. Also 8 oder 10 bits, ganz Zahl oder Gleitkommazahl und auch den Bereich des encodings für alle diese Optionen. Warum ist YBCR so ein komplexer Farbraum? Es geht um Farbsignale für Fernsehen. Nach Tunis 2016 muss hier abgedeckt werden. Erstens die Farbalance, die eingehalten werden muss. Es gibt auch ein Drifting. Wenn das passiert, ist das ein Problem. Es soll eine Kompatibilität mit Monochromen, also Graustufensystemen erhalten werden. Und deswegen wird die Farbe aufgeteilt in Luminanz und Chromatizität Komponenten. Und auch wichtig, wir müssen dies auch effizienter halten, soweit möglich. Also für einen einfachen, einen einzelnen 1080p Frame wenn es 8 mit RGB unkomprimiert sein soll. Also für jeden einzelnen Frame ist es unmöglich heutzutage und das war vor allem auch vor 20 Jahren unmöglich. Was also macht YBCR? Es transformiert das RGB-Pixel in drei Signalwerte, die Y, CB und CR genannt werden. Das erste Y ist das Luminanzsignal. Was wir hier sehen als den Grauwert. Individiv ist in unserer Augen für die grüne Komponente am empfindlichsten. Und deswegen ist also ein großer Teil des grünen Wertes hier relevant. Und natürlich gibt es einen anderen kleineren Breitag von R und B. CB und CR zusammen sind das Luminanzsignal. Das sind zwei gegensätzliche Farbunterstehsignale. Denn sie kommen von CB von Blue minus Luma und CR ist Rot minus Luma. Dies wird festgelegt von der International Telecommunications Union festgelegt in zwei Empfehlungen. Dies wurde zuletzt 2011 aktualisiert und geht um Standarddefinitionsübertragung, also kleiner als 480p. Das Ziel hier ist Kompatibilität mit alten Receivern. Und das soll der D65-Weißkontier anwesiert werden. Dies ist die Matrix mit einer separaten Version in die Komponente Y, CB und CR. CR separiert. Die zweite Attentive, die zuletzt 2015 aktualisiert wurde, ist die BT709. Da gibt es aktualisierte Versionen über hoch High Definition-Übertragung. Und hier wird also die Kompatibilität mit Altgeräten fallen gelassen. Hier geht es zu mehr Umgenauigkeit. Auch hier wird der D65-Weißpunkt angestreuert und dies sind die Definitionen. Und für den Bereich von Y, CB, CR haben wir analoge Schaltkreise, die um die es geht. Der Bereich für 8-Bits Integers sind 16 bis 135 für Y und für CB und CR geht es von 16 bis 140. Und der extra Raum ist dafür da, damit das übertragende Signal auch Ausreise haben kann. Beide Matrizen, die hier verwendet werden, sind auch im Y-Gleitkammerzahlen Daten. Also erste Frage, was ist der Bereich? Und dies wird nur in BT601 erklärt in einem sehr speziellen Abschnitt des Standards. Und das heißt, dass der Y-Wert von minus von Y geht von 0 bis 1 und CB und CR von minus 1 halb bis plus 1 halb. Für die Gamma-Korektur verwendet Y-CW, CR ein Gamma-Korrigiertes Signal Diesen Gamma-Korektur heißt optoelektronische Transformationsfunktion, Transferfunktion. Und da geht es um die Nicht-Linarität der Sensoren oder der Anzeigegeräte. Und wir sehen hier die Gleichungen. Es gibt sehr wenig Informationen wie stark Y-CBC eigentlich benutzt wird. Deswegen schauen wir Alternativen an. Es gibt die Old School Kartonröhren für Fernsehgeräte, die haben ein Potenzgesetz, dem sie folgen. Das ist die Beziehung zwischen dem Licht und der Spannung. Und der Exponent Gamma hängt von Geräte ab. Die Effizielle Empfehlung ist in ETURBT1886 definiert. Und der Standardwert für Gamma ist 2,4. Also, wie man jetzt hier eigene Profile machen kann, macht man das ja durchaus. Ein minimales SGB-Profil ist häufig ganz interessant zu kriegen. Übersetzernotiz, der Stream hat gerade abgebrochen auf unserer Seite. Es gibt wohl technische Schwierigkeiten. Okay. Es muss jetzt gewarten werden, dass der Speaker einmal sein Interface neuletzt. Wir warten jetzt ein paar Sekunden hier, dass der wiederkommt. Und lassen Sie mal kurz wissen, dass er die Verbindung verloren hat. Wir können die Folien immer noch sehen. Ich kann natürlich versuchen, das jetzt zu übernehmen und erklären, was ich sehe. Aber ich glaube nicht, dass ich dazu fähig bin. Okay, gut. Wir werden noch mal, dass wenn ihr Fragen habt, ihr das Pad benutzen könnt. Da sind schon zwei Fragen drin. Und genau. Wunderbar, er kann uns hören. Dann gebe ich wieder zurück. Los geht's. Okay, wo waren wir? Wunderbar. Wunderbar. Wunderbar. Wunderbar. Wunderbar. Wunderbar. Okay, wo waren wir? Es ist passiert durchaus, dass man eigene Farbprofile entwirft. Zum Beispiel Facebook hat eins erstellt. Und Stone hat auch viel Wissenschaft zu wohlverhaltenen Profilen. So. Was ist mit YCBCR? Es ist relativ einfach, ein Profil aus dem Primärfarben und dem Weißpunkt zu machen. Aber YCBCR ist ein bisschen komplexer. Die Übersetzung wird in zwei Schritten gemacht. Man muss die Matrix applizieren und die Gamma-Kurven, um lineares RGB zu kriegen. Und dann können wir die Primärfarben und den Rest applizieren, um den PCS zu kommen. Das ist wirklich machbar und nötig, dass man das für die eigene Nutzung macht. Und die Antwort ist ja. Wir machen erst mal ein Profil, das YCBCR zu PCS übersetzt. Also da gäbe es jetzt eine Übersetzung, wo wir zu einer Zwischenmatrix übersetzen. Dann die Korrektionskurven applizieren und das Ganze dann mit der Matrix in PCS überwandeln. Wenn wir mit dem anderen Standard arbeiten, müssen wir noch die chromatische Adaptionsmatrix benutzen. Also haben wir eine Transformation von A nach B, 0 und B nach A, 0. So, jetzt müssen wir erstmal die Wertebereiche anpassen. Zum Beispiel diese 0 bis 1 und minus 1 halb bis plus 1 halb. Wir müssen den YCBCR auf die Zwischenmatrix übersetzen. Dazu muss die Matrix aus der Spezifikation invertiert werden. Dann müssen die CRCs angewandt werden und zuletzt muss die Übersetzungsmatrix in den PCS angewandt werden. Für den A nach B, 0 Fall sehen wir hier, das ist relativ einfach, weil es automatisch hier unterstützt wird. Aber für den D nach B, 0 ist es nicht der Fall. Aber den A nach B, 0 können wir die letzte Übersetzung nicht einfach so machen. Das ist wahrscheinlich was, was die ICC übersehen hat. Aber das heißt, dass wir eine gesamtliche Kurve, eine Stückweise Kurve benutzen müssen und wir müssen außerdem das Offset die Verschiebung danach noch anwenden. Also für die A nach B, 0 Konversion invertieren wir erstmal die Matrix aus der Spezifikation. Dann machen wir die YCBCR nach RGB Intermediate Lookup-Table. Dann brauchen wir die CRC, die das Ganze in das M Elemente machen und dann kann das alles in den Matrix Elemente in den PCS gewandt werden. Für die D nach B, 0 Version müssen alle Schritte als Einzelschritte gemacht werden. Das heißt, wir müssen jetzt also einzelne Abschnitte von der Kurve nehmen. Aber dazu benutzen wir meistens nur ungefähr so 10% können es entsprechend ein bisschen speichersparen. Da werden dann Dinge etwas einfacher. Wir können die PCS nach RGB Konversion anwenden. Wir invertieren das Ganze und benutzen dann die TRCs und dann wenden wir einfach die Matrix an, die wir direkt aus der Spezifikation übernehmen können. Und zuletzt machen wir noch die Bereiche, die Wertebereiche passen wir wieder an und da können wir das wieder zusammen mit dem Gleichen wie der Schritt 3 in A nach B, 0 machen. Aber den D nach B, 0 passt das direkt gleich in die Matrix. So, zu dieser letzter Schritt, die chromatische Adaption ist zum Glück relativ einfach. Die 65 bis die 50 sind da sehr bekannt und das können wir dann direkt in SIDGB sehen alternativ. Da können wir das auch noch über die CMMs machen. So, kommen wir zu den Schlüssen. Partmanagement ist ein komplexes Beast. Ein wirklich sehr, sehr komplexes Beast. Was haben wir behandelt? Wir haben die Anfänge von Partmanagement besprochen und wie der YCBCR-Fahrerraum speziell ist. Wir haben nicht wirklich über Implementierung gesprochen, weil das wäre, glaube ich, noch eine komplette weitere Stunde an Talks. Ich habe den kompletten Code hier auf GitHub gestellt, wenn ihr jetzt schön angucken wollt. Der ist auf emi-spark-slash-ycbcr-icc-profile. So, das ist jetzt alles schon bei den Nightleys von Krita verfügbar. Das ist also nicht empfohlen, dass man das in produktiver Nutzung verwendet, aber ihr könnt es auf jeden Fall schon runterladen. Danke fürs Zugucken und ich bin jetzt offen für Fragen. Okay, danke, emi, für den Talk. Ja, es sieht auf jeden Fall sehr komplex aus und definitiv noch komplexer, als ich es erst erwartet habe. Ich habe hier zwei Fragen, die ich mal stellen kann von dem Chat. Wie vergleicht sich Krita zu anderen Bildbearbeitungstools? Gibt es irgendwas besonders Gutes oder Schlechtes oder Durchschnittliches, worauf sollte ich da achten, als Nutzer? Also, verglichen mit Photoshop zum Beispiel, haben wir bei Krita natürlich keine Pantone-Farb-Sets, weil wir die Spezifikationen nicht haben. Aber wir haben ein Farb-Matching-Modul, mit dem man da manche Sachen merken kann. Und auch bei den Optimierungen fehlt uns noch was. Aus einem anderen Blickwinkel haben wir viele Farbräume abgedeckt, die andere zum Beispiel nicht absetzen. Vor allem in mehrdimensionalen, zum Beispiel aber auch zu einer CBCR, was kaum jemand anderes unterstützt. So, und die nächste Frage, auch wieder aus einer Nutzerperspektive. Könnt ihr vielleicht gute Online-Ressourcen oder gute Schritt-für-Schritt-Guides für Nutzer empfehlen, die alle diese Schritte noch einmal besser erklären, alle diese Schritte von Farb-Management, der es nicht unbedingt in den Details von Spezifikationen vielleicht irgendwas champion. Es gibt ein sehr gibtes Buch von O'Reilly, das ich vielleicht teilen kann nachher. Es gibt eine bestimmte Abschnitte in der Dokumentation von Krita bei docs.krita.org. So, ich glaube, das war's da schon. Danke, Amy. Vielen Dank. Wir werden nachher noch in Big Blue Button sprechen gleich. Wir wollen noch ein bisschen mehr sprechen können. Dann kannst du vielleicht auch noch ein bisschen was zeigen. Das wäre natürlich super. Das ist aber erst mal alles für uns. Wir sind jetzt ein paar Minuten früher fertig. Das ist super. Dann können wir uns jetzt gleich noch ein bisschen ausruhen und das vielleicht noch ein bisschen verarbeiten, das ganze Komplexe. Vielen Dank noch mal. Wir hoffen, dich vielleicht nächstes Jahr noch mal zu sehen. Ich wünsche dir das für die nächsten paar Abentehe zu Krita.