-
GEBIET DER OFFENBARUNG
-
Diese Offenbarung betrifft allgemein eine Malsimulation und insbesondere die Simulation eines Öl-Malpinselstrichs bzw. Ölgemälde-Pinselstrichs mittels neuronaler Netzwerke.
-
HINTERGRUND
-
Es wurden Malsimulationsprogramme entwickelt, die künstlerische Ölgemälde auf einem Computer simulieren. Herkömmliche Ölgemälde-Simulationsprogramme stellen typischerweise einen virtuellen Malpinsel zur Verwendung durch einen Künstler zum Malen (Erzeugen eines Gemäldes) auf einer digitalen Leinwand bereit. Diese Programme versuchen, die Textur von Ölgemälden und die Art und Weise, in der die Borsten des Malpinsels die Ölfarbe auf die Leinwand streichen, zu simulieren. Viele Ölfarben-Simulationsprogramme modellieren Öl-Malpinselstriche durch Prägen eines vordefinierten 2D-Pinselabdrucks entlang eines Pinselstrichwegs und simulieren eine Farbübertragung zwischen dem Pinselstrich und der Leinwand mittels Pickup-Kartierungen. In diesen Simulationen wird die Farbe häufig in 2D dargestellt. In der Realität sieht jedoch ein physisches Ölgemälde nicht wie ein flaches 2D-Bild aus. Die Farbe in einem physischen Ölgemälde weist eine Tiefe und eine Textur auf. Als Ergebnis können viele der herkömmlichen Malsimulationsprogramme reale Farbpinselstriche, die in physischen Ölgemälden verwendet werden, nicht realistisch modellieren.
-
Eine realistische Darstellung der Oberflächendicke von Ölfarben auf einer Leinwand ist erforderlich, um ein künstlerisches Ölgemälde auf einem Computer zu simulieren. Eine solche Darstellung bezieht sich auf die Dicke der aufgebrachten Ölfarbe, die sich über die Leinwandoberfläche in der z-Richtung erstreckt (aus der Leinwand heraustritt). Eine realistische Darstellung der Oberflächendicke von Ölfarben erfordert das Modellieren von realistischen Öl-Malpinselstrichen. Wie es vorstehend erwähnt worden ist, ist ein Ansatz, Öl-Malpinseistriche zu modellieren, vordefinierte 2D-Pinselabdrücke zu prägen und die Farbübertragung zwischen dem Pinselstrich und der Leinwand zu simulieren. Leider erzeugt das Modellieren von Öl-Malpinselstrichen in dieser Weise Darstellungen der 3D-Oberflächendetails von Pinselstrichen, die eine niedrige Qualität aufweisen, und demgemäß Simulationen eines Ölgemäldes mit einer niedrigen Qualität.
-
Ein weiterer Ansatz zum Modellieren von Öl-Malpinselstrichen ist die Simulation von vielen Hunderten oder sogar Tausenden von einzelnen Borsten eines Malpinsels und die Interaktion zwischen den Borsten zum Erzeugen einer genauen Pinselform. Obwohl dieser Ansatz Darstellungen der 3D-Oberflächendetails von Pinselstrichen mit höherer Qualität erzeugt, erfordert dieser Ansatz leider die Verwendung einer komplexen Fluidsimulation. Als solches ist dieser Ansatz berechnungsmäßig sehr aufwändig (was auch den Stromverbrauch erhöht) und nicht für Rechenvorrichtungen brauchbar, denen die erforderliche Rechenleistung fehlt, wie z.B. mobilen Computern und mobilen Vorrichtungen, um nur einige wenige Beispiele zu nennen.
-
Andere mögliche Ansätze umfassen datenunterstützte Textursyntheseansätze zum Modellieren von Öl-Malpinselstrichen. Diese Ansätze umfassen typischerweise das Sammeln eines Vorrats von Beispiel-Pinselstrichsegmenten üblicherweise von Fotografien von realen Pinselstrichen. Dann werden für einen eingegebenen Malpinselstrich die Beispiel-Pinselstrichsegmente identifiziert, die mit den eingegebenen Strichwegformen am Besten übereinstimmen, und eine Optimierung wird durchgeführt, um die identifizierten Beispiel-Pinselstrichsegmente nahtlos zu verbinden. Leider erzeugen diese Ansätze häufig wiederholte Muster oder in sonstiger Weise begrenzte Muster, die nicht den vollen Satz der Dynamik und der Variationen eines realen Pinselstrichs erfassen.
-
Figurenliste
-
Die beigefügten Zeichnungen sind nicht maßstabsgetreu. In den Zeichnungen wird jede identische oder nahezu identische Komponente, die in verschiedenen Figuren dargestellt ist, durch ein entsprechendes Bezugszeichen dargestellt, wie es ersichtlich ist, wenn es im Zusammenhang gelesen wird.
- 1 ist ein Diagramm, das Beispiele für Komponenten zum Erzeugen von Trainingsdaten für ein neuronales Netzwerk gemäß mindestens einiger hier beschriebener Ausführungsformen zeigt.
- 2 ist ein Diagramm, das Beispiele für Trainingsdateneingaben in ein neuronales Netzwerk gemäß mindestens einiger hier beschriebener Ausführungsformen zeigt.
- 3 ist ein Blockdiagramm, das schematisch ein Beispiel für ein Stricherzeugungssystem zeigt, bei dem ein einzelnes neuronales Netzwerk eingesetzt wird, gemäß mindestens einiger hier beschriebener Ausführungsformen.
- 4 ist ein Blockdiagramm, das schematisch das Beispiel für das Stricherzeugungssystem von 3 zeigt, bei dem eine Mehrzahl von Instanzen eines trainierten neuronalen Netzwerks eingesetzt wird, gemäß mindestens einiger hier beschriebener Ausführungsformen.
- 5 ist ein Blockdiagramm, das schematisch eine Mehrzahl von Borstentrajektorienkartierungssegmenten und entsprechenden Höhenkartierungssegmenten zeigt, die durch eine Mehrzahl von trainierten neuronalen Netzwerken erzeugt worden sind, gemäß mindestens einiger hier beschriebener Ausführungsformen.
- 6 ist ein Flussdiagramm, das ein Beispielverfahren zum Rendern eines neuen Malpinselstrichs gemäß mindestens einiger hier beschriebener Ausführungsformen zeigt.
- 7 zeigt ausgewählte Komponenten eines Beispielrechensystems, das zur Durchführung jedweder der Techniken, die verschiedenartig in der vorliegenden Offenbarung beschrieben sind, gemäß mindestens einiger hier beschriebener Ausführungsformen verwendet werden kann.
-
In der folgenden detaillierten Beschreibung wird auf die beigefügten Zeichnungen Bezug genommen, die einen Teil davon bilden. In den Zeichnungen geben entsprechende Symbole typischerweise entsprechende Komponenten an, falls sich aus dem Zusammenhang nichts Anderes ergibt. Die in der detaillierten Beschreibung, den Zeichnungen und den Patentansprüchen beschriebenen veranschaulichenden Ausführungsformen sind nicht beschränkend aufzufassen. Andere Ausführungsformen können eingesetzt werden und andere Veränderungen können durchgeführt werden, ohne von dem Wesen oder Umfang des hier offenbarten Gegenstands abzuweichen. Die Aspekte der vorliegenden Offenbarung, wie sie hier allgemein beschrieben und in den Figuren gezeigt sind, können in einer breiten Vielfalt von verschiedenen Konfigurationen angeordnet, ersetzt, kombiniert, getrennt und gestaltet werden, die hier alle explizit vorgesehen sind.
-
DETAILLIERTE BESCHREIBUNG
-
Hier sind Techniken zur Simulation von Öl-Malpinselstrichen mittels eines neuronalen Netzwerks beschrieben, das auf der Basis einer sogenannten Höhenkartierung, die eine vorliegende Farbe auf einer Leinwand angibt, spezifisch trainiert wird, wie es nachstehend weiter erläutert wird. Die Simulation von Öl-Malpinselstrichen stellt eine realistische Rekonstruktion der Oberflächendicke der Ölfarbe bereit, die zur Bereitstellung einer hochqualitativen, realistischen Simulation eines Ölgemäldes verwendet wird. Gemäß einer Ausführungsform wird das neuronale Netzwerk mittels eines überwachten Lernens trainiert, um eine Funktion von einer großen Anzahl von Trainingsdatensätzen abzuleiten. Insbesondere umfasst jeder Trainingsdatensatz eine Höhenkartierung einer vorliegenden Farbe auf einer Leinwand, eine Borstentrajektorienkartierung, die einen Malpinselstrich darstellt, und eine Basiswahrheit („ground truth“), welche die erwartete Höhenkartierung ist, die aus dem Aufbringen des Malpinselstrichs auf die vorliegende Farbe auf der Leinwand resultiert. Sobald es trainiert ist, ist es das Ziel eines trainierten neuronalen Netzwerks, für eine gegebene Höhenkartierung einer vorliegenden Farbe auf einer Leinwand und eine Borstentrajektorienkartierung, die einen neuen Malpinselstrich darstellt, eine Höhenkartierung einer Farbe auf der Leinwand abzuleiten, nachdem der neue Malpinselstrich auf die Leinwand aufgebracht worden ist. D.h., das trainierte neuronale Netzwerk leitet die neue Farbe auf der Leinwand, die aus dem Aufbringen eines neuen Malpinselstrichs auf die Farbe resultiert, die sich vor dem neuen Malpinselstrich auf der Leinwand befunden hat, ab. In einigen Ausführungsformen ist das neuronale Netzwerk ein neuronales Faltungsnetzwerk.
-
In einigen Ausführungsformen wird ein hochqualitativer Ölgemäldesimulator zum Erzeugen des Trainingsdatensatzes zur Verwendung zum Trainieren eines neuronalen Netzwerks genutzt. Der Simulator nutzt eine volumetrische 3D-Fluidsimulation zum Simulieren des Farbmediums, wie z.B. der Ölfarbe, auf einer digitalen Leinwand. Zum Erzeugen eines Trainingsdatensatzes werden eine Höhenkartierung einer vorliegenden Farbe auf einer Leinwand und ein Malpinselstrich in den Simulator eingegeben, der wiederum eine Basiswahrheit auf der Basis des Paars aus der eingegebenen Höhenkartierung und dem eingegebenen Malpinselstrich erzeugt. Der Simulator erzeugt auch eine Borstentrajektorienkartierung des eingegebenen Malpinselstrichs. Der Trainingsdatensatz umfasst die Höhenkartierung, die in den Simulator eingegeben worden ist, und die Borstentrajektorienkartierung und die Basiswahrheit, die durch den Simulator erzeugt worden sind.
-
In einigen Ausführungsformen wird ein Öl-Malpinselstrich unter Verwendung von einer oder mehreren Instanz(en) eines trainierten neuronalen Netzwerks simuliert. Beispielsweise kann ein einzelner langer Öl-Malpinselstrich in eine Mehrzahl von Öl-Malpinselstrichsegmenten segmentiert werden und jedes Öl-Malpinselstrichsegment kann durch eine jeweilige Instanz des trainierten neuronalen Netzwerks verarbeitet werden. In solchen Fällen ist es das Ziel jeder Instanz des trainierten neuronalen Netzwerks, für eine gegebene Höhenkartierung einer vorliegenden Farbe auf einer Leinwand und ein jeweiliges Borstentrajektorienkartierungssegment, das ein entsprechendes neues Malpinselstrichsegment darstellt, ein Höhenkartierungssegment einer Farbe auf der Leinwand abzuleiten, nachdem das entsprechende neue Malpinselstrichsegment (das jeweilige Borstentrajektorienkartierungssegment, welches das entsprechende neue Malpinselstrichsegment darstellt) auf die Leinwand aufgebracht worden ist. D.h., jede Instanz des trainierten neuronalen Netzwerks leitet das neue Farbsegment auf der Leinwand aus dem Aufbringen eines neuen Malpinselstrichsegments auf die Farbe ab, die sich auf der Leinwand vor dem neuen Malpinselstrichsegment befunden hat.
-
Das Simulieren von Öl-Malpinselstrichen unter Verwendung von trainierten neuronalen Netzwerken erzeugt Darstellungen der 3D-Oberflächendetails von Pinselstrichen mit einer höheren Qualität ohne die Verwendung einer komplexen Fluidsimulation. Demgemäß sind Ölgemälde-Simulationsanwendungen, die Malpinselstriche mittels trainierter neuronaler Netzwerke simulieren, zum Ausführen auf Rechenvorrichtungen, wie z.B. mobilen Computern und mobilen Vorrichtungen, geeignet, die keine ausreichende Rechenleistung zur Durchführung einer Fluidsimulation aufweisen. Obwohl die Ausführungsformen und/oder Beispiele nachstehend im Zusammenhang mit Ölfarben und Ölgemälden beschrieben sind, sollte im Hinblick auf diese Offenbarung beachtet werden, dass die Ausführungsformen und/oder Beispiele nicht auf Ölfarben und Ölgemälde beschränkt sind, sondern auch auf dicke Farben, wie z.B. Acrylfarben, und Gouache, um nur einige wenige Beispiele zu nennen, im allgemeinen Sinn anwendbar sind.
-
Die 1 ist ein Diagramm 100, das Beispielkomponenten zum Erzeugen von Trainingsdaten für ein neuronales Netzwerk gemäß mindestens einiger hier beschriebener Ausführungsformen zeigt. Die erzeugten Trainingsdaten werden zum Trainieren eines neuronalen Netzwerks verwendet, um unter Verwendung einer ersten Höhenkartierung einer vorliegenden Farbe auf der Leinwand und einer Borstentrajektorienkartierung als Eingaben eine zweite Höhenkartierung einer vorliegenden Farbe auf der Leinwand abzuleiten, nachdem ein neuer Malpinselstrich aufgebracht worden ist. Die Borstentrajektorienkartierung, die in das neuronale Netzwerk eingegeben wird, stellt den neuen Pinselstrich dar. Wie es im Diagramm 100 gezeigt ist, umfassen die Komponenten zum Erzeugen der Trainingsdaten für ein neuronales Netzwerk einen Simulator 102, eine Höhenkartierung 104 und einen Malpinselstrich 106 (der hier austauschbar als „Pinselstrich 106“ bezeichnet wird, falls sich aus dem Zusammenhang nichts Anderes ergibt).
-
In einigen Ausführungsformen ist der Simulator 102 eine Ölgemäldesimulationsanwendung, welche die Textur von Ölfarben und den Vorgang, dass die Borsten eines Malpinsels die Ölfarbe über eine digitale Leinwand (die hier austauschbar als „Leinwand“ bezeichnet wird, falls sich aus dem Zusammenhang nichts Anderes ergibt) streichen, simuliert. In einigen Fällen kann der Simulator 102 eine Fluidsimulation zum Simulieren der einzelnen Borsten (z.B. Tausenden von einzelnen Borsten) eines Malpinsels und der Wechselwirkungen zwischen den Borsten des Malpinsels zum Erzeugen eines 3D-Modells des Malpinsels nutzen. Das 3D-Modell des Malpinsels wird für eine Wechselwirkung mit dem Farbmedium zum Simulieren der physikalischen Dynamik der Farbe auf der Leinwand genutzt. Der Simulator 102 kann es Nutzern (z.B. Künstlern) ermöglichen, mit simulierten Ölfarben mit einem Stift auf einem Berührungsbildschirm zu interagieren.
-
Die Höhenkartierung 104 ist eine Darstellung einer vorliegenden Farbe auf der Leinwand. Die Höhenkartierung 104 stellt die Dicke der Farbe dar, die auf der Leinwand vorliegt. In einigen Ausführungsformen kann die Höhenkartierung 104 als 2D-Bild z.B. mit einer Auflösung von 512 Pixeln x 512 Pixeln dargestellt werden. Es sollte im Hinblick auf diese Offenbarung beachtet werden, dass durch die Höhenkartierung 104 andere Bildauflösungen zum Darstellen der Dicke der Farbe verwendet werden können, die auf der Leinwand vorliegt. In einigen Beispielfällen stellt der Wert an jeder Pixelstelle der Höhenkartierung 104 die Dicke der Farbe an dieser Pixelstelle dar. Beispielsweise wenn ein Wert an einer Pixelstelle der Höhenkartierung 104 Null ist (Pixelwert = 0), dann beträgt die Dicke der Farbe an dieser Pixelstelle in der Höhenkartierung 104 0 mm. Wenn ein Wert an einer Pixelstelle der Höhenkartierung 104 eins ist (Pixelwert = 1), dann beträgt die Dicke der Farbe an dieser Pixelstelle in der Höhenkartierung 104 1 mm. Entsprechend kann ein Pixelwert von 1,5 angeben, dass die Dicke der Farbe an dieser Pixelstelle in der Höhenkartierung 104 1,5 mm beträgt. In einigen Ausführungsformen wird die Höhenkartierung 104 (Höhenkartierung einer vorliegenden Farbe auf der Leinwand), die in den Simulator 102 zum Erzeugen der Trainingsdaten für das neuronale Netzwerk eingegeben wird, statistisch erzeugt. D.h., eine statistisch erzeugte Höhenkartierung 104 wird für den Simulator 102 zum Erzeugen der Trainingsdaten für das neuronale Netzwerk bereitgestellt. Beispielsweise kann die Höhenkartierung 104 durch statistisches Drehen und/oder Überlagern von Pinselstrichproben von einem Speicher zum Nachahmen eines statistischen Malvorgangs erzeugt werden.
-
Der Pinselstrich 106 ist eine Bewegung, die durch einen Malpinsel während des Malens ausgeführt wird. Beispielsweise malt ein Künstler typischerweise Strich für Strich mit einem Malpinsel. Der Pinselstrich 106 ist eine Darstellung eines Strichs (Malpinselstrichbewegung), die durch den Künstler beim Malen durchgeführt werden würde. Der Pinselstrich 106 kann ein Malpinselstrich sein, der aus einem Vorrat von Malpinselstrichen 106 ausgewählt ist.
-
Ein Pinselstrichprobenspeicher 108 kann den Vorrat von Malpinselstrichen umfassen oder speichern. In einigen Beispielfällen können die durch einen oder mehrere Nutzer erzeugten Malpinselstriche aufgezeichnet werden und die Daten, die den aufgezeichneten Malpinselstrichen (z.B. Pinselstrichdaten) entsprechen, können in dem Pinselstrichprobenspeicher 108 gespeichert werden. Einige oder alle der Pinselstriche 106 (Pinselstrichdaten) können zum Erzeugen der Trainingsdaten zum Trainieren eines neuronalen Netzwerks verwendet werden. In einigen Ausführungsformen können die aufgezeichneten Pinselstriche 106 zum Erzeugen zusätzlicher Pinselstriche 106 zufällig gedreht und/oder kombiniert werden.
-
Die Höhenkartierung 104 (Höhenkartierung einer vorliegenden Farbe auf der Leinwand) und der Pinselstrich 106 werden als Eingaben für den Simulator 102 bereitgestellt und der Simulator 102 erzeugt eine Basiswahrheit 110 und eine Borstentrajektorie 112 (hier austauschbar als „Borstentrajektorienkartierung“ bezeichnet). Die Basiswahrheit 110 ist eine Höhenkartierung einer vorliegenden Farbe auf der Leinwand, nachdem der Pinselstrich auf die Leinwand aufgebracht worden ist (z.B. auf die vorliegende Farbe auf der Leinwand aufgebracht worden ist). D.h., die Basiswahrheit 110 ist die Höhenkartierung einer vorliegenden Farbe auf der Leinwand nach dem Aufbringen eines neuen Pinselstrichs (z.B. des Pinselstrich 106, der als Eingabe für den Simulator 102 bereitgestellt worden ist) auf die Höhenkartierung, die vor dem Aufbringen des neuen Pinselstrichs vorlag (z.B. die Höhenkartierung 104, die als Eingabe für den Simulator 102 bereitgestellt worden ist). In einigen Ausführungsformen nutzt der Simulator 102 eine Fluidsimulation zum Erzeugen der Basiswahrheit 110.
-
Die Borstentrajektorienkartierung 112 ist eine Darstellung einer Spur der Borstenspitzen (z.B. aller Borstenspitzen) eines Malpinsels, die als Ergebnis eines Pinselstrichs 106 erzeugt worden ist. Beispielsweise wenn ein Malpinsel entlang eines Wegs auf der Leinwand bewegt wird, erzeugen die Spitzen der Borsten des Malpinsels eine Spur der Borstenspitzen auf der Leinwand. Die Borstentrajektorienkartierung 112 kann Daten, wie z.B. die Borstenspitzenrichtung, den Borstenspitzenwinkel, den Druck, der durch die Borstenspitze auf der Leinwand erzeugt wird, und dergleichen vermitteln oder angeben. Die Borstentrajektorienkartierung 112, die durch den Simulator 102 erzeugt wird, ist eine Darstellung der Spur der Borstenspitzen des Malpinsels, die aus dem eingegebenen Pinselstrich 106 (dem Pinselstrich 106, der als Eingabe in den Simulator 102 bereitgestellt worden ist) resultiert.
-
Die Höhenkartierung 104, die als Eingabe in den Simulator 102 bereitgestellt worden ist, und die Borstentrajektorienkartierung 112 und die Basiswahrheit 110, die durch den Simulator 102 als Ergebnis der eingegebenen Höhenkartierung 104 erzeugt worden sind, umfassen einen Trainingsdatensatz (z.B. ein 3-Tupel von Trainingsdaten), der zum Trainieren eines neuronalen Netzwerks zum Ableiten einer Höhenkartierung einer vorliegenden Farbe auf der Leinwand verwendet wird, nachdem ein neuer Pinselstrich aufgebracht worden ist. Der Simulator 102 kann zum Erzeugen einer großen Zahl von Trainingsdatensätzen verwendet werden, die zum Trainieren des neuronalen Netzwerks verwendet werden können. Beispielsweise kann eine große Zahl von Höhenkartierungen 104 statistisch erzeugt werden und jede Höhenkartierung 104 kann mit einem Pinselstrich 106 beispielsweise von dem Pinselstrichprobenspeicher 108 gepaart werden. Die Paare von statistisch erzeugten Höhenkartierungen 104 und Pinselstrichen 106 können dann als Eingaben für den Simulator 102 zum Erzeugen von entsprechenden Paaren von Basiswahrheiten 110 und Borstentrajektorienkartierungen 112 bereitgestellt werden. Jede Höhenkartierung 104, die in den Simulator 102 eingegeben worden ist, und die entsprechende Borstentrajektorienkartierung 112 und die Basiswahrheit 110, die durch den Simulator 102 erzeugt worden sind, können einen entsprechenden Trainingsdatensatz umfassen, was folglich zur Erzeugung einer großen Zahl von Trainingsdatensätzen führt.
-
Die 2 ist ein Diagramm 200, das Beispiele für Trainingsdateneingaben in ein neuronales Netzwerk 202 gemäß mindestens einiger hier beschriebener Ausführungsformen zeigt. Wie es im Diagramm 200 gezeigt ist, wird eine große Zahl und in einigen Fällen eine sehr große Zahl von Trainingsdatensätzen 204 zum Trainieren des neuronalen Netzwerks 202 verwendet. Die Trainingsdatensätze 204 werden zum Trainieren des neuronalen Netzwerks 202 verwendet, um mit einer Höhenkartierung einer vorliegenden Farbe auf der Leinwand und einer Borstentrajektorienkartierung als Eingaben eine Höhenkartierung einer vorliegenden Farbe auf der Leinwand abzuleiten, nachdem ein neuer Pinselstrich aufgebracht worden ist. In diesem Fall stellt die Borstentrajektorienkartierung, die als Eingabe für das neuronale Netzwerk 202 bereitgestellt wird, den neuen Pinselstrich dar.
-
Jeder Trainingsdatensatz 204 umfasst eine Höhenkartierung, eine Borstentrajektorienkartierung und eine Basiswahrheit. Die Höhenkartierung ist eine Höhenkartierung einer vorliegenden Farbe auf der Leinwand (die Höhenkartierung 104 von 1), die zusammen mit einem Pinselstrich (dem Pinselstrich 106 von 1) als Eingabe für den Simulator 102 zum Erzeugen der entsprechenden Basiswahrheit (der Basiswahrheit 110 von 1) und der entsprechenden Borstentrajektorienkartierung (der Borstentrajektorienkartierung 112 von 1) bereitgestellt worden ist. In jedem Trainingsdatensatz 204 ist die Basiswahrheit die Höhenkartierung, die als Ergebnis des Aufbringens eines neuen Pinselstrichs (dargestellt durch den Pinselstrich 106, der in den Simulator 102 eingegeben worden ist) auf die vorliegende Farbe auf der Leinwand (wie sie durch die Höhenkartierung 104 dargestellt wird, die in den Trainingsdatensatz einbezogen und in den Simulator 102 eingegeben worden ist) erwartet wird. Die Borstentrajektorienkartierung ist eine Darstellung einer Spur der Borstenspitzen eines Malpinsels, die als Ergebnis des neuen Pinselstrichs erzeugt worden ist. D.h., bezüglich jedes 3-Tupels von Trainingsdaten, nämlich der Basiswahrheit, der Höhenkartierung und der Borstentrajektorienkartierung, wird eine Basiswahrheit eines 3-Tupels von Trainingsdaten die Ausgabe, die von einem neuronalen Netzwerk erwartet wird, das unter Verwendung des Trainingsdatensatzes 204 trainiert worden ist, wenn für das neuronale Netzwerk, das unter Verwendung des Trainingsdatensatzes 204 trainiert worden ist, eine Höhenkartierung und eine Borstentrajektorienkartierung des 3-Tupels von Trainingsdaten als Eingaben bereitgestellt werden. Sobald es trainiert ist, ist das neuronale Netzwerk 202 zum Ableiten einer Höhenkartierung einer vorliegenden Farbe auf der Leinwand nach dem Aufbringen eines neuen Pinselstrichs (z.B. einer nahen wenn nicht genauen Näherung der Basiswahrheit 110, die durch den Simulator 102 von 1 erzeugt worden ist und die zum Trainieren des neuronalen Netzwerks 202 verwendet wird) ausgebildet, und zwar unter der Voraussetzung einer Höhenkartierung einer vorliegenden Farbe auf der Leinwand, die vor dem Aufbringen des neuen Pinselstrichs vorlag (der Höhenkartierung 104, die in den Simulator 102 von 1 zum Erzeugen der Basiswahrheit 110 eingegeben worden ist, die zum Trainieren des neuronalen Netzwerks 202 verwendet wird) und einer Borstentrajektorienkartierung (der Borstentrajektorienkartierung 112, die durch den Simulator 102 von 1 erzeugt worden ist und zum Trainieren des neuronalen Netzwerks 202 verwendet wird) als Eingaben.
-
Die 3 ist ein Blockdiagramm, das schematisch ein Beispiel für ein Stricherzeugungssystem 300 zeigt, das ein einzelnes neuronales Netzwerk 202 nutzt, gemäß mindestens einiger hier beschriebener Ausführungsformen. Wie es gezeigt ist, umfasst das Stricherzeugungssystem 300 ein Datenerzeugungsmodul 302, ein trainiertes neuronales Netzwerk 202, ein Höhenkartierung-Kombiniermodul 304 und ein Rendermodul 306. In verschiedenen Ausführungsformen können zusätzliche Komponenten (nicht gezeigt, wie z.B. ein Prozessor, eine Anzeige, eine Nutzereingabevorrichtung, usw.) oder ein Teilsatz der gezeigten Komponenten eingesetzt werden, ohne von dem Umfang der vorliegenden Offenbarung abzuweichen. Beispielsweise können weitere Ausführungsformen die verschiedenen Funktionen der Module 302, 304 und 306 und des trainierten neuronalen Netzwerks 202 in weniger Module (z.B. eines, zwei oder drei) oder mehr Module (z.B. fünf, sechs oder mehr) integrieren. Darüber hinaus sollte ferner beachtet werden, dass die verschiedenen Komponenten des Stricherzeugungssystems 300 gemäß einiger Ausführungsformen alle in einem eigenständigen Rechensystem vorliegen können, während sie in anderen Ausführungsformen über mehrere Maschinen verteilt sein können. Beispielsweise können sich jedes der Module 302, 304 und 306, und des trainierten neuronalen Netzwerks 202 in einer cloudbasierten Serveranordnung befinden und für eine clientbasierte Nutzerschnittstelle über ein Kommunikationsnetzwerk zugänglich gemacht werden. In einigen Fällen kann oder können eines oder mehrere der Module 302, 304 und 306 und des trainierten neuronalen Netzwerks 202 von einem cloudbasierten Dienst in einen Browser (oder eine andere Anwendung) eines Clientcomputers für eine lokale Ausführung heruntergeladen werden. In einem allgemeineren Sinn kann der hier bereitgestellte Grad der Integration und Verteilung der hier bereitgestellten funktionellen Komponente(n) von einer Ausführungsform zur anderen stark variieren, wie es Hinblick auf diese Offenbarung ersichtlich ist.
-
In dem gezeigten Beispiel kann ein Nutzer (z.B. ein Künstler) das Stricherzeugungssystem 300 zum Erzeugen eines simulierten Ölgemäldes auf einer digitalen Leinwand verwenden. Der Nutzer kann jedwede geeignete Nutzerschnittstellenvorrichtung verwenden, wie z.B. eine Nutzerschnittstellen (UI)-Vorrichtung 308, die eine Interaktion mit dem Stricherzeugungssystem 300 erleichtert. In einigen Fällen kann die UI-Vorrichtung 308 einen Stift und einen berührungssensiblen Bildschirm zur Verwendung durch den Nutzer bereitstellen. Die UI-Vorrichtung 308 kann mit dem Stricherzeugungssystem 300 gekoppelt werden und der Nutzer kann die UI-Vorrichtung 308 zum Erzeugen eines digitalen Ölgemäldes verwenden. Beispielsweise kann der Nutzer den Stift zum Eingeben (z.B. Erzeugen) eines digitalen Malpinselstrichs, Strich für Strich, auf dem berührungssensiblen Bildschirm der UI-Vorrichtung 308 verwenden.
-
Wenn der Nutzer die UI-Vorrichtung 308 verwendet und einen Malpinselstrich (einen gegenwärtigen Malpinselstrich) erzeugt, stellt die UI-Vorrichtung 308 den vorliegenden Malpinselstrich, der durch den Nutzer erzeugt worden ist, für das Datenerzeugungsmodul 302 bereit oder macht ihn in sonstiger Weise dafür zugänglich. Das Datenerzeugungsmodul 302 ist zum Erzeugen einer Borstentrajektorienkartierung ausgebildet, die den vorliegenden Malpinselstrich darstellt, der durch den Nutzer eingegeben worden ist. In einigen Ausführungsformen erzeugt das Datenerzeugungsmodul 302 die Borstentrajektorienkartierung durch Bewegen eines simulierten Pinsels auf der Leinwand und zeichnet die Pinselborstenkontaktspuren auf, während der Pinsel bewegt wird. Beispielsweise kann das Datenerzeugungsmodul 302 die Borstentrajektorienkartierung durch Zeichnen der Spuren der Pinselborsten, die sich über die Länge des Pinselstrichs bewegen, erzeugen. Die Spuren der Pinselborsten können sich in der Borstentrajektorienkartierung überlappen. Das Datenerzeugungsmodul 302 ist auch zum Erzeugen einer Farbkartierung auf der Basis des vorliegenden Malpinselstrichs und des gegenwärtigen Zustands der Leinwand (z.B. der vorliegenden Farbe auf der Leinwand) ausgebildet. Beispielsweise kann das Datenerzeugungsmodul 302 die Farbkartierung unter Verwendung von einem der vielen verfügbaren Prägealgorithmen erzeugen. Verfügbare Prägealgorithmen zeichnen typischerweise eine Druckprägung eines Malpinsels, beispielsweise in Abständen von einem Pixel, entlang jedes Strichwegs. Bei jeder Prägung wird die Malpinselfarbe mit der vorliegenden Farbe, die auf der Leinwand vorliegt, gemischt, und die Leinwandfarbe wird entsprechend aktualisiert. Die Farbe auf dem Malpinsel kann auch entsprechend aktualisiert werden, um den Übergang der Farbe von der vorliegenden Farbe auf der Leinwand auf den Malpinsel zu simulieren. Das Datenerzeugungsmodul 302 kennt die Höhenkartierung einer vorliegenden Farbe auf der Leinwand, die sich aus einem vorhergehenden Pinselstrich ergeben hat (dem Pinselstrich, der dem vorliegenden Pinselstrich, der durch den Nutzer erzeugt worden ist, vorausgegangen ist). In dem Fall, bei dem der vorliegende Malpinselstrich ein erster oder anfänglicher Malpinselstrich ist, kann die Leinwand eine neue Leinwand sein, bei der gegenwärtig keine Farbe auf der Leinwand vorliegt. Wenn sich keine vorliegende Farbe auf der Leinwand befindet, gibt die Höhenkartierung entsprechend an, dass gegenwärtig keine Farbe auf der Leinwand vorliegt. Das Datenerzeugungsmodul 302 ist zum Bereitstellen oder in sonstiger Weise zugänglich Machen der erzeugten Borstentrajektorienkartierung und Höhenkartierung einer vorliegenden Farbe auf der Leinwand für das trainierte neuronale Netzwerk 202 ausgebildet. Beispielsweise kann das Datenerzeugungsmodul 302 oder eine andere Komponente des Stricherzeugungssystems 300 eine Instanz des trainierten neuronalen Netzwerks 202 realisieren, um die Borstentrajektorienkartierung und die Höhenkartierung einer vorliegenden Farbe auf der Leinwand zu verarbeiten.
-
Das trainierte neuronale Netzwerk 202 ist zum Ableiten einer Höhenkartierung von Farbe auf der Leinwand nach dem Aufbringen des vorliegenden Malpinselstrichs ausgebildet. Die Höhenkartierung, die durch das trainierte neuronale Netzwerk 202 abgeleitet worden ist, ist eine neue Höhenkartierung, welche die Höhe der Farbe darstellt, die nun auf der Leinwand vorliegt, nachdem der vorliegende Malpinselstrich, wie er durch die Borstentrajektorienkartierung dargestellt ist, die als Eingabe für das trainierte neuronale Netzwerk 202 bereitgestellt worden ist, auf die Farbe aufgebracht worden ist, die auf der Leinwand vor dem Aufbringen des vorliegenden Malpinselstrichs vorlag, wie er durch die Höhenkartierung einer vorliegenden Farbe auf der Leinwand dargestellt ist, die als Eingabe für das trainierte neuronale Netzwerk 202 bereitgestellt worden ist. D.h., durch die Bereitstellung einer ersten Höhenkartierung (einer Höhenkartierung einer vorliegenden Farbe auf der Leinwand) und einer Borstentrajektorienkartierung (eines vorliegenden Malpinselstrichs) leitet das trainierte neuronale Netzwerk 202 eine zweite Höhenkartierung (eine Höhenkartierung von Farbe auf der Leinwand nach dem Aufbringen des vorliegenden Malpinselstrichs) ab. Das trainierte neuronale Netzwerk 202 stellt die abgeleitete Höhenkartierung von Farbe auf der Leinwand nach dem Anwenden des gegenwärtigen Pinselstrichs auf das Höhenkartierung-Kombiniermodul 304 bereit oder macht sie in sonstiger Weise verfügbar.
-
Das Höhenkartierung-Kombiniermodul 304 ist zum Kombinieren einer Mehrzahl von Höhenkartierungssegmenten zum Erzeugen einer einzigen kombinierten Höhenkartierung ausgebildet. Die Höhenkartierungssegmente werden nachstehend z.B. im Zusammenhang mit den 4 und 5 weiter diskutiert. In diesem Fall bestimmt das Höhenkartierung-Kombiniermodul 304, dass die bereitgestellte Höhenkartierung eine kombinierte Höhenkartierung ist, da nur eine (eine einzelne) Höhenkartierung bereitgestellt worden ist. Als solches führt das Höhenkartierung-Kombiniermodul 304 keinerlei Kombiniervorgang mit der bereitgestellten Höhenkartierung durch. Das Höhenkartierung-Kombiniermodul 304 stellt die Höhenkartierung von Farbe auf der Leinwand bereit oder macht sie in sonstiger Weise verfügbar, nachdem der vorliegende Pinselstrich auf das Rendermodul 306 angewandt worden ist.
-
Das Rendermodul 306 ist zum Kombinieren der Höhenkartierung (z.B. der Höhenkartierung einer vorliegenden Farbe auf der Leinwand nach dem Aufbringen des vorliegenden Pinselstrichs) und der Farbkartierung zum Erzeugen eines Renderings 310 ausgebildet. Die Farbkartierung kann durch das Datenerzeugungsmodul 302 bereitgestellt oder in sonstiger Weise verfügbar gemacht werden. Das Rendering 310 ist eine visuelle Darstellung des gegenwärtigen Malpinselstrichs, der durch den Nutzer eingegeben worden ist, auf der Leinwand. D.h., das Rendering 310 ist eine digitale Darstellung des digitalen Malpinselstrichs, der durch den Nutzer auf dem berührungssensiblen Bildschirm der UI-Vorrichtung 308 erzeugt worden ist. In einigen Ausführungsformen kann das Rendermodul 306 das Rendering 310 durch Berechnen einer Normalkartierung auf der Basis der Höhenkartierung unter Verwendung eines zentralen Differenzalgorithmus erzeugen. Das Rendermodul 306 kann dann die Helligkeit der Farbe aus der erzeugten Normalkartierung und Beleuchtungsdaten berechnen. Die Beleuchtungsdaten können durch den Nutzer beispielsweise mittels einer Punktlichtquelle, einer gerichteten Lichtquelle, eines Punktstrahlers oder jedwedem anderen geeigneten Beleuchtungsmodells bereitgestellt werden. Das Rendermodul 306 kann dann das fertige gefärbte Schattierungsergebnis (z.B. das Rendering 310) auf der Basis der berechneten Helligkeit und der Farbkartierung erzeugen, was ein Maß für die Reflexion oder die optische Helligkeit der Leinwand bereitstellt. Das Rendering 310 des Malpinselstrichs, der durch den Nutzer erzeugt worden ist, kann auf der UI-Vorrichtung 308, beispielsweise dem berührungssensiblen Bildschirm der UI-Vorrichtung 308, zum Betrachten durch den Nutzer bereitgestellt werden.
-
Die 4 ist ein Blockdiagramm, das schematisch das Stricherzeugungssystem 300, das eine Mehrzahl von Instanzen des trainierten neuronalen Netzwerks 202 einsetzt, gemäß mindestens einiger hier beschriebener Ausführungsformen zeigt. Das System von 4 ist im Wesentlichen dem System von 3 ähnlich, wobei zusätzliche Details vorliegen. Falls sich aus dem Zusammenhang nicht etwas Anderes ergibt, werden diejenigen Komponenten in der 4, die identisch zu den Komponenten von 3 bezeichnet sind, aus Klarheitsgründen nicht erneut beschrieben.
-
In einigen Ausführungsformen ist das Datenerzeugungsmodul 302 zum Segmentieren einer langen Borstentrajektorienkartierung (z.B. eines langen Malpinselstrichs) in eine Mehrzahl von Borstentrajektorienkartierungssegmenten (z.B. eine Mehrzahl von Malpinselstrichsegmenten) ausgebildet. Die Verarbeitung einer Mehrzahl von kürzeren Borstentrajektorienkartierungssegmenten und das Kombinieren der Ergebnisse der Verarbeitung der kürzeren Borstentrajektorienkartierungssegmente kann verglichen mit der Verarbeitung einer einzelnen langen Borstentrajektorienkartierung ein verbessertes Leistungsvermögen bereitstellen. Das Datenerzeugungsmodul 302 kann die Länge der Borstentrajektorienkartierung bestimmen und wenn die Länge der Borstentrajektorienkartierung eine festgelegte Borstentrajektorienkartierungssegment-Schwellenlänge übersteigt, die Borstentrajektorienkartierung in eine Mehrzahl von Borstentrajektorienkartierungssegmenten segmentieren, so dass die Länge jedes Borstentrajektorienkartierungssegments, ausgenommen das letzte Borstentrajektorienkartierungssegment, die festgelegte Borstentrajektorienkartierungssegment-Schwellenlänge aufweist. Beispielsweise soll angenommen werden, dass die festgelegte Borstentrajektorienkartierungssegment-Schwellenlänge 512 Pixel beträgt und die Länge der Borstentrajektorienkartierung 1500 Pixel beträgt. In diesem Fall kann das Datenerzeugungsmodul 302 die Borstentrajektorienkartierung in drei Borstentrajektorienkartierungssegmente segmentieren, wobei zwei Borstentrajektorienkartierungssegmente jeweils eine Länge von 512 Pixeln aufweisen und ein Borstentrajektorienkartierungssegment eine Länge von 476 Pixeln aufweist. Die Borstentrajektorienkartierungssegment-Schwellenlänge kann beispielsweise durch den Hersteller des Stricherzeugungssystems 300 vorkonfiguriert werden. In einigen Ausführungsformen kann die Borstentrajektorienkartierungssegment-Schwellenlänge ein abstimmbarer Parameter sein. Beispielsweise kann die Borstentrajektorienkartierungssegment-Schwellenlänge in einer Konfigurationsdatei festgelegt werden, auf die das Stricherzeugungssystem 300 zugreifen kann, und ein Nutzer (oder ein Systemadministrator) kann die Borstentrajektorienkartierungssegment-Schwellenlänge auf der Basis des Leistungsvermögens des Stricherzeugungssystems 300 abstimmen oder einstellen. Beispielsweise kann ein Nutzer die Borstentrajektorienkartierungssegment-Schwellenlänge so abstimmen, dass ein gewünschtes Leistungsvermögen des Stricherzeugungssystems 300 erreicht wird.
-
In einigen Ausführungsformen kann das Datenerzeugungsmodul 302 eine Zeichen-Box für jedes Borstentrajektorienkartierungssegment erzeugen. Eine Zeichen-Box stellt die Grenzen (z.B. eine Grenze) eines Borstentrajektorienkartierungssegments dar oder legt sie fest. Beispielsweise kann eine Zeichen-Box durch die Koordinaten der vier Ecken der Zeichen-Box festgelegt sein. In einigen Ausführungsformen wird eine Zeichen-Box für ein Borstentrajektorienkartierungssegment in einer Weise erzeugt, so dass das Borstentrajektorienkartierungssegment eng gebunden wird. D.h., die Zeichen-Box wird so erzeugt, dass innerhalb der Zeichen-Box die Anzahl von Pixeln, die das Malpinselstrichsegment nicht darstellen, vermindert oder minimiert wird. Das Minimieren der Anzahl von Pixeln, die das Malpinselstrichsegment in der Zeichen-Box nicht darstellen, führt zu einer Verminderung der Rechenkosten. Beispielsweise vermindert das Vermindern oder Minimieren der Anzahl von Pixeln, die kein Malpinselstrichsegment darstellen, die Anzahl von „unnötigen“ Pixeln, die durch das trainierte neuronale Netzwerk 202 bei der Verarbeitung des Borstentrajektorienkartierungssegments des Malpinselstrichsegments verarbeitet werden müssen. Jedes Borstentrajektorienkartierungssegment stellt ein jeweiliges Segment des vorliegenden Malpinselstrichs dar, der durch den Nutzer eingegeben worden ist.
-
Das Datenerzeugungsmodul 302 ist zum Bereitstellen oder in sonstiger Weise verfügbar Machen von jedem Borstentrajektorienkartierungssegment und der Höhenkartierung der vorliegenden Farbe auf der Leinwand für ein jeweiliges trainiertes neuronales Netzwerk 202 ausgebildet. Beispielsweise kann das Datenerzeugungsmodul 302 oder eine andere Komponente des Stricherzeugungssystems 300 eine Mehrzahl von Instanzen des trainierten neuronalen Netzwerks 202 realisieren, wobei jede Instanz des trainierten neuronalen Netzwerks 202 ein jeweiliges Borstentrajektorienkartierungssegment und die Höhenkartierung der vorliegenden Farbe auf der Leinwand verarbeitet. D.h., jedem trainierten neuronalen Netzwerk 202 der Mehrzahl von trainierten neuronalen Netzwerken 202 werden ein jeweiliges Borstentrajektorienkartierungssegment und die Höhenkartierung der vorliegenden Farbe auf der Leinwand als Eingaben bereitgestellt. Obwohl das Datenerzeugungsmodul 302 so gezeigt ist, dass es eine Borstentrajektorienkartierung in drei Borstentrajektorienkartierungssegmente segmentiert, dient die Anzahl der Borstentrajektorienkartierungssegmente lediglich zur Veranschaulichung, und eine andere Anzahl von Borstentrajektorienkartierungssegmenten kann auf der Basis der Länge der Borstentrajektorienkartierung und der festgelegten Borstentrajektorienkartierungssegmentlänge erzeugt werden, wie es im Hinblick auf diese Offenbarung ersichtlich ist.
-
Die 5 ist ein Blockdiagramm, das schematisch eine Mehrzahl von Borstentrajektorienkartierungssegmenten und entsprechenden Höhenkartierungssegmenten, durch die eine Mehrzahl von trainierten neuronalen Netzwerken 202 erzeugt worden sind, gemäß mindestens einiger hier beschriebener Ausführungsformen zeigt. Wie es vorstehend diskutiert worden ist, entspricht jedes Borstentrajektorienkartierungssegment einem Segment einer Borstentrajektorienkartieruhg, wobei die Borstentrajektorienkartierung einen vorliegenden Malpinselstrich darstellt. Als solches ist jedes Borstentrajektorienkartierungssegment eine Darstellung einer Spur der Borstenspitzen eines Malpinsels, die als Ergebnis eines jeweiligen vorliegenden Malpinselstrichsegments erzeugt worden ist. Jedes Borstentrajektorienkartierungssegment ist durch eine Zeichen-Box dargestellt. Jedes Borstentrajektorienkartierungssegment wird durch ein jeweiliges trainiertes neuronales Netzwerk 202 verarbeitet, das eine entsprechende Höhenkartierung der Farbe auf der Leinwand ableitet, nachdem das vorliegende Malpinselstrichsegment, das durch das Borstentrajektorienkartierungssegment dargestellt wird, aufgebracht worden ist. Die Höhenkartierung, die durch jedes trainierte neuronale Netzwerk 202 abgeleitet wird, ist ein Höhenkartierungssegment, das die Höhe der Farbe darstellt, die sich nun auf der Leinwand befindet, nachdem das vorliegende Malpinselstrichsegment auf die Farbe aufgebracht worden ist, die vor dem Aufbringen des vorliegenden Malpinselstrichsegments auf der Leinwand vorlag. Entsprechend den Zeichen-Boxen, welche die Borstentrajektorienkartierungssegmente begrenzen, kann jedes Höhenkartierungssegment durch eine Zeichen-Box dargestellt oder festgelegt werden.
-
Unter erneuter Bezugnahme auf die 4 stellt jedes trainierte neuronale Netzwerk 202 das erzeugte Höhenkartierungssegment (die Höhenkartierung von Farbe auf der Leinwand nach dem Aufbringen des gegenwärtigen Malpinselstrichsegmens) für das Höhenkartierung-Kombiniermodul 304 bereit oder macht es in sonstiger Weise verfügbar. Das Höhenkartierung-Kombiniermodul 304 kombiniert die Mehrzahl von Höhenkartierungssegmenten, die beispielsweise durch die Mehrzahl von trainierten neuronalen Netzwerke 202 bereitgestellt werden, zum Erzeugen einer einzelnen kombinierten Höhenkartierung. Beispielsweise kann das Höhenkartierung-Kombiniermodul 304 die Mehrzahl von Höhenkartierungssegmenten durch Zusammenstellen der nicht-überlappenden Bereiche der Höhenkartierungssegmente und Bilden des Durchschnitts der Höhenkartierungswerte in den überlappenden Bereichen von zwei benachbarten Höhenkartierungssegmenten kombinieren.
-
In einigen Ausführungsformen wird jede der Mehrzahl von Zeichen-Boxen so erzeugt, dass ein Überlappungsbereich zwischen zwei angrenzenden Zeichen-Boxen erzeugt wird. Die Überlappungsbereiche ermöglichen das Mischen der Höhenkartierungssegmente, die in den Überlappungsbereichen vorliegen, so dass eine Kontinuität der Malpinselstrichsegmente bereitgestellt wird, wenn zwei angrenzende Höhenkartierungssegmente kombiniert werden. In einigen Ausführungsformen ist der Überlappungsbereich eine festgelegte Anzahl von Pixeln, wie z.B. 8 Pixel, 16 Pixel, 32 Pixel, usw., entlang der allgemeinen Richtung oder der Länge des Malpinselstrichs. D.h., zwischen zwei angrenzenden Höhenkartierungssegmenten überlappt ein jeweiliges Ende von jedem der angrenzenden Höhenkartierungssegmente mit der festgelegten Anzahl von Pixeln entlang der allgemeinen Richtung oder der Länge des angrenzenden Höhenkartierungssegments. Die Größe (z.B. die Länge) des Überlappungsbereichs kann zu der Kontinuität einer resultierenden Höhenkartierung beitragen, wenn angrenzende Höhenkartierungssegmente kombiniert werden. D.h., bei der Erzeugung einer kontinuierlicheren Höhenkartierung kann verglichen mit einem kleinen Überlappungsbereich ein großer Überlappungsbereich resultieren. Die Größe des Überlappungsbereichs kann vorkonfiguriert werden, beispielsweise durch einen Hersteller des Stricherzeugungssystems 300. In einigen Ausführungsformen kann die Größe des Überlappungsbereichs ein abstimmbarer Parameter sein. Beispielsweise kann die Größe des Überlappungsbereichs in einer Konfigurationsdatei festgelegt sein, auf die das Stricherzeugungssystem 300 zugreifen kann, und ein Nutzer (oder ein Systemadministrator) kann die Größe des Überlappungsbereichs auf der Basis des Leistungsvermögens (z.B. der Glätte oder anderen visuellen Eigenschaften des gerenderten Malpinselstrichs) des Stricherzeugungssystems 300 abstimmen oder einstellen. Beispielsweise kann ein Nutzer die Größe des Überlappungsbereichs so abstimmen, dass eine gewünschte Glätte des Malpinselstrichs erreicht wird, der durch das Stricherzeugungssystem 300 gerendert worden ist.
-
Die 6 ist ein Flussdiagramm 600, das ein Beispielverfahren zum Rendern eines neuen Malpinselstrichs gemäß mindestens einiger hier beschriebener Ausführungsformen zeigt. Beispielvorgänge und -verfahren können einen Vorgang oder mehrere Vorgänge, Funktion(en) oder Aktion(en) umfassen, wie es durch einen oder mehrere der Blöcke 602, 604, 606, 608, 610 und/oder 612 gezeigt ist, und können in einigen Ausführungsformen durch ein Rechensystem, wie z.B. ein Rechensystem 700 von 7 durchgeführt werden. Die in den Blöcken 602-612 beschriebenen Vorgänge können auch als computerausführbare Anweisungen in einem computerlesbaren Medium gespeichert werden, wie z.B. einem Speicher 704 und/oder einem Datenspeicher 706 des Rechensystems 700. Das Verfahren kann durch die Komponenten des Stricherzeugungssystems 300 durchgeführt werden.
-
Wie es im Hinblick auf diese Offenbarung ferner ersichtlich ist, können für diese und andere Vorgänge und Verfahren, die hier offenbart sind, die Funktionen, die in den Vorgängen und Verfahren durchgeführt werden, in einer anderen Reihenfolge implementiert werden. Zusätzlich oder alternativ können zwei oder mehr Vorgänge gleichzeitig oder in sonstiger Weise in einer überlappenden gleichzeitigen Weise durchgeführt werden. Ferner sind die angegebenen Aktionen und Vorgänge lediglich als Beispiele dargestellt und einige der Aktionen und Vorgänge können optional sein, zu weniger Aktionen und Vorgänge kombiniert werden oder zu zusätzlichen Aktionen und Vorgängen erweitert werden, ohne von dem Wesentlichen der offenbarten Ausführungsformen abzuweichen.
-
Wie es in dem Flussdiagramm 600 gezeigt ist, kann der Vorgang mit dem Block 602 beginnen, bei dem das Stricherzeugungssystem 300 einen neuen Malpinselstrich empfängt. In einem beispielhaften Anwendungsfall kann ein Nutzer das Stricherzeugungssystem 300 auf einer Rechenvorrichtung ausführen, um ein simuliertes Ölgemälde auf einer Leinwand zu erzeugen. Das Stricherzeugungssystem 300 kann einen Stift und einen berührungssensiblen Bildschirm zur Verwendung durch den Nutzer zum Erzeugen eines Ölgemäldes bereitstellen und der Nutzer kann einen neuen Malpinselstrich auf der Leinwand unter Verwendung des bereitgestellten Stifts und des berührungssensiblen Bildschirms erzeugt haben. Als Reaktion empfängt das Datenerzeugungsmodul 302 die neuen Malpinselstriche, die durch den Nutzer erzeugt worden sind.
-
Nach dem Block 602 kann der Block 604 folgen, bei dem das Datenerzeugungsmodul 302 eine Farbkartierung auf der Basis des empfangenen neuen Malpinselstrichs und eines gegenwärtigen Zustands der Leinwand (z.B. der vorliegenden Farbe auf der Leinwand) erzeugt.
-
Nach dem Block 604 kann der Block 606 folgen, bei dem das Datenerzeugungsmodul 302 eine Borstentrajektorienkartierung erzeugt, die den empfangenen neuen Malpinselstrich darstellt.
-
Nach dem Block 606 kann der Block 608 folgen, bei dem das Datenerzeugungsmodul 302 die Borstentrajektorienkartierung und eine Höhenkartierung der vorliegenden Farbe auf der Leinwand als Eingaben für das trainierte neuronale Netzwerk 202 bereitstellt. Das Datenerzeugungsmodul 302 kennt die Höhenkartierung der vorliegenden Farbe auf der Leinwand aufgrund dessen, dass das Stricherzeugungssystem 300 den Malpinselstrich vor dem gegenwärtigen neuen Malpinselstrich verarbeitet hat.
-
Nach dem Block 608 kann der Block 610 folgen, bei dem das trainierte neuronale Netzwerk 202 eine neue Höhenkartierung der vorliegenden Farbe auf der Leinwand auf der Basis der Borstentrajektorienkartierung und der Höhenkartierung der vorliegenden Farbe auf der Leinwand, die als Eingaben bereitgestellt worden sind, ableitet. Unter Fortsetzung des vorstehenden Beispiels ist die neue Höhenkartierung, die durch das trainierte neuronale Netzwerk 202 abgeleitet worden ist, eine neue Höhenkartierung, welche die Höhe der Farbe darstellt, die sich nun auf der Leinwand befindet, nachdem der neue Malpinselstrich auf die Leinwand aufgebracht worden ist.
-
Nach dem Block 610 kann der Block 612 folgen, bei dem das Rendermodul 306 ein Rendering des neuen Malpinselstrichs auf der Leinwand auf der Basis der neuen Höhenkartierung der vorliegenden Farbe auf der Leinwand und der Farbkartierung erzeugt. Unter Fortsetzung des vorstehenden Beispiels kann das Rendering des neuen Malpinselstrichs auf dem berührungssensiblen Bildschirm erzeugt werden, auf dem der Nutzer den neuen Malpinselstrich erzeugt hat.
-
In einigen Ausführungsformen können zusätzliche Vorgänge durchgeführt werden. Beispielsweise kann in einigen Ausführungsformen das Datenerzeugungsmodul 302 die Borstentrajektorienkartierung, die den neuen Malpinselstrich darstellt, auf der Basis einer festgelegten Borstentrajektorienkartierungssegment-Schwellenlänge in ein oder mehrere Borstentrajektorienkartierungssegment(e) segmentieren. Beispielsweise kann das Datenerzeugungsmodul 302 die Länge der Borstentrajektorienkartierung bestimmen und, wenn die Länge der Borstentrajektorienkartierung die festgelegte Borstentrajektorienkartierungssegmentlänge nicht übersteigt, ein Borstentrajektorienkartierungssegment aus der Borstentrajektorienkartierung erzeugen. Alternativ kann, wenn die Länge der Borstentrajektorienkartierung die festgelegte Borstentrajektorienkartierungssegment-Schwellenlänge übersteigt, das Datenerzeugungsmodul die Borstentrajektorienkartierung in eine Mehrzahl von Borstentrajektorienkartierungssegmenten segmentieren, so dass die Länge jedes Borstentrajektorienkartierungssegments, ausgenommen das letzte Borstentrajektorienkartierungssegment, die festgelegte Borstentrajektorienkartierungssegment-Schwellenlänge aufweist. Das Datenerzeugungsmodul 302 kann dann jedes Borstentrajektorienkartierungssegment und die Höhenkartierung der vorliegenden Farbe auf der Leinwand für ein jeweiliges trainiertes neuronales Netzwerk 202 bereitstellen. Jedes jeweilige trainierte neuronale Netzwerk 202 kann ein Höhenkartierungssegment auf der Basis des Borstentrajektorienkartierungssegments und der Höhenkartierung einer vorliegenden Farbe auf der Leinwand, die als Eingaben bereitgestellt worden sind, ableiten. Eine einzelne Höhenkartierung von Farbe, die auf der Leinwand vorliegt, kann auf der Basis der Höhenkartierungssegmente erzeugt werden, die durch die Mehrzahl von trainierten neuronalen Netzwerken 202 abgeleitet worden sind. Beispielsweise kann das Höhenkartierung-Kombiniermodul 304 die Höhenkartierungssegmente zum Erzeugen der einzelnen Höhenkartierung einer vorliegenden Farbe auf der Leinwand kombinieren, nachdem der neue Malpinselstrich aufgebracht worden ist.
-
Die 7 zeigt ausgewählte Komponenten des Beispielrechensystems 700, das zur Durchführung von jedweder der Techniken, wie sie in der vorliegenden Offenbarung verschiedenartig beschrieben sind, gemäß mindestens einiger hier beschriebener Ausführungsformen verwendet werden kann. In einigen Ausführungsformen kann das Rechensystem 700 zum Implementieren oder Leiten eines Vorgangs oder mehrerer Vorgänge, die mit einigen oder allen der Einheiten, Komponenten und/oder Module zusammenhängen, die mit dem Stricherzeugungssystem 300 von 3 zusammenhängen, ausgebildet sein. Beispielsweise können das Datenerzeugungsmodul 302, das trainierte neuronale Netzwerk 202, das Höhenkartierung-Kombiniermodul 304 und das Rendermodul 306 oder jedwede Kombination davon in dem Rechensystem 700 implementiert sein und/oder dieses nutzen. In einem Beispielfall wird z.B. jedes des Datenerzeugungsmoduls 302, des trainierten neuronalen Netzwerks 202, des Höhenkartierung-Kombiniermoduls 304 und des Rendermoduls 306 in den Speicher 704 geladen und kann durch einen Prozessor 702 ausgeführt werden. Das Rechensystem 700 kann jedwedes Computersystem sein, wie z.B. eine Workstation, ein Desktopcomputer, ein Server, ein Laptop, ein handgehaltener Computer, ein Tabletcomputer (z.B. der iPad®-Tabletcomputer), eine mobile Rechen- oder Kommunikationsvorrichtung (z.B. die mobile iPhone®-Kommunikationsvorrichtung, eine mobile Android™-Kommunikationsvorrichtung und dergleichen) oder eine andere Form von Rechen- oder Telekommunikationsvorrichtung, die kommunizieren kann und die eine ausreichende Prozessorleistung und ein ausreichendes Speichervermögen zur Durchführung der in dieser Offenbarung beschriebenen Vorgänge aufweist. Es kann ein verteiltes Rechensystem bereitgestellt werden, das eine Mehrzahl solcher Rechenvorrichtungen umfasst. Wie es gezeigt ist, kann das Rechensystem 700 einen Prozessor 702, einen Speicher 704 und einen Datenspeicher 706 umfassen. Der Prozessor 702, der Speicher 704 und der Datenspeicher 706 können kommunikativ gekoppelt sein.
-
Im Allgemeinen kann der Prozessor 702 jedwede(n) spezielle(n) oder allgemeinen Computer, Recheneinheit oder Rechen- oder Verarbeitungsvorrichtung umfasst, die verschiedenartige Computerhardware, -firmware oder -softwaremodule umfasst, und kann so ausgebildet sein, dass er Anweisungen, wie z.B. Programmanweisungen, die auf jedweden anwendbaren computerlesbaren Speichermedien gespeichert sind, ausführt. Beispielsweise kann der Prozessor 702 einen Mikroprozessor, einen Mikrocontroller, einen digitalen Signalprozessor (DSP), eine anwendungsspezifische integrierte Schaltung (ASIC), ein spezifisch programmierbares Gatterfeld (FPGA) oder jedwede andere digitale oder analoge Schaltung umfassen, die zum Interpretieren und/oder Ausführen von Programmanweisungen und/oder zum Verarbeiten von Daten ausgebildet ist. Obwohl der Prozessor 702 in der 7 als einzelner Prozessor gezeigt ist, kann der Prozessor 702 jedwede Anzahl von Prozessoren und/oder Prozessorkernen umfassen, die ausgebildet sind, um einzeln oder zusammen das Leistungsvermögen von jedweder Anzahl von Vorgängen, die in der vorliegenden Offenbarung beschrieben sind, auszuführen oder zu leiten. Zusätzlich kann einer oder können mehrere der Prozessoren auf einer oder mehreren verschiedenen elektronischen Vorrichtung(en), wie z.B. verschiedenen Servern, vorliegen.
-
In einigen Ausführungsformen kann der Prozessor 702 so ausgebildet sein, dass er Programmanweisungen und/oder Verfahrensdaten, die im dem Speicher 704, dem Datenspeicher 706 oder dem Speicher 704 und dem Datenspeicher 706 gespeichert sind, interpretiert und/oder ausführt. In einigen Ausführungsformen kann der Prozessor 702 Programmanweisungen von dem Datenspeicher 706 abrufen und die Programmanweisungen in den Speicher 704 laden. Nachdem die Programmanweisungen in den Speicher 704 geladen worden sind, kann der Prozessor 702 die Programmanweisungen ausführen.
-
Beispielsweise kann oder können in einigen Ausführungsformen eine oder mehrere der Einheiten, Komponenten und/oder Module des Stricherzeugungssystems 300 in den Datenspeicher 706 als Programmanweisungen einbezogen werden. Der Prozessor 702 kann einige oder alle der Programmanweisungen von dem Datenspeicher 706 abrufen und die abgerufenen Programmanweisungen in den Speicher 704 laden. Nach dem Laden der Programmanweisungen in den Speicher 704 kann der Prozessor 702 die Programmanweisungen ausführen, so dass das Rechensystem die Vorgänge so implementieren kann, wie es durch die Anweisungen vorgegeben ist.
-
In einigen Ausführungsformen kann eine Virtualisierung in der Rechenvorrichtung 700 eingesetzt werden, so dass die Infrastruktur und die Ressourcen in der Rechenvorrichtung 700 dynamisch geteilt werden können. Beispielsweise kann eine virtuelle Maschine zum Handhaben eines Vorgangs bereitgestellt werden, der auf mehreren Prozessoren läuft, so dass es scheint, dass der Vorgang nur eine Rechenressource anstelle der Mehrzahl von Rechenressourcen nutzt. Es kann auch eine Mehrzahl von virtuellen Maschinen mit einem Prozessor verwendet werden.
-
Der Speicher 704 und der Datenspeicher 706 können computerlesbare Speichermedien zum Speichern von computerausführbaren Anweisungen oder Datenstrukturen darauf umfassen. Solche computerlesbaren Speichermedien können jedwede verfügbaren Medien umfassen, auf die ein allgemeiner oder spezieller Computer, wie z.B. der Prozessor 702, zugreifen kann. Beispielsweise und ohne Beschränkung können solche computerlesbaren Speichermedien nicht-flüchtige computerlesbare Speichermedien einen Direktzugriffsspeicher (RAM), einen Festwertspeicher (ROM), einen elektrisch löschbaren, programmierbaren Festwertspeicher (EEPROM), einen Compact Disc-Festwertspeicher (CD-ROM) oder eine andere optische Speicherplatte, Magnetspeicherplatte oder andere Magnetspeichervorrichtungen, Flashspeichervorrichtungen (z.B. Halbleiterspeichervorrichtungen) oder jedwedes andere Speichermedium umfassen, das zum Enthalten oder Speichern eines bestimmten Programmcodes in der Form von computerausführbaren Anweisungen oder Datenstrukturen verwendet werden kann und auf das ein allgemeiner oder spezieller Computer zugreifen kann. Kombinationen der Vorstehenden können auch in den Umfang von computerlesbaren Speichermedien einbezogen sein. Computerausführbare Anweisungen können beispielsweise Anweisungen und Daten umfassen, die so ausgebildet sind, dass sie die Durchführung eines bestimmten Vorgangs oder einer bestimmten Gruppe von Vorgängen durch den Prozessor 702 bewirken.
-
Bezüglich des Rechensystem 700 können Modifizierungen, Hinzufügungen oder Weglassungen durchgeführt werden, ohne von dem Umfang der vorliegenden Offenbarung abzuweichen. Beispielsweise kann das Rechensystem 700 in einigen Ausführungsformen jedwede Anzahl von anderen Komponenten umfassen, die hier nicht explizit gezeigt oder beschrieben sind.
-
Wie es vorstehend angegeben worden ist, können die in der vorliegenden Offenbarung beschriebenen Ausführungsformen die Verwendung eines allgemeinen oder speziellen Computers (z.B. des Prozessors 702 von 7) umfassen, der verschiedene Computerhardware- oder Softwaremodule umfasst, wie es hier detaillierter diskutiert wird. Es sollte beachtet werden, dass, sobald ein allgemeiner Computer programmiert oder in sonstiger Weise konfiguriert worden ist, um eine Funktion gemäß einer Ausführungsform der vorliegenden Offenbarung auszuführen, dieser allgemeine Computer ein spezieller Computer wird. Ferner können, wie es vorstehend angegeben worden ist, Ausführungsformen, die in der vorliegenden Offenbarung beschrieben sind, unter Verwendung von computerlesbaren Medien (z.B. dem Speicher 704 von 7) zum Enthalten oder Aufweisen von darauf gespeicherten computerausführbaren Anweisungen oder Datenstrukturen implementiert werden.
-
Im Hinblick auf diese Offenbarung sind zahlreiche Beispielvariationen und -konfigurationen ersichtlich. Gemäß einiger Beispiele werden computerimplementierte Verfahren zur Simulation eines Malpinselstrichs beschrieben. Ein Beispiel für ein computerimplementiertes Verfahren kann umfassen: Ableiten, durch ein trainiertes neuronales Netzwerk, das eine erste Eingabe zum Empfangen einer Borstentrajektorienkartierung, die einen neuen Malpinselstrich darstellt, und eine zweite Eingabe zum Empfangen einer ersten Höhenkartierung einer vorliegenden Farbe auf einer Leinwand umfasst, einer zweiten Höhenkartierung einer vorliegenden Farbe auf der Leinwand, nachdem der neue Malpinselstrich auf die Leinwand aufgebracht worden ist; und Erzeugen, durch ein Rendermodul, eines Renderings des neuen Malpinselstrichs auf der Basis der zweiten Höhenkartierung einer vorliegenden Farbe auf der Leinwand, nachdem der neue Malpinselstrich auf die Leinwand aufgebracht worden ist, und einer Farbkartierung.
-
In einigen Beispielen wird das trainierte neuronale Netzwerk unter Verwendung einer Mehrzahl von Trainingsdatensätzen trainiert, wobei jeder Trainingsdatensatz der Mehrzahl von Trainingsdatensätzen eine Höhenkartierung, eine Borstentrajektorienkartierung und eine Basiswahrheit umfasst. In weiteren Beispielen werden für jeden Trainingsdatensatz die Borstentrajektorienkartierung und die Basiswahrheit durch einen Simulator als Reaktion darauf erzeugt, das die Höhenkartierung als Eingabe bereitgestellt wird. In weiteren Beispielen nutzt der Simulator eine Fluidsimulation zum Erzeugen der Basiswahrheit. In weiteren Beispielen ist die Borstentrajektorienkartierung ein Borstentrajektorienkartierungssegment, das ein neues Malpinselstrichsegment darstellt, und wobei ferner die zweite Höhenkartierung ein zweites Höhenkartierungssegment einer vorliegenden Farbe auf der Leinwand ist, nachdem das neue Malpinselstrichsegment auf die Leinwand aufgebracht worden ist. In weiteren Beispielen wird das Borstentrajektorienkartierungssegment durch eine Zeichen-Box dargestellt oder das zweite Höhenkartierungssegment wird durch eine Zeichen-Box dargestellt oder sowohl das Borstentrajektorienkartierungssegment als auch das zweite Höhenkartierungssegment werden durch eine jeweilige Zeichen-Box dargestellt. In weiteren Beispielen ist der neue Malpinselstrich ein neuer Öl-Malpinselstrich. In weiteren Beispiele ist das trainierte neuronale Netzwerk eines von einer Mehrzahl von trainierten neuronalen Netzwerken, wobei jedes trainierte neuronale Netzwerk der Mehrzahl von trainierten Netzwerken eine jeweilige erste Eingabe zum Empfangen eines jeweiligen Borstentrajektorienkartierungssegments, das ein neues Malpinselstrichsegment darstellt, und eine jeweilige zweite Eingabe zum Empfangen einer ersten Höhenkartierung einer vorliegenden Farbe auf einer Leinwand aufweist, und das Ableiten durch die Mehrzahl von trainierten neuronalen Netzwerken derart durchgeführt wird, dass jedes trainierte neuronale Netzwerk so ausgebildet ist, dass es ein jeweiliges zweites Höhenkartierungssegment einer vorliegenden Farbe auf der Leinwand ableitet, nachdem der neue Malpinselstrich auf die Leinwand aufgebracht worden ist, wobei das Verfahren ferner umfasst: Erzeugen, durch ein Höhenkartierung-Kombiniermodul, einer kombinierten zweiten Höhenkartierung auf der Basis des jeweiligen zweiten Höhenkartierungssegments, das durch jedes trainiertes neuronale Netzwerk der Mehrzahl von trainierten neuronalen Netzwerken abgeleitet worden ist, wobei das Erzeugen, durch das Rendermodul, eines Renderings des neuen Malpinselstrichs auf der kombinierten zweiten Höhenkartierung basiert.
-
Gemäß einigen Beispielen sind Computerprogrammprodukte beschrieben, die ein nicht-flüchtiges maschinenlesbares Medium oder mehrere nicht-flüchtige maschinenlesbare Medien umfassen, das oder die mit Anweisungen kodiert ist oder sind, die, wenn sie durch einen oder mehrere Prozessor(en) ausgeführt werden, bewirken, dass ein Vorgang zum Simulieren eines Malpinselstrichs durchgeführt wird. Ein Beispielvorgang kann umfassen: Ableiten, durch ein trainiertes neuronales Netzwerk, das eine erste Eingabe zum Empfangen einer Borstentrajektorienkartierung, die einen neuen Malpinselstrich darstellt, und eine zweite Eingabe zum Empfangen einer ersten Höhenkartierung einer vorliegenden Farbe auf einer Leinwand umfasst, einer zweiten Höhenkartierung einer vorliegenden Farbe auf der Leinwand, nachdem der neue Malpinselstrich auf die Leinwand aufgebracht worden ist; und Erzeugen, durch ein Rendermodul, eines Renderings des neuen Malpinselstrichs auf der Basis der zweiten Höhenkartierung einer vorliegenden Farbe auf der Leinwand, nachdem der neue Malpinselstrich auf die Leinwand aufgebracht worden ist, und einer Farbkartierung.
-
In einigen Beispielen wird das trainierte neuronale Netzwerk unter Verwendung einer Mehrzahl von Trainingsdatensätzen trainiert, wobei jeder Trainingsdatensatz der Mehrzahl von Trainingsdatensätzen eine Höhenkartierung, eine Borstentrajektorienkartierung und eine Basiswahrheit umfasst. In weiteren Beispielen werden für jeden Trainingsdatensatz die Borstentrajektorienkartierung und die Basiswahrheit durch einen Simulator als Reaktion darauf erzeugt, dass die Höhenkartierung als Eingabe bereitgestellt wird. In weiteren Beispielen nutzt der Simulator eine Fluidsimulation zum Erzeugen der Basiswahrheit. In weiteren Beispielen ist die Borstentrajektorienkartierung ein Borstentrajektorienkartierungssegment, das ein neues Malpinselstrichsegment darstellt, und wobei ferner die zweite Höhenkartierung ein zweites Höhenkartierungssegment einer vorliegenden Farbe auf der Leinwand ist, nachdem das neue Malpinselstrichsegment auf die Leinwand aufgebracht worden ist. In weiteren Beispielen wird das Borstentrajektorienkartierungssegment durch eine Zeichen-Box dargestellt oder das zweite Höhenkartierungssegment wird durch eine Zeichen-Box dargestellt oder sowohl das Borstentrajektorienkartierungssegment als auch das zweite Höhenkartierungssegment werden durch eine jeweilige Zeichen-Box dargestellt. In weiteren Beispielen ist der neue Malpinselstrich ein neuer Öl-Malpinselstrich. In weiteren Beispiele ist das trainierte neuronale Netzwerk eines von einer Mehrzahl von trainierten neuronalen Netzwerken, wobei jedes trainierte neuronale Netzwerk der Mehrzahl von trainierten Netzwerken eine jeweilige erste Eingabe zum Empfangen eines jeweiligen Borstentrajektorienkartierungssegments, das ein neues Malpinselstrichsegment darstellt, und eine jeweilige zweite Eingabe zum Empfangen einer ersten Höhenkartierung einer vorliegenden Farbe auf einer Leinwand aufweist, und das Ableiten durch die Mehrzahl von trainierten neuronalen Netzwerken derart durchgeführt wird, dass jedes trainierte neuronale Netzwerk so ausgebildet ist, dass es ein jeweiliges zweites Höhenkartierungssegment einer vorliegenden Farbe auf der Leinwand ableitet, nachdem der neue Malpinselstrich auf die Leinwand aufgebracht worden ist, wobei das Verfahren ferner umfasst: Erzeugen einer kombinierten zweiten Höhenkartierung auf der Basis des jeweiligen zweiten Höhenkartierungssegments, das durch jedes trainiertes neuronale Netzwerk der Mehrzahl von trainierten neuronalen Netzwerken abgeleitet worden ist, wobei das Erzeugen eines Renderings des neuen Malpinselstrichs auf der kombinierten zweiten Höhenkartierung basiert.
-
Gemäß einigen Beispielen werden Systeme zum Simulieren eines Malpinselstrichs beschrieben. Ein Beispielsystem kann umfassen: einen oder mehrere Prozessor(en); ein oder mehrere trainierte(s) neuronale(s) Netzwerk(s), wobei jedes trainierte neuronale Netzwerk durch den einen oder die mehreren Prozessor(en) mindestens eines von steuerbar und ausführbar ist, wobei jedes trainierte neuronale Netzwerk eine erste Eingabe zum Empfangen einer Borstentrajektorienkartierung, die einen neuen Malpinselstrich darstellt, und eine zweite Eingabe zum Empfangen einer ersten Höhenkartierung einer vorliegenden Farbe auf einer Leinwand aufweist, wobei jedes neuronale Netzwerk zum Ableiten einer jeweiligen zweiten Höhenkartierung einer vorliegenden Farbe auf der Leinwand ausgebildet ist, nachdem der neue Malpinselstrich auf die Leinwand aufgebracht worden ist; ein Höhenkartierung-Kombiniermodul, das durch den einen oder die mehreren Prozessor(en) mindestens eines von steuerbar und ausführbar ist und zum Erzeugen einer Höhenkartierung auf der Basis des jeweiligen zweiten Höhenkartierungssegments, das durch jedes trainierte neuronale Netzwerk abgeleitet ist, ausgebildet ist; und ein Rendermodul, das durch den einen oder die mehreren Prozessor(en) mindestens eines von steuerbar und ausführbar ist und zum Erzeugen eines Renderings des neuen Malpinselstrichs auf der Basis der zweiten Höhenkartierung einer vorliegenden Farbe auf der Leinwand, nachdem der neue Malpinselstrich auf die Leinwand aufgebracht worden ist, und einer Farbkartierung ausgebildet ist.
-
In einigen Beispielen wird das trainierte neuronale Netzwerk unter Verwendung einer Mehrzahl von Trainingsdatensätzen trainiert, wobei jeder Trainingsdatensatz der Mehrzahl von Trainingsdatensätzen eine Höhenkartierung, eine Borstentrajektorienkartierung und eine Basiswahrheit umfasst. In weiteren Beispielen werden für jeden Trainingsdatensatz die Borstentrajektorienkartierung und die Basiswahrheit durch einen Simulator als Reaktion darauf erzeugt, das die Höhenkartierung als Eingabe bereitgestellt wird. In weiteren Beispielen wird das Borstentrajektorienkartierungssegment durch eine Zeichen-Box dargestellt oder das zweite Höhenkartierungssegment wird durch eine Zeichen-Box dargestellt oder sowohl das Borstentrajektorienkartierungssegment als auch das zweite Höhenkartierungssegment werden durch eine jeweilige Zeichen-Box dargestellt.
-
Wie in der vorliegenden Offenbarung verwendet, können sich die Begriffe „Einheit“ oder „Modul“ oder „Komponente“ auf spezifische Hardwareimplementierungen beziehen, die zum Ausführen der Aktionen der Einheit oder des Moduls oder der Komponente ausgebildet sind, und/oder auf Softwareobjekte oder Softwareroutinen, die durch eine allgemeine Hardware (z.B. computerlesbare Medien, Verarbeitungsvorrichtungen, usw.) des Rechensystems gespeichert und/oder ausgeführt werden können. In einigen Ausführungsformen können die verschiedenen Komponenten, Module, Einheiten und Dienste, die in der vorliegenden Offenbarung beschrieben sind, als Objekte oder Vorgänge implementiert werden, die auf dem Rechensystem ausgeführt werden (z.B. als separate Threads). Während einige Systeme und Verfahren, die in der vorliegenden Offenbarung beschrieben sind, allgemein so beschrieben sind, dass sie als Software (gespeichert und/oder ausgeführt durch eine allgemeine Hardware) implementiert sind, sind spezifische Hardwareimplementierungen, Firmwareimplementierungen oder jedwede Kombination davon ebenfalls möglich und vorgesehen. In dieser Beschreibung kann eine „Recheneinheit“ jedwedes Rechensystem sein, wie es vorstehend in der vorliegenden Beschreibung beschrieben worden ist, oder jewede(s) Modul oder Kombination von Modulen, das oder die auf einem Rechensystem ausgeführt wird oder werden.
-
Begriffe, die in der vorliegenen Offenbarung und in den beigefügten Ansprüchen verwendet werden (z.B. Merkmale der beigefügten Ansprüche), sollen allgemein „offene“ Begriffe sein (z.B. sollte der Begriff „umfassend“ als „umfassend, aber nicht beschränkt auf“ interpretiert werden, der Begriff „aufweisen“ sollte als „mindestens aufweisend“ interpretiert werden, der Begriff „umfasst“, sollte als „umfasst, ist aber nicht beschränkt auf“ interpretiert werden, usw.).
-
Zusätzlich wird dann, wenn eine spezifische Anzahl von eingeführten Anspruchsangaben beabsichtigt ist, eine solche Absicht explizit im Anspruch angegeben, und bei einem Fehlen einer solchen Angabe liegt keine solche Absicht vor. Beispielsweise können die nachstehend beigefügten Ansprüche die einleitenden Ausdrücke „mindestens eines“ und „ein oder mehrere“ zum Einleiten von Anspruchsangaben umfassen. Die Verwendung solcher Ausdrücke sollte jedoch nicht so aufgefasst werden, dass damit impliziert wird, dass die Einleitung einer Anspruchsangabe durch die unbestimmten Artikel „der“, „die“, „das“ oder „ein(er)“ und „eine(s)“ irgendeinen bestimmten Anspruch, der eine solche einleitende Anspruchsangabe enthält, auf Ausführungsformen beschränkt, die nur eine solche Angabe enthalten, selbst wenn derselbe Anspruch die einleitenden Ausdrücke „mindestens eines“ und „ein oder mehrere“ und unbestimmte Artikel wie z.B. „der“, „die“, „das“ oder „ein(er)“ und „eine(s)“ umfasst (z.B. sollte „ein“ und/oder „einen“ so interpretiert werden, dass „mindestens eines“ oder „ein oder mehrere“ gemeint ist); dasselbe gilt für die Verwendung von bestimmten Artikeln, die zum Einleiten von Anspruchsangaben verwendet werden.
-
Darüber hinaus soll selbst dann, wenn eine spezifische Zahl einer eingeführten Anspruchsangabe explizit genannt ist, eine solche Angabe so interpretiert werden, dass mindestens die angegebene Anzahl gemeint ist (z.B. steht die bloße Angabe von „zwei Widgets“ ohne weiteren modifizierenden Ausdruck für mindestens zwei Widgets oder zwei oder mehr Widgets). Ferner soll in solchen Fällen, bei denen eine Konstruktion analog zu „mindestens eines von A, B und C, usw.“ oder „eines oder mehrere von A, B und C, usw.“ verwendet wird, im Allgemeine eine solche Konstruktion A allein, B allein, C allein, A und B zusammen, A und C zusammen oder A, B und C zusammen, usw., umfassen.
-
Alle Beispiele und jedwede bedingte Sprache, die in der vorliegenden Offenbarung angegeben ist, soll pädagogischen Zielen zum Unterstützen des Lesers beim Verstehen der vorliegenden Offenbarung und der Konzepte dienen, die von dem Erfinder zum Weiterentwickeln der Technik angegeben worden sind, und sie sollen so aufgefasst werden, dass sie nicht auf solche spezifisch angegebenen Beispiele und Bedingungen beschränkt sind. Obwohl Ausführungsformen der vorliegenden Erfindung detailliert beschrieben worden sind, können verschiedene Änderungen, Ersetzungen und Modifizierungen der vorliegenden Erfindung durchgeführt werden, ohne von dem Wesen und dem Umfang der vorliegenen Offenbarung abzuweichen. Demgemäß ist vorgesehen, dass der Umfang der vorliegenden Offenbarung nicht auf diese detaillierte Beschreibung beschränkt ist, sondern vielmehr durch die beigefügten Ansprüche.