DE102019001695A1 - Generieren von verbesserten Digitalbildern durch selektives Transformieren von Rasterbildern in Vektorzeichnungssegmente - Google Patents

Generieren von verbesserten Digitalbildern durch selektives Transformieren von Rasterbildern in Vektorzeichnungssegmente Download PDF

Info

Publication number
DE102019001695A1
DE102019001695A1 DE102019001695.5A DE102019001695A DE102019001695A1 DE 102019001695 A1 DE102019001695 A1 DE 102019001695A1 DE 102019001695 A DE102019001695 A DE 102019001695A DE 102019001695 A1 DE102019001695 A1 DE 102019001695A1
Authority
DE
Germany
Prior art keywords
transformation system
pixel line
pixel
edge
raster
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102019001695.5A
Other languages
English (en)
Inventor
John Peterson
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Adobe Inc
Original Assignee
Adobe Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Adobe Inc filed Critical Adobe Inc
Publication of DE102019001695A1 publication Critical patent/DE102019001695A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • G06T5/94
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/20Contour coding, e.g. using detection of edges
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/203Drawing of straight lines or curves
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/60Editing figures and text; Combining figures or text
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/13Edge detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/24Indexing scheme for image data processing or generation, in general involving graphical user interfaces [GUIs]

Abstract

Die vorliegende Offenbarung beschreibt eine oder mehrere Ausführungsformen eines Selektivrasterbildtransformationssystems, das durch selektives Transformieren von Kanten in Rasterbildern in Vektorzeichnungssegmente schnell und effizient verbesserte Digitalbilder generiert. Insbesondere nutzt das Selektivrasterbildtransformationssystem effizient einen contentsensitiven selektiven Ansatz zum Identifizieren, Anzeigen und Transformieren von ausgewählten Kanten eines Rasterbildes in ein Vektorzeichnungssegment auf Grundlage von wenigen Nutzerinteraktionen. Zusätzlich setzt das Selektivrasterbildtransformationssystem einen priorisierenden Pixellinienstufungsalgorithmus ein, um Pixellinien für selektive Kanten eines Rasterbildes sogar auf tragbaren Clientvorrichtungen in Echtzeit zu generieren und bereitzustellen.

Description

  • Hintergrund
  • In den letzten Jahren sind von Entwicklern zahlreiche Hardware- und Softwareplattformen zum Erstellen von Digitalzeichnungen generiert worden. Unter Nutzung dieser Plattformen können Rechensysteme Vektorzeichnungen, so beispielsweise Zeichnungen, die Bezierkurven beinhalten, erstellen, bearbeiten, speichern und teilen. Im Gegensatz zu Rasterbildern (beispielsweise Bildern, die aus Pixeln bestehen) sind Vektorzeichnungen auf eine beliebige Größe skalierbar, ohne dass Unschärfen oder Artefakte entstehen würden, und werden in vielen Fällen platzsparender als Rasterbilder gespeichert. Gleichwohl erzeugen viele elektronische Vorrichtungen, so beispielsweise Digitalkameras und Scanner, trotz der Vorteile von Vektorzeichnungen weiterhin Rasterbilder. Die meisten Digitalbilder, die man heutzutage beispielsweise online vorfindet, sind als Rasterbilder erstellt und gespeichert.
  • Aufgrund der Vorteile von Vektorzeichnungen gegenüber Rasterbildern möchten Menschen Rasterbilder oftmals in Vektorzeichnungen umwandeln. Zum Umwandeln eines Rasterbildes bieten herkömmliche Bildumwandlungssysteme im Allgemeinen zwei Optionen. Zum einen verfolgen herkömmliche Systeme mehrere Nutzerinteraktionen des manuellen Nachbildens des Rasterbildes mit Vektorkurven, um das Rasterbild in eine Vektorzeichnung umzuwandeln. Alternativ nutzen herkömmliche Systeme einen Batch-Umwandlungsprozess, der das gesamte Rasterbild in eine Vektorzeichnung umwandelt. Wie nachstehend erläutert wird, weist jede dieser Optionen zahlreiche Nachteile und Unzulänglichkeiten auf.
  • Beim digitalen Nachbilden eines Rasterbildes sind herkömmliche Systeme ungenau und ineffizient. Bei herkömmlichen Systemen ist beispielsweise erforderlich, dass Nutzer eine Kante eines Rasterbildes manuell nachbilden, indem sie einen Cursor akribisch und genau über die Kante, die nachgebildet werden soll, manövrieren. Entsprechend ist der Prozess, bei dem ein Nutzer die Kante in einem Rasterbild manuell nachbildet, ein mühsamer und zeitaufwändiger Prozess, der oftmals dazu führt, dass ein Nutzer eine Kante so oft erneut nachbildet, bis das Ergebnis des Nachbildens der Linien genau ist.
  • Herkömmliche Systeme, die das digitale Nachbilden nutzen, erfordern zusätzlich dazu, dass sie für einen Nutzer äußerst aufwändig sind, in erheblichem Maße Verarbeitungsleistung und Zeit zur Umwandlung des Rasterbildes in eine Vektorzeichnung. Das manuelle Nachbilden von Pixeln mit einem Digitalwerkzeug erfordert beispielsweise das Verfolgen zahlreicher Nutzerinteraktionen über eine lange Zeitspanne hinweg (zusätzlich zu erheblichem Training und beträchtlicher Erfahrung seitens des Nutzers), um angemessene Ergebnisse zu erreichen. Da herkömmliche Systeme das Nachbilden von Pixeln erfordern, ist in erheblichem Maße Zeit erforderlich, um das Rasterbild in eine Vektorzeichnung umzuwandeln. Sogar bei unterstützender Nutzung durch Digitalwerkzeuge, so beispielsweise durch ein Snapping-Pen-Werkzeug, erzeugt das Nachbilden ganzer Kanten oftmals unzulängliche Ergebnisse. Herkömmliche Systeme generieren oftmals Vektorzeichnungen mit nichtoptimaler Anpassung, da sie kleine inkrementelle Stücke einer Kante und nicht die gesamte Kante auf einmal verarbeiten. Diese Hilfswerkzeuge ignorieren beispielsweise oftmals Endpunkte, Ecken und abrupte Biegungen von Kanten in dem Rasterbild, was zu schlecht angepassten Kurven führt. Insgesamt erzeugt das digitale Nachbilden schlechte Ergebnisse und bewirkt Ineffizienzen sowohl bei den Rechensystemen wie auch bei den beteiligten Nutzern.
  • Der Batch-Umwandlungsprozess erzeugt ebenfalls ungenaue Ergebnisse und Rechenineffizienzen. Die Batch-Umwandlung erzeugt beispielsweise ein Rasterbild, indem sie alle Kanten, die in dem Bild vorzufinden sind, streng in parametrische Kurven (beispielsweise Bezierkurven) umwandelt. Nach der Batch-Verarbeitung benötigen herkömmliche Systeme in erheblichem Ausmaß Nutzereingaben, wodurch erhebliche Zeit beim Löschen unerwünschter und zusätzlicher Kurven vergeudet wird, während Ungenauigkeiten, die durch den Batch-Umwandlungsprozess verursacht werden (beispielsweise bei unrichtigerweise verbundenen Kanten oder ungenauen parametrischen Kurven), behandelt werden. Dieser Prozess des „Unkrautjätens“ verlängert die Zeit zum Generieren von Rasterbildern, da Nutzer unnötige oder fehlerhafte parametrische Kurven vorfinden und behandeln.
  • Zudem bewirkt das Umwandeln aller Kanten in dem Rasterbild, dass die Rechenvorrichtung unnötigerweise Rechenleistung und Speicherressourcen vergeudet. Herkömmliche Bildumwandlungssysteme vergeuden beispielsweise überflüssigerweise Verarbeitungsressourcen beim Umwandeln von Kanten aus dem Rasterbild in Vektoren, obwohl ein Mensch im Anschluss oftmals viele der Vektoren wieder entfernt und andere Vektoren berichtigt. Während des Umwandlungsprozesses benötigen herkömmliche Systeme zudem oftmals eine Rechenvorrichtung zur Speicherung von generierten Umwandlungsdaten, was zusätzlichen Speicherplatz erfordert. Rechenvorrichtungen generieren und speichern Umwandlungsdaten für viele der Vektoren, die ein Mensch sodann entfernt oder ändert, was Computerspeicher- und Ablageressourcen vergeudet.
  • Gemäß einem weiteren Nachteil nutzen herkömmliche Bildumwandlungssysteme komplexe Prozesse zum Umwandeln eines Rasterbildes in eine Vektorzeichnung. Aufgrund der Komplexität muss ein Mensch oftmals warten, bis die Umwandlung erfolgt ist. Wegen der vorerwähnten Komplexitäten und Speicherrandbedingungen sind viele tragbare Rechenvorrichtungen nicht in der Lage, ein Rasterbild (insbesondere hochaufgelöste Rasterbilder) als Ganzes in eine Vektorzeichnung umzuwandeln.
  • Diese und weitere Probleme und Fragestellungen treten bei herkömmlichen Bildumwandlungssystemen auf.
  • Zusammenfassung
  • Eine oder mehrere Ausführungsformen der vorliegenden Offenbarung bieten Vorteile und/oder lösen eines oder mehrere der vorbeschriebenen Probleme (oder auch andere Probleme) im Stand der Technik bei Systemen, computerlesbaren Medien und Verfahren, die verbesserte Digitalbilder dadurch effizient generieren, dass sie Rasterelemente in Rasterbildern in Vektorzeichnungssegmente transformieren. Bei verschiedenen Ausführungsformen nehmen die offenbarten Systeme beispielsweise ein selektives Identifizieren, Anzeigen und Transformieren einzelner Kanten eines Rasterbildes in Vektorzeichnungssegmente auf Grundlage einer geringen Anzahl von Nutzerinteraktionen vor. Des Weiteren können die offenbarten Systeme einen Pixellinienstufungsalgorithmus einsetzen, um Pixellinien für selektive Kanten eines Rasterbildes in Echtzeit sogar bei tragbaren Clientvorrichtungen zu identifizieren und bereitzustellen.
  • Darstellungshalber generieren die offenbarten Systeme bei einer oder mehreren Ausführungsformen für ein Rasterbild eine Kantenkarte, die eine Rasterelement (beispielsweise ein physisches Objekt oder einen Gegenstand, der in einem Rasterbild abgebildet ist, so beispielsweise ein Vordergrund- oder Hintergrundelement) beinhaltet. Auf Grundlage einer ersten Nutzerinteraktion mit dem Rasterelement, das in dem Rasterbild in einer grafischen Nutzerschnittstelle angezeigt wird, generieren die offenbarten Systeme eine Pixellinie (das heißt einen Satz von Pixeln, der durch Stufung entlang von Pixeln einer in der Kantenkarte detektierten Kante generiert wird), wenn eine entsprechende Kante in der Kantenkarte detektiert wird. Zusätzlich überlagern die offenbarten Systeme die Pixellinie, die aus der Kante in der Kantenkarte generiert wird, für den Nutzer mit dem Rasterbild. Beim Detektieren einer zweiten Nutzerinteraktion, bei der eine Pixellinie in der grafischen Nutzerschnittstelle ausgewählt wird, passen die offenbarten Systeme ein Vektorzeichnungssegment (also eine parametrische Kurve, so beispielsweise eine Bezierkurve) an die Pixellinie an und zeigen das angepasste Vektorzeichnungssegment in der grafischen Nutzerschnittstelle an. Auf ähnliche Weise transformieren die offenbarten Systeme zusätzliche Kanten des Rasterbildes auf Grundlage detektierter Nutzerinteraktionen selektiv in Vektorzeichnungssegmente.
  • Wie vorstehend erwähnt worden ist, können die offenbarten Systeme bei verschiedenen Ausführungsformen eine Pixellinie auf Grundlage der ersten Nutzerinteraktion mit dem Rasterbild in der grafischen Nutzerschnittstelle und der Pixelkarte generieren. Bei einer oder mehreren Ausführungsformen nutzen die offenbarten Systeme beispielsweise die erste Nutzerinteraktion zur Abbildung auf ein in der Kantenkarte befindliches Pixel, das Teil einer ersten Kante ist. Beginnend mit dem Pixel, können die offenbarten Systeme entlang der ersten Kante in einer oder mehreren Richtungen zu Verbindungspixeln stufen, bis eine Linienbeendigungsbedingung erfüllt ist. Bei einigen Ausführungsformen priorisieren die offenbarten Systeme als Teil eines Stufungsalgorithmus benachbarte Pixel gegenüber diagonalen Pixeln. Ist eine Linienbeendigungsbedingung erfüllt, so nutzen die offenbarten Systeme Koordinaten des entsprechenden Pixels und eines jeden der zusätzlichen Verbindungspixel, um die Pixellinie zu bilden. Wie vorstehend erwähnt worden ist, wird dies dem Nutzer in der grafischen Nutzerschnittstelle angezeigt. Durch selektives und effizientes Generieren von Pixellinien geben die offenbarten Systeme einzelne Pixellinien zur Anzeige in Echtzeit wieder.
  • Die nachfolgende Beschreibung führt zusätzliche Merkmale und Vorteile einer oder mehrerer Ausführungsformen der offenbarten Systeme und Verfahren auf. In einigen Fällen sind derartige Merkmale und Vorteile für einen geübten Künstler bzw. Fachmann aus der Beschreibung ersichtlich, oder die praktische Umsetzung der offenbarten Ausführungsformen lehrt sie.
  • Figurenliste
  • Die Detailbeschreibung beschreibt eine oder mehrere Ausführungsformen mit zusätzlicher Spezifität und Detailliertheit unter Nutzung der begleitenden Zeichnung, die nachstehend kurz beschrieben wird.
    • 1 zeigt das Generieren einer Vektorzeichnung aus einem Rasterbild entsprechend einer oder mehreren Ausführungsformen.
    • 2A bis 2G zeigen das Generieren von verbesserten Digitalbildern durch Transformieren von in Rasterbildern befindlichen Rasterbildern in Vektorzeichnungssegmente entsprechend einer oder mehreren Ausführungsformen.
    • 3A bis 3C zeigen das miteinander erfolgende Verbinden mehrerer Vektorkurven zur Bildung eines Vektorzeichnungssegmentes entsprechend einer oder mehreren Ausführungsformen.
    • 4A bis 4F zeigen das Trimmen von Vektorkurven mit minimalen Nutzerinteraktionen entsprechend einer oder mehreren Ausführungsformen.
    • 5A und 5B zeigen das Modifizieren der Kantendetektionsintensität einer Kantenkarte auf Grundlage von Zoomgraden einer grafischen Nutzerschnittstelle entsprechend einer oder mehreren Ausführungsformen.
    • 6 zeigt das Generieren einer Pixellinie aus einer Kantenkarte auf Grundlage einer Nutzerschnittstelle mit einem Rasterbild in einer grafischen Nutzerschnittstelle entsprechend einer oder mehreren Ausführungsformen.
    • 7A bis 7C zeigen das Durchstufen einer Kante in einer Kantenkarte zum Generieren einer Pixellinie entsprechend einer oder mehreren Ausführungsformen.
    • 8 zeigt das Detektieren eines Eckpixels innerhalb einer Pixellinie entsprechend einer oder mehreren Ausführungsformen.
    • 9 zeigt das Zwischenspeichern (caching) einer Matrix von Bezierkoeffizienten, die zum Anpassen einer Bezierkurve an einer Pixellinie benutzt wird, entsprechend einer oder mehreren Ausführungsformen.
    • 10 zeigt ein schematisches Diagramm eines Rasterbildselektivtransformationssystems entsprechend einer oder mehreren Ausführungsformen.
    • 11 zeigt ein schematisches Diagramm einer exemplarischen Umgebung, in der das Rasterbildselektivtransformationssystem entsprechend einer oder mehreren Ausführungsformen implementiert ist.
    • 12 zeigt ein Flussdiagramm mit einer Abfolge von Vorgängen zum Generieren von verbesserten Digitalbildern durch Transformieren von Rasterbildern in Vektorzeichnungen entsprechend einer oder mehreren Ausführungsformen.
    • 13 zeigt ein Flussdiagramm mit einer Abfolge von Vorgängen zum effizienten Generieren von verbesserten Digitalbildern durch Transformieren von in Rasterbildern befindlichen Rasterelementen in Vektorzeichnungssegmente entsprechend einer oder mehreren Ausführungsformen.
    • 14 zeigt ein Blockdiagramm einer exemplarischen Rechenvorrichtung zum Implementieren einer oder mehrerer Ausführungsformen der vorliegenden Offenbarung.
  • Detailbeschreibung
  • Die vorliegende Offenbarung beschreibt eine oder mehrere Ausführungsformen eines Selektivrasterbildtransformationssystems, das verbesserte Digitalbilder dadurch schnell und effizient generiert, dass es nutzerseitig ausgewählte Rasterelemente, die in Rasterbildern angezeigt werden, in Vektorzeichnungssegmente transformiert. Das Selektivrasterbildtransformationssystem (oder einfach „Bildtransformationssystem“) detektiert beispielsweise einzelne Kanten in einem Rasterbild auf Grundlage einer Nutzerinteraktion und transformiert die nutzerseitig ausgewählten Kanten separat in ein Vektorzeichnungssegment. Im Gegensatz zu herkömmlichen Systemen vermeidet das Bildtransformationssystem überflüssige Batch-Verarbeitungsoperationen und das unnötige Speichern von Umwandlungsdaten durch effizientes und selektives Transformieren von Kanten eines Rasterelementes (beispielsweise eines Vordergrundobjektes), das in einem Rasterbild gezeigt ist, in eine Vektorzeichnung. Das Bildtransformationssystem verringert zudem vorteilhafterweise die Gesamtzahl von Nutzerinteraktionen, die zum Erzeugen einer derartigen Vektorzeichnung benötigt werden.
  • Darstellungshalber generiert das Bildtransformationssystem bei verschiedenen Ausführungsformen verbesserte Digitalbilder durch Transformieren von in Rasterbildern befindlichen Rasterelementen in Vektorzeichnungssegmente. Bei einer oder mehreren Ausführungsformen generiert das Bildtransformationssystem eine Kantenkarte durch Detektieren von Kanten eines Rasterelementes, das in einem Rasterbild angezeigt wird (beispielsweise bei einem Objekt, das ein Nutzer in Vektorform umwandeln möchte). Auf Grundlage einer Nutzerinteraktion mit einer Kante des Rasterelementes identifiziert das Bildtransformationssystem eine entsprechende detektierte Kante innerhalb der Kantenkarte. In Reaktion auf die Nutzerinteraktion generiert das Bildtransformationssystem eine Pixellinie (das heißt eine Linie von Pixeln, die durch Nachbilden von Pixeln entlang einer in der Kantenkarte detektierten Kante generiert wird) entsprechend der detektierten Kante und zeigt die Pixellinie in der grafischen Nutzerschnittstelle an. Zusätzlich detektiert das Bildtransformationssystem in der grafischen Nutzerschnittstelle eine zusätzliche Nutzerinteraktion, die eine Auswahl der Pixellinie angibt. In Reaktion hierauf passt das Bildtransformationssystem eine Vektorzeichnung (beispielsweise Linien und Bezierkurven) an die Pixellinie an und zeigt das Vektorzeichnungssegment in der grafischen Nutzerschnittstelle an.
  • Bei einigen Ausführungsformen identifiziert das Bildtransformationssystem die detektierte Kante in der Kantenkarte auf Grundlage einer Abbildung der in der grafischen Nutzerschnittstelle erfolgenden Nutzerinteraktion auf die Kantenkarte. Das Bildtransformationssystem bestimmt beispielsweise Rasterbildkoordinaten aus der Nutzerinteraktion in der grafischen Nutzerschnittstelle und bildet die Koordinaten auf die Kantenkarte ab, um die detektierte Kante innerhalb der Kantenkarte zu identifizieren. Das Bildtransformationssystem identifiziert des Weiteren entlang der detektierten Kante ein Pixel, an dem das Generieren der Pixellinie beginnen soll.
  • Wie vorstehend erwähnt worden ist, generiert das Bildtransformationssystem bei einigen Ausführungsformen, wenn ein Nutzer mit einer Kante in einem Rasterbild (beispielsweise durch eine Schwebebewegung des Cursors über der Kante) interagiert, eine Pixellinie und zeigt die Pixellinie über dem Rasterbild in der grafischen Nutzerschnittstelle (um den Nutzer beim selektiven Generieren eines Vektorzeichnungssegmentes zu unterstützen). Bei einer oder mehreren Ausführungsformen gibt das Bildtransformationssystem die Pixellinie über einer Kante des Rasterelementes (beispielsweise einer Kante eines Objektes, das in dem Bild abgebildet ist), dem die Pixellinie entspricht, wieder. Zusätzlich hebt das Bildtransformationssystem bei verschiedenen Ausführungsformen die Pixellinie derart, dass sie für den Nutzer heraussticht, hervor oder markiert sie auf andere Weise. Daher zeigt das Bildtransformationssystem, wenn ein Nutzer mit verschiedenen Kanten in dem Rasterbild interagiert (beispielsweise einen Cursor herumbewegt), verschiedene einzelne Pixellinien, die der aktuellen Nutzerinteraktion entsprechen, an.
  • Wie vorstehend erwähnt worden ist, passt das Bildtransformationssystem bei verschiedenen Ausführungsformen ein Vektorzeichnungssegment an die Pixellinie an und zeigt das Vektorzeichnungssegment in der grafischen Nutzerschnittstelle an. Bei einer oder mehreren Ausführungsformen verzögert das Bildtransformationssystem das Anpassen des Vektorzeichnungssegmentes bis zu einem Zeitpunkt, nachdem eine zusätzliche Nutzerinteraktion (beispielsweise durch Auswählen einer Pixellinie) in der grafischen Nutzerschnittstelle detektiert worden ist. Auf diese Weise werden nur diejenigen Kanten (oder Abschnitte von Kanten), die von dem Nutzer ausgewählt werden, in Vektorzeichnungssegmente transformiert, wodurch ermöglicht wird, dass ein Nutzer gewünschte Kanten eines Rasterbildes auf Grundlage einer geringen Anzahl von Nutzerinteraktionen schnell in eine Vektorzeichnung umwandelt.
  • Sobald das Bildtransformationssystem ein erstes Vektorzeichnungssegment wiedergibt, ermöglicht das Bildtransformationssystem bei einer oder mehreren Ausführungsformen, dass der Nutzer zusätzliche Vektorzeichnungssegmente hinzufügt. Während des Anzeigens des ersten Vektorzeichnungssegmentes nimmt das Bildtransformationssystem beispielsweise ein Generieren und Anzeigen einer zweiten Pixellinie innerhalb der grafischen Nutzerschnittstelle auf Grundlage einer nachfolgenden Nutzerinteraktion mit einer zweiten Kante des Rasterelementes (beispielsweise einer Kante eines Vordergrund- oder Hintergrundobjektes) vor. Bei einigen Ausführungsformen generiert das Bildtransformationssystem, wenn der Nutzer die zweite Pixellinie auswählt, ein zweites Vektorzeichnungssegment durch Vektorisieren der zweiten Pixellinie. Bei zusätzlichen Ausführungsformen verbindet das Bildtransformationssystem das erste Vektorzeichnungssegment und das zweite Vektorzeichnungssegmente mit einer Linie, sodass ein durchgehendes Vektorzeichnungssegment gebildet wird. Auf diese Weise ermöglicht das Bildtransformationssystem, dass ein Nutzer mehrere kontinuierliche Kanten leicht und schnell miteinander verbindet, um ein verbessertes Bild zu generieren.
  • Auf ähnliche Weise ermöglicht das Bildtransformationssystem, wenn das Bildtransformationssystem ein Vektorzeichnungssegment wiedergibt, das länger als gewünscht ist, dass der Nutzer an dem Vektorzeichnungssegment ein Heruntertrimmen (trim down) vornimmt. Bei einer oder mehreren Ausführungsformen empfängt das Bildtransformationssystem beispielsweise eine Nutzerauswahl entlang eines wiedergegebenen Vektorzeichnungssegmentes, um das Vektorzeichnungssegment an dem ausgewählten Punkt zu trimmen. Bei einigen Ausführungsformen stellt das Bildtransformationssystem eine optische Rückmeldung für den Nutzer während der Nutzerinteraktion bereit, um denjenigen Abschnitt des Vektorzeichnungssegmentes, der entfernt werden soll, wie nachstehend noch beschrieben wird, zu identifizieren.
  • Bei einigen Ausführungsformen ermöglicht das Bildtransformationssystem zudem ein flexibles Generieren von verbesserten Digitalbildern durch Modifizieren der Intensität der Kantendetektion auf Grundlage des Zoomgrades des Rasterbildes. Bei einer oder mehreren Ausführungsformen nimmt das Bildtransformationssystem, wenn beispielsweise ein hoher Zoomgrad detektiert wird, ein Neugenerieren einer Kantenkarte unter Nutzung einer höheren Dichte von verfügbaren Pixel vor, was zu detaillierteren Kanten innerhalb der neuen Kantenkarte führt. Beinhaltet die Kantenkarte zusätzliche detektierte Kanten, so generiert das Bildtransformationssystem bei einigen Ausführungsformen detailliertere Pixellinien und zeigt diese an. Wird ein niedriger Zoomgrad detektiert, so nimmt das Bildtransformationssystem auf ähnliche Weise ein Neugenerieren einer Kantenkarte unter Nutzung einer niedrigeren Dichte von verfügbaren Pixeln (beispielsweise von einem Downsampling unterzogenen Pixeln) vor, was zu weniger detaillierten Kanten in der neuen Kantenkarte führt und die Anzahl von detektierten Kanten innerhalb der Kantenkarte verringert.
  • Wie vorstehend erwähnt worden ist, generiert das Bildtransformationssystem bei einer oder mehreren Ausführungsformen eine Pixellinie entsprechend einer detektierten Kante und zeigt die Pixellinie in der grafischen Nutzerschnittstelle an. Bei einer oder mehreren Ausführungsformen setzt das Bildtransformationssystem einen genauen und effizienten Pixelstufungsprozess ein, um die Pixellinie zu erzeugen. Das Bildtransformationssystem identifiziert beispielsweise auf Grundlage der Nutzerinteraktion in dem Rasterbild ein erstes Pixel einer Kante in der Kantenkarte. Beginnend mit dem ersten Pixel, stuft das Bildtransformationssystem in einer ersten Richtung zu Verbindungspixeln entlang der Kante, bis eine Linienbeendigungsbedingung erfüllt ist. Bei verschiedenen Ausführungsformen wählt das Bildtransformationssystem die Verbindungspixel an der Kante auf Grundlage einer Priorisierung von benachbarten Pixeln gegenüber diagonalen Pixeln aus, um zum nächsten Pixel zu stufen.
  • Bei Erfüllung einer Linienbeendigungsbedingung während der Stufung entlang der Kante bildet das Bildtransformationssystem bei einer oder mehreren Ausführungsformen eine Pixellinie durch Hinzufügen des ersten Pixels und der Verbindungspixel zu der Pixellinie. Falls notwendig, wiederholt das Bildtransformationssystem den Prozess des Stufens von dem ersten Pixel in der entgegengesetzten Richtung entlang der Kante, bis eine Linienbeendigungsbedingung in der entgegengesetzten Richtung erfüllt ist. Sodann generiert das Bildtransformationssystem, wie vorstehend erwähnt worden ist, ein verbessertes Digitalbild, das das Vektorzeichnungssegment beinhaltet, indem es eine Bezierkurve an die Pixellinie anpasst.
  • Wie vorstehend erwähnt worden ist, durchstuft das Bildtransformationssystem Verbindungspixel entlang der Kante, bis eine Linienbeendigungsbedingung auftritt. Bei einer oder mehreren Ausführungsformen identifiziert das Bildtransformationssystem kontinuierliche Verbindungspixel entlang der Kante in der Kantenkarte, bis die Kante endet, nimmt eine Unterteilung in mehrere Kanten vor oder nimmt ein Schneiden mit sich selbst vor (wenn das Bildtransformationssystem beispielsweise an einer Kante mit geschlossener Schleife (open-loop edge) beginnt). Bei einigen Ausführungsformen bestimmt das Bildtransformationssystem eine Kantenunterteilung, wenn ein Verbindungspixel entweder drei benachbarte Pixel oder drei diagonale Pixel aufweist.
  • Wie vorstehend ebenfalls erwähnt worden ist, passt das Bildtransformationssystem bei einer oder mehreren Ausführungsformen eine Bezierkurve an eine Pixellinie an. Bei verschiedenen Ausführungsformen verbessert das Bildtransformationssystem des Weiteren die Effizienz durch Nutzen von zwischengespeicherten (cached) Matrizen von Bezierkoeffizienten zur Anpassung von Bezierkurven an die Pixellinie. Das Bildtransformationssystem generiert beispielsweise eine Matrix von Bezierkoeffizienten für eine erste Pixellinie mit n-Pixeln durch Lösen einer Matrixgleichung, um diejenigen Bezierkoeffizienten ausfindig zu machen, die eine Bezierkurve am besten an den Satz von n-Pixeln der ersten Pixellinie anpassen. Zusätzlich zwischenspeichert das Bildtransformationssystem die Matrix der berechneten Bezierkoeffizienten. Beim Identifizieren einer zweiten Pixellinie mit n-Pixeln (beispielsweise mit derselben Anzahl von Pixeln wie die erste Linie) nutzt das Bildtransformationssystem sodann die zwischengespeicherte Matrix, um eine Bezierkurve an die zweite Linie anzupassen, ohne dass die Matrixgleichung gelöst werden müsste.
  • Das Bildtransformationssystem muss keine neue Matrix von Bezierkoeffizienten generieren, wenn eine entsprechende Matrix zwischengespeichert ist. Viele der Pixellinien, die angepasst werden sollen, weisen oftmals dieselbe Länge auf, wodurch ermöglicht wird, dass das Bildtransformationssystem dieselbe zwischengespeicherte Matrix erneut nutzt, was die Rechenverarbeitung, die zum Berechnen des die Pixellinie darstellenden optimalen Beziersegmentes benötigt wird, immer dann, wenn eine Pixellinie an eine Bezierkurve angepasst wird, stark verringert.
  • Wie sich aus der vorstehenden Beschreibung ergibt, bietet das Bildtransformationssystem gegenüber herkömmlichen Bildumwandlungssystemen viele Vorteile und Pluspunkte. Zunächst erfordert das Bildtransformationssystem weniger und weniger genaue Nutzerinteraktionen, um genaue Digitalvektorzeichnungen zu generieren. Im Ergebnis werden die Zeit und die Eingaben, die der Nutzer aufwenden muss, im Vergleich zu herkömmlichen Systemen erheblich verringert. Zudem verbessert das Bildtransformationssystem die Funktionalität der Rechenvorrichtungen durch eine verringerte Computerverarbeitung, erhöhte Flexibilität und verringerte Ablagespeicheranforderungen. Unter Verbesserung der Funktionalität der Rechenvorrichtungen erzeugt das Bildtransformationssystem zudem genauere Ergebnisse als herkömmliche Bildumwandlungssysteme.
  • Darstellungshalber verringert das Bildtransformationssystem die Computerverarbeitung durch effizientes Nutzen von Rechenressourcen durch selektives Transformieren eines Rasterbildes in eine Vektorzeichnung. Anstatt dass eine Batch-Umwandlung aller detektierten Kanten in einem Rasterbild in Bezierkurven vorgenommen wird, transformiert das Bildtransformationssystem bei einer oder mehreren Ausführungsformen lediglich diejenigen Pixellinien, die von einem Nutzer ausgewählt worden sind. Bei diesem Beispiel vergeudet das Bildtransformationssystem keine Rechenressourcen durch Umwandeln und überflüssiges Verarbeiten vieler Kanten, die ein Nutzer sofort entfernen muss. Das Bildtransformationssystem passt eine Bezierkurve an eine Pixellinie, die aus einer durch eine Nutzerinteraktion ausgewählten Kante generiert ist, an, wodurch bewirkt wird, dass eine Rechenvorrichtung nur diejenigen Pixellinien, die den tatsächlich von einem Nutzer gewünschten Kanten entsprechen, verarbeitet und anpasst. Zusätzlich sind die Prozesse und Verfahren, die von dem Bildtransformationssystem benutzt werden, zuverlässig und auch rationalisiert (beispielsweise weniger komplex), als dies bei herkömmlichen Systemen der Fall ist, was die Rechenressourcen, die beim Transformieren eines Rasterbildes in eine Vektorzeichnung benötigt werden, weiter verringert.
  • Wie vorstehend erwähnt worden ist, erhöht das Bildtransformationssystem die Flexibilität und verbessert die Suche. Das Bildtransformationssystem ermöglicht beispielsweise, dass der Nutzer auswählt, welche Kanten eines Rasterbildes in ein Vektorzeichnungssegment transformiert werden sollen, anstatt dass die Umwandlung aller Kanten in dem Rasterbild erforderlich wäre. Das Bildtransformationssystem ermöglicht zudem, dass der Nutzer eine gewünschte Kante/Pixellinie in dem Rasterbild schnell ausfindig macht und identifiziert und in Reaktion hierauf das Bildtransformationssystem die Pixellinie in ein Vektorzeichnungssegment umwandelt. Indem lediglich die gewünschten Pixellinien gesucht und ausgewählt werden, um diese zu dem Vektorzeichnungssegment hinzuzufügen, vermeidet das Bildtransformationssystem die Computerverarbeitung, die dafür benötigt wird, unnötigerweise umgewandelte Vektoren ausfindig zu machen und zu entfernen und/oder irrtümlich umgewandelte Vektoren zu behandeln.
  • Darüber hinaus verringert das Bildtransformationssystem Anforderungen an den Ablagespeicher durch Anwenden von zwischengespeicherten Matrizen von Bezierkoeffizienten. Insbesondere nutzt das Bildtransformationssystem dieselbe zwischengespeicherte Matrix, um mehrere Pixellinien an verschiedene Bezierkurven anzupassen, anstatt dass neue Matrizen von Bezierkoeffizienten immer dann, wenn eine Pixellinie in eine Bezierkurve umgewandelt werden soll, generiert und gespeichert werden müssten. Durch die Nutzung von zwischengespeicherten Matrizen verbessert das Bildtransformationssystem die Verarbeitungseffizienz und verringert gleichzeitig die Anforderungen an den Ablagespeicher.
  • Da das Bildtransformationssystem insgesamt die Funktionalität der Rechenvorrichtungen verbessert wie auch die Anforderungen an den Ablagespeicher verringert, nutzen die meisten Rechenvorrichtungen das Bildtransformationssystem, um ein Rasterbild selektiv in eine Vektorzeichnung zu transformieren, wobei hochgradig genaue Ergebnisse erzielt werden. Tragbare Rechenvorrichtungen, die ein Rasterbild als Ganzes umwandeln können, nutzen das Bildtransformationssystem ohne Weiteres dazu, ein Rasterbild in eine Vektorzeichnung umzuwandeln. Das Bildtransformationssystem ermöglicht, dass tragbare Rechenvorrichtungen hochaufgelöste Rasterbilder in Vektorzeichnungen transformieren.
  • Wie in der vorstehenden Diskussion dargestellt ist, nutzt die vorliegende Offenbarung eine Vielzahl von Begriffen zur Beschreibung von Merkmalen und Vorteilen des Bildtransformationssystems. Es werden nunmehr zusätzliche Details im Zusammenhang mit der Nutzung dieser Begriffe angegeben. Im Sinne des Vorliegenden bezeichnet der Begriff „Rasterbild“ beispielsweise ein elektronisches oder digitales Bild, das aus Pixeln besteht. Insbesondere beinhaltet der Begriff „Rasterbild“ ein Bild mit einem oder mehreren Rasterelementen, die durch Färben oder Schattieren von verschiedenen Pixeln in einem Gitter aus Pixeln dargestellt werden. Rasterbilder weisen eine feste Auflösung auf, wobei das Hineinzoomen in ein Rasterbild oftmals zu Unschärfen und digitalen Artefakten führt, da das Pixelgitter vergrößert wird, ohne dass mehr Information vorhanden wäre. Gängige Beispiele für Dateiformate von Rasterbildern beinhalten GIF-, JPEG-, PNG- und TIFF-Dateien.
  • Darüber hinaus bezeichnet der Begriff „Rasterelement“ im Sinne des Vorliegenden einen Gegenstand oder ein Objekt, die in einem Rasterbild abgebildet sind. Insbesondere beinhaltet ein Rasterelement eine Sammlung von Pixeln, die ein Vordergrundobjekt / einen Vordergrundgegenstand oder ein Hintergrundobjekt / einen Hintergrundgegenstand in einem Rasterbild abbilden. Im Zusammenhang mit einem Rasterbild, das einen Hund darstellt, beinhaltet ein Rasterelement Pixel, die den Hund darstellen.
  • Im Sinne des Vorliegenden bezeichnet der Begriff „Vektorzeichnung“ ein Digitalbild, das eine Abfolge von mathematischen Kurven und Linien beinhaltet. Der Begriff „Vektorzeichnung“ beinhaltet ein oder mehrere Vektorzeichnungssegmente oder Kurven, die nachstehend definiert werden. Da Vektorzeichnungen mathematische Gleichungen zur Darstellung von Kanten anstelle eines Gitters aus Pixeln einsetzen, führt das Hineinzoomen in eine Vektorzeichnung nicht zu Aliasing oder digitalen Artefakten entlang der Kanten eines Vektorzeichnungssegmentes. Anstatt dessen ist die Größe einer Vektorzeichnung änderbar, ohne dass hinsichtlich Farbe oder Glätte bzw. Stetigkeit die Qualität sinken würde. Gängige Beispiele für Vektordateiformate beinhalten SVG-, EPS- und PDF-Dateien. Im Sinne des Vorliegenden werden die Begriffe „Vektorzeichnung“ und „verbessertes Vektorbild“ austauschbar benutzt.
  • Im Sinne des Vorliegenden bezeichnet der Begriff „Vektorzeichnungssegment“ eine vektorbasierte Kurve oder Linie innerhalb einer Vektorzeichnung. Der Begriff „Vektorzeichnungssegment“ beinhaltet eine einzelne skalierbare Kurve innerhalb einer Vektorzeichnung, eine Kombination von skalierbaren Kurven oder eine skalierbare gerade Linie. Ein Vektorzeichnungssegment beinhaltet eine beliebige Formeldarstellung einer parametrischen Kurve, die eine Dichtefeldanordnung von Punkten (beispielsweise Pixeln) interpolieren kann. Ein Vektorzeichnungssegment kann beispielsweise ein kubisches Beziersegment (beispielsweise eine einzelne kubische Kurve, die durch vier Steuer- bzw. Regelpunkte definiert ist), eine kubische Bezierkurve (beispielsweise ein oder mehrere kubische verbundene Beziersegmente) oder einen Bezierweg (beispielsweise eine Kombination von Bezierkurven und geraden Linien) beinhalten. Zusätzlich kann das Bildtransformationssystem, obwohl hier oftmals Beziersegmente und Kurven beschrieben werden, zusätzlich oder alternativ auch andere Formen von parametrischen Segmenten und Kurven als Vektorzeichensegmente einsetzen, so beispielsweise Hermite'sche Kurven, B-Splines, ungleichmäßige rationale Basis-Splines, Kappa-Kurven, Catmull-Rom-Splines oder andere Parameterkurven, die eine dichte Abfolge von Punkten annähern können.
  • Im Sinne des Vorliegenden bezeichnet der Begriff „Bézierkurve“ eine parametrische Kurve, die zum Modellieren von glatten bzw. stetigen Kurven benutzt wird. Im Allgemeinen beinhaltet der Begriff „Bézierkurve“ ein oder mehrere kubische Beziersegmente, wobei jedes Beziersegment durch mehrere Punkte (beispielsweise einen Anfangspunkt, einen Endpunkt und zwei Steuer- bzw. Regelpunkte) definiert ist. Bei alternativen Ausführungsformen beinhaltet der Begriff „Bézierkurve“ Beziersegmente, die für einen beliebigen Grad definiert sind (beispielsweise linear, quadratisch, kubisch und dergleichen).
  • Im Sinne des Vorliegenden bezeichnet der Begriff „Kantenkarte“ eine digitale Darstellung von detektierten Kanten eines Rasterbildes. Der Begriff „Kantenkarte“ beinhaltet eine Datei, eine Matrix oder eine digitale Sammlung (beispielsweise ein Bild oder eine Bitmap), die Pixel definieren, die die Kanten eines Rasterbildes bilden. Das Bildtransformationssystem identifiziert Kanten auf Grundlage von abrupten Änderungen der Bildhelligkeit, der Schattierung oder der Farbe innerhalb des Rasterbildes. Bei einer oder mehreren Ausführungsformen setzt das Bildtransformationssystem eine Canny-Kantendetektion ein, um Kanten in einem Rasterbild zu detektieren. Das Bildtransformationssystem kann beispielsweise den Canny-Kantendetektionsalgorithmus nutzen, der in der folgenden Quelle beschrieben ist: „A Computational Approach To Edge Detection" von J. Canny, veröffentlicht bei IEEE Trans. Pattern Analysis and Machine Intelligence, 8(6): 679-698, 1986. Diese Quelle ist hiermit durch Bezugnahme in Gänze mit aufgenommen. Bei alternativen Ausführungsformen setzt das Bildtransformationssystem andere Kantendetektionsverfahren oder Prozesse ein, um eine Kantenkarte für ein Rasterbild zu generieren. Bei zahlreichen Ausführungsformen beinhaltet die Kantenkarte Kanten mit der Breite von einem Pixel. Des Weiteren beinhaltet die Kantenkarte dann, wenn eine Kante (beispielsweise eine Linie oder eine Kurve eines Rasterelementes) in dem Rasterbild breiter als drei Pixel ist, eine Innenkante und/oder eine Außenkante für die Kante.
  • Im Sinne des Vorliegenden bezeichnet der Begriff „Pixellinie“ mehrere Pixel an einer Kante (beispielsweise einen Teilsatz von Pixeln der Kante) in einer Kantenkarte, die in Verbindung mit einem Rasterbild anzeigbar sind. Der Begriff „Pixellinie“ beinhaltet einen Satz von kontinuierlichen, nichtüberlappenden und nichtunterteilenden Pixeln in der Kantenkarte. Zudem gibt das Bildtransformationsystem beim Bestimmen der Pixellinie die Pixellinie als Überlagerung in einem entsprechenden Pixelbild wieder, was nachstehend noch gezeigt und beschrieben wird.
  • Im Sinne des Vorliegenden bezeichnet der Begriff „Verbindungspixel“ zwei Pixel in einer Kantenkarte, die wenigstens eine gemeinsame Seite oder Ecke teilen. Für ein gegebenes Verbindungspixel ist ein Verbindungspixel ein benachbartes Pixel (beispielsweise ein Pixel, das eine Seite wie oben, unten, links oder rechts, und zwei Ecken mit dem gegebenen Verbindungspixel teilt) oder ein diagonales Pixel (beispielsweise ein Pixel, das eine Ecke, aber keine Seiten mit dem gegebenen Verbindungspixel teilt). Beispiele für benachbarte Pixel und diagonale Pixel sind in 7B gezeigt. Oftmals weist ein gegebenes Verbindungspixel an einer Kante einer Kantenkarte mehrere benachbarte Pixel und/oder diagonale Pixel auf.
  • Wie vorstehend erwähnt worden ist, generiert das Bildtransformationssystem eine Pixellinie durch Stufung zwischen Verbindungspixeln entlang einer Kante in einer Kantenkarte, bis eine Linienbeendigungsbedingung erfüllt ist. Im Sinne des Vorliegenden bezeichnet der Begriff „Linienbeendigungsbedingung“ eine Schwelle, eine Regel oder einen Zustand, die/der das Ende einer Pixellinie angibt. Der Begriff „Linienbeendigungsbedingung“ beinhaltet eine Stufung zu einem gegebenen Pixel (oder ein Erreichen desselben), ohne dass andere Verbindungspixel vorhanden wären, die nicht gestuft oder zu der Pixellinie (beispielsweise am Ende einer Kante) hinzugefügt worden sind. Zusätzlich beinhaltet der Begriff „Linienbeendigungsbedingung“ eine Pixelunterteilung (beispielsweise eine Kantenunterteilung), wo ein gegebenes Pixel drei benachbarte Pixel oder drei diagonale Pixel beinhaltet. Zusätzlich beinhaltet der Begriff „Linienbeendigungsbedingung“ ein Verbindungspixel, das dann, wenn eine Stufung zu ihm hin erfolgt, bewirkt, dass die Pixellinie mit sich selbst überlappt (was beispielsweise im Falle einer Kante in Form einer geschlossenen Schleife der Fall ist). Beispiele für Linienbeendigungsbedingungen werden nachstehend gezeigt und angegeben.
  • Im Sinne des Vorliegenden bezeichnet der Begriff „Nutzerinteraktion“ Nutzereingaben, die von einer Eingabevorrichtung empfangen werden. Der Begriff „Nutzerinteraktion“ beinhaltet eine oder mehrere Nutzereingaben in einer grafischen Nutzerschnittstelle in Verbindung mit der Transformation einer oder mehrerer Kanten eines Rasterbildes in eine Vektorzeichnung. Bei einigen Ausführungsformen beinhaltet die Nutzerinteraktion, dass ein Nutzer einen Cursor bewegt oder eine Berührungseingabe, die eine Kante in dem Rasterbild betrifft, bereitstellt. Bei anderen Ausführungsformen beinhaltet eine Nutzerinteraktion, dass ein Nutzer eine Pixellinie auswählt, die innerhalb der grafischen Nutzerschnittstelle gezeigt wird, was erfordert, dass das Bildtransformationssystem die Pixellinie in ein Vektorzeichnungssegment transformiert. Zusätzliche Beispiele für Nutzerinteraktionen werden nachstehend gezeigt und angegeben.
  • Im Sinne des Vorliegenden bezeichnet der Begriff „zwischengespeicherte Matrix von Bezierkoeffizienten“ oder „zwischengespeicherte Matrix“ eine digitale Darstellung der Koeffizienten, die zum Lösen der Gleichung für eine Näherung der besten Anpassung einer Bezierkurve an eine dichte Sammlung von Punkten notwendig sind. Der Begriff „zwischengespeicherte Matrix“ beinhaltet eine digitale Darstellung von Koeffizienten einer Bezierkurvennäherung entsprechend der Anzahl von Pixeln in einer Pixellinie. Die Speicherung der zwischengespeicherten Matrix von nummerischen Werten nimmt eine Vielzahl von Formen an, so beispielsweise die Form einer Matrix von Zahlen in einem Speicher, einer Datenbank, einer Textdatei oder einer anderen digitalen Darstellung von Bezierkoeffizienten. Das Bildtransformationssystem nutzt beispielsweise dieselbe Matrix von Bezierkoeffizienten, um Bezierkurven an verschiedene Pixellinien anzupassen, wenn die Pixellinien dieselbe Anzahl von Pixeln beinhalten. Bei einigen Ausführungsformen nimmt das Bildtransformationssystem ein Generieren (und Zwischenspeichern) einer Matrix von Bezierkoeffizienten vor, wenn keine zwischengespeicherte Matrix für eine bestimmte Anzahl von Pixeln in einer Pixellinie in einem Zwischenspeicher vorhanden ist.
  • In den Figuren sind zusätzliche Beschreibungen, Merkmale und Vorteile einer oder mehrerer Ausführungsformen des Bildtransformationssystems angegeben. Darstellungshalber beinhaltet 1 eine Übersicht über eine Abfolge von Vorgängen 100 des Generierens einer Vektorzeichnung aus einem Rasterbild entsprechend einer oder mehreren Ausführungsformen. Bei einer oder mehreren Ausführungsformen führt das Bildtransformationssystem die Abfolge von Vorgängen 100 durch. Eine Clientvorrichtung und/oder eine Servervorrichtung, die das Bildtransformationssystem beispielsweise implementiert, führt die Abfolge von Vorgängen 100 des Generierens einer Vektorzeichnung aus einem Rasterbild durch.
  • Wie in 1 gezeigt ist, führt das Bildtransformationssystem einen Vorgang 102 des Generierens einer Kantenkarte für ein Rasterbild durch. Das Bildtransformationssystem identifiziert beispielsweise ein Rasterbild mit einem Rasterelement (beispielsweise einem Hund), das von einem Nutzer bereitgestellt wird. Bei einer oder mehreren Ausführungsformen wird das Rasterbild zur Anzeige durch das Bildtransformationssystem oder ein anderes System (beispielsweise ein Bildbearbeitungssystem) bereitgestellt, das das Bildtransformationssystem beinhaltet.
  • Wie vorstehend erwähnt worden ist, nimmt das Bildtransformationssystem ein Generieren (oder Empfangen) einer Kantenkarte des Rasterbildes vor. Im Zusammenhang mit 1 nutzt das Bildtransformationssystem die Kantenkarte in Form eines Bildes, wodurch angegeben wird, wo Kanten in einem Rasterbild detektiert werden. Die Kantenkarte muss dem Nutzer nicht in der grafischen Nutzerschnittstelle angezeigt werden, sondern wird vielmehr auf der Rechenvorrichtung im Hintergrund generiert und benutzt. Zusätzliche Details im Zusammenhang mit dem Generieren von Kantenkarten sind nachstehend in Verbindung mit 2A und 2B angegeben.
  • Wie in 1 gezeigt ist, führt das Bildtransformationssystem zudem einen Vorgang 104 des Detektierens einer ersten Nutzerinteraktion mit einer Kante in dem Rasterbild durch. Der Nutzer bewegt beispielsweise einen Cursor (beispielsweise mittels eines Cursors, einer Computermaus oder einer Berührungseingabe) zu einer Kante in dem Rasterbild. Wie bei dem Vorgang 104 gezeigt ist, detektiert das Bildtransformationssystem die erste Nutzerinteraktion auf Grundlage dessen, dass der Nutzer den Cursor nahe an eine Kante des Rasterbildes heran entsprechend der äußeren Kante des Hundes bewegt. Zusätzliche Details im Zusammenhang mit dem Detektieren einer Nutzerinteraktion werden nachstehend in Verbindung mit 2A und 2B angegeben.
  • Auf Grundlage der ersten Nutzerinteraktion kann das Bildtransformationssystem eine Pixellinie generieren. Darstellungshalber zeigt 1 das Bildtransformationssystem, das einen Vorgang 106 des Generierens einer Pixellinie unter Nutzung der Kantenkarte durchführt. Insbesondere bildet das Bildtransformationssystem die erste Nutzerinteraktion in dem Rasterbild ab, um eine entsprechende detektierte Kante in der Kantenkarte zu identifizieren. Bei einer einfachen Darstellung bildet das Bildtransformationssystem den Cursor nahe an einer Kante in dem Rasterbild, wie bei dem Vorgang 104 gezeigt ist, auf die Kantenkarte, wie bei dem Vorgang 106 gezeigt ist, ab, um die entsprechende Kante in der Kantenkarte zu detektieren.
  • Sobald das Bildtransformationssystem eine detektierte Kante in der Kantenkarte entsprechend der Nutzerinteraktion identifiziert, generiert das Bildtransformationssystem eine Pixellinie durch Anwenden eines Stufungsalgorithmus auf die detektierte Kante in der Kantenkarte. Das Bildtransformationssystem identifiziert beispielsweise kontinuierliche Pixel entlang der detektierten Kante in der Kantenkarte und erstellt die Pixellinie. Zusätzliche Details im Zusammenhang mit dem Generieren einer Pixellinie werden nachstehend in Verbindung mit 2B bis 2E und 6 bis 7C angegeben.
  • Zusätzlich führt das Bildtransformationssystem, wie in 1 gezeigt ist, auch einen Vorgang 108 des Anzeigens der Pixellinie über dem Rasterbild aus. Beim Generieren der Pixellinie aus der Kantenkarte zeigt das Bildtransformationssystem die Pixellinie mit dem Rasterbild beispielsweise in der grafischen Nutzerschnittstelle an. Bei einer oder mehreren Ausführungsformen bildet das Bildtransformationssystem die Pixellinie auf eine Bitmap (beispielsweise eine Bildschicht) ab, die über dem Rasterbild angezeigt wird. Da die Kantenkarte aus dem Rasterbild generiert wird, wird die Pixellinie in dem Rasterbild über der Kante, die der detektierten ersten Nutzerinteraktion zugeordnet ist, angezeigt. Darstellungshalber zeigt der Vorgang 108, dass das Bildtransformationssystem eine Pixellinie (beispielsweise den Umriss eines Hundes) über dem Rasterbild auf Grundlage der ersten Nutzerinteraktion (beispielsweise der Position des Cursors neben der äußeren Kante des Hundes) anzeigt.
  • Bei einigen Ausführungsformen beinhaltet die erste Nutzerinteraktion eine Cursorbewegung zwischen Kanten des Rasterbildes in der grafischen Nutzerschnittstelle. Bewegt die erste Nutzerinteraktion den Cursor beispielsweise von einer ersten Kante zu einer zweiten Kante des Rasterbildes, so generiert das Bildtransformationssystem eine erste Pixellinie für die erste Kante und generiert sodann eine zweite Pixellinie für die zweite Kante. Zusätzlich zeigt das Bildtransformationssystem, während der Cursor nahe an der ersten Kante ist, die erste Pixellinie an, woraufhin, wenn sich der Cursor von der ersten Kante wegbewegt, das Bildtransformationssystem die erste Pixellinie entfernt. Beim Detektieren, dass der Cursor nahe an der zweiten Kante ist, zeigt das Bildtransformationssystem die zweite Pixellinie über dem Rasterbild an. Insbesondere wenn eine Pixellinie in Reaktion auf eine erste Nutzerinteraktion über dem Rasterbild angezeigt wird, verzögert das Bildtransformationssystem das Transformieren der Pixellinie in ein V ektorzeich n u ngssegm ent.
  • Wie in 1 gezeigt ist, führt das Bildtransformationssystem zudem einen Vorgang 110 des Wiedergebens eines Vektorzeichnungssegmentes, das an die Pixellinie angepasst ist, durch. Das Bildtransformationssystem detektiert beispielsweise eine zweite Nutzerinteraktion, bei der ein Nutzer die Pixellinie auswählt, die in der grafischen Nutzerschnittstelle (beispielsweise über dem Rasterbild) angezeigt wird. In Reaktion auf das Detektieren der zweiten Nutzerinteraktion, die die Pixellinie auswählt, passt das Bildtransformationssystem ein Vektorzeichnungssegment, so beispielsweise eine kubische Bezierkurve, an die Pixellinie an und gibt das Vektorzeichnungssegment in der grafischen Nutzerschnittstelle (beispielsweise als zweite Überlagerung) wieder. Zusätzliche Details im Zusammenhang mit dem Anpassen eines Vektorzeichnungssegmentes an eine Pixellinie sind nachstehend angegeben.
  • Bei einer oder mehreren Ausführungsformen detektiert das Bildtransformationssystem beim Generieren des Vektorzeichnungssegmentes zusätzliche Nutzerinteraktionen, die Kanten identifizieren und entsprechende Pixellinien auswählen. Bei den meisten Ausführungsformen passt das Bildtransformationssystem ein Vektorzeichnungssegment an die ausgewählte Pixellinie nur dann an, wenn eine Pixellinie ausgewählt ist. Auf diese Weise ermöglicht das Bildtransformationssystem, dass der Nutzer selektiv identifiziert, welche Kanten/Pixellinien des Rasterbildes in eine Vektorzeichnung transformiert werden sollen, ohne dass alle Kanten umgewandelt oder unerwünschte umgewandelte Kanten entfernt werden müssten. Indem nicht alle Kanten des Rasterbildes in eine Vektorzeichnung umgewandelt werden, verringert das Bildtransformationssystem erheblich die Anforderungen an die Verarbeitung, die dafür benötigt wird, ein Rasterbild in eine Vektorzeichnung zu transformieren.
  • Die nächste Figur zeigt zusätzliche Details des Generierens einer Vektorzeichnung aus einem Rasterbild. 2A bis 2F zeigen beispielsweise weitere Details des Generierens von verbesserten Digitalbildern durch Transformieren von in Rasterbildern befindlichen rasterbasierten Elementen in Vektorzeichnungssegmente entsprechend einer oder mehreren Ausführungsformen. Insbesondere nutzt das Bildtransformationssystem Nutzerinteraktionen, um ausgewählte Abschnitte eines Rasterbildes in eine Vektorzeichnung zu transformieren.
  • Wie gezeigt ist, beinhalten 2A bis 2F eine Clientvorrichtung 200, die eine grafische Nutzerschnittstelle 202 aufweist. Bei einer oder mehreren Ausführungsformen stellt ein Bildbearbeitungssystem die grafische Nutzerschnittstelle 202 zur Anzeige auf der Clientvorrichtung 200 bereit. Bei diesen Ausführungsformen arbeitet das Bildtransformationssystem innerhalb des Bildbearbeitungssystems. Bei alternativen Ausführungsformen stellt das Bildtransformationssystem die grafische Nutzerschnittstelle 202 bereit. Ein Beispiel für ein Bildbearbeitungssystem wird nachstehend anhand 10 und 11 beschrieben.
  • Die grafische Nutzerschnittstelle 202 beinhaltet, wie gezeigt ist, ein Rasterbild 204 eines Rasterelementes 206 (beispielsweise einen Becher mit einem Emblem). Das Rasterbild 204 stellt ein importiertes Bild, das von einem Nutzer bereitgestellt wird, dar, so beispielsweise ein Rasterbild, das von einer Digitalkamera aufgenommen oder aus dem Internet heruntergeladen worden ist. Obwohl dies nicht gezeigt ist, kann das Rasterbild 204 mehrere Rasterelemente (beispielsweise Objekte oder Subjekte) beinhalten.
  • Das Rasterelement 206 innerhalb des Rasterbildes 204 beinhaltet zahlreiche Kanten. Wie vorstehend erwähnt worden ist, bestimmt das Bildtransformationssystem eine Kante auf Grundlage einer Änderung der Bildhelligkeit, der Schattierung oder der Farbe innerhalb des Rasterbildes. Bei den meisten Rasterbildern beinhalten Rasterelemente Kanten, die das Rasterelement (beispielsweise ein Vordergrundobjekt) vom Hintergrund des Bildes unterscheiden. Auf gleiche Weise beinhalten Rasterelemente oftmals Linien, Formen, Farben oder Muster, die Kanten bilden. Wie in 2A gezeigt ist, beinhaltet das Rasterelement 206 in dem Rasterbild 204 beispielsweise mehrere Kanten, die äußere Kanten und innere Kanten beinhalten.
  • Bei verschiedenen Ausführungsformen transformiert das Bildtransformationssystem eine oder mehrere Kanten, die von einem Nutzer ausgewählt worden sind, auf Grundlage von Nutzerinteraktionen in ein Vektorzeichnungssegment. In diesem Zusammenhang kann eine Nutzerinteraktion eine einzige Interaktion oder eine Kombination von Interaktionen beinhalten, die von einem Nutzer mittels einer oder mehrerer Eingabevorrichtungen (beispielsweise mittels einer Texteingabevorrichtung, einer Zeigervorrichtung und/oder eines berührungsempfindlichen Schirmes) empfangen werden. Bei einer oder mehreren Ausführungsformen detektiert das Bildtransformationssystem Nutzerinteraktionen mit der grafischen Nutzerschnittstelle 202 auf Grundlage von Cursorbewegungen und Auswahlen (beispielsweise „Clicks“), die von dem Nutzer bereitgestellt werden (oder auch eine andere Nutzereingabe, so beispielsweise eine Berührung, ein Wegziehen (dragging) und/oder Freigabeereignisse auf einen berührungsempfindlichen Schirm).
  • Wie in 2A gezeigt ist, beinhaltet die grafische Nutzerschnittstelle 202 einen Cursor 208 (beispielsweise einen digitalen Mauszeiger), der die Position oder den Ort einer Nutzerinteraktion angibt. Der einfacheren Erklärung halber ist ein Cursor in einer grafischen Nutzerschnittstelle in vielen der Figuren angezeigt. Gleichwohl kann das Bildtransformationssystem die hier beschriebenen Vorgänge auch ohne Anzeigen eines Cursors durchführen. Anstatt dass die Cursorbewegungen und Auswahlen zum Detektieren von Nutzerinteraktionen genutzt werden, nutzt das Bildtransformationssystem beispielsweise andere Eingaben (beispielsweise Eingaben an einem berührungsempfindlichen Schirm), um Nutzerinteraktionen zu detektieren. Viele mobile Clientvorrichtungen zeigen keinen Cursor an. Obwohl ein Cursor gezeigt ist und im Zusammenhang mit dem Detektieren von Nutzerinteraktionen beschrieben wird, detektiert das Bildtransformationssystem auf ähnliche Weise Nutzerinteraktionen durch zusätzliche oder alternative Verfahren.
  • Bei einer oder mehreren Ausführungsformen detektiert das Bildtransformationssystem Bewegungen des Cursors 208 in der grafischen Nutzerschnittstelle 202 (empfängt beispielsweise Cursorpositionen von einem Betriebssystem auf der Clientvorrichtung 200) oder detektiert Auswahlen (beispielsweise „Clicks“) des Cursors 208. Wie in 2A gezeigt ist, detektiert das Bildtransformationssystem beispielsweise, dass der Nutzer den Cursor 208 nahe an die äußere Kante des Emblems an dem Rasterelement 206 heran bewegt. Bei verschiedenen Ausführungsformen nutzt das Bildtransformationssystem die Position des Cursors 208 zum Detektieren einer Kante des Rasterelementes 206, die der Nutzer vektorisieren (beispielsweise in ein Vektorzeichnungssegment umwandeln) möchte.
  • Bei einer oder mehreren Ausführungsformen detektiert das Bildtransformationssystem vor dem Transformieren einer ausgewählten Kante in ein Vektorzeichnungssegment zunächst Kanten des Rasterelementes 206. Bei einer oder mehreren Ausführungsformen bestimmt das Bildtransformationssystem zunächst, welche Pixel in dem Rasterbild 204 eine Kante bilden. Bei verschiedenen Ausführungsformen bestimmt das Bildtransformationssystem Kanten in dem Rasterbild 204 durch Generieren einer Kantenkarte.
  • Das Bildtransformationssystem generiert eine Kantenkarte unter Nutzung eines Kantendetektoralgorithmus. Bei einigen Ausführungsformen nutzt das Bildtransformationssystem beispielsweise den Canny-Kantendetektor zum Generieren einer Rasterbitmapdarstellung (das heißt einer Kantenkarte) des Rasterbildes 204. Bei alternativen Ausführungsformen nutzt das Bildtransformationssystem einen anderen Kantendetektor und/oder Algorithmus zum Detektieren von Kanten innerhalb des Rasterbildes 204. Unabhängig von dem benutzten Kantendetektor oder Algorithmus stellt das Bildtransformationssystem beim Generieren der Kantenkarte bei einer oder mehreren Ausführungsformen sicher, dass die detektierten Kanten in dem Rasterbild 204 als ein Pixel breite Linien (das heißt mit der Breite von 1-Pixel) in der Kantenkarte 210 dargestellt werden.
  • Darstellungshalber zeigt 2B eine Kantenkarte 210 des Rasterbildes 204, die von dem Bildtransformationssystem erzeugt worden ist. Jede detektierte Kante in der Kantenkarte 210 wird durch eine ein Pixel breite Linie dargestellt. Bei einigen Beispielen stellt das Bildtransformationssystem eine dickere Linie oder Form in dem Rasterbild 204 (beispielsweise eine Linie oder Form, die wenigstens drei Pixel breit ist) unter Nutzung mehrerer ein Pixel breiter Linien dar. Treten eine dickere Linie oder Form in dem Rasterbild 204 auf, so identifiziert das Bildtransformationssystem mehrere Kanten, die der Linie oder Form (beispielsweise einer Form mit einer inneren Kante, einer äußeren Kante oder einer Linie mit zwei äußeren Kanten) zugeordnet sind. Da die Grenze um das Emblem herum in dem Rasterbild 204 beispielsweise dicker ist, detektiert das Bildtransformationssystem eine äußere ein Pixel breite Linie und eine innere ein Pixel breite Linie in der entsprechenden Kantenkarte 210.
  • Beim Durchführen der Kantendetektion von Kanten in dem Rasterbild 204 nutzt das Bildtransformationssystem verschiedene Kantendetektionsparameter und/oder Pixeldichten von verfügbaren Pixeln, um mehr oder weniger Kanten zu detektieren. Das Bildtransformationssystem modifiziert beispielsweise einen oder mehrere Kantendetektionsparameter, um die Anzahl von Kanten, die in dem Rasterbild 204 detektiert werden, zu erhöhen (beispielsweise durch Detektieren schwächerer oder weniger kontrastierender Kanten). Umgekehrt modifiziert das Bildtransformationssystem einen oder mehrere Kantendetektionsparameter, um die Anzahl von Kanten, die in dem Rasterbild 204 detektiert werden, zu verringern (beispielsweise durch Detektieren lediglich stärkerer oder besser kontrastierender Kanten), um wiederum das Cluttern in stark texturierten Rasterbildern zu verringern. Bei einigen Ausführungsformen modifiziert das Bildtransformationssystem, wie nachstehend noch anhand von 5A und 5B beschrieben wird, Kantendetektionsparameter auf Grundlage von zusätzlichen Faktoren, so beispielsweise einer Auswahloperation.
  • Bei verschiedenen Ausführungsformen generiert das Bildtransformationssystem eine Kantenkarte 210 derart, dass diese auf die Auflösung des Rasterbildes 204 abgestimmt ist. Durch Bereitstellen einer Kantenkarte mit derselben Auflösung wie in dem Rasterbild bildet das Transformationssystem Koordinaten und Pixel ohne Weiteres zwischen den beiden Bitmaps (beispielsweise dem Rasterbild 204 und der Kantenkarte 210), wie nachstehend noch beschrieben wird, ab. Bei alternativen Ausführungsformen generiert das Bildtransformationssystem eine Kantenkarte 210 derart, dass diese eine niedrigere oder höhere Auflösung als das Rasterbild 204 aufweist.
  • Bei einer oder mehreren Ausführungsformen führt das Bildtransformationssystem eine Vorverarbeitung an dem Rasterbild 204 durch, um die Kantendetektion zu verbessern. Das Bildtransformationssystem wendet beispielsweise einen oder mehrere Filter an, die Farbe minimieren, Rauschen verringern und/oder den Kontrast des Rasterbildes 204 vergrößern. Bei einigen Ausführungsformen wendet das Bildtransformationssystem einen bilateralen bzw. zweiseitigen Filter an, um das Rauschen zu verringern, während die Kantenschärfe des Rasterbildes 204 erhalten bleibt, bevor die Kantendetektion durchgeführt und die Kantenkarte 210 generiert wird.
  • Bei einigen Ausführungsformen generiert das Bildtransformationssystem die Kantenkarte bei Empfang einer Aufforderung von dem Nutzer dahingehend, selektiv Kanten an dem Rasterbild 204 in eine Vektorzeichnung zu transformieren (beispielsweise das Rasterelement 206 in dem Rasterbild 204 in ein Vektorzeichnungssegment zu transformieren). Bei alternativen Ausführungsformen generiert das Bildtransformationssystem die Kantenkarte 210 automatisch, und zwar beispielsweise beim Laden des Rasterbildes 204 oder beim Detektieren einer Auswahl eines bestimmten Bildbearbeitungswerkzeuges.
  • Obwohl 2B die Kantenkarte 210 in der grafischen Nutzerschnittstelle 202 zeigt, zeigt das Bildtransformationssystem bei einer oder mehreren Ausführungsformen die Kantenkarte 210 einem Nutzer nicht in der grafischen Nutzerschnittstelle 202 an. Das Bildtransformationssystem generiert die Kantenkarte 210 als Rasterbitmapbild im Hintergrund der Clientvorrichtung 200. Bei alternativen Ausführungsformen zeigt das Bildtransformationssystem die Kantenkarte 210 in Verbindung mit dem Rasterbild 204 an. Das Bildtransformationssystem stellt die Kantenkarte 210 als Schicht bereit, die in der grafischen Nutzerschnittstelle 202 auf Grundlage einer Nutzereingabe (das heißt einer Nutzerinteraktion) verborgen oder offengelegt sein kann. Bei einem anderen Beispiel zeigt das Bildtransformationssystem die Kantenkarte 210 als Überlagerung auf dem Rasterbild an.
  • Wie vorstehend in Verbindung mit 2A erwähnt worden ist, detektiert das Bildtransformationssystem eine Nutzerinteraktion auf Grundlage dessen, dass der Nutzer den Cursor 208 über das Rasterbild 204 bewegt. Auf Grundlage der Position des Cursors 208 in Bezug auf das Rasterbild 204 identifiziert das Bildtransformationssystem eine detektierte Kante in der Kantenkarte 210. Das Bildtransformationssystem bildet die Position des Cursors 208 aus dem Rasterbild 204 beispielsweise auf die Kantenkarte 210 ab, um eine detektierte Kante entsprechend der Position des Cursors 208 zu identifizieren.
  • Insbesondere detektiert das Bildtransformationssystem bei einer oder mehreren Ausführungsformen die x-, y-Koordinaten des Rasterbildes 204 auf Grundlage der Cursorposition (das heißt der Nutzerinteraktion). Sodann bildet das Bildtransformationssystem die Rasterbildkoordinaten auf die Kantenkarte 210 (auf die Kantenkarte 210) ab. Weisen das Rasterbild 204 und die Kantenkarte 210 dieselbe Auflösung auf, so besteht eine 1-zu-1-Pixelentsprechung. Erläuterungshalber beinhaltet die Kantenkarte 210 einen abgebildeten Cursor 209, der der Position des Cursors 208 in 2A entspricht. Bei vielen Ausführungsformen zeigt die Kantenkarte 210 jedoch keinem Cursor an und beinhaltet diesen auch nicht, sondern nutzt vielmehr die abgebildeten Koordinaten.
  • Durch Nutzung des abgebildeten Cursors 209 (das heißt der abgebildeten Koordinaten) bestimmt das Bildtransformationssystem eine oder mehrere detektierte Kanten in der Kantenkarte 210. Bei einer oder mehreren Ausführungsformen bestimmt das Bildtransformationssystem beispielsweise, ob eine detektierte Kante innerhalb eines Schwellenabstandes (das heißt innerhalb von 3, 5 oder 10 Pixeln) des abgebildeten Cursors befindlich ist. Sind mehrere detektierte Kanten innerhalb des Schwellenabstandes befindlich, so identifiziert das Bildtransformationssystem diejenige detektierte Kante, die am nächsten an der Position des abgebildeten Cursors 209 ist. Bei einigen Ausführungsformen identifiziert das Bildtransformationssystem ein Pixel an einer detektierten Kante, die am nächsten an der Position (beispielsweise x-, y-Koordinaten) des abgebildeten Cursors 209 ist. Das Bildtransformationssystem vergleicht die Koordinaten des abgebildeten Cursors 209 oder der abgebildeten Koordinaten mit den Koordinaten eines oder mehrerer Pixel entlang der detektierten Kante, um das nächstgelegene Pixel zu identifizieren.
  • Darstellungshalber identifiziert das Bildtransformationssystem in Reaktion darauf, dass die Nutzerinteraktion von dem Nutzer, der den Cursor 208 über das Rasterbild 204 bewegt, detektiert wird, die Position des abgebildeten Cursors 209 innerhalb der Kantenkarte 210. Auf Grundlage des abgebildeten Cursors 209 bestimmt das Bildtransformationssystem, das eine detektierte Kante 212 nahe an den abgebildeten Koordinaten ist. Zusätzlich identifiziert das Bildtransformationssystem entlang der detektierten Kante 212 ein Pixel, das am nächsten an den abgebildeten Koordinaten des abgebildeten Cursors 209 ist.
  • Beim Identifizieren einer detektierten Kante generiert das Bildtransformationssystem eine Pixellinie für die detektierte Kante. Bei einer oder mehreren Ausführungsformen setzt das Bildtransformationssystem beispielsweise einen Stufungsalgorithmus ein, um eine kontinuierliche, nichtendende Linie von Verbindungspixeln an der detektierten Kante zu generieren. Bei einigen Ausführungsformen speichert das Bildtransformationssystem, wenn das Bildtransformationssystem die Pixellinie generiert, die x-, y-Pixelkoordinaten eines jeden Pixels entlang der detektierten Kante, die zum Definieren der Pixellinie benutzt wird. Die weitere Beschreibung im Zusammenhang damit, dass das Bildtransformationssystem eine Pixellinie aus einer detektierten Kante einer Kantenkarte generiert, erfolgt nachstehend anhand von 6 bis 7C.
  • Darüber hinaus zeigt das Bildtransformationssystem die Pixellinie mit Generierung auf Grundlage der detektierten Kante in der Kantenkarte über dem Rasterbild an. Darstellungshalber zeigt 2C eine erste Pixellinie 214, die die äußere Kante des Emblems auf dem Becher (das heißt das Rasterelement 206) hervorhebt, die der generierten Pixellinie entspricht. Bei einer oder mehreren Ausführungsformen bildet das Bildtransformationssystem die gespeicherten Pixelkoordinaten der Pixellinie, die aus der detektierten Kante 212 in der Kantenkarte 210 generiert worden sind, beispielsweise auf das Rasterbild 204 ab, um die erste Pixellinie 214 wiederzugeben. Wie gezeigt ist, ist die erste Pixellinie 214 ein Rasterbild von Pixeln und kein Vektorzeichnungssegment. Insbesondere unterbricht das Bildtransformationssystem das Vektorisieren der ersten Pixellinie 214, bis eine zusätzliche Nutzerinteraktion detektiert wird, was nachstehend noch beschrieben wird.
  • Wie vorstehend erwähnt worden ist, hebt das Bildtransformationssystem die erste Pixellinie 214 bei Wiedergabe als Überlagerung auf dem Rasterbild 204 hervor. Bei verschiedenen Ausführungsformen hebt das Bildtransformationssystem die erste Pixellinie 214 über dem Rasterbild hervor oder betont diese auf andere Weise. Das Bildtransformationssystem setzt beispielsweise eine Vielzahl von Farben, Gewichtungen, Dicken und/oder Mustern ein, um einen Kontrast zwischen der Pixellinie 214 und dem Rasterbild 204 zu erzeugen.
  • Bei vielen Ausführungsformen generiert das Bildtransformationssystem die Kantenkarte 210, identifiziert die detektierte Kante 212 in der Kantenkarte 210 auf Grundlage der Nutzerinteraktion, generiert die erste Pixellinie 214 und zeigt die erste Pixellinie 214 in Echtzeit oder nahezu in Echtzeit an, wenn der Nutzer mit der Nutzerschnittstelle 202 interagiert (beispielsweise einen Cursor bewegt). Wie vorstehend beschrieben worden ist, zeigt das Bildtransformationssystem dem Nutzer des Weiteren die Kantenkarte 210 oftmals nicht an. Aus der Perspektive des Nutzers zeigt das Bildtransformationssystem daher, wenn der Nutzer den Cursor 208 zu einer Kante des Rasterbildes 204 bewegt, die erste Pixellinie 214 nahezu instantan über einer Kante nahe an dem Cursor 208 an.
  • Bei einer oder mehreren Ausführungsformen behält das Bildtransformationssystem die Überlagerung, die die erste Pixellinie 214 anzeigt, bei, während der Cursor 208 nahe an der ersten Pixellinie 214 ist. Während der Cursor 208 beispielsweise innerhalb eines Schwellenabstandes (von beispielsweise weniger als 5 Pixeln) von der ersten Pixellinie 214 befindlich ist, zeigt das Bildtransformationssystem die erste Pixellinie 214 an. Beim Detektieren dessen, dass eine Nutzerinteraktion den Cursor 208 weg von der ersten Pixellinie 214 (beispielsweise über den Schwellenabstand hinaus) bewegt, entfernt das Bildtransformationssystem die Überlagerung der ersten Pixellinie 214 über dem Rasterbild 204. Signalisiert die detektierte Nutzerinteraktion dem Bildtransformationssystem, dass der Nutzer an der ersten Pixellinie 214 nicht mehr interessiert ist, so verbirgt das Bildtransformationssystem die erste Pixellinie 214 oder entfernt diese.
  • Nach dem Entfernen der ersten Pixellinie 214 kann, wenn das Bildtransformationssystem später eine nachfolgende Nutzerinteraktion detektiert, die den Cursor 208 über die äußere Kante des Emblems bewegt, das Bildtransformationssystem die erste Pixellinie 214 erneut wiedergeben. Das Bildtransformationssystem durchsucht beispielsweise eine generierte Pixellinientabelle oder Pixellinienbitmap, um zu bestimmen, ob der Cursor 208 über einer Pixelkoordinate, die für die erste Pixellinie 214 gespeichert ist (oder innerhalb einer Schwellenanzahl von Pixeln bei wie auch näher als Pixel auf einer anderen Pixellinie ist), befindlich ist, und gibt, wenn dem so ist, die erste Pixellinie 214 wieder. Bei alternativen Ausführungsformen wiederholt das Bildtransformationssystem die Schritte des Identifizierens der detektierten Kante 212 in der Kantenkarte 210 auf Grundlage der nachfolgenden Nutzerinteraktion, wendet den Stufungsalgorithmus auf die detektierte Kante 212 an, um eine neue Pixellinie zu generieren, und gibt die neue Pixellinie als Überlagerung auf dem Rasterbild 204 wieder.
  • Auf ähnliche Weise generiert, wenn das Bildtransformationssystem bestimmt, dass eine Nutzerinteraktion den Cursor 208 zu einer anderen Kante bewegt, das Bildtransformationssystem eine zweite Pixellinie für die aktualisierte Position des Cursors 208. Darstellungshalber zeigt 2D eine zweite Pixellinie 216, die als Überlagerung auf dem Rasterbild 204 auf Grundlage dessen angezeigt wird, dass der Cursor 208 von einem Nutzer zu einer anderen Kante innerhalb des Rasterbildes 204 bewegt wird. 2E zeigt, dass das Bildtransformationssystem die zweite Pixellinie 216 entfernt und die erste Pixellinie 214 auf Grundlage dessen erneut anzeigt, dass eine Nutzerinteraktion detektiert wird, die den Cursor 208 über einen Abschnitt der äußeren Kante des Emblems bewegt.
  • In Reaktion darauf, dass detektiert wird, dass der Nutzer den Cursor 208 über dem Rasterbild 204 bewegt, prüft das Bildtransformationssystem die Koordinaten des Cursors 208 anhand detektierter Kanten der Kantenkarte 208, wobei das Bildtransformationssystem, wenn die abgebildeten Koordinaten des abgebildeten Cursors 209 nahe an einem Pixel einer detektierten Kante oder darüber sind, das Bildtransformationssystem eine Pixellinie generiert, indem es die detektierte Kante von dem identifizierten Pixel aus nach außen nachbildet. Das Bildtransformationssystem überlagert die Pixellinie des Weiteren einer entsprechenden Kante in dem Rasterbild 204. Detektiert das Bildtransformationssystem sodann, dass der Nutzer den Cursor 208 von einer detektierten Kante wegbewegt, so entfernt das Bildtransformationssystem die Pixellinienüberlagerung aus der grafischen Nutzerschnittstelle.
  • Bei den meisten Ausführungsformen gibt das Bildtransformationssystem lediglich eine einzige Pixellinie auf einmal über dem Rasterbild 204 wieder. Bei alternativen Ausführungsformen zeigt das Bildtransformationssystem jedoch mehr als eine Pixellinie auf einmal an. Das Bildtransformationssystem kann eine Pixellinie beispielsweise während einer minimalen Zeitspanne anzeigen, nachdem der Cursor 208 weg von der Pixellinie bewegt worden ist, bevor die Pixellinie entfernt wird. Während die Anzeige der vorherigen Pixellinie erhalten bleibt, kann das Bildtransformationssystem eine neue Pixellinie anzeigen.
  • Wie vorstehend erwähnt worden ist, gibt das Bildtransformationssystem die erste Pixellinie 214 wieder, ohne dass die erste Pixellinie 214 vektorisiert würde. Das Bildtransformationssystem wartet mit der Transformation der ersten Pixellinie 214 in ein Vektorzeichnungssegment, so beispielsweise eine Bezierkurve, bis der Nutzer eine Angabe dahingehend, diese Transformation durchzuführen, bereitstellt. Das Bildtransformationssystem detektiert eine Nutzerinteraktion, die eine Pixellinie (beispielsweise durch Anklicken, Antippen, Gedrückthalten oder Drücken) auswählt, die über dem Rasterbild 204 angezeigt wird. In Reaktion hierauf generiert das Bildtransformationssystem ein Vektorzeichnungssegment für die ausgewählte Pixellinie.
  • Darstellungshalber detektiert das Bildtransformationssystem eine Nutzerschnittstelle, die die erste Pixellinie 214 in 2E auswählt. In Reaktion hierauf generiert das Bildtransformationssystem ein Vektorzeichnungssegment für die erste Pixellinie 214, wie in 2F gezeigt ist. Insbesondere zeigt 2F ein Vektorzeichnungssegment 220 anstelle der ersten Pixellinie 214. Bei einer oder mehreren Ausführungsformen stellt das Bildtransformationssystem das Vektorzeichnungssegment 220 in einer separaten Überlagerung (beispielsweise Schicht) bereit, die jedes der Vektorzeichnungssegmente, die aus ausgewählten Pixellinien transformiert worden sind, (beispielsweise eine Vektorzeichnungsschicht) beinhaltet.
  • Bei verschiedenen Ausführungsformen transformiert das Bildtransformationssystem die ausgewählte Pixellinie in ein Vektorzeichnungssegment, indem es eine Bezierkurve an die ausgewählte Pixellinie anpasst. Das Bildtransformationssystem nutzt die Koordinaten der ausgewählten Pixellinie beispielsweise dafür, eine Bezierkurve an die ausgewählte Pixellinie anzupassen. Insbesondere kann das Bildtransformationssystem mehrere Bezierkurven an eine Pixellinie anpassen, um eine glatte bzw. stetige, genaue und enge Anpassung sicherzustellen. Die weitere Beschreibung im Zusammenhang mit dem Anpassen von Bezierkurven an eine ausgewählte Pixellinie erfolgt anhand 8 und 9.
  • Zusätzlich zeigt 2F Vektorsteuerungen bzw. Regelungen 218 (beispielsweise Steuer- bzw. Regellinien und Steuer- bzw. Regelpunkte) in Verbindung mit dem Vektorzeichnungssegment 220. Bei einer oder mehreren Ausführungsformen stellt das Bildtransformationssystem Vektorsteuerungen bzw. Regelungen 218 für einen Nutzer bereit, um das Vektorzeichnungssegment 220 dazu weiter zu modifizieren, dass es zu den Vorlieben eines Nutzers passt. Bei Ausführungsformen, bei denen das Vektorzeichnungssegment 220 aus mehreren Bezierkurven besteht, kann das Bildtransformationssystem die Vektorsteuerungen bzw. Regelungen 218 für jede Bezierkurve bereitstellen. Bei verschiedenen Ausführungsformen verbirgt das Bildtransformationssystem die Vektorsteuerungen bzw. Regelungen 218 für die grafische Nutzerschnittstelle 202 zudem, bis der Nutzer das Vektorzeichnungssegment 220 und/oder eine Option dahingehend, die Vektorsteuerungen bzw. Regelungen 218 zu zeigen, auswählt.
  • Beim Wiedergeben des Vektorzeichnungssegmentes 220 stellt das Bildtransformationssystem für den Nutzer eine Vektorzeichnung bereit. Das Bildtransformationssystem stellt beispielsweise eine auswählbare Option für den Nutzer dahingehend bereit, das Rasterbild 204 zu entfernen und/oder eine Vektorzeichnung des Vektorzeichnungssegmentes 220 in einem separaten Bild anzuzeigen. Darstellungshalber zeigt 2G die Vektorzeichnung 222, die das Vektorzeichnungssegment 220 beinhaltet. Zusätzlich beinhaltet die Vektorzeichnung 222 zusätzliche Vektorzeichnungssegmente (beispielsweise Pixellinien, die den äußeren Kanten des Bechers entsprechen), die von dem Nutzer ausgewählt und von dem Bildtransformationssystem transformiert worden sind.
  • Wie vorstehend beschrieben worden ist, bietet das Bildtransformationssystem viele Vorteile, indem es eine Pixellinie nicht vektorisiert, bis eine Nutzereingabe dahingehend empfangen wird, die Pixellinie in ein Vektorzeichnungssegment zu transformieren. Im Gegensatz zu herkömmlichen Systemen, die beispielsweise Batch-Umwandlungen durchführen, werden lediglich Kanten, die von dem Nutzer gewünscht sind, transformiert, wodurch eine Flexibilität bereitgestellt wird, die von herkömmlichen Systemen nicht erreichbar ist. Dieses selektive Transformieren vereinfacht zudem nicht nur die Bildbearbeitung und verringert nicht nur die Bildbearbeitungszeit für einen Nutzer durch erhöhte Flexibilität, sondern verringert auch die Rechenschritte der selektiven Transformation, indem unerwünschte Kanten/Pixellinien, die der Nutzer manuell entfernen muss, nicht transformiert werden. Das Bildtransformationssystem erreicht eine größere Recheneffizienz gegenüber herkömmlichen Systemen, indem es weniger Kanten transformiert. Dies verringert auch die Speichernutzung.
  • Als weiterer Vorteil bietet das Bildtransformationssystem eine erhöhte Genauigkeit gegenüber herkömmlichen Systemen, indem es ermöglicht, dass der Nutzer eine Kante oder einen Abschnitt einer Kante eines Rasterbildes verifiziert, um diese/diesen in ein Vektorzeichnungssegment zu transformieren. Transformiert das Bildtransformationssystem eine Kante jedoch nicht richtig, so stellt das Bildtransformationssystem Optionen und Werkzeuge bereit, die ermöglichen, dass der Nutzer den Fehler unmittelbar behebt und das gewünschte Vektorzeichnungssegment erhält.
  • Das Bildtransformationssystem kann nicht richtig transformierte Abschnitte einer Kante in ein Vektorzeichnungssegment transformieren, indem es zu wenig (beispielsweise ein zu kurzes Stück) oder zu viel (beispielsweise ein zu langes Stück) der Kante in ein Vektorzeichnungssegment transformiert. In einer Übersicht beschreiben 3A und 3B, dass einem Nutzer ermöglicht wird, ein Vektorzeichnungssegment ohne Weiteres zu vergrößern. 4A bis 4F beschreiben das Trimmen eines Vektorzeichnungssegmentes auf eine gewünschte Länge.
  • Insbesondere zeigen 3A bis 3C das miteinander erfolgende Verbinden mehrerer Vektorkurven derart, dass diese ein Vektorzeichnungssegment bilden, entsprechend einer oder mehreren Ausführungsformen. Wie gezeigt ist, beinhalten 3A bis 3C die Clientvorrichtung 200, die grafische Nutzerschnittstelle 202, das Rasterbild 204 und das Rasterelement 206 (beispielsweise den Becher), wie vorstehend anhand 2A bis 2F beschrieben worden ist.
  • Wie vorstehend erwähnt worden ist, ist in einigen Fällen eine Pixellinie oder ein Vektorzeichnungssegment kürzer, als von einem Nutzer gewünscht wird. Darstellungshalber zeigt 3A ein Vektorzeichnungssegment 330, das sich um einen Großteil der äußeren Kante des Rasterelementes 206, jedoch nicht um dieses ganz herum, windet. Wünscht der Nutzer ein Vektorzeichnungssegment, das das Rasterelement 206 umschließt, so ermöglicht das Bildtransformationssystem, dass der Nutzer das Vektorzeichnungssegment 330 erweitert oder das Vektorzeichnungssegment 330 mit einem zusätzlichen Vektorzeichnungssegment verbindet.
  • Darstellungshalber detektiert das Bildtransformationssystem von 3B eine Nutzerinteraktion, die den Cursor 308 zu der äußeren Kante des Henkels des Bechers (das heißt zu dem Rasterelement 206) bewegt. Wie vorstehend beschrieben worden ist, identifiziert das Bildtransformationssystem eine detektierte Kante innerhalb einer entsprechenden Kantenkarte (beispielsweise der Kantenkarte 210), generiert eine Pixellinie auf Grundlage der detektierten Kante und gibt die Pixellinie über dem Rasterbild 204 wieder. Wie gezeigt ist, gibt das Bildtransformationssystem die Pixellinie 332 beispielsweise auf Grundlage einer Detektion dessen, dass die Nutzerinteraktion den Cursor 308 bewegt, über der äußeren Kante des Henkels des Bechers in dem Rasterbild 204 wieder.
  • Wie gezeigt ist, beinhaltet 3B sowohl das Vektorzeichnungssegment 330 wie auch die Pixellinie 332. Während das Bildtransformationssystem primär eine Pixellinie auf einmal anzeigt, kann das Bildtransformationssystem eine Pixellinie auch zusammen mit einem oder mehreren Vektorzeichnungssegmenten zeigen. Beim Detektieren einer Nutzerinteraktion, die die Pixellinie 332 auswählt, kann das Bildtransformationssystem die Pixellinie in ein neues Vektorzeichnungssegment transformieren.
  • Zudem kann das Bildtransformationssystem die beiden benachbarten Vektorzeichnungssegmente, wie durch das erweiterte Vektorzeichnungssegment 330' in 3C angezeigt ist, verbinden. Bei einer oder mehreren Ausführungsformen verbindet das Bildtransformationssystem die beiden benachbarten Vektorzeichnungssegmente beispielsweise auf Grundlage dessen, dass der Nutzer eine Angabe dahingehend, die Vektorzeichnungssegmente zu verbinden, bereitstellt. Der Nutzer hält eine Modifizierertaste gedrückt oder wählt die Pixellinie 332 mit dem Cursor 208 und zieht sie über das Vektorzeichnungssegment 330 (dragging), bevor er den Cursor 208 freigibt, um für das Bildtransformationssystem eine Aufforderung dahingehend bereitzustellen, die Vektorzeichnungssegmente zusammenzufügen. Bei alternativen Ausführungsformen verbindet das Bildtransformationssystem benachbarte Vektorzeichnungssegmente in der Vektorzeichnung automatisch. Ist eine Verbindungsoption aktiv, so verbindet das Bildtransformationssystem benachbarte Vektorzeichnungssegmente automatisch. Das Bildtransformationssystem kann Vektorzeichnungssegmente, die nicht benachbart sind, jedoch innerhalb eines Schwellenabstandes (von beispielsweise 3 bis 5 Pixeln) zueinander befindlich sind, automatisch verbinden.
  • Bei einer oder mehreren Ausführungsformen verbindet das Bildtransformationssystem zwei benachbarte Vektorzeichnungssegmente durch Koppeln der Enden der beiden Vektorzeichnungssegmente miteinander. Das Bildtransformationssystem koppelt beispielsweise ein Vektorzeichnungssegment mit einem anderen Vektorzeichnungssegment unter Nutzung eines oder mehrerer Ankerpunkte. Bei einem Beispiel verbindet das Bildtransformationssystem die Vektorzeichnungssegmente unter Sicherstellung einer C1- oder C2-Kontinuität. Die C1-Kontinuität bezeichnet ein Maß für die Kurvenglattheit bzw. Stetigkeit, bei dem zwei Kurven derart verbunden werden, dass die Tangentenwinkel der beiden Kurven an der Verbindung zusammenpassen.
  • Bei einigen Ausführungsformen verbindet das Bildtransformationssystem zwei Vektorzeichnungssegmente miteinander, indem eine Bezierkurve an eine kombinierte Pixellinie neuangepasst wird (refitting). Das Bildtransformationssystem kombiniert beispielsweise die Pixellinie, aus der ein erstes Vektorzeichnungssegment angepasst worden ist, mit der zweiten Pixellinie, die von dem Nutzer ausgewählt wird. Auf Grundlage der kombinierten Pixellinie nimmt das Bildtransformationssystem eine Neuanpassung einer Bezierkurve vor, um ein Vektorzeichnungssegment zu generieren. In einigen Fällen passt das Bildtransformationssystem eine einzige Kurve an die kombinierte Pixellinie (oder wenigstens über die Verbindung der beiden Pixellinien hinweg) an, was zu einer ästhetisch gefälligeren Kurve oder Linie als in dem Fall führt, in dem mehrere Kurven miteinander gekoppelt werden.
  • Wie vorstehend erwähnt worden ist, ermöglicht das Bildtransformationssystem, dass ein Nutzer ein Vektorzeichnungssegment beim Generieren des Vektorzeichnungssegmentes trimmt. Darstellungshalber zeigen 4A bis 4F Beispiele eines effizienten Trimmens von Vektorkurven mit minimalen Nutzerinteraktionen entsprechend einer oder mehreren Ausführungsformen. Wie gezeigt ist, beinhalten 4A bis 4F die Clientvorrichtung 200, die eine grafische Nutzerschnittstelle 402 aufweist. Wie vorstehend beschrieben worden ist, beinhaltet die Clientvorrichtung 200 bei einigen Ausführungsformen ein Bildbearbeitungssystem, das grafische Nutzerschnittstellen bereitstellt. Das Bildbearbeitungssystem stellt beispielsweise die grafische Nutzerschnittstelle 402 bereit, wo das Bildtransformationssystem innerhalb des Bildbearbeitungssystems arbeitet. Bei alternativen Ausführungsformen stellt das Bildtransformationssystem die grafische Nutzerschnittstelle 402 bereit.
  • Die grafische Nutzerschnittstelle 402 beinhaltet, wie gezeigt ist, ein Rasterbild 404 mit einem Rasterelement (beispielsweise einem Sportwagen). In 4A zeigt die grafische Nutzerschnittstelle 402 ein Vektorzeichnungssegment 406 (beispielsweise ein kubisches Beziersegment von mehreren Bezierkurven) an. Das Bildtransformationssystem generiert das Vektorzeichnungssegment 406 beispielsweise auf Grundlage dessen, dass der Nutzer eine entsprechende Pixellinie auswählt, wie vorstehend beschrieben worden ist.
  • Zum Trimmen des Vektorzeichnungssegmentes 406 ermöglicht das Bildtransformationssystem bei einer oder mehreren Ausführungsformen, dass der Nutzer auswählt, wo das Vektorzeichnungssegment 406 getrimmt werden soll. Insbesondere detektiert das Bildtransformationssystem, wie in 4A gezeigt ist, eine Nutzerauswahl eines Unterteilungspunktes 410 entlang des Vektorzeichnungssegmentes 406. Der Nutzer bewegt den Cursor 408 beispielsweise über das Vektorzeichnungssegment 406 und wählt den Unterteilungspunkt 410 aus, an dem er ein Trimmen des Vektorzeichnungssegmentes 406 wünscht. In Reaktion hierauf fügt das Bildtransformationssystem einen optischen Punkt oder eine optische Angabe, die den Unterteilungspunkt 410 bezeichnet, hinzu.
  • Zusätzlich unterteilt oder separiert das Bildtransformationssystem dann, wenn der Nutzer den Unterteilungspunkt 410 auswählt, das Vektorzeichnungssegment 406 in zwei Abschnitte. 4B zeigt beispielsweise einen ersten Abschnitt 406a und einen zweiten Abschnitt 406b. Beim Setzen des Unterteilungspunktes 410 identifiziert das Bildtransformationssystem auf Grundlage einer detektierten Nutzerinteraktion zudem einen Abschnitt, der entfernt werden soll.
  • Darstellungshalber detektiert, wie in 4B gezeigt ist, das Bildtransformationssystem beim Setzen des Unterteilungspunktes 410 eine Cursorbewegung hin zu dem zweiten Abschnitt 406b des Vektorzeichnungssegmentes 406. In Reaktion hierauf modifiziert das Bildtransformationssystem den zweiten Abschnitt 406b des Vektorzeichnungssegmentes 406 optisch, um dem Nutzer zu zeigen, welcher Abschnitt des Vektorzeichnungssegmentes 406 getrimmt werden soll. Wie gezeigt ist, ändert das Bildtransformationssystem beispielsweise das Muster des zweiten Abschnittes 406b des Vektorzeichnungssegmentes 406, und zwar beispielsweise durch Wiedergabe des zweiten Abschnittes 406b als gepunktete oder gestrichelte Linie. Bei anderen Ausführungsformen hebt das Bildtransformationssystem den zweiten Abschnitt 406b des Vektorzeichnungssegmentes 406 hervor, stellt ihn fett dar, färbt ihn, gewichtet ihn, schattiert ihn, macht ihn transparenter oder verbirgt ihn. Bei alternativen Ausführungsformen modifiziert das Bildtransformationssystem, anstatt dass es den zweiten Abschnitt optisch modifiziert, den ersten Abschnitt 406a, der beim Trimmen des Vektorzeichnungssegmentes erhalten bleibt.
  • Nach dem Identifizieren, welcher Abschnitt des Vektorzeichnungssegmentes 406 getrimmt wird, auf Grundlage der Nutzerinteraktion (bei der der Cursor 408 beispielsweise hin zu dem zweiten Abschnitt 406b bewegt wird) entfernt das Bildtransformationssystem den identifizierten Abschnitt auf Grundlage der Detektion einer weiteren Nutzereingabe. Bei Empfangen einer Auswahl des zweiten Abschnittes 406b des Vektorzeichnungssegmentes 406 trimmt das Bildtransformationssystem beispielsweise das Vektorzeichnungssegment 406 derart, dass nur der erste Abschnitt 406a des Vektorzeichnungssegmentes 406, wie in 4C gezeigt ist, beinhaltet ist. Das Bildtransformationssystem trimmt das Vektorzeichnungssegment 406 durch Neuanpassen einer Bezierkurve, wie vorstehend er erwähnt worden ist.
  • Bei einer oder mehreren Ausführungsformen trimmt das Bildtransformationssystem das Vektorzeichnungssegment 406 auf Grundlage einer einzigen Nutzerinteraktion. Das Bildtransformationssystem detektiert beispielsweise den Anfang einer Nutzerinteraktion, wenn der Nutzer den Unterteilungspunkt 410 (beispielsweise durch Gedrückthalten einer Maustaste oder durch Drücken an einem berührungsempfindlichen Schirm) auswählt. Zusätzlich detektiert das Bildtransformationssystem, während die Auswahl erhalten bleibt (während also beispielsweise die Maustaste gedrückt bleibt oder die Eingabe an dem berührungsempfindlichen Schirm erhalten bleibt), dass der Cursor 408 hin zu dem zweiten Abschnitt 406b des Vektorzeichnungssegmentes 406 bewegt wird. Sodann entfernt das Bildtransformationssystem beim Detektieren des Endes der Nutzerinteraktion (beispielsweise bei Freigabe der Maustaste oder bei Beendigung des Drückens an dem berührungsempfindlichen Schirm) den zweiten Abschnitt 406b. Auf diese Weise ermöglicht das Bildtransformationssystem, dass der Nutzer ein neugeneriertes Vektorzeichnungssegment 406 mit einer einzigen Nutzerinteraktion (beispielsweise einem Klicken, einem Dragging und einem Freigeben) schnell und mühelos trimmt. Das Bildtransformationssystem ermöglicht dem Nutzer zudem, dass dieser ein Vektorzeichnungssegment trimmt, ohne dass die Werkzeuge in der grafischen Nutzerschnittstelle 402 geändert werden müssten.
  • Bei alternativen Ausführungsformen trimmt das Bildtransformationssystem das Vektorzeichnungssegment 406 auf Grundlage der Detektion mehrerer Nutzerinteraktionen. Das Bildtransformationssystem detektiert beispielsweise eine erste Interaktion, die den Unterteilungspunkt 410 auswählt. Sodann detektiert das Bildtransformationssystem eine zweite Interaktion, die den zweiten Abschnitt 406b des Vektorzeichnungssegmentes 406 auswählt, damit dieser entfernt wird.
  • Zusätzlich zum Trimmen eines neugenerierten Vektorzeichnungssegmentes kann das Bildtransformationssystem auf gleiche Weise ein bestehendes Vektorzeichnungssegment (beispielsweise eine Bezierkurve) trimmen. Beim Auswählen eines Trimmwerkzeuges oder einer Modifizierereingabe (beispielsweise durch Gedrückthalten einer Taste oder einer Tastenkombination auf einer Tastatur) ermöglicht das Bildtransformationssystem einem Nutzer beispielsweise, dass dieser einen Unterteilungspunkt auswählt und ein Vektorzeichnungssegment, wie vorstehend beschrieben worden ist, trimmt.
  • Bei einer oder mehreren Ausführungsformen unterstützt das Bildtransformationssystem einen Nutzer zudem beim Trimmen eines Vektorzeichnungssegmentes. Beim Detektieren, dass sich der Cursor 408 einem vorbestimmten Abstand (von beispielsweise 5 Pixeln) eines Vektorzeichnungssegmentes nähert, und bevor der Nutzer den Unterteilungspunkt auswählt, gibt das Bildtransformationssystem beispielsweise denjenigen Punkt auf der Kurve des Vektorzeichnungssegmentes, der am nächsten an dem Cursor 408 ist, wieder. Bewegt sich der Cursor 408 innerhalb des vorbestimmten Abstandes, so verfolgt das Bildtransformationssystem den Cursor 408 zudem entlang des Vektorzeichnungssegmentes, indem derjenige Punkt an dem Vektorzeichnungssegment, der dem Cursor 408 am nächsten ist, angezeigt wird. Auf diese Weise stellt das Bildtransformationssystem eine genaue Rückkopplung für den Nutzer dahingehend bereit, wo der Unterteilungspunkt beim Detektieren einer Nutzerauswahl platziert werden wird.
  • Bei zusätzlichen Ausführungsformen priorisiert das Bildtransformationssystem, wie in 4D gezeigt ist, Ecken, während der Cursor 408 verfolgt wird. Wie gezeigt ist, beinhaltet das Vektorzeichnungssegment 416 eine Ecke. Beim Verfolgen des Cursors 408 entlang des Vektorzeichnungssegmentes 416 detektiert das Bildtransformationssystem, dass der Cursor 408 und/oder der verfolgte Punkt entlang des Vektorzeichnungssegmentes 416 innerhalb eines Schwellenabstandes einer Ecke (von beispielsweise 10 Pixeln oder innerhalb eines nutzerseitig definierten Abstandes) befindlich ist. In Reaktion hierauf nimmt das Bildtransformationssystem ein Snapping des verfolgten Punktes entlang des Vektorzeichnungssegmentes 416 zu der Ecke vor.
  • Ecken werden priorisiert, da Nutzer gegebenenfalls das Trimmen von Vektorzeichnungssegmenten an Ecken anstatt in der Nähe einer Ecke priorisieren. Der vorbestimmte Abstand zum Verfolgen des Cursors 408 entlang des Vektorzeichnungssegmentes 416 und der Eckschwellenabstand zum Snapping des Cursors zu einer Ecke können auf einen beliebigen Pixelabstand eingestellt und auf Grundlage eines Zoomgrades geändert werden. Bei den meisten Ausführungsformen sollte der Eckschwellenabstand jedoch größer als die vorbestimmte Abstandsschwelle sein, um sicherzustellen, dass das Bildtransformationssystem die Eckpunkte priorisiert.
  • Wie in 4D gezeigt ist, detektiert das Bildtransformationssystem, dass der Cursor 408 nahe an einer Ecke des Vektorzeichnungssegmentes 416 ist, und platziert einen optischen Führungspunkt 418 an der Ecke des Vektorzeichnungssegmentes 416. Wie in 4E gezeigt ist, detektiert das Bildtransformationssystem eine Nutzerinteraktion, die die Ecke als Unterteilungspunkt 420 auswählt. Erfährt der optische Führungspunkt 418 ein Snapping zu der Ecke, so hat das Bildtransformationssystem beispielsweise eine Nutzerinteraktion detektiert, die die Ecke als den gewünschten Ort für den Unterteilungspunkt 420 auswählt. Wählt der Nutzer den Unterteilungspunkt an der Ecke aus, so kann das Bildtransformationssystem das Vektorzeichnungssegment 416 in zwei Abschnitte (beispielsweise einen unteren Abschnitt und einen oberen Abschnitt), wie vorstehend beschrieben worden ist, unterteilen.
  • Wie zudem gezeigt ist, detektiert das Bildtransformationssystem, siehe 4D, dass der Cursor 408 zu dem unteren Abschnitt des Vektorzeichnungssegmentes 416 bewegt wird. Das Bildtransformationssystem identifiziert, welcher Abschnitt des Vektorzeichnungssegmentes 416 entfernt werden soll, auf Grundlage dessen, welcher Abschnitt des Vektorzeichnungssegmentes 416 näher an dem Cursor 408 befindlich ist. Auf diese Weise identifiziert das Bildtransformationssystem die Abschnitte des Vektorzeichnungssegmentes 416, die entfernt werden sollen, auf Grundlage dessen, dass der Nutzer den Cursor 408 bewegt. Des Weiteren werden nur minimale Cursorbewegungen benötigt, um zu signalisieren, welcher Abschnitt eines Vektorzeichnungssegmentes 416 entfernt werden soll. Bei einigen Ausführungsformen muss der Abschnitt innerhalb eines Schwellenentfernungsabstandes sein, der als Abschnitt des Vektorzeichnungssegmentes 416, der entfernt werden soll, identifiziert werden soll.
  • Wie vorstehend beschrieben worden ist, verzögert das Bildtransformationssystem bei einer oder mehreren Ausführungsformen das Entfernen des identifizierten Abschnittes, bis eine zusätzliche Nutzereingabe empfangen wird, die das Entfernen des identifizierten Abschnittes bestätigt. Wie in 4F gezeigt ist, entfernt das Bildtransformationssystem den unteren Abschnitt des Vektorzeichnungssegmentes 416 auf Grundlage dessen, dass eine Nutzerinteraktion (oder ein Teil einer Nutzerinteraktion) detektiert wird, die ein Entfernen des unteren Abschnittes des Vektorzeichnungssegmentes 416 bestätigt.
  • Bei einigen Ausführungsformen markiert das Bildtransformationssystem, wenn das Bildtransformationssystem ein Vektorzeichnungssegment trimmt, das auf Grundlage einer Pixellinie generiert wird, die in einer Kantenkarte nachgebildet wird, den Unterteilungspunkt (den Punkt, an dem das Vektorzeichnungssegment getrimmt wird) in der Kantenkarte. Auf diese Weise enden zukünftige Pixellinien und/oder Vektorzeichnungssegmente, die auf Grundlage der Kantenkarte generiert werden, ebenfalls an dem Unterteilungspunkt, der von dem Nutzer angegeben wird. Das Bildtransformationssystem implementiert den nutzerseitig ausgewählten Unterteilungspunkt beim Generieren von zukünftigen Pixellinien und Vektorzeichnungssegmenten in Verbindung mit dem Rasterbild 404.
  • Bei verschiedenen Ausführungsformen kann das Bildtransformationssystem einen Teilabschnitt eines Vektorzeichnungssegmentes trimmen. Das Bildtransformationssystem ermöglicht beispielsweise, dass der Nutzer zwei Unterteilungspunkte entlang des Vektorzeichnungssegmentes auswählt und eine Auswahl zum Entfernen des Abschnittes des Vektorzeichnungssegmentes zwischen den Unterteilungspunkten bereitstellt. Darstellungshalber fügt das Bildtransformationssystem beim Empfangen einer Auswahl eines ersten Unterteilungspunktes, wenn das Bildtransformationssystem eine Auswahl eines zweiten Punktes an dem Vektorzeichnungssegment detektiert, einen zweiten Unterteilungspunkt zu dem Vektorzeichnungssegment hinzu. Bei einigen Ausführungsformen gibt der Nutzer den Wunsch an, einen zweiten Unterteilungspunkt hinzuzufügen, indem er eine Modifizierereingabe gedrückt hält. Bei alternativen Ausführungsformen gibt der Nutzer den Wunsch, einen zweiten Unterteilungspunkt hinzuzufügen, an, indem er den Cursor 408 an dem ersten Unterteilungspunkt drückt und den Cursor 408 an dem zweiten Unterteilungspunkt über dem Vektorzeichnungssegment freigibt, anstatt dass er den Cursor 408 nahe an dem Vektorzeichnungssegment, jedoch nicht über diesem freigibt, wodurch das Vektorzeichnungssegment nur an dem ersten Unterteilungspunkt, wie vorstehend beschrieben worden ist, getrimmt wird.
  • Zusätzlich dazu, dass ermöglicht wird, dass ein Nutzer Vektorzeichnungssegmente vergrößert und trimmt, stellt das Bildtransformationssystem zusätzliche Vektorzeichnungssegmentbearbeitungsmerkmale für einen Nutzer bereit, um den Nutzer besser dabei zu unterstützen, ein Rasterbild in ein Vektorzeichnungssegment zu transformieren. Darstellungshalber ermöglicht das Bildtransformationssystem bei einer oder mehreren Ausführungsformen, dass ein Nutzer ein Vektorzeichnungssegment, das für eine Kante in dem Rasterbild wiedergegeben wird, zu einer anderen Kante bewegt (beispielsweise zieht). Dieses Merkmal ist bei Rasterbildern von Nutzen, die eine höhere Dichte von Kanten nahe beieinander aufweisen und bei denen der Nutzer zunächst gegebenenfalls die falsche Kante für eine Transformation in ein Vektorzeichnungssegment auswählt. Das Bildtransformationssystem ermöglicht, dass der Nutzer ein Vektorzeichnungssegment auswählt und das Vektorzeichnungssegment über eine andere Kante bewegt, über der das Bildtransformationssystem eine Neuanpassung des Vektorzeichnungssegmentes an die andere Kante vornimmt.
  • Das Bildtransformationssystem detektiert insbesondere eine Nutzerinteraktion, die ein Vektorzeichnungssegment auswählt, das in der grafischen Nutzerschnittstelle wiedergegeben wird, und zwar mit der Aufforderung, das Vektorzeichnungssegment zu bewegen. Das Bildtransformationssystem detektiert beispielsweise, dass ein Nutzer ein Vektorzeichnungssegment auswählt (beispielsweise durch Bewegen eines Cursors über das Vektorzeichnungssegment und Klicken einer Maustaste) und das Vektorzeichnungssegment bewegt, während die Auswahl des Vektorzeichnungssegmentes (beispielsweise durch Gedrückthalten der Maustaste während der Bewegung des Cursors) erhalten bleibt. Bei einigen Ausführungsformen bestimmt das Bildtransformationssystem eine Nutzeranforderung dahingehend, ein Vektorzeichnungssegment zu bewegen, aus der Nutzerinteraktion selbst. Bei alternativen Ausführungsformen verknüpft das Bildtransformationssystem die Nutzerinteraktion mit der Anforderung, ein wiedergegebenes Vektorzeichnungssegment zu bewegen, auf Grundlage der Auswahl eines Wegziehwerkzeuges (Dragging-Werkzeug) oder einer Modifizierereingabe.
  • Wie vorstehend erwähnt worden ist, wünscht ein Nutzer gegebenenfalls, ein Vektorzeichnungssegment von der Kante, für die das Vektorzeichnungssegment generiert worden ist, zu einer anderen Kante in dem Rasterbild zu bewegen. Entsprechend detektiert das Bildtransformationssystem, während das Bildtransformationssystem das Vektorzeichnungssegment in dem Rasterbild bewegt, andere Kanten in dem Rasterbild. Wie vorstehend beschrieben worden ist, nutzt das Bildtransformationssystem beispielsweise die Kantenkarte zum Detektieren von Kanten und Generieren von Pixellinien. Bewegt sich das ausgewählte Vektorzeichnungssegment in dem Rasterbild in die Nähe einer anderen Kante, so kann das Bildtransformationssystem die Kante dadurch betonen (beispielsweise hervorheben oder „heller machen“), dass eine entsprechende Pixellinie als Überlagerung, wie vorstehend beschrieben worden ist, wiedergegeben wird.
  • Während eine Pixellinie über dem Rasterbild gezeigt wird (und die Auswahl des Vektorzeichnungssegmentes erhalten bleibt), detektiert das Bildtransformationssystem die Nutzerinteraktion, die die Auswahl des Vektorzeichnungssegmentes freigibt. In Reaktion hierauf entfernt das Bildtransformationssystem bei einer oder mehreren Ausführungsformen das ausgewählte Vektorzeichnungssegment und gibt ein neues Vektorzeichnungssegment für die Pixellinie (beispielsweise durch Anpassen oder Neuanpassen) über der neuen Kante des Rasterbildes derart wieder, dass es für den Nutzer so aussieht, als hätte die ausgewählte Pixellinie Kanten in dem Rasterbild bewegt.
  • In der nächsten Figur werden zusätzliche Details im Zusammenhang mit einem skalenabhängigen bzw. maßstabsabhängigen Generieren von verbesserten Digitalbildern aus Rasterbildern bereitgestellt. Insbesondere zeigen 5A und 5B das Modifizieren der Intensität der Kantendetektion (und der Pixelliniengenerierung) in einer Kantenkarte auf Grundlage von Zoomgraden einer grafischen Nutzerschnittstelle entsprechend einer oder mehreren Ausführungsformen. Wie gezeigt ist, beinhalten 5A und 5B die Clientvorrichtung 200, die eine grafische Nutzerschnittstelle 502 aufweist, die, wie vorstehend beschrieben worden ist, eine oder mehrere Clientvorrichtungen darstellt. Ein Bildbearbeitungssystem oder das Bildtransformationssystem können die grafische Nutzerschnittstelle 502 beispielsweise wiedergeben.
  • Wie gezeigt ist, beinhaltet die grafische Nutzerschnittstelle 502 ein herausgezoomtes Rasterbild 504a mit einem ersten Zoomgrad (beispielsweise mit einem Zoom von 25%). In Verbindung mit dem herausgezoomten Rasterbild 504a beinhaltet 5A eine herausgezoomte Auskantung (edge out) 510a. Obwohl, wie vorstehend erwähnt worden ist, das Bildtransformationssystem Kantenkarten generiert und nutzt, um Kanten innerhalb eines Rasterbildes zu detektieren und Pixellinien zu generieren, ist die Kantenkarte bei vielen Ausführungsformen vor dem Nutzer verborgen. Entsprechend ist die herausgezoomte Auskantung 510a nicht in der grafischen Nutzerschnittstelle gezeigt.
  • Wie in der herausgezoomten Auskantung 510a gezeigt ist, detektiert das Bildtransformationssystem eine niedrigere Dichte der detektierten Kanten in dem herausgezoomten Rasterbild 504a. Das Bildtransformationssystem detektiert beispielsweise die äußere Kante 512a des Hundes, die in dem herausgezoomten Rasterbild 504a gezeigt ist. Das Bildtransformationssystem detektiert zudem andere wichtige Kanten in dem Rasterbild 504b. Mit einem Zoom von 25% ist die herausgezoomte Auskantung 510a eine einem Subsampling unterzogene Anzahl von Pixeln und ist daher implizit gefiltert, was zu geglätteten bzw. stetig gemachten detektierten Kanten führt.
  • Das Bildtransformationssystem kann verschiedene Werkzeuge oder Merkmale bereitstellen, die ermöglichen, dass der Nutzer die Dichte der detektierten Kanten in einer Kantenkarte erhöht. Bei einer oder mehreren Ausführungsformen korreliert das Bildtransformationssystem die Dichte der detektierten Kanten in einer Kantenkarte beispielsweise mit dem Zoomgrad eines Rasterbildes. Darstellungshalber zeigt 5B ein nichtgezoomtes Rasterbild 504b (beispielsweise mit einem Zoom von 100%) und eine entsprechende nichtgezoomte Kantenkarte 510b.
  • Wie in 5B gezeigt ist, beinhaltet die nichtgezoomte Kantenkarte 510b detektierte Kanten, die in der nichtgezoomten Auskantung 510a von 5A nicht beinhaltet sind. Die äußere Kante 512a des Hundes, die in der herausgezoomten Auskantung 510a von 5A gezeigt ist, wird sehr viel kürzer, und es ergeben sich stärker detaillierte detektierte Kanten (das heißt die gezoomte äußere Kante 512b) in der nichtgezoomten Kantenkarte 510b von 5B. Zusätzlich beinhaltet die nichtgezoomte Kantenkarte 510b zusätzliche detektierte Kanten 514, die nicht in der herausgezoomten Auskantung 510a beinhaltet sind. Wird das Rasterbild auf 100% skaliert, so werden die Bilddaten (beispielsweise Pixel), die infolge des Subsampling bei dem herausgezoomten Grad (beispielsweise bei einem Zoom von 25%) verloren gegangen sind, wiederhergestellt, was zu stärker detaillierten Kanten führt.
  • Bei verschiedenen Ausführungsformen generiert das Bildtransformationssystem eine neue Kantenkarte für die verschiedenen Zoomgrade unter Nutzung derselben Kantendetektionsparameter auf Grundlage der verschiedenen Sampling-Dichten. Bei einer oder mehreren Ausführungsformen kann der Nutzer Eingaben für das Bildtransformationssystem bereitstellen, die die Kantendetektionsparameter modifizieren. Bei einigen Ausführungsformen muss der Zoomgrad um einen Schwellengrad (von beispielsweise 5%) geändert werden, bevor das Bildtransformationssystem eine neue Kantenkarte generiert.
  • Durch Korrelieren der Dichte von detektierten Kanten in einer Kantenkarte mit dem Zoomgrad eines Rasterbildes stellt das Bildtransformationssystem für einen Nutzer einen einfachen Weg bereit, um den Grad der Detailliertheit für Pixellinien und das Generieren eines Vektorzeichnungssegmentes zu steuern bzw. zu regeln. Das Bildtransformationssystem stellt für einen Nutzer Pixellinien und entsprechende Vektorzeichnungssegmente mit zusätzlichen Kurven- und Vektorsteuerungen bzw. Regelungen (beispielsweise den Vektorsteuerungen bzw. Regelungen 218) bereit, die zum Modifizieren und Manipulieren einer transformierten Kante benutzt werden.
  • Bei einer oder mehreren Ausführungsformen nimmt das Bildtransformationssystem eine Neunpassung eines vorher generierten Vektorzeichnungssegmentes vor, wenn ein Nutzer ein Hineinzoomen an dem Vektorzeichnungssegment vornimmt und das Bildtransformationssystem auffordert, eine Neuanpassung des Vektorzeichnungssegmentes an die stärker detaillierte detektierte Kante vorzunehmen. Nach Wiedergabe der äußeren Kante 512a und dem anschließenden Erhöhen des Zoomgrades empfängt das Bildtransformationssystem beispielsweise eine Aufforderung dahingehend, das Vektorzeichnungssegment unter Nutzung der nichtgezoomten Kantenkarte 510b an die gezoomte äußere Kante 512b oder einen Abschnitt hiervon neuanzupassen. Das Bildtransformationssystem detektiert eine Nutzeranforderung beispielsweise dadurch, dass der Nutzer das Vektorzeichnungssegment auswählt und an ihm zerrt (tugging), wenn das Rasterbild einen erhöhten Zoomgrad aufweist. Auf dieselbe Weise kann, wenn das Bildtransformationssystem ein Vektorzeichnungssegment mit erhöhtem Zoomgrad wiedergibt, auf Grundlage einer detektierten Nutzeraufforderung das Bildtransformationssystem eine Neuanpassung des Vektorzeichnungssegmentes an eine detektierte Kante mit dem nichtgezoomten Grad vornehmen, was zu einem neuen Vektorzeichnungssegment mit weniger Details führt.
  • Bei einigen Ausführungsformen korreliert das Bildtransformationssystem die Dichte der detektierten Kanten in einer Kantenkarte mit einer nutzerseitig auswählbaren Option. Das Bildtransformationssystem stellt beispielsweise eine grafische (beispielsweise einen Schieber) oder eine textartige Kantendetektionsdichteoption bereit, die die Dichte der detektierten Kanten angibt. Das Bildtransformationssystem modifiziert Kantendetektionsparameter auf Grundlage von Änderungen an der Kantendetektionsdichteoption.
  • Bei zusätzlichen Ausführungsformen legt das Bildtransformationssystem die herausgezoomte Kantenkarte 510a innerhalb der grafischen Nutzerschnittstelle 502 offen, während der Nutzer die Kantendetektionsdichteoption modifiziert. Insbesondere zeigt das Bildtransformationssystem alle detektierten Kanten in einer Überlagerung über dem Rasterbild 504a derart, dass die detektierten Kanten mit dem Rasterbild 504a stark kontrastieren. Erhöht oder senkt der Nutzer die Kantendetektionsdichte, so zeigt das Bildtransformationssystem daher mehr oder weniger detektierte Kanten in dem Rasterbild 504a. Erreicht der Nutzer die gewünschte Kantendichte, so verbirgt das Bildtransformationssystem die Kantenkarte. Bei einigen Ausführungsformen legt das Bildtransformationssystem, wie vorstehend beschrieben worden ist, eine Kantenkarte auf Grundlage einer Nutzerkantenkartensichtbarkeitsoption offen oder verbirgt diese.
  • Bei einer oder mehreren Ausführungsformen generiert das Bildtransformationssystem eine Kantenkarte entsprechend einer ausgewählten Zone eines Rasterbildes. Das Bildtransformationssystem ermöglicht beispielsweise, dass der Nutzer eine rechteckige Auswahl, eine Farbmaskenauswahl, eine Lassoauswahl, eine Beschneidungsauswahl und dergleichen mehr einsetzt. Bei zusätzlichen Ausführungsformen ermöglicht das Bildtransformationssystem eine Nutzerauswahl eines Bereiches, der durch Vektoren definiert ist. Zusätzlich kann das Bildtransformationssystem eine höhere Dichte von Kanten für den ausgewählten Bereich generieren. Anstelle des Detektierens von Kanten oder einer hohen Dichte von Kanten für das gesamte Rasterbild beschränkt das Bildtransformationssystem die Kantendetektion beispielsweise auf einen ausgewählten Abschnitt des Rasterbildes, sodass Rechenressourcen gespart werden. Bei verschiedenen Ausführungsformen verzögert das Bildtransformationssystem das Generieren einer Kantenkarte für ein Rasterbild, bis eine Nutzereingabe empfangen wird, die eine gewünschte Zone eines Rasterbildes auswählt, oder bis eine Angabe zum Detektieren von Kanten für das gesamte Rasterbild empfangen wird.
  • In 6 sind zusätzliche Details im Zusammenhang mit dem Nachbilden einer Pixellinie innerhalb einer Kantenkarte angegeben. 6 zeigt eine Übersicht des Generierens einer Pixellinie aus einer Kantenkarte auf Grundlage einer Nutzerinteraktion mit einem Rasterbild in einer grafischen Nutzerschnittstelle. Bei verschiedenen Ausführungsformen führt das Bildtransformationssystem die Abfolge von Vorgängen 600 durch. Die Clientvorrichtung und/oder eine Servervorrichtung, die das Bildtransformationssystem implementiert, führt die Abfolge von Vorgängen 600 zum Generieren einer Pixellinie in einer Kantenkarte durch.
  • Wie in 6 dargestellt ist, führt das Bildtransformationssystem einen Vorgang 602 des Detektierens eines Pixels an einer Kante in einer Kantenkarte durch. Wie vorstehend beschrieben worden ist, bildet das Bildtransformationssystem eine Nutzerinteraktion (beispielsweise eine Cursorbewegung) mit einer Rasterbewegung in einer grafischen Nutzerschnittstelle auf eine Kantenkarte ab. Wie vorstehend beschrieben worden ist, nutzt das Bildtransformationssystem die Cursorkoordinate des Rasterbildes beispielsweise zum Bestimmen dessen, ob eine detektierte Kante in der Kantenkarte vorhanden ist und ob ein Pixel an der detektierten Kante vorhanden ist.
  • Zusätzlich führt das Bildtransformationssystem, wie in 6 gezeigt ist, einen Vorgang 604 des Stufens zu Verbindungspixeln entlang der detektierten Kante durch, bis eine Linienbeendigungsbedingung erfüllt ist. Das Bildtransformationssystem identifiziert beispielsweise ein zweites Pixel, das mit dem ersten Pixel verbunden ist, und stuft sodann zu dem zweiten Pixel. Das Bildtransformationssystem wiederholt den Prozess des Stufens zu Verbindungspixels entlang der detektierten Kante, bis eine Linienbeendigungsbedingung erfüllt ist. Beispiele für Linienbeendigungsbedingungen beinhalten ein Detektieren keiner weiteren Verbindungspixel (beispielsweise eines Endes der Kante), ein Detektieren einer Pixelunterteilung (beispielsweise eine Kante, die sich in mehrere Kanten unterteilt) oder ein zweifaches Stufen zu demselben Pixel (dieselbe Kante gelangt beispielsweise schleifenartig zu sich selbst zurück).
  • Wie nachstehend weiter beschrieben wird, stuft das Bildtransformationssystem bei einer oder mehreren Ausführungsformen, wenn das erste Pixel in der Mitte einer detektierten Kante ist, in zwei Richtungen, um einen beliebigen Teil der detektierten Kante, der zunächst unbeachtet geblieben ist, zu identifizieren. Zusätzlich nutzt das Bildtransformationssystem einen priorisierenden Ansatz, um eine detektierte Kante (beispielsweise mittels Durchstufung) effizient zu analysieren. Bei einer oder mehreren Ausführungsformen priorisiert das Bildtransformationssystem beispielsweise benachbarte Pixel gegenüber diagonalen Pixeln. Beinhaltet ein gegebenes Verbindungspixel ein benachbartes Pixel und ein diagonales Pixel als mögliche nächste Pixel, zu denen gestuft werden kann, so stuft das Bildtransformationssystem bei verschiedenen Ausführungsformen zu dem benachbarten Verbindungspixel und stuft nicht zu dem diagonalen Verbindungspixel. Bei alternativen Ausführungsformen stuft das Bildtransformationssystem als Nächstes zu dem diagonalen Verbindungspixel, bevor es zu dem benachbarten Verbindungspixel stuft. Zusätzliche Details im Zusammenhang mit der Priorisierung benachbarter Pixel gegenüber diagonalen Pixeln bei der Stufung entlang einer detektierten Kante werden nachstehend in Verbindung mit 7A bis 7C angegeben.
  • Wie in 6 gezeigt ist, führt das Bildtransformationssystem zudem einen Vorgang 606 des Speicherns von Koordinaten von nachgebildeten Pixeln entlang der detektierten Kante durch. Das Bildtransformationssystem speichert beispielsweise die Pixelkoordinaten eines jeden Pixels, das während der Stufung entlang der detektierten Kante identifiziert worden ist. Bei verschiedenen Ausführungsformen generiert das Bildtransformationssystem eine Pixellinie durch Kombinieren der Koordinaten der nachgebildeten Pixel. Das Bildtransformationssystem speichert die Koordinaten in einer Pixellinientabelle, die angibt, welche Pixel einer gegebenen Pixellinie zugeordnet sind.
  • Sobald eine Pixellinie generiert ist, generiert das Bildtransformationssystem ein Vektorzeichnungssegment, so beispielsweise eine Bezierkurve, für die Pixellinie. Als Teil des Generierens des Vektorzeichnungssegmentes führt das Bildtransformationssystem bei einigen Ausführungsformen einen optionalen Vorgang 608 des Detektierens von Ecken entlang der Pixellinie durch. Wie nachstehend in Verbindung mit 8 noch beschrieben wird, identifiziert das Bildtransformationssystem Eckpixel in der Pixellinie, wodurch ermöglicht wird, dass das Bildtransformationssystem eine Pixellinie besser vektorisiert.
  • Wie in 6 gezeigt ist, führt das Bildtransformationssystem zudem einen Vorgang 610 des Anpassens eines Vektorzeichnungssegmentes an die Pixellinie auf Grundlage der Koordinaten (und Eckpixel) durch. Das Bildtransformationssystem generiert beispielsweise eine Bezierkurve auf Grundlage von Koordinaten, die für die Pixellinie gespeichert sind. Passt die Bezierkurve nicht genau zu der Pixellinie, so unterteilt das Bildtransformationssystem die Pixellinie in zwei Abschnitte und nimmt eine Neuanpassung einer Bezierkurve an jeden Abschnitt vor, um eine genauere Anpassung, wie nachstehend noch beschrieben wird, zu erreichen.
  • Zusätzlich generiert und nutzt das Bildtransformationssystem als Teil des Vorganges 610 des Anpassens des Vektorzeichnungssegmentes an die Pixellinie Matrizen von Bezierkoeffizienten, um die Effizienz der Anpassung der Pixellinie mit einem Vektorzeichnungssegment zu verbessern. Die weitere Beschreibung im Zusammenhang mit zwischengespeicherten Matrizen von Bezierkoeffizienten wird nachstehend in Verbindung mit 9 angegeben.
  • Wie vorstehend erwähnt worden ist, beschreiben 7A bis 7C, wie das Bildtransformationssystem einen priorisierenden Ansatz benutzt, um eine Pixellinie effizient aus einer detektierten Kante zu generieren. Insbesondere zeigen 7A bis 7C das Durchstufen einer detektierten Kante in einer Kantenkarte, um eine Pixellinie zu generieren, entsprechend einer oder mehreren Ausführungsformen. Wie vorstehend beschrieben worden ist, detektiert das Bildtransformationssystem eine Kante innerhalb einer Kantenkarte auf Grundlage von Interaktionen eines Nutzers mit einem Rasterbild innerhalb einer grafischen Nutzerschnittstelle. Wie ebenfalls vorstehend beschrieben worden ist, kann das Bildtransformationssystem eine generierte Pixellinie als Überlagerung auf dem Rasterbild in der grafischen Nutzerschnittstelle wiedergeben.
  • Darstellungshalber stellt 7A eine Kantenkarte 710 mit verschiedenen detektierten Kanten eines Rasterbildes (beispielsweise eines Bechers mit einem Emblem) dar. Wie vorstehend beschrieben worden ist, generiert das Bildtransformationssystem eine Kantenkarte mit ein Pixel breiten Kanten (mit einer Breite von 1-Pixel), wodurch ermöglicht wird, dass das Bildtransformationssystem eine Pixellinie effizient aus der Kantenkarte generiert. Zusätzlich zeigt 7A ein Pixelgitter 706, das eine detektierte Kante 712 beinhaltet.
  • Darüber hinaus beinhaltet das Pixelgitter 706 erläuterungshalber ein erstes Pixel 708. Das erste Pixel 708 entspricht dem abgebildeten Ort eines Cursors in dem Rasterbild, wie vorstehend erläutert worden ist. Bei einer oder mehreren Ausführungsformen identifiziert das Bildtransformationssystem das erste Pixel 708 durch Abbilden der Positionskoordinaten des Cursors in dem Rasterbild auf die Kantenkarte 710. Wie nachstehend noch beschrieben wird, kann das Bildtransformationssystem mit dem Nachbilden der detektierten Kante 712 bei dem ersten Pixel 708 beginnen.
  • Bei verschiedenen Ausführungsformen generiert das Bildtransformationssystem eine Pixellinie aus der detektierten Kante 712 mittels Stufung zu Verbindungspixeln entlang der Kante von dem ersten Pixel 708 aus. Die Verbindungspixel können benachbarte Pixel und diagonale Pixel eines gegebenen Pixels beinhalten. Darstellungshalber zeigt 7B exemplarische Positionen von benachbarten Pixeln 714 und diagonalen Pixeln 716. Die benachbarten Pixel 714 beinhalten Verbindungspixel über, unter, links oder rechts von dem gegebenen Pixel. Die diagonalen Pixel 716 sind die Pixel oben links, oben rechts, unten links oder unten rechts von dem gegebenen Pixel.
  • Wie in 7B erläuterungshalber gezeigt ist, indexiert das Bildtransformationssystem Pixel, die ein gegebenes Pixel umgeben, mit 0 bis 8, wobei sie rechts beginnen und im Uhrzeigersinn fortschreiten. Das Bildtransformationssystem kann auch alternative Ansätze beim Indexieren nutzen, so beispielsweise ein Indexieren von Verbindungspixeln im Gegenuhrzeigersinn, ein Beginnen bei einem anderen Verbindungspixel oder ein Nutzen einer Kombination von Buchstaben und Zahlen zum Indexieren von Pixeln, die ein gegebenes Pixel umgeben. Zusätzliche Beispiele für das Indexieren beinhalten ein Nummerieren der benachbarten Pixel 714 vor dem Nummerieren der diagonalen Pixel 716 (oder umgekehrt) oder ein Indexieren von Verbindungspixeln für ein gegebenes Pixel auf Grundlage einer Stufungsrichtung in der Kantenkarte und/oder einer Orientierung der detektierten Kante.
  • Unter Nutzung der benachbarten Pixel 714 der diagonalen Pixel 716 bei einem priorisierenden Stufungsalgorithmus kann das Bildtransformationssystem eine Pixellinie generieren. Darstellungshalber zeigt 7C das Pixelgitter 706, das vorstehend erwähnt worden ist und das die detektierte Kante 712 und das erste Pixel 708 beinhaltet. Wie gezeigt ist, ist das erste Pixel 708 auch mit „A“ bezeichnet. Wie weiter gezeigt ist, beinhaltet das erste Pixel 708 indexierte Pixel (also diejenigen von 0 bis 8), die das erste Pixel 708 umgeben.
  • Bei einer oder mehreren Ausführungsformen untersucht das Bildtransformationssystem beim Identifizieren des ersten Pixels 708 Verbindungspixel entlang der detektierten Kante 712. Durch das Untersuchen der Verbindungspixel kann das das Bildtransformationssystem verifizieren, ob wenigstens ein umgebendes Pixel, zu dem gestuft werden soll, vorhanden ist. Werden mehrere Verbindungspixel identifiziert, so identifiziert das Bildtransformationssystem des Weiteren die Anzahl von benachbarten Pixeln wie auch die Anzahl von diagonalen Pixeln.
  • Im Allgemeinen beinhalten detektierte Kanten in einer Kantenkarte mehr als ein Pixel. Daher identifiziert das Bildtransformationssystem wenigstens ein Verbindungspixel, das das erste Pixel 708 umgibt. Andernfalls, wenn keine Verbindungspixel detektiert werden, bestimmt das Bildtransformationssystem, dass das erste Pixel 708 ein isoliertes Pixel ist. Wird nur ein Verbindungspixel detektiert, so stuft das Bildtransformationssystem ohne weitere Verarbeitung zu dem Verbindungspixel. Weist das erste Pixel 708 nur ein einziges Verbindungspixel auf, so ist das erste Pixel 708 das eine Ende der detektierten Kante 712 in der Kantenkarte 710.
  • Bestimmt das Bildtransformationssystem, dass mehr als ein Verbindungspixel für das erste Pixel 708 vorhanden ist, so bestimmt das Bildtransformationssystem, zu welchem Pixel als Nächstes gestuft werden soll. Bei einer oder mehreren Ausführungsformen identifiziert das Bildtransformationssystem als Teil der Bestimmung dessen, zu welchem Pixel als Nächstes gestuft werden soll, dasjenige, welche der Verbindungspixel die benachbarten Pixel sind und welche die diagonalen Pixel sind. Wie in 7C gezeigt ist, identifiziert das Bildtransformationssystem in dem Pixelgitter 706 beispielsweise zwei benachbarte Pixel, die ein erstes benachbartes Pixel bei dem Index 0 (rechts) und ein zweites benachbartes Pixel bei dem Index 6 (oben) beinhalten. Zusätzlich identifiziert das Bildtransformationssystem zwei diagonale Pixel, die ein erstes diagonales Pixel bei dem Index 1 (unten rechts) und ein zweites diagonales Pixel bei dem Index 5 (oben links) beinhalten.
  • Bei verschiedenen Ausführungsformen bestimmt das Bildtransformationssystem, zu welchem Verbindungspixel als Nächstes gestuft werden soll, auf Grundlage dessen, ob das Pixel ein benachbartes Pixel oder ein diagonales Pixel ist. Bei verschiedenen Ausführungsformen priorisiert das Bildtransformationssystem beispielsweise die benachbarten Pixel (Index 0 und 6) gegenüber den diagonalen Pixeln (Index 1 und 5). Sind ein benachbartes Pixel und ein diagonales Pixel mit einem gegebenen Pixel verbunden, so stuft das Bildtransformationssystem als Nächstes zu dem benachbarten Pixel. Darstellungshalber bestimmt das Bildtransformationssystem, wie in 7C gezeigt ist, zu einem der benachbarten Pixel (beispielsweise dem ersten benachbarten Pixel bei dem Index 0 oder dem zweiten benachbarten Pixel bei dem Index 6) und nicht zu einem der diagonalen Pixel 716 zu stufen.
  • Das Bildtransformationssystem setzt das Stufen zu Verbindungspixeln fort, bis eine Linienbeendigungsbedingung erfüllt ist. Wie gezeigt ist, untersucht das Bildtransformationssystem beispielsweise Verbindungspixel des zweiten Pixels 718, die entlang der detektierten Kante 712 befindlich sind, identifiziert die benachbarten Pixel links und unten wie auch die diagonalen Pixel oben links und unten rechts und bestimmt, dass als Nächstes zu dem benachbarten Pixel mit dem höheren Index (das heißt zu dem linken benachbarten Pixel) gestuft wird.
  • Das Bildtransformationssystem nimmt ein Aussondern oder Disqualifizieren des vorher gestuften Pixels wie auch von Pixeln benachbart zu dem vorher gestuften Pixel als Kandidaten für das nächste Pixel vor. Darstellungshalber stuft das Bildtransformationssystem, wie vorstehend beschrieben worden ist, von dem ersten Pixel 708 zu dem zweiten Pixel 718. Beim Bestimmen, zu welchem Pixel als Nächstes gestuft werden soll, vernachlässigt das Bildtransformationssystem das erste Pixel 708 wie auch beliebige Pixel benachbart zu dem ersten Pixel (beispielsweise das Pixel 720). Durch Vernachlässigen von Pixeln in der vorherigen Stufungsrichtung wird die Anzahl von Verbindungspixeln in der dargestellten detektierten Kante 712 auf ein benachbartes Pixel und ein diagonales Pixel verringert. Durch Vernachlässigen von Pixeln in der vorherigen Stufungsrichtung werden bis zu drei der acht Verbindungspixel als Kandidatenpixel, zu denen als Nächstes gestuft werden soll, beseitigt.
  • Wie vorstehend erwähnt worden ist, setzt das Bildtransformationssystem das Stufen entlang der detektierten Kante 712 durch Priorisieren von benachbarten Pixeln gegenüber diagonalen Pixeln und durch Vernachlässigen von Pixeln in der vorherigen Stufungsrichtung fort, bis eine Linienbeendigungsbedingung erfüllt ist. Ist eine Linienbeendigungsbedingung erfüllt, so bestimmt das Bildtransformationssystem, dass das Ende der Pixellinie erreicht ist, und stellt das Stufen entlang der detektierten Kante 712 ein. Ein Beispiel für eine Linienbeendigungsbedingung ist, dass entlang der detektierten Kante 712 keine weiteren Pixel vorhanden sind (das Bildtransformationssystem kann dann beispielsweise nicht zu einem benachbarten Pixel oder einem diagonalen Pixel stufen, ohne rückwärts zu stufen).
  • Ein zweites Beispiel für eine Linienbeendigungsbedingung liegt vor, wenn die detektierte Kante 712 schleifenartig zu sich selbst zurückkehrt. Das Bildtransformationssystem stuft beispielsweise zweimal zu einem Pixel, wenn es entlang der detektierten Kante 712 stuft. Bei diesem Beispiel kann das Bildtransformationssystem nicht zu dem vorherigen Pixel stufen. Das zweimalige Stufen zu demselben Pixel gibt daher an, dass die detektierte Kante 712 eine Schleife bildet, die sich selbst kreuzt oder zu sich selbst zurückgelangt (beispielsweise am Umriss eines Rasterelementes).
  • Ein drittes Beispiel für eine Linienbeendigungsbedingung liegt vor, wenn das Bildtransformationssystem bestimmt, dass wenigstens drei benachbarte Pixel oder wenigstens drei diagonale Pixel ein gegebenes Pixel (darunter Pixel in der vorherigen Stufungsrichtung) umgeben. Umgeben drei oder mehr benachbarte Pixel oder diagonale Pixel ein Pixel, so unterteilt oder verzweigt sich die detektierte Kante 712 in mehrere detektierte Kanten, und das Bildtransformationssystem stellt das Stufen ein. Bei alternativen Ausführungsformen setzt das Bildtransformationssystem das Stufen fort, bis eine der vorherigen beiden Linienbeendigungsbedingungen erfüllt ist.
  • Zur Darstellung einer Pixelunterteilungslinienbeendigungsbedingung zeigt 7C, wie das Bildtransformationssystem von dem ersten Pixel 708 (das heißt dem Pixel A) zu einem Pixel B, wie vorstehend beschrieben worden ist, stuft. Beim Stufen zu dem Pixel B identifiziert das Bildtransformationssystem drei benachbarte Verbindungspixel (beispielsweise unten, links und oben), wodurch veranlasst wird, dass das Bildtransformationssystem das Stufen entlang der detektierten Kante 712 in der aktuellen Richtung einstellt.
  • Bei einer oder mehreren Ausführungsformen kehrt das Bildtransformationssystem beim Auslösen einer Linienbeendigungsbedingung zu dem ersten Pixel 708 zurück und beginnt mit dem Stufen in der entgegengesetzten Richtung, bis eine Linienbeendigung bzw. Linienbeendigungsbedingung in der zweiten Richtung erfüllt ist. Das Bildtransformationssystem beginnt beispielsweise bei dem ersten Pixel 708, stuft zu dem rechten benachbarten Pixel (das heißt zu dem Pixel 720 bei dem Index 0) und setzt das Stufen in der zweiten Richtung fort, bis eine Linienbeendigung bzw. Linienbeendigungsbedingung erfüllt ist. Auf diese Weise identifiziert das Bildtransformationssystem jedes Mal dieselben Pixel entlang der Kante unabhängig davon, wo der Stufungsprozess entlang der detektierten Kante 712 beginnt.
  • Zusätzlich prüft bei einer Wiederholung des Stufungsprozesses in der zweiten Richtung das Bildtransformationssystem zunächst, ob eine Linienbeendigung bzw. Linienbeendigungsbedingung erfüllt ist, bevor es in die zweite Richtung stuft. Man gehe darstellungshalber davon aus, dass das Bildtransformationssystem zunächst bei dem Pixel B, wie in 7C gezeigt ist, beginnt, und zu dem oberen benachbarten Pixel und Verbindungspixeln stuft, bis eine erste Linienbeendigung bzw. Linienbeendigungsbedingung (beispielsweise die erste Richtung) erfüllt ist. Bei Rückkehr zu dem Pixel B zur Stufung entlang der detektierten Kante 712 in der zweiten Richtung bestimmt das Bildtransformationssystem sodann, dass das Pixel B eine zweite Linienbeendigungsbedingung (beispielsweise eine Pixelunterteilung) erfüllt und das Pixel B daher das Ende der detektierten Kante ist.
  • Wie eben erwähnt worden ist, kann das Bildtransformationssystem zunächst prüfen, ob eine Linienbeendigung bzw. Linienbeendigungsbedingung erfüllt ist, bevor es in die zweite Richtung stuft. Wird zunächst in einer ersten Richtung gestuft (wobei mit dem Nachbilden einer detektierten Kante beispielsweise bei dem ersten Pixel begonnen wird), so sondert das Bildtransformationssystem Linienbeendigungsbedingungen aus, bis die Pixellinie wenigstens zwei Pixel beinhaltet. Ist das erste Pixel am Ende einer detektierten Kante, so generiert das Bildtransformationssystem eine Pixellinie, indem es von einem ersten Ende der detektierten Kante zu einer zweiten Kante stuft.
  • Obwohl vorstehend exemplarische Ansätze angegeben sind, bei denen ein nächstes Pixel ausgewählt wird, zu dem entlang der detektierten Kante 712 gestuft werden soll, kann das Bildtransformationssystem auch alternative Ansätze und/oder Variationen an den genannten Ansätzen nutzen. Bei einigen Ausführungsformen priorisiert das Bildtransformationssystem diagonale Pixel gegenüber benachbarten Pixeln.
  • Beim Analysieren der detektierten Kante 712 mittels Stufung entlang der Verbindungspixel von dem ersten Pixel 708 aus fügt das Bildtransformationssystem das erste Pixel 708 und die Verbindungspixel zu einer Pixellinie hinzu. Bei einer oder mehreren Ausführungsformen identifiziert das Bildtransformationssystem beispielsweise die x-, y-Koordinaten eines jeden Pixels, zu dem gestuft worden ist, und zeichnet die Koordinaten eines jeden der Pixel in einer Tabelle oder Bitmap, die der Pixellinie zugeordnet ist, auf.
  • Wie vorstehend beschrieben worden ist, zeigt das Bildtransformationssystem die Pixellinie in einer grafischen Nutzerschnittstelle als Überlagerung auf einem Rasterbild an. Das Bildtransformationssystem trägt die Koordinaten der Pixel in der Pixellinie in einer Bitmap, die über dem Rasterbild angezeigt wird, ein. Detektiert das Bildtransformationssystem, dass eine Nutzerinteraktion die Pixellinie auswählt (beispielsweise durch Anklicken der Pixellinie mit einem Cursor oder durch Bereitstellen einer Berührungseingabe, die die Pixellinie antippt), so transformiert das Bildtransformationssystem die Pixellinie in ein Vektorzeichnungssegment. Bewegt der Nutzer andernfalls den Cursor weg von der Pixellinie, so verbirgt das Bildtransformationssystem die Überlagerung, die die Pixellinie zeigt.
  • Vor dem Transformieren einer Pixellinie in ein Vektorzeichnungssegment, identifiziert das Bildtransformationssystem bei verschiedenen Ausführungsformen Eckpixel, die das Bildtransformationssystem dafür nutzt, Bezierkurven besser an die Pixellinie anzupassen. Darstellungshalber zeigt 8 das Detektieren eines Eckpixels innerhalb einer Pixellinie entsprechend einer oder mehreren Ausführungsformen. Wie gezeigt ist, beinhaltet 8 ein Pixelgitter 806 mit einer Pixellinie 802 (beispielsweise mit aufgezeichneten Eckpixeln), die aus einer detektierten Kante in einer Kantenkarte unter Nutzung eines Stufungsprozesses, wie vorstehend beschrieben worden ist, identifiziert worden ist.
  • Um Eckpixel, die scharfen Ecken entsprechen, zu identifizieren, unterteilt das Bildtransformationssystem bei einer oder mehreren Ausführungsformen die Pixellinie 802 in kleine Gruppen von Pixeln. Wie in 8 gezeigt ist, wählt das Bildtransformationssystem vier Pixel aus der Pixellinie pro Gruppe aus, darunter den Pixelgruppen 804-a bis 804-d, wobei das letzte Pixel in einer Gruppe mit dem ersten Pixel in der nächsten Gruppe überlappt. Bei alternativen Ausführungsformen wählt das Bildtransformationssystem mehr oder weniger Pixel pro Gruppe aus und/oder beinhaltet keine überlappenden Pixel.
  • Sind mehr Pixel in einer Gruppe beinhaltet, so nimmt insbesondere der Abstand zwischen dem ersten und dem letzten Pixel zu, und das Bildtransformationssystem identifiziert Eckpixel in der Gruppe besser. Sind zu viele Pixel in der Gruppe beinhaltet, so kann das Bildtransformationssystem Eckpixel jedoch fälschlicherweise identifizieren. Idealerweise wählt das Bildtransformationssystem eine Gruppe von Pixeln zwischen 3 und 10 Pixeln (das heißt [3 bis 8]) aus, obwohl das Bildtransformationssystem auch mehr Pixel auswählen kann (beispielsweise auf Grundlage einer Nutzereingabe mittels einer nutzerseitig auswählbaren Option).
  • Zum Identifizieren eines Eckpixels erstellt das Bildtransformationssystem Liniensegmente für jede der Pixelgruppen. 8 zeigt beispielsweise ein Liniensegment, das Pixel in der ersten Pixelgruppe 804a, der zweiten Pixelgruppe 804b, der dritten Pixelgruppe 804c und der vierten Pixelgruppe 804d verbindet. Wie gezeigt ist, sind die Liniensegmente, da die Pixelgruppen überlappende Pixel beinhalten, miteinander zwischen den Pixelgruppen verbunden. Bei einer oder mehreren Ausführungsformen bestimmt das Bildtransformationssystem zwei angrenzende Liniensegmente auf einmal, bevor zusätzliche Liniensegmente bestimmt werden.
  • Unter Nutzung von zwei angrenzenden Liniensegmenten bestimmt das Bildtransformationssystem bei verschiedenen Ausführungsformen das Vorhandensein eines Eckpixels durch Vergleichen der Krümmung zwischen den beiden angrenzenden Liniensegmenten und durch Bestimmung dessen, ob die Krümmung eine Eckkrümmungsschwelle übersteigt. Bei einigen Ausführungsformen berechnet und vergleicht das Bildtransformationssystem die Menger'sche Krümmung eines jeden Paares von Liniensegmenten.
  • Darstellungshalber wählt das Bildtransformationssystem den ersten Endpunkt eines ersten Liniensegmentes als p1 und den zweiten Endpunkt des ersten Liniensegmentes als p2 aus, wie im Zusammenhang mit der dritten Pixelgruppe 804c in 8 gezeigt ist. Des Weiteren wählt das Bildtransformationssystem den ersten Endpunkt eines zweiten Liniensegmentes als p2 und den zweiten Endpunkt des zweiten Liniensegmentes als p3 aus, wie im Zusammenhang mit der vierten Pixelgruppe 804d in 8 gezeigt ist. Insbesondere da der zweite Endpunkt des ersten Liniensegmentes und der erste Endpunkt eines zweiten Liniensegmentes dasselbe Pixel sind, werden beide mit p2 bezeichnet. p2 stellt daher den Übergang zwischen dem ersten Liniensegment und dem zweiten Liniensegment dar.
  • Als Nächstes bestimmt unter Nutzung der drei Punkte (das heißt unter Nutzung von p1 , p2 und p3 ) das Bildtransformationssystem bei verschiedenen Ausführungsformen die Krümmung (das heißt k) des Liniensegmentpaares. Übersteigt die Krümmung k einen Krümmungswert (wenn beispielsweise k > 0,35 für ein vier Pixel umfassendes Liniensegment gilt), so weist das Bildtransformationssystem den Mittelpunkt p2 als Eckpixel zu. Da die Pixelgruppen eine kleine Anzahl von Pixeln beinhalten, stellt das Zuweisen eines Eckpixels, das ein oder zwei Pixel von einem echten Eckpixel entfernt ist, denselben Grad an Verbesserung und Genauigkeit beim Anpassen von Bezierkurven an Eckpixel einer Pixellinie bereit.
  • Darstellungshalber stellen die nachfolgenden Gleichungen Formeln zum Bestimmen der Krümmung k eines Liniensegmentpaares bereit. D 12 = ( p 2 x p 1 x ) 2 + ( p 2 y p 1 y ) 2
    Figure DE102019001695A1_0001
    D 23 = ( p 3 x p 2 x ) 2 + ( p 3 y p 2 y ) 2
    Figure DE102019001695A1_0002
    D 13 = ( p 3 x p 1 x ) 2 + ( p 3 y p 1 y ) 2
    Figure DE102019001695A1_0003
    D ¯ = D 12 + D 23 + D 13 3
    Figure DE102019001695A1_0004
    k = D ¯ ( | p 1 x p 3 x | | p 2 y p 1 y | | p 1 x p 2 x | | p 3 y p 1 y | ) D 12 D 23 D 13
    Figure DE102019001695A1_0005
  • Wie in Gleichungen 1 bis 5 gezeigt ist, bestimmt das Bildtransformationssystem die Krümmung k auf Grundlage der drei Punkte (das heißt auf Grundlage von p1 , p2 und p3 ) über die beiden angrenzenden Liniensegmente hinweg. In Gleichungen 1 bis 3 setzt das Bildtransformationssystem Quadratwurzeln ein, um den Abstand derart zu normieren, dass die Skala bzw. Maßstab der Gruppe von Pixeln die Krümmungsberechnung nicht nachteilig beeinflusst.
  • 7A bis 7C und 8 beschreiben verschiedene Ausführungsformen des Generierens einer Pixellinie in einer Kantenkarte. Entsprechend stellen die Vorgänge und Algorithmen, die in Verbindung mit 7A bis 7C und 8 beschrieben werden, eine exemplarische Struktur zum Durchführen eines Schrittes der Bestimmung einer Pixellinie für eine Kante auf Grundlage einer Nutzerinteraktion, der Kantenkarte des Rasterbildes und eines priorisierenden Algorithmus bereit.
  • Auf Grundlage der vorstehenden Beschreibung markiert das Bildtransformationssystem die Eckpixel in der Pixellinie. Das Bildtransformationssystem setzt beispielsweise Merker (flag) neben jedes Eckpixel in einer Pixellinientabelle oder Bitmap, die die Koordinaten eines jeden Pixels in einer Pixellinie speichert. Unter Nutzung der Endpunkte und der Eckpunkte der Pixellinie transformiert das Bildtransformationssystem die Pixellinie sodann genau in ein Vektorzeichnungssegment, wie nachstehend noch beschrieben wird.
  • Darstellungshalber passt das Bildtransformationssystem eine Bezierkurve zunächst an eine Pixellinie auf Grundlage der Endpunkte der Pixellinie wie auch auf Grundlage verschiedener Pixel entlang der Linie (bevor ein Eckdetektionsalgorithmus benutzt wird) an.
  • Bei einer oder mehreren Ausführungsformen misst das Bildtransformationssystem beim zunächst erfolgenden Anpassen einer Bezierkurve an die Pixellinie die Genauigkeit der Anpassung. Das Bildtransformationssystem vergleicht beispielsweise den Abstand zwischen Punkten entlang der Pixellinie zu der anfänglichen Bezierkurve, um zu bestimmen, ob der Abstand größer als ein Schwellenabstand ist. Übersteigt der Abstand zwischen einem Pixel auf der Pixellinie und der anfänglichen Bezierkurve die Abstandsschwelle, so unterteilt das Bildtransformationssystem die Pixellinie und nimmt eine Neuanpassung der Linie mit einer zusätzlichen Bezierkurve vor. Das Bildtransformationssystem wiederholt den Prozess des Messens und Unterteilens, bis ein glattes bzw. stetiges Kurvensegment (das heißt das Vektorzeichnungssegment) erstellt ist.
  • Bei einer oder mehreren Ausführungsformen passt das Bildtransformationssystem eine Bezierkurve an eine Pixellinie unter Nutzung eines Bezierkurvenanpassungsalgorithmus an. Das Bildtransformationssystem nutzt beispielsweise die Anpassungsmethode der kleinsten Quadrate, um eine optimale Kurvendarstellung für das glatte bzw. stetige Segment von Pixellinienkoordinaten zu berechnen, wie es beispielsweise in der folgenden Quelle beschrieben ist: „A Survey of Curve and Surface Methods in CAGD" von Boem et al., veröffentlicht bei „Computer Aided Geometric Design", Band 1, Ausgabe 1, Juli 1984, Seite 21. Die Quelle ist hiermit in Gänze durch Verweisung mit aufgenommen.
  • Das Bildtransformationssystem generiert Bezierkurven für jede Gruppe von Pixeln zwischen Endpunkten (darunter Eckpunkte und zusätzlich hinzugefügte Endpunkte) unter Nutzung eines Bezierkurvenanpassungsalgorithmus. Bei einer oder mehreren Ausführungsformen setzt das Bildtransformationssystem die nachfolgende Formel ein, um ein Bezierkurvensegment aus Abtastpunkten in einer Pixellinie, wie in Gleichung 6 gezeigt ist, zu nähern. P = ( B T B ) 1 ( B T S )
    Figure DE102019001695A1_0006
  • In Gleichung 6 stellt P die Steuer- bzw. Regelpunkte für eine Bezierkurve dar und stellt S n Pixelkoordinaten (beispielsweise die Anzahl von Pixelabtastpunkten) in der Pixellinie oder einen Abschnitt einer Pixellinie, der an eine Bezierkurve angepasst ist, dar. Zusätzlich stellt B eine Matrix von kubischen Bezierkoeffizienten für gleich beabstandete Punkte dar und ist folgendermaßen definiert: u i = i n 1
    Figure DE102019001695A1_0007
    B j ( u ) = 6 j ! ( 3 j ) ! u j ( 1 u ) 3 j
    Figure DE102019001695A1_0008
    B i , j = B j ( u i )
    Figure DE102019001695A1_0009
  • Wie in Gleichungen 6 bis 9 gezeigt ist, passt das Bildtransformationssystem eine Bezierkurve an eine Pixellinie unter Nutzung eines Anpassungsverfahrens der kleinsten Quadrate mit Nutzung einer Matrix von kubischen Bezierkoeffizienten an, wobei j gleich 0,3 ist.
  • Da das Bildtransformationssystem zudem einen gleichförmigen Stufungsgrad (beispielsweise ein Pixel breite Kanten) einsetzt, sind die Matrizen von Bezierkoeffizienten (das heißt BT und (BTB)-1) für Pixellinien mit derselben Anzahl (das heißt n) von Pixeln konstant. Identifiziert das Bildtransformationssystem beispielsweise mehrere Pixellinien, die 5 Pixel lang sind, so generiert das Bildtransformationssystem die Matrix von Bezierkoeffizienten einmal und nutzt die Matrix von Bezierkoeffizienten erneut, um eine Bezierkurve an jede nachfolgende Pixellinie aus 5 Pixeln anzupassen, und zwar auch dann, wenn jede der Pixellinien hinsichtlich Richtung, Form oder Krümmung variiert.
  • Zur weiteren Darstellung zeigt 9 ein Flussdiagramm einer Abfolge von Vorgängen 900 des Zwischenspeicherns einer Matrix von Bezierkoeffizienten, die zum Anpassen einer Bezierkurve an eine Pixellinie benutzt wird, entsprechend einer oder mehreren Ausführungsformen. Das Bildtransformationssystem folgt der Abfolge von Vorgängen 900, wenn eine Bezierkurve an eine Pixellinie angepasst wird.
  • Wie in 9 gezeigt ist, führt das Bildtransformationssystem einen Vorgang 902 des Identifizierens der Anzahl von Pixeln in einer Pixellinie durch. Das Bildtransformationssystem zählt die Anzahl von Pixeln in einer Pixellinie (oder in einem Partialteil einer Pixellinie). Das Bildtransformationssystem zählt die Anzahl von Pixeln zwischen zwei markierten Endpunkten, die Eckpixel beinhalten.
  • Zusätzlich führt das Bildtransformationssystem, wie in 9 dargestellt ist, einen Vorgang 904 des Bestimmens dessen durch, ob die Anzahl von Pixeln eine Pixel-pro-Linie-Menge übersteigt. Bestimmt das Bildtransformationssystem beispielsweise, dass die Zahl von Pixeln in der Pixellinie die Pixel-pro-Linie-Menge übersteigt, so unterteilt das Bildtransformationssystem die Pixellinie (und zwar mittels Durchführen eines Vorganges 906), bis jede unterteilte Pixellinie unter der Pixel-pro-Linie-Menge ist. Das Bildtransformationssystem behandelt jede unterteilte Pixellinie sodann als separate Pixellinie. Unterteilt das Bildtransformationssystem eine Pixellinie zudem um einen Faktor 2, so nutzt das Bildtransformationssystem die Matrix von Bezierkoeffizienten, wie nachstehend noch beschrieben wird, für jede unterteilte Pixellinie erneut.
  • Durch Setzen einer Pixel-pro-Linie-Grenze verringert das Bildtransformationssystem die rechentechnischen Anforderungen, die eine Clientvorrichtung benötigt, um eine große Matrix von Bezierkoeffizienten zu generieren, wie auch den Speicherplatz, der benötigt wird, um eine große Matrix von Bezierkoeffizienten zu speichern. Nimmt die Anzahl von Pixeln in einer Pixellinie zu, so wachsen Größe und Komplexität einer entsprechenden Matrix von Bezierkoeffizienten exponentiell. Durch Begrenzen der Anzahl von Pixeln in einer Pixellinie auf eine Pixel-pro-Linie-Menge (von beispielsweise 50, 100, 500 oder 1000 Pixeln) und Unterteilen größerer Pixellinien verringert das Bildtransformationssystem die gesamte Computerverarbeitung durch Nutzen von weniger komplexen Matrizen von Bezierkoeffizienten und durch in vielen Fällen erfolgendes erneutes Nutzen einer vorher berechneten Matrix von Bezierkoeffizienten.
  • Ist die Anzahl von Pixeln in der Pixellinie unter der Pixel-pro-Linie-Menge, so bestimmt das Bildtransformationssystem, ob eine zwischengespeicherte Matrix für die Anzahl von Pixeln in der Pixellinie vorhanden ist, wie bei einem Vorgang 908 gezeigt ist. Das Bildtransformationssystem vergleicht die Anzahl von Pixeln in der Pixellinie mit einer Datenbank aus zwischengespeicherten Matrizen von Bezierkoeffizienten, um zu bestimmen, ob eine Matrix von Bezierkoeffizienten für die gegebene Anzahl von Pixeln vorher schon von dem Bildtransformationssystem generiert worden ist.
  • Identifiziert das Bildtransformationssystem eine zwischengespeicherte Matrix von Bezierkoeffizienten, die der Anzahl von Pixeln in der Pixellinie entspricht, so passt das Bildtransformationssystem eine Bezierkurve unter Nutzung der Matrix, wie bei einem Vorgang 912 gezeigt ist, an die Pixellinie an. Unter Nutzung einer zwischengespeicherten Matrix von Bezierkoeffizienten muss das Bildtransformationssystem lediglich einfache Arithmetik (beispielsweise Multiplikations- und Additionsschleifen) einsetzen, anstatt dass es einen komplexen Prozess des Generierens einer duplizierten Matrix von Bezierkoeffizienten durchlaufen müsste.
  • Andernfalls generiert das Bildtransformationssystem eine Matrix von Bezierkoeffizienten für die Anzahl von Pixeln in der Pixellinie, wie bei einem Vorgang 910 gezeigt ist. Beim Generieren der Matrix von Bezierkoeffizienten für die Anzahl von Pixeln in der Pixellinie speichert das Bildtransformationssystem bei einigen Ausführungsformen die Matrix von Bezierkoeffizienten in einer Datenbank mit Matrizen von Bezierkoeffizienten oder zwischenspeichert diese. Bei einigen Ausführungsformen wird die Datenbank auf einer Clientvorrichtung gespeichert und nach einer verstrichenen Zeit oder einem Auslöseereignis gelöscht (wenn der Nutzer beispielsweise die Vektorzeichnung und/oder das Bildbearbeitungsprogramm schließt).
  • In 10 sind zusätzliche Details im Zusammenhang mit den Fähigkeiten und Komponenten des Bildtransformationssystems entsprechend einer oder mehreren Ausführungsformen angegeben. Insbesondere zeigt 10 ein schematisches Diagramm einer Rechenvorrichtung 1000, die ein Bildbearbeitungssystem 1002 und ein Rasterbildselektivtransformationssystem 1004 (das heißt eine exemplarische Implementierung des vorbeschriebenen Bildtransformationssystems) beinhaltet. Bei einer oder mehreren Ausführungsformen werden einige oder alle Komponenten des Rasterbildselektivtransformationssystems 1004 (oder einfach des „Bildtransformationssystems 1004“) separat von dem Bildbearbeitungssystem 1002 implementiert. Darüber hinaus beinhaltet die Rechenvorrichtung 1000 zahlreiche verschiedene Vorrichtungen. Bei einigen Ausführungsformen sind einige oder alle Komponenten des Bildtransformationssystems 1004 beispielsweise auf einer Clientvorrichtung und/oder einer Servervorrichtung implementiert.
  • Wie gezeigt ist, befindet sich das Bildtransformationssystem 1004 auf einer Rechenvorrichtung 1000 innerhalb eines Bildbearbeitungssystems 1002. Im Allgemeinen stellt das Rechensystem 1000 verschiedene Typen von Clientvorrichtungen dar. Bei einigen Ausführungsformen ist der Client beispielsweise eine Mobilvorrichtung, so beispielsweise ein Laptop, ein Tablet, ein Mobiltelefon, ein Smartphone und dergleichen mehr. Bei anderen Ausführungsformen ist die Rechenvorrichtung 1000 eine nichtmobile Vorrichtung, so beispielsweise ein Desktop oder ein Server, oder ein anderer Typ von Clientvorrichtung. Zusätzliche Details im Zusammenhang mit der Rechenvorrichtung 1000 werden nachstehend anhand 14 beschrieben.
  • Das Bildbearbeitungssystem 1002 erleichtert im Allgemeinen das Erstellen, Modifizieren, Teilen und/oder Löschen von Digitalbildern innerhalb von Anwendungen. Das Bildbearbeitungssystem 1002 stellt auf der Rechenvorrichtung 1000 zahlreiche Werkzeuge im Zusammenhang mit der Bilderstellung und Bearbeitung (beispielsweise dem Zeichnen, Bearbeiten und Vektorisieren eines Bildes) bereit. Zusätzlich greift das Bildbearbeitungssystem 1002 auf örtlich oder entfernt (remote) gespeicherte Sammlungen von Rasterbildern zu. Bei einigen Ausführungsformen ist das Bildbearbeitungssystem 1002 zudem separat von der Rechenvorrichtung 1000 (beispielsweise auf einer Servervorrichtung) befindlich und kommuniziert mit dem Bildtransformationssystem 1004.
  • Das Bildbearbeitungssystem 1002 arbeitet in Verbindung mit einer oder mehreren Anwendungen, um die Vektorisierung von Rasterbildern auf der Rechenvorrichtung 1010 zu erleichtern. Bei einer oder mehreren Ausführungsformen beinhaltet das Bildbearbeitungssystem 1002 mehrere Anwendungen, Funktionen und Operationen im Zusammenhang mit grafischem Content, so beispielsweise ein Paket (suite) von Anwendungen, eine webbasierte Anwendung und/oder ein System, das auf der Rechenvorrichtung 1000 betrieben wird.
  • Wie gezeigt ist, beinhaltet das Bildtransformationssystem 1004 von 10 verschiedene Komponenten zur Durchführung der hier beschriebenen Prozesse und Merkmale. Das Bildtransformationssystem 1004 beinhaltet beispielsweise einen Rasterbildverwalter 1006, einen Kantenkartengenerator 1008, einen Nutzerinteraktionsverwalter 1010, einen Pixelliniengenerator 1012, einen Bezierkurvenanpasser 1014, einen Grafikwiedergeber 1020 und einen Speicherverwalter 1022. Jede dieser Komponenten wird nachstehend weiter beschrieben.
  • Wie eben erwähnt worden ist, beinhaltet das Bildtransformationssystem 1004 den Rasterbildverwalteter 1006. Im Allgemeinen erleichtert der Rasterbildverwalter 1006 das Identifizieren, Zugreifen, Empfangen, Beziehen, Generieren, Importieren, Exportieren, Kopieren, Modifizieren, Entfernen und/oder Organisieren von Rasterbildern. Bei einer oder mehreren Ausführungsformen arbeitet der Rasterbildverwalter 1006 in Verbindung mit dem Bildbearbeitungssystem 1002, um auf Rasterbilder zuzugreifen und diese zu laden. Wie gezeigt ist, kommuniziert der Rasterbildverwalter 1006 mit dem Speicherverwalter 1022, um Rasterbilder 1024 zu speichern und/oder auf diese zu zugreifen.
  • Wie ebenfalls gezeigt ist, beinhaltet das Bildtransformationssystem 1004 einen Kantenkartengenerator 1008. Bei einer oder mehreren Ausführungsformen erstellt, generiert und/oder detektiert der Kantenkartengenerator 1008 beispielsweise eine Kantenkarte für ein Rasterbild oder einen Abschnitt hiervon. Bei einigen Ausführungsformen generiert der Kantenkartengenerator 1008 eine Kantenkarte durch Detektieren von Kanten in dem Rasterbild auf Grundlage von Kantendetektionsparametern und/oder Pixelabtastdichten, wobei die Kanten ein Pixel breit sind, wie vorstehend bereits erläutert worden ist. Bei verschiedenen Ausführungsformen setzt der Kantenkartengenerator 1008 eine Canny-Kantendetektion ein, um Kanten in einem Rasterbild zu detektieren. Wie gezeigt ist, kommuniziert der Kantenkartengenerator 1008 zudem mit dem Speicherverwalter 1022, um Kantenkarten 1026 zu speichern und/oder auf diese zuzugreifen.
  • Wie in 10 dargestellt ist, beinhaltet das Bildtransformationssystem 1004 den Nutzerinteraktionsverwalter 1010. Bei einer oder mehreren Ausführungsformen detektiert, identifiziert, empfängt, erkennt und/oder interpretiert der Nutzerinteraktionsverwalter 1010 Interaktionen seitens eines Nutzers. Der Nutzerinteraktionsverwalter 1010 detektiert Nutzerinteraktionen in einer grafischen Nutzerschnittstelle, wie vorstehend beschrieben worden ist. Wie vorstehend erwähnt worden ist, beinhalten Nutzerinteraktionen Bewegungen Klicks, Drags, Auswahlen oder das Entfernen von Auswahlen mittels eines Cursors oder einer Berührungseingabe.
  • Bei einigen Ausführungsformen kommuniziert der Nutzerinteraktionsverwalter 1010 mit dem Kantenkartengenerator 1008 durch Bereitstellen von Koordinaten einer Nutzerinteraktion für den Kantenkartengenerator 1008. Bewegt ein Nutzer einen Cursor über ein Rasterbild in einer grafischen Nutzerschnittstelle, so stellt der Nutzerinteraktionsverwalter 1010 die Koordinaten beispielsweise für den Kantenkartengenerator 1008, wie vorstehend beschrieben worden ist, bereit. Auf ähnliche Weise stellt der Nutzerinteraktionsverwalter 1010 bei verschiedenen Ausführungsformen, wenn der Nutzerinteraktionsverwalter 1010 eine Nutzerinteraktion, so beispielsweise ein nutzerseitiges Auswählen einer Pixellinie, detektiert, eine Angabe der Pixellinienauswahl für den Bezierkurvenanpasser 1014 bereit.
  • Wie gezeigt ist, beinhaltet das Bildtransformationssystem 1004 den Pixelliniengenerator 1012. Im Allgemeinen empfängt der Pixelliniengenerator 1012 eine Position (beispielsweise Koordinaten) einer Nutzerinteraktion mit einem Rasterbild und identifiziert eine Pixelkante auf Grundlage der Nutzerinteraktion, wie vorstehend erläutert worden ist. Zusätzlich generiert der Pixelliniengenerator 1012 eine Pixellinie durch Stufung von einem Pixel an der detektierten Kante zu Verbindungspixeln unter Nutzung einer priorisierenden Stufungsfunktion, wie vorstehend beschrieben worden ist.
  • Wie dargestellt ist, beinhaltet das Bildtransformationssystem 1004 zudem den Bezierkurvenanpasser 1014, der einen Matrixgenerator 1016 und einen Pixellinienunterteiler 1018 aufweist. Im Allgemeinen generiert der Bezierkurvenanpasser 1014 ein Vektorzeichnungssegment durch Anpassen einer oder mehrerer Bezierkurven an eine Pixellinie, wie vorstehend beschrieben worden ist. Bei einigen Ausführungsformen nutzt der Bezierkurvenanpasser 1014 beispielsweise einen Bezierkurvenanpassungsalgorithmus, um eine Bezierkurve an eine Pixellinie anzupassen. Wie gezeigt ist, kommuniziert der Bezierkurvenanpasser 1014 mit dem Speicherverwalter 1022, um das Vektorzeichnungssegment, das für eine Pixellinie generiert worden ist, zu speichern und auf dieses zuzugreifen.
  • Wie erwähnt worden ist, beinhaltet der Bezierkurvenanpasser 1014 den Matrixgenerator 1016 und den Pixellinienunterteiler 1018. Bei einer oder mehreren Ausführungsformen generiert und zwischenspeichert der Matrixgenerator 1016 Matrizen von Bezierkoeffizienten, die von dem Bezierkurvenanpasser 1014 benutzt werden, um eine Bezierkurve an eine Pixellinie anzupassen. Wie vorstehend beschrieben worden ist, entspricht eine Matrix von Bezierkoeffizienten einer bestimmten Anzahl von Pixeln in einer Pixellinie, und der Bezierkurvenanpasser 1014 nutzt dieselbe Matrix von Bezierkoeffizienten erneut für Pixellinien, die dieselbe Anzahl von Pixeln aufweisen. Wie gezeigt ist, kommuniziert der Matrixgenerator 1016 mit dem Speicherverwalter 1022, um die zwischengespeicherten Matrizen 1030 zu speichern und auf diese zu zugreifen.
  • Bei einigen Ausführungsformen detektiert der Pixellinienunterteiler 1018, wann eine Bezierkurve an eine Pixellinie nicht eng angepasst ist. Der Pixellinienunterteiler 1018 bestimmt beispielsweise, dass der Abstand zwischen einem Pixel auf der Pixellinie und einer zunächst angepassten Bezierkurve eine Abstandsschwelle übersteigt. Detektiert der Pixellinienunterteiler 1018, dass die Abstandsschwelle überschritten ist, so unterteilt der Pixellinienunterteiler 1018 die Pixellinie in zwei Segmente und passt Bezierkurven an jede der Pixellinien neu an.
  • Wie gezeigt ist, beinhaltet das Bildtransformationssystem 1004 zudem einen Grafikwiedergeber 1020. Im Allgemeinen stellt der Grafikwiedergeber 1020 eine oder mehrere grafische Nutzerschnittstellen, die Rasterbilder anzeigen, bereit und/oder gibt diese wieder. Zusätzlich stellt der Grafikwiedergeber 1020 Überlagerungen bereit, die Pixellinien und/oder Vektorzeichnungssegmente beinhalten, und/oder gibt diese wieder. Der Grafikwiedergeber 1020 stellt beispielsweise eine Bildschicht einer Vektorzeichnung, die ein oder mehrere Vektorzeichnungssegmente beinhaltet, die aus Kanten in einem Rasterbild transformiert worden sind, wie vorstehend beschrieben worden ist, bereit und/oder gibt diese wieder.
  • Die Komponenten 1006 bis 1030 des Bildtransformationssystems 1004 beinhalten Software, Hardware oder beides. Die Komponenten 1006 bis 1030 beinhalten beispielsweise eine oder mehrere Anweisungen, die auf einem computerlesbaren Speichermedium gespeichert sind und von Prozessoren einer oder mehrerer Rechenvorrichtungen, so beispielsweise einer Clientvorrichtung oder einer Servervorrichtung, ausgeführt werden können. Bei Ausführung durch den einen oder die mehreren Prozessoren können die computerausführbaren Anweisungen des Bildtransformationssystems 1004 veranlassen, dass die Rechenvorrichtung / die Rechenvorrichtungen die Merkmalslernverfahren, die hier beschrieben werden, durchführt/durchführen. Alternativ können die Komponenten 1006 bis 1030 Hardware beinhalten, so beispielsweise eine Spezialzweckverarbeitungsvorrichtung zur Durchführung einer bestimmten Funktion oder Gruppe von Funktionen. Alternativ können die Komponenten 1006 bis 1030 des Bildtransformationssystems 1004 eine Kombination aus computerausführbaren Anweisungen und Hardware beinhalten.
  • Zudem implementiert sind die Komponenten 1006 bis 1030 des Bildtransformationssystems 1004 beispielsweise als ein oder mehrere Betriebssysteme, als eine oder mehrere eigenständige Anwendungen, als ein oder mehrere Module einer Anwendung, als ein oder mehrere Plug-ins, als eine oder mehrere Bibliotheksfunktionen oder Funktionen, die von anderen Anwendungen aufgerufen werden, und/oder als Cloudrechenmodell. Die Komponenten 1006 bis 1030 können daher als eigenständige Anwendung, so beispielsweise als Desktop- oder Mobilanwendung, implementiert sein. Die Komponenten 1006 bis 1030 können zudem als eine oder mehrere webbasierte Anwendungen, die auf einem Remoteserver gehostet sind, implementiert sein. Die Komponenten 1006 bis 1030 können als Paket (suite) von Mobilvorrichtungsanwendungen oder „Apps“ implementiert sein. Darstellungshalber können die Komponenten 1006 bis 1030 in einer Anwendung implementiert sein, darunter unter anderem in der Software ADOBE® ILLUSTRATOR®, ADOBE PHOTOSHOP® und ADOBE® AFTER EFFECTS®. „ADOBE“, „ILLUSTRATOR“, „PHOTOSHOP“ und „AFTER EFFECTS“ sind entweder eingetragene Marken oder Marken von Adobe Systems Incorporated in den Vereinigten Staaten und/oder anderen Ländern.
  • 11 zeigt ein schematisches Diagramm einer Umgebung 1100, in der das Rasterbildselektivtransformationssystem 1004 (oder einfach „Bildtransformationssystem 1004“) entsprechend einer oder mehreren Ausführungsformen implementiert sein kann. Bei einer oder mehreren Ausführungsformen beinhaltet die Umgebung 1100 verschiedene Rechenvorrichtungen, die eine Clientvorrichtung 1102 und eine Servervorrichtung/Servervorrichtungen 1104 beinhalten. Zusätzlich beinhaltet die Umgebung 1100 ein Netzwerk 1108. Das Netzwerk 1108 kann ein beliebiges geeignetes Netzwerk sein, über das die Rechenvorrichtungen kommunizieren können. Exemplarische Netzwerke werden nachstehend detailliert anhand 14 erläutert.
  • Wie in 11 dargestellt ist, beinhaltet die Umgebung 1100 die Clientvorrichtung 1102. Die Clientvorrichtung 1102 kann eine beliebige Rechenvorrichtung umfassen, so beispielsweise die Rechenvorrichtung, die nachstehend anhand 14 beschrieben wird. Wie gezeigt ist, beinhaltet die Clientvorrichtung das Bildbearbeitungssystem 1002 und das Bildtransformationssystem 1004, die vorstehend beschrieben worden sind. Wie vorstehend beschrieben worden ist, transformiert das Bildtransformationssystem 1004 Kanten in einem Rasterbild beispielsweise auf Grundlage von Nutzerinteraktionen und Nutzerauswahlen in Vektorzeichnungssegmente. Das Bildtransformationssystem 1004 setzt zudem einen priorisierenden Stufungsalgorithmus ein, um Pixellinien zu generieren, die das Bildtransformationssystem 1004 zum Transformieren oder Umwandeln der Kanten in dem Rasterbild in Vektorzeichnungssegmente, wie vorstehend erläutert worden ist, nutzt.
  • Zusätzlich beinhaltet die Umgebung 1100 die Servervorrichtung/Servervorrichtungen 1104, die eine beliebige Rechenvorrichtung umfassen kann/können, so beispielsweise eine oder mehrere der Rechenvorrichtungen, die nachstehend anhand 14 beschrieben werden. Die Servervorrichtung/Servervorrichtungen 1104 kann/können beliebige Typen von Daten, darunter grafischen Content, so beispielsweise Rasterbilder, Pixellinien und/oder Vektorzeichnungssegmente, generieren, speichern, empfangen und übertragen. Wie gezeigt ist, beinhaltet/beinhalten die Servervorrichtung/Servervorrichtungen 1104 ein Bildbearbeitungsserversystem 1106, das mit dem Bildbearbeitungssystem 1002 auf der Clientvorrichtung 1102 kommuniziert. Das Bildbearbeitungsserversystem 1106 überträgt grafischen Content beispielsweise an die Clientvorrichtung 1102, wodurch ermöglicht wird, dass die Clientvorrichtung 1102 Pixellinien und/oder Vektorzeichnungssegmente in einer grafischen Nutzerschnittstelle der Clientvorrichtung 1102 wiedergibt. Insbesondere kann das Bildbearbeitungsserversystem 1106, obwohl nur eine einzige Servervorrichtung gezeigt ist, auch über mehrere Servervorrichtungen hinweg implementiert sein.
  • Obwohl dies nicht dargestellt ist, kann/können die Servervorrichtung/Servervorrichtungen 1104 bei einer oder mehreren Ausführungsformen das Bildtransformationssystem 1004, so beispielsweise innerhalb des Bildbearbeitungsserversystems 1106, ganz oder in Teilen beinhalten. Ist das Bildtransformationssystem 1004 beispielsweise auf der Servervorrichtung / den Servervorrichtungen 1104 befindlich, so kann es eine Anwendung umfassen, die auf der Servervorrichtung / den Servervorrichtungen 1104 oder einem Teil einer Softwareanwendung, die von der Clientvorrichtung 1102 heruntergeladen werden kann, läuft. Das Bildtransformationssystem 1004 beinhaltet beispielsweise eine Webhostinganwendung, die ermöglicht, dass die Clientvorrichtung 1102 mit Content aus dem Bildbearbeitungsserversystem 1106, das auf der Servervorrichtung / den Servervorrichtungen 1104 gehostet ist, interagiert. Auf diese Weise generiert/generieren die Servervorrichtung/Servervorrichtungen 1104 eine Pixellinie und/oder ein Vektorzeichnungssegment auf Grundlage einer Nutzerinteraktion in einer grafischen Nutzerschnittstelle, die für die Clientvorrichtung 1102 bereitgestellt wird.
  • Obwohl 11 eine bestimmte Anordnung der Servervorrichtung/Servervorrichtungen 1104, der Clientvorrichtung 1102 und des Netzwerkes 1108 darstellt, sind verschiedene zusätzliche Anordnungen möglich. Obwohl 11 beispielsweise zeigt, dass die eine oder die mehreren Clientvorrichtungen 1102 mit der Servervorrichtung / den Servervorrichtungen 1104 über das Netzwerk 1108 kommunizieren, kann bei einer oder mehreren Ausführungsformen auch eine einzige Clientvorrichtung direkt mit der Servervorrichtung / den Servervorrichtungen 1104 kommunizieren und dabei das Netzwerk 1108 umgehen.
  • Auf ähnliche Weise kann, obwohl die Umgebung 1100 von 11 derart dargestellt ist, dass sie verschiedene Komponenten aufweist, die Umgebung 1100 auch zusätzliche oder alternative Komponenten aufweisen. Das Bildtransformationssystem 1004 kann beispielsweise auf mehreren Rechenvorrichtungen implementiert sein. Insbesondere kann das Bildtransformationssystem 1004 gänzlich durch die Servervorrichtung/Servervorrichtungen 1104 implementiert sein, oder es kann das Bildtransformationssystem 1004 in Gänze durch die Clientvorrichtung 1102 implementiert sein. Alternativ kann das Bildtransformationssystem 1004 über mehrere Vorrichtungen oder Komponenten hinweg (beispielsweise unter Nutzung der Servervorrichtung/Servervorrichtungen 1104 und der einen oder der mehreren Clientvorrichtungen 1102) implementiert sein.
  • 1 bis 11, der entsprechende Text und die Beispiele stellen mehrere verschiedene Systeme, Verfahren, Techniken, Komponenten und/oder Vorrichtungen des Bildtransformationssystems 1004 entsprechend einer oder mehreren Ausführungsformen bereit. Zusätzlich zur vorstehenden Beschreibung können die eine oder die mehreren Ausführungsformen auch anhand von Flussdiagrammen beschrieben werden, die Vorgänge beinhalten, mit denen ein bestimmtes Ergebnis erzielt wird. 12 und 13 zeigen beispielsweise Flussdiagramme mit einer exemplarischen Abfolge von Vorgängen entsprechend einer oder mehreren Ausführungsformen. Zusätzlich können 12 und 3 auch mit mehr oder weniger Vorgängen durchgeführt werden. Die Vorgänge können zudem in anderen Reihenfolgen durchgeführt werden. Schließlich können die hier beschriebenen Vorgänge auch wiederholt oder parallel zueinander oder parallel zu verschiedenen Instanzen derselben oder ähnlicher Vorgänge durchgeführt werden.
  • Obwohl 12 und 13 eine Abfolge von Vorgängen entsprechend bestimmten Ausführungsformen darstellen, können alternative Ausführungsformen beliebige der gezeigten Vorgänge weglassen, hinzufügen, umordnen und/oder modifizieren. Die Abfolge von Vorgängen von 12 und 13 kann als Teil eines Verfahrens durchgeführt werden. Alternativ kann ein nichttemporäres computerlesbares Medium Anweisungen umfassen, die bei Ausführung durch einen oder mehrere Prozessoren veranlassen, dass eine Rechenvorrichtung (beispielsweise eine Clientvorrichtung und/oder eine Servervorrichtung) die Abfolge von Vorgängen von 12 und 13 durchführt. Bei wieder anderen Ausführungsformen führt das System die Vorgänge von 12 und 13 durch.
  • Darstellungshalber zeigt 12 ein Flussdiagramm mit einer Abfolge von Vorgängen 1200 zum Generieren von verbesserten Digitalbildern durch Transformieren von in Rasterbildern befindlichen rasterbasierten Elementen in Vektorzeichnungssegmente entsprechend einer oder mehreren Ausführungsformen. Wie gezeigt ist, beinhaltet die Abfolge von Vorgängen 1200 einen Vorgang 1210 des Identifizierens eines Rasterbildes in einer grafischen Nutzerschnittstelle. Der Vorgang 1210 impliziert ein Identifizieren eines Rasterbildes in einer grafischen Nutzerschnittstelle, die das Rasterelement abbildet. Bei einer oder mehreren Ausführungsformen beinhaltet der Vorgang 1210 ein Empfangen oder Laden des Rasterbildes zur Anzeige in einer grafischen Nutzerschnittstelle einer Clientvorrichtung. Bei verschiedenen Ausführungsformen beinhaltet das Rasterbild ein Rasterelement, das mehrere Kanten aufweist.
  • Wie in 12 gezeigt ist, beinhaltet die Abfolge von Vorgängen 1200 des Weiteren einen Vorgang 1220 des Generierens einer Kantenkarte durch Detektieren von Kanten in dem Rasterbild. Insbesondere impliziert der Vorgang 1220 ein Generieren einer Kantenkarte durch Detektieren mehrerer Kanten innerhalb des Rasterbildes, das in der grafischen Nutzerschnittstelle angezeigt wird. Bei verschiedenen Ausführungsformen beinhaltet die Kantenkarte mehrere detektierte Kanten, die den mehreren Kanten des Rasterelementes in dem Rasterbild entsprechen. Bei einigen Ausführungsformen ist die Auflösung der Kantenkarte auf die Bildauflösung des Rasterbildes abgestimmt.
  • Die Abfolge von Vorgängen 1200 beinhaltet zudem einen Vorgang 1230 des Identifizierens einer ersten Kante innerhalb der Kantenkarte auf Grundlage einer ersten Nutzerinteraktion. Insbesondere impliziert der Vorgang 1230 ein Identifizieren einer ersten Kante der mehreren Kanten des Rasterelementes innerhalb der Kantenkarte auf Grundlage einer ersten Nutzerinteraktion in einer grafischen Nutzerschnittstelle, die das Rasterbild anzeigt. Bei einigen Ausführungsformen beinhaltet der Vorgang 1230 zudem ein Identifizieren der ersten Kante der mehreren Kanten des Rasterelementes innerhalb der Kantenkarte durch Bestimmen von Koordinaten der erste Nutzerinteraktion in der grafischen Nutzerschnittstelle, die die grafische Nutzerschnittstelle anzeigt, und ein Abbilden der Koordinaten der erste Nutzerinteraktion auf die Kantenkarte, um die erste Kante der mehreren Kanten des Rasterelementes innerhalb der Kantenkarte zu identifizieren.
  • Wie gezeigt ist, beinhaltet die Abfolge der Vorgänge 1200 zudem einen Vorgang 1240 des Anzeigens einer Pixellinie, die der Kante in dem Rasterbild entspricht. Insbesondere impliziert der Vorgang 1240 ein Generieren einer ersten Pixellinie entsprechend der ersten Kante in Reaktion auf die erste Nutzerinteraktion zur Anzeige als erste Überlagerung auf dem Rasterelement in dem Rasterbild innerhalb der grafischen Nutzerschnittstelle. Bei einigen Ausführungsformen entspricht die erste Pixellinie einem kontinuierlichen, nichtschneidenden Abschnitt der ersten Kante. Bei verschiedenen Ausführungsformen impliziert der Vorgang 1240 ein innerhalb der grafischen Nutzerschnittstelle erfolgendes Wiedergeben einer ersten Pixellinie als Überlagerung auf einer ersten Kante der mehreren Kanten in dem Rasterbild ohne Generieren einer Bezierkurve entsprechend der ersten Kante.
  • Zusätzlich beinhaltet der Vorgang 1240 bei einer oder mehreren Ausführungsformen ein Hervorheben der ersten Pixellinie in dem Rasterbild in Reaktion auf die erste Nutzerinteraktion, wobei die erste Pixellinie einer Kante des Rasterelementes in dem Rasterbild entspricht und wobei nur eine einzige Pixellinie über der entsprechenden Kante des Rasterelementes angezeigt wird. Bei einigen Ausführungsformen beinhaltet der Vorgang 1240 des Weiteren ein Entfernen der Hervorhebung der ersten Pixellinie und/oder ein Entfernen der ersten Pixellinie auf Grundlage einer Detektion einer zusätzlichen Nutzerinteraktion weg von der entsprechenden Kante des Rasterelementes in dem Rasterbild.
  • Wie in 12 gezeigt ist, beinhaltet die Abfolge der Vorgänge 1200 einen Vorgang 1250 des Identifizierens einer zweiten Nutzerinteraktion, die die erste Pixellinie innerhalb der grafischen Nutzerschnittstelle auswählt. Insbesondere impliziert der Vorgang 1250 ein Identifizieren einer zweiten Nutzerinteraktion, die eine Auswahl der ersten Pixellinie angibt, innerhalb der grafischen Nutzerschnittstelle. Bei verschiedenen Ausführungsformen beinhaltet der Vorgang 1250 ein Detektieren dessen, dass ein Nutzer die erste Pixellinie auswählt, während die erste Pixellinie über dem Rasterbild innerhalb der grafischen Nutzerschnittstelle wiedergegeben wird.
  • Wie gezeigt ist, beinhaltet die Abfolge der Vorgänge 1200 zudem einen Vorgang 1260 des Generierens eines Vektorzeichnungssegmentes, das an die Pixellinie angepasst ist. Der Vorgang 1260 impliziert insbesondere ein Generieren eines Vektorzeichnungssegmentes (beispielsweise einer Bezierkurve), die an die erste Pixellinie angepasst ist, in Reaktion auf das Detektieren einer die erste Pixellinie auswählenden Nutzerinteraktion. Bei einigen Ausführungsformen beinhaltet der Vorgang 1260 ein Verzögern der Anpassung des Vektorzeichnungssegmentes an die erste Pixellinie bis nach der Detektion der die erste Pixellinie auswählenden zweiten Nutzerinteraktion.
  • Wie in 12 gezeigt ist, beinhaltet die Abfolge der Vorgänge 1200 des Weiteren einen Vorgang 1270 des Anzeigens eines Vektorzeichnungssegmentes, das an die Pixellinie angepasst ist, in Reaktion darauf, dass der Nutzer die Pixellinie auswählt. Insbesondere impliziert der Vorgang 1270 ein Bereitstellen eines Vektorzeichnungssegmentes, das an die erste Pixellinie angepasst ist, in Reaktion darauf, dass die zweite Nutzerinteraktion die erste Pixellinie auswählt, zur Anzeige als zweite Überlagerung auf dem Rasterelement in dem Rasterbild innerhalb der grafischen Nutzerschnittstelle. Des Weiteren impliziert der Vorgang 1270 bei einigen Ausführungsformen ein Wiedergeben des Vektorzeichnungssegmentes (beispielsweise einer Bezierkurve), die an die erste Pixellinie angepasst ist, zusammen mit dem Rasterbild innerhalb der grafischen Nutzerschnittstelle. Bei einer oder mehreren Ausführungsformen beinhaltet der Vorgang 1270 ein Entfernen der ersten Überlagerung mit der ersten Pixellinie aus der Nutzerschnittstelle vor dem Bereitstellen der zweiten Überlagerung, die das Vektorzeichnungssegment zur Anzeige beinhaltet.
  • Bei einer oder mehreren Ausführungsformen beinhaltet die Abfolge der Vorgänge 1200 zusätzliche Vorgänge. Bei einigen Ausführungsformen beinhaltet die Abfolge der Vorgänge 1200 beispielsweise einen Vorgang des miteinander erfolgenden Verbindens von Vektorzeichnungssegmenten, die an die verschiedenen Pixellinien angepasst sind. Beinhalten kann die Abfolge der Vorgänge 1200 zusätzlich die Vorgänge eines innerhalb der grafischen Nutzerschnittstelle erfolgenden optischen Separierens des Vektorzeichnungssegmentes in zwei Abschnitte an einem Punkt entlang des Vektorzeichnungssegmentes auf Grundlage eines Empfangens einer zweiten Nutzerinteraktion, die eine Auswahl des Punktes entlang des Vektorzeichnungssegmentes beinhaltet; eines während der Beibehaltung der Auswahl der zweiten Nutzerinteraktion erfolgenden Identifizierens eines ersten Abschnittes der zwei Abschnitte zum Entfernen auf Grundlage einer Bewegungsinformation, die der zweiten Nutzerinteraktion entspricht; und eines Entfernens des ersten Abschnittes des Vektorzeichnungssegmentes auf Grundlage eines Identifizierens des ersten Abschnittes zum Entfernen und eines Detektierens eines Endes der Auswahl.
  • Bei verschiedenen Ausführungsformen beinhaltet die Abfolge der Vorgänge 1200 die Vorgänge eines Identifizierens eines Zoomgrades des Rasterbildes, das in der grafischen Nutzerschnittstelle angezeigt wird; eines Bestimmens von Pixeldichten auf Grundlage des Zoomgrades des Rasterbildes, das in der grafischen Nutzerschnittstelle angezeigt wird; und eines Generierens der Kantenkarte auf Grundlage der Pixeldichten, die durch den Zoomgrad bestimmt sind.
  • Wie vorstehend erwähnt worden ist, zeigt 13 ein exemplarisches Flussdiagramm einer Abfolge von Vorgängen 1300 zum Generieren von verbesserten Digitalbildern durch Transformieren von in Rasterbildern befindlichen rasterbasierten Elementen in Vektorzeichnungssegmente. Wie gezeigt ist, beinhaltet die Abfolge der Vorgänge 1300 einen Vorgang 1310 eines Generierens einer Kantenkarte, die ein Rasterbild eines Rasterelementes aufweist. Insbesondere impliziert der Vorgang 1310 ein Generieren einer Kantenkarte, die mehrere Kanten eines Rasterelementes in einem Rasterbild beinhaltet.
  • Bei verschiedenen Ausführungsformen beinhaltet der Vorgang 1310 ein Identifizieren eines ersten Abschnittes des Rasterbildes, das innerhalb der grafischen Nutzerschnittstelle angezeigt wird, und ein Generieren der Kantenkarte, die für den angezeigten ersten Abschnitt des Rasterbildes spezifisch ist. Bei zusätzlichen Ausführungsformen beinhaltet der Vorgang 1310 ein Identifizieren eines Zoomvorganges, der einen zweiten Abschnitt des Rasterbildes mit einem im Vergleich zu dem ersten Abschnitt anderen Zoomgrad innerhalb der grafischen Nutzerschnittstelle anzeigt, ein Detektieren einer modifizierten Pixeldichte auf Grundlage des anderen Zoomgrades und ein Generieren einer zweiten Kantenkarte des Rasterbildes auf Grundlage der modifizierten Pixeldichte.
  • Die Abfolge von Vorgängen 1300 beinhaltet zudem einen Vorgang 1320 des Identifizierens eines Pixels einer Kante in der Kantenkarte auf Grundlage einer Nutzerinteraktion in dem Rasterbild. Implizieren kann der Vorgang 1320 insbesondere ein Identifizieren eines ersten Pixels einer ersten Kante der mehreren Kanten der Kantenkarte auf Grundlage einer Nutzerinteraktion mit dem Rasterbild. Bei einigen Ausführungsformen identifiziert der Vorgang 1320 das erste Pixel durch Abbilden von Koordinaten des Rasterbildes auf die Kantenkarte auf Grundlage der Position eines Cursors.
  • Zusätzlich beinhaltet die Abfolge der Vorgänge 1300 einen Vorgang 1330 eines Generierens einer Pixellinie für die Kante mittels Stufung von dem Pixel aus durch Verbindungspixel der Kante, bis eine Linienbeendigungsbedingung erfüllt ist. Implizieren kann der Vorgang 1330 darüber hinaus ein Generieren einer ersten Pixellinie für die erste Kante mittels Stufung von dem ersten Pixel aus durch mehrere Verbindungspixel der ersten Kante, bis eine Linienbeendigungsbedingung erfüllt ist, wie auch mittels Priorisieren von benachbarten Pixeln relativ zu diagonalen Pixeln und Hinzufügen des ersten Pixels und der mehreren Verbindungspixel zu der ersten Pixellinie.
  • Bei einer oder mehreren Ausführungsformen beinhaltet der Vorgang 1330 ein Priorisieren von benachbarten Pixeln gegenüber diagonalen Pixeln mittels Stufung von einem ersten Verbindungspixel der mehreren Verbindungspixel zu einem zweiten Verbindungspixel der mehreren Verbindungspixel; ein Detektieren eines benachbarten Pixels des zweiten Verbindungspixels und eines diagonalen Pixels des zweiten Verbindungspixels; und ein Stufen zu dem benachbarten Pixel von dem zweiten Verbindungspixel aus anstelle des Stufens von dem zweiten Verbindungspixel zu dem diagonalen Pixel. Bei einigen Ausführungsformen beinhaltet der Vorgang 1330 ein Stufen von dem ersten Pixel zu einem ersten Verbindungspixel der mehreren Verbindungspixel und ein Stufen von dem ersten Verbindungspixel zu einem zweiten Verbindungspixel der mehreren Verbindungspixel durch Aussondern eines oder mehrerer Pixel der ersten Kante benachbart zu dem ersten Pixel.
  • Bei einer oder mehreren Ausführungsformen beinhaltet der Vorgang 1330 ein Detektieren einer Linienbeendigungsbedingung durch Detektieren eines Wiederholungspixels entsprechend den mehreren Verbindungspixeln auf Grundlage dessen, dass die Anzahl von Pixeln innerhalb der Pixellinie eine Pixel-pro-Linie-Menge übersteigt, oder durch Identifizieren einer Pixelunterteilung von einem Verbindungspixel der ersten Pixellinie. Bei zusätzlichen Ausführungsformen beinhaltet der Vorgang 1330 ein Detektieren der Pixelunterteilung durch Identifizieren von drei benachbarten Pixeln oder drei diagonalen Pixeln für das Verbindungspixel der ersten Pixellinie. Bei verschiedenen Ausführungsformen beinhaltet der Vorgang 1330 ein Hinzufügen des ersten Pixels und der mehreren Verbindungspixel zu der ersten Pixellinie durch Speichern mehrerer Kantenkartenkoordinaten, die Orte des ersten Pixels und der mehreren Verbindungspixel angeben.
  • Bei einigen Ausführungsformen beinhaltet der Vorgang 1330 ein Stufen in einer ersten Richtung von dem ersten Pixel aus durch die mehreren Verbindungspixel. Des Weiteren beinhaltet der Vorgang 1330 bei verschiedenen Ausführungsformen zudem ein Generieren der ersten Pixellinie für die erste Pixelkante durch Stufen von dem ersten Pixel in einer zweiten Richtung von dem ersten Pixel durch die zweiten mehreren Verbindungspixel der ersten Kante (wobei ein oder mehrere Pixel der mehreren Verbindungspixel, die durch Stufen in der ersten Richtung identifiziert werden, ausgesondert werden), bis eine zweite Linienbeendigungsbedingung erfüllt ist, und ein Hinzufügen der zweiten mehreren Verbindungspixel zu der ersten Pixellinie derart, dass die erste Pixellinie das erste Pixel, die mehreren Verbindungspixel und die zweiten mehreren Verbindungspixel beinhaltet.
  • Des Weiteren beinhaltet die Abfolge der Vorgänge 1300 einen Vorgang 1340 eines Identifizierens einer zwischengespeicherten Matrix von Bezierkoeffizienten. Insbesondere impliziert der Vorgang 1340 ein Identifizieren einer zwischengespeicherten Matrix von Bezierkoeffizienten entsprechend einer Anzahl von Pixeln auf der Pixellinie. Bei einer oder mehreren Ausführungsformen beinhaltet der Vorgang 1340 ein Generieren der Matrix von Bezierkoeffizienten für eine vorherige Pixellinie, wobei die vorherige Pixellinie die Anzahl von Pixeln beinhaltet, ein Zwischenspeichern der Matrix von Bezierkoeffizienten und ein Identifizieren der zwischengespeicherten Matrix von Bezierkoeffizienten auf Grundlage dessen, dass die Anzahl von Pixeln in der Pixellinie gleich der Anzahl von Pixeln der vorherigen Linie ist.
  • Zusätzlich beinhaltet die Abfolge von Vorgängen 1300 einen Vorgang 1350 des Generierens eines Vektorzeichnungssegmentes durch Anpassen einer Bezierkurve an die Pixellinie. Insbesondere impliziert der Vorgang 1350 ein Generieren eines verbesserten Digitalbildes, das ein Vektorzeichnungssegment beinhaltet, auf Grundlage des Rasterbildes durch Anpassen einer Bezierkurve an die erste Pixellinie für die erste Kante. Bei alternativen Ausführungsformen kann der Vorgang 1350 ein Generieren eines verbesserten Digitalbildes, das ein vektorbasiertes Element beinhaltet, durch Anpassen einer Bezierkurve an die Pixellinie unter Nutzung der zwischengespeicherten Matrix von Bezierkoeffizienten implizieren.
  • Bei einer oder mehreren Ausführungsformen beinhaltet der Vorgang 1350 ein Generieren des verbesserten Digitalbildes, das das Vektorzeichnungssegment aufweist, durch Anpassen der Bezierkurve an die mehreren Kantenkartenkoordinaten der ersten Pixellinie. Bei zusätzlichen Ausführungsformen beinhaltet der Vorgang 1350 ein Anpassen der Bezierkurve an die erste Pixellinie für die erste Kante durch Bestimmen dessen, dass eine oder mehrere Kantenkartenkoordinaten der mehreren Kantenkartenkoordinaten der ersten Pixellinie eine Abstandsschwelle von der Bezierkurve übersteigen, sowie Unterteilen der Bezierkurve in mehrere Bezierkurven, die an die eine oder die mehreren Kantenkartenkoordinaten angepasst sind, auf Grundlage einer Bestimmung dessen, dass die eine oder die mehreren Kantenkartenkoordinaten die Abstandsschwelle übersteigen.
  • Bei verschiedenen Ausführungsformen beinhaltet der Vorgang 1350 ein Anpassen der Bezierkurve an die Pixellinie für die Kante durch Bestimmen eines Eckpixels innerhalb der Pixellinie auf Grundlage eines Vergleichens von Gruppen von wenigstens drei verbundenen Pixeln der Pixellinie, um zu bestimmen, dass eins Krümmungswert eine maximale Krümmungsschwelle übersteigt, und ein Anpassen einer ersten Bezierkurve zwischen einem ersten Endpunkt der Pixellinie und dem Eckpixel und einer zweiten Bezierkurve zwischen einem zweiten Endpunkt der Pixellinie und dem Eckpixel.
  • Der Begriff „Digitalumgebung“ bezeichnet im Sinne des Vorliegenden allgemein eine Umgebung, die beispielsweise als eigenständige Anwendung (beispielsweise als PC oder Mobilanwendung, die auf einer Rechenvorrichtung läuft), als Element einer Anwendung, als Plug-in für eine Anwendung, als Bibliotheksfunktion oder Funktionen, als Rechenvorrichtung und/oder als Cloudrechensystem implementiert ist. Eine Digitalmedienumgebung ermöglicht, dass das Bildtransformationssystem Digitalbilder, wie hier beschrieben wird, bearbeitet.
  • Ausführungsformen der vorliegenden Offenbarung können einen Spezialzweck- oder Allzweckcomputer, der Computerhardware, so beispielsweise einen oder mehrere Prozessoren und eine Systemspeicher bzw. -ablage, beinhaltet, beinhalten oder nutzen, wie nachstehend noch detaillierter beschrieben wird. Ausführungsformen innerhalb des Umfangs der vorliegenden Offenbarung beinhalten zudem physische und andere computerlesbare Medien zum Tragen oder Speichern computerausführbarer Anweisungen und/oder Datenstrukturen. Insbesondere können einer oder mehrere der hier beschriebenen Prozesse wenigstens teilweise als Anweisungen implementiert sein, die auf einem nichttemporären computerlesbaren Medium verkörpert sind und von einer oder mehreren Rechenvorrichtungen (beispielsweise einer beliebigen der hier beschriebenen Mediencontentzugriffsvorrichtungen) ausführbar sind. Allgemein empfängt ein Prozessor (beispielsweise ein Mikroprozessor) Anweisungen von einem nichttemporären computerlesbaren Medium (beispielsweise aus einem Speicher und dergleichen) und führt diese Anweisungen aus, wodurch er einen oder mehrere Prozesse, darunter einen oder mehrere der hier beschriebenen Prozesse, durchführt.
  • Computerlesbare Medien können beliebige verfügbare Medien sein, auf die ein Allzweck- oder Spezialzweckcomputersystem zugreifen kann. Computerlesbare Medien, die computerausführbare Anweisungen speichern, sind nichttemporäre computerlesbare Speichermedien (Vorrichtungen). Computerlesbare Medien, die computerausführbare Anweisungen tragen, sind Übertragungsmedien. Beispiels- und nicht beschränkungshalber können Ausführungsformen der Offenbarung daher wenigstens zwei deutlich verschiedene Arten von computerlesbaren Medien umfassen, nämlich nichttemporäre computerlesbare Speichermedien (Vorrichtungen) und Übertragungsmedien.
  • Nichttemporäre computerlesbare Speichermedien (Vorrichtungen) beinhalten RAM, ROM, EEPROM, CD-ROM, Solid-State-Laufwerke, Flash-Speicher, Phasenänderungsspeicher, andere Typen von Ablagen bzw. Speichern, andere optische Plattenspeicher, magnetische Plattenspeicher oder andere magnetische Speichervorrichtungen oder ein beliebiges anderes Medium, das dafür genutzt werden kann, gewünschte Programmcodemittel in Form computerausführbarer Anweisungen oder Datenstrukturen zu speichern, auf die ein Allzweck- oder Spezialzweckcomputer zugreifen kann.
  • Computerausführbare Anweisungen beinhalten beispielsweise Anweisungen und Daten, die bei Ausführung durch einen Prozessor veranlassen, dass ein Allzweckcomputer, ein Spezialzweckcomputer oder eine Spezialzweckverarbeitungsvorrichtung eine gewisse Funktion oder Gruppe von Funktionen durchführen. Bei einigen Ausführungsformen führen Allzweckcomputer computerausführbare Anweisungen aus, um den Allzweckcomputer in einen Spezialzweckcomputer, der Elemente der Offenbarung implementiert, zu verwandeln. Die computerausführbaren Anweisungen können beispielsweise Binärdaten (binaries), Anweisungen in einem Zwischenformat, so beispielsweise Assemblersprache, oder sogar Sourcecode sein. Obwohl der Erfindungsgegenstand in einer Sprache beschrieben worden ist, die für strukturelle Merkmale und/oder Verfahren spezifisch ist, sollte einsichtig sein, dass der Erfindungsgegenstand gemäß Definition in den beigefügten Ansprüchen nicht unbedingt auf die vorbeschriebenen Merkmale oder Vorgänge beschränkt ist. Vielmehr sind die beschriebenen Merkmale und Vorgänge als exemplarische Formen der Implementierung der Ansprüche offenbart.
  • Einem Fachmann auf dem einschlägigen Gebiet erschließt sich, dass die Offenbarung in Netzwerkrechenumgebungen mit vielen Typen von Computersystemkonfigurationen praktisch umgesetzt werden kann, darunter PCs, Desktopcomputer, Laptopcomputer, Mitteilungsprozessoren, Handvorrichtungen, Multiprozessorensysteme, mikroprozessorbasierte oder programmierbare Geräte der Unterhaltungselektronik, Netzwerk-PCs, Minicomputer, Mainframecomputer, Mobiltelefone, PDAs, Tablets, Pager, Router, Switches und dergleichen mehr. Die Offenbarung kann zudem in verteilten Systemumgebungen praktisch umgesetzt werden, in denen lokale und entfernt angeordnete (remote) Computersysteme, die (entweder über drahtbasierte Datenlinks, drahtlose Datenlinks oder eine Kombination aus drahtbasierten und drahtlosen Datenlinks) über ein Netzwerk verlinkt sind, gleichermaßen Aufgaben ausführen. In einer verteilten Systemumgebung können Programmmodule gleichermaßen in lokalen und entfernt angeordneten (remote) Ablagespeichervorrichtungen befindlich sein.
  • Ausführungsformen der vorliegenden Offenbarung können zudem in Coudrechenumgebungen implementiert sein. In der vorliegenden Beschreibung ist „Cloud Computing bzw. Cloudrechnen“ als Modell definiert, das einen On-Demand-Netzwerkzugriff auf einen gemeinsam genutzten bzw. geteilten Vorrat von konfigurierbaren Rechenressourcen ermöglicht. Cloud Computing kann beispielsweise auf einem Marktplatz eingesetzt werden, um einen allgegenwärtigen und bequemen On-Demand-Zugriff auf den gemeinsam genutzten Vorrat von konfigurierbaren Rechenressourcen zu bieten. Der gemeinsam genutzte bzw. geteilte Vorrat von konfigurierbaren Rechenressourcen kann über eine Virtualisierung schnell bereitgestellt und mit geringem Organisationsaufwand oder mit geringer dienstanbieterseitiger Interaktion freigegeben und sodann entsprechend skaliert werden.
  • Ein Cloudrechenmodell kann verschiedene Eigenschaften aufweisen, so beispielsweise „on-demand self-service“, „broad network access“, „resource pooling“, „rapid elasticity“, „measured Service“ und dergleichen mehr. Bieten kann ein Cloudrechenmodell zudem verschiedene Servicemodelle, so beispielsweise „Software as a Service“ („SaaS“), „Platform as a Service“ („PaaS“) und „Infrastructure as a Service“ („IaaS“). Ein Cloudrechenmodell kann zudem unter Nutzung verschiedener Einsatzmodelle eingesetzt werden, so beispielsweise „private cloud“, „community cloud“, „public cloud“, „hybrid cloud“ und dergleichen mehr. In der vorliegenden Beschreibung und den Ansprüchen ist eine „Cloudrechenumgebung“ eine Umgebung, in der Cloud Computing zum Einsatz kommt.
  • 14 zeigt ein Blockdiagramm einer exemplarischen Rechenvorrichtung 1400, die dafür konfiguriert sein kann, einen oder mehrere der vorbeschriebenen Prozesse durchzuführen. Es sollte einsichtig sein, dass eine oder mehrere Rechenvorrichtungen, so beispielsweise die Rechenvorrichtung 1400, die Clientvorrichtungen 200, 1102, die Servervorrichtungen 1104 und die Rechenvorrichtung 1000, wie vorstehend beschrieben, darstellen können. Bei einer oder mehreren Ausführungsformen kann die Rechenvorrichtung 1400 eine Mobilvorrichtung (beispielsweise ein Mobiltelefon, ein Smartphone, ein PDA, ein Tablet, ein Laptop, eine Kamera, ein Tracker, eine Armbanduhr, eine tragbare Vorrichtung und dergleichen mehr) sein. Bei einigen Ausführungsformen kann die Rechenvorrichtung 1400 eine nichtmobile Vorrichtung (beispielsweise ein Desktopcomputer oder ein beliebiger Typ von Rechenvorrichtung) sein. Des Weiteren kann die Rechenvorrichtung 1400 eine Servervorrichtung sein, die cloudbasierte Verarbeitungs- und Speicherkapazitäten aufweist.
  • Wie in 14 gezeigt ist, kann die Rechenvorrichtung 1400 einen oder mehrere Prozessoren 1402, eine Ablage bzw. einen Speicher 1404, eine Speichervorrichtung 1406, I/O-Schnittstellen 1408 (Eingabe/Ausgabe I/O) und eine Kommunikationsschnittstelle 1410 beinhalten, die mittels einer Kommunikationsinfrastruktur (beispielsweise mittels des Busses 1412) kommunikationstechnisch gekoppelt sein können. Obwohl in 14 die Rechenvorrichtung 1400 gezeigt ist, sollen die in 14 dargestellten Komponenten nicht beschränkend sein. Zusätzliche oder alternative Komponenten können bei anderen Ausführungsformen benutzt werden. Zudem beinhaltet die Rechenvorrichtung 1400 bei bestimmten Ausführungsformen weniger Komponenten, als in 14 gezeigt sind. Die Komponenten der Rechenvorrichtung 1400, die in 14 gezeigt sind, werden nunmehr detaillierter beschrieben.
  • Bei bestimmten Ausführungsformen beinhaltet/beinhalten der Prozessor / die Prozessoren 1402 Hardware zum Ausführen von Anweisungen, so beispielsweise solchen, die ein Computerprogramm bilden. Beispiels- und nicht beschränkungshalber kann/können der Prozessor / die Prozessoren 1402 zum Ausführen von Anweisungen die Anweisungen aus einem internen Register, einem internen Zwischenspeicher, der Ablage bzw. dem Speicher 1404 oder der Speichervorrichtung 1406 abrufen (oder holen) und sie decodieren und ausführen.
  • Die Rechenvorrichtung 1400 beinhaltet die Ablage bzw. den Speicher 1404, die mit dem Prozessor / den Prozessoren 1402 gekoppelt ist. Der Speicher 1404 kann zum Speichern von Daten, Metadaten und Programmen zur Ausführung durch den Prozessor / die Prozessoren verwendet werden. Beinhalten kann der Speicher 1404 eines oder mehrere von flüchtigen und nichtflüchtigen Speichern, so beispielsweise einen Speicher mit wahlfreiem Zugriff („RAM“), einen Nur-Lese-Speicher („ROM“), eine Solid-State-Disk („SSD“), einen Flash, einen Phasenänderungsspeicher („PCM“) oder andere Typen von Datenspeicher. Die Ablage bzw. der Speicher 1404 kann eine interne oder eine verteilte Ablage bzw. Speicher sein.
  • Die Rechenvorrichtung 1400 beinhaltet eine Speichervorrichtung 1406, die einen Speicher zum Speichern von Daten oder Anweisungen beinhaltet. Beispiels- und nicht beschränkungshalber kann die Speichervorrichtung 1406 ein nichttemporäres Speichermedium, wie es vorstehend beschrieben worden ist, beinhalten. Die Speichervorrichtung 1406 kann ein Festplattenlaufwerk (HDD), einen Flash-Speicher, ein USB-Laufwerk (Universal Serial Bus USB) oder eine Kombination aus diesen oder anderen Speichervorrichtungen umfassen.
  • Die Rechenvorrichtung 1400 beinhaltet, wie gezeigt ist, eine oder mehrere I/O-Schnittstellen 1408, die dafür vorgesehen sind zu ermöglichen, dass ein Nutzer eine Eingabe (so beispielsweise Nutzerbewegungen) für die Rechenvorrichtung 1400 bereitstellt, eine Ausgabe von dieser empfängt und auf andere Weise Daten an diese oder von dieser transferiert. Die I/O-Schnittstellen 1408 können eine Maus, ein Tastenfeld (keypad) oder eine Tastatur, einen berührungsempfindlichen Schirm (touch screen), eine Kamera, einen optischen Scanner, eine Netzwerkschnittstelle, ein Modem, andere bekannte I/O-Vorrichtungen oder eine Kombination aus derartigen I/O-Schnittstellen 1408 beinhalten. Der berührungsempfindliche Schirm kann mit einem Stift oder einem Finger aktiviert werden.
  • Die I/O-Schnittstellen 1408 können eine oder mehrere Vorrichtungen beinhalten, die einem Nutzer eine Ausgabe präsentieren, darunter unter anderem eine Graphics Engine, eine Anzeige (beispielsweise einen Anzeigeschirm), einen oder mehrere Ausgabetreiber (beispielsweise Anzeigetreiber), einen oder mehrere Audiolautsprecher und einen oder mehrere Audiotreiber. Bei gewissen Ausführungsformen sind die I/O-Schnittstellen 1408 dafür konfiguriert, grafische Daten für eine Anzeige zur Präsentation gegenüber einem Nutzer bereitzustellen. Die grafischen Daten können eine oder mehrere grafische Nutzerschnittstellen und/oder einen beliebigen anderen grafischen Content, so er für eine bestimmte Implementierung dienlich ist, darstellen.
  • Die Rechenvorrichtung 1400 kann des Weiteren eine Kommunikationsschnittstelle 1410 beinhalten. Die Kommunikationsschnittstelle 1410 kann Hardware, Software oder beides beinhalten. Die Kommunikationsschnittstelle 1410 kann eine oder mehrere Schnittstellen für die Kommunikation (beispielsweise für die paketbasierte Kommunikation) zwischen der Rechenvorrichtung und einer oder mehreren anderen Rechenvorrichtungen oder einem oder mehreren Netzwerken bereitstellen. Beispiels- und nicht beschränkungshalber kann die Kommunikationsschnittstelle 1410 eine Netzwerkschnittstellensteuerung (NIC) oder einen Netzwerkadapter für die Kommunikation mit einem Ethernet oder einem anderen drahtbasierten Netzwerk oder eine Drahtlos-NIC (WNIC) oder einen Drahtlosadapter für die Kommunikation mit einem Drahtlosnetzwerk, so beispielsweise einem Wl-Fl, beinhalten. Die Rechenvorrichtung 1400 kann des Weiteren einen Bus 1412 beinhalten. Der Bus 1412 kann Hardware, Software oder beides zur wechselseitigen Verbindung von Komponenten der Rechenvorrichtung 1400 umfassen.
  • In der vorstehenden Beschreibung ist die Erfindung anhand spezifischer exemplarischer Ausführungsformen beschrieben worden. Verschiedene Ausführungsformen und Aspekte der vorliegenden Erfindung / der vorliegenden Erfindungen werden anhand der hier erläuterten Details beschrieben, wobei die begleitende Zeichnung die verschiedenen Ausführungsformen darstellt. Die vorstehende Beschreibung und die Zeichnung sind für die Erfindung illustrativ und sollen nicht erfindungsbeschränkend gedeutet werden. Zahlreiche spezifische Details werden beschrieben, um ein eingehendes Verständnis verschiedener Ausführungsformen der vorliegenden Erfindung bereitzustellen.
  • Die vorliegende Erfindung kann auch in anderen spezifischen Formen verkörpert sein, ohne von ihrem Wesen oder ihren wesentlichen Eigenschaften abzugehen. Die beschriebenen Ausführungsformen sollen in jeder Hinsicht als illustrativ und nicht als restriktiv betrachtet werden. Die hier beschriebenen Verfahren können beispielsweise mit weniger oder mehr Schritten/Vorgängen durchgeführt werden, oder es können die Schritte/Vorgänge in anderen Reihenfolgen durchgeführt werden. Zusätzlich können die hier beschriebenen Schritte/Vorgänge wiederholt werden oder parallel zueinander durchgeführt werden oder parallel zu anderen Instanzen derselben oder anderer Schritte/Vorgänge durchgeführt werden. Der Umfang der vorliegenden Erfindung ist daher durch die beigefügten Ansprüche und nicht durch die vorstehende Beschreibung gegeben. Sämtliche Änderungen, die der Bedeutung und dem Äquivalenzbereich der Ansprüche entsprechen, sollen in ihrem Umfang enthalten sein.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Nicht-Patentliteratur
    • „A Computational Approach To Edge Detection“ von J. Canny, veröffentlicht bei IEEE Trans. Pattern Analysis and Machine Intelligence, 8(6): 679-698, 1986 [0037]
    • „A Survey of Curve and Surface Methods in CAGD“ von Boem et al., veröffentlicht bei „Computer Aided Geometric Design“, Band 1, Ausgabe 1, Juli 1984, Seite 21 [0171]

Claims (20)

  1. System zum Generieren von verbesserten Digitalbildern durch Transformieren von rasterbasierten Elementen in Rasterbildern in Vektorzeichnungssegmente, umfassend: wenigstens einen Prozessor, einen Speicher, der ein Rasterbild umfasst, das ein Rasterelement umfasst; und wenigstens ein nichttemporäres computerlesbares Medium, das Anweisungen speichert, die bei Ausführung durch den wenigstens einen Prozessor das System veranlassen zum: Generieren einer Rand- bzw. Kantenkarte durch Detektieren mehrerer Ränder bzw. Kanten des Rasterelementes in dem Rasterbild; Identifizieren eines ersten Randes bzw. einer ersten Kante der mehreren Kanten des Rasterelementes innerhalb der Kantenkarte auf Grundlage einer ersten Nutzerinteraktion innerhalb einer grafischen Nutzerschnittstelle, die das Rasterbild anzeigt; Generieren einer ersten Pixellinie, die der ersten Kante entspricht, in Reaktion auf die erste Nutzerinteraktion, zur Anzeige als erste Überlagerung zu dem Rasterelement in dem Rasterbild innerhalb der grafischen Nutzerschnittstelle; Identifizieren einer zweiten Nutzerinteraktion innerhalb der grafischen Nutzerschnittstelle, die eine Auswahl der ersten Pixellinie angibt; und Bereitstellen eines Vektorzeichnungssegmentes, das an die erste Pixellinie angepasst ist, in Reaktion auf die zweite Nutzerinteraktion, die die erste Pixellinie auswählt, zur Anzeige als zweite Überlagerung zu dem Rasterelement in dem Rasterbild innerhalb der grafischen Nutzerschnittstelle.
  2. System nach Anspruch 1, des Weiteren umfassend Anweisungen, die das System veranlassen zum: Identifizieren der ersten Kante der mehreren Kanten des Rasterelementes innerhalb der Kantenkarte durch: Bestimmen von Koordinaten der ersten Nutzerinteraktion innerhalb der grafischen Nutzerschnittstelle, die die grafische Nutzerschnittstelle anzeigt; und Abbilden der Koordinaten der ersten Nutzerinteraktion auf die Kantenkarte zum Identifizieren der ersten Kante der mehreren Kanten des Rasterelementes innerhalb der Kantenkarte.
  3. System nach Anspruch 1 oder 2, des Weiteren umfassend Anweisungen, die das System veranlassen zum: Hervorheben der ersten Pixellinie in dem Rasterbild in Reaktion auf die erste Nutzerinteraktion, wobei nur eine einzige Pixellinie über dem Rasterelement angezeigt wird.
  4. System nach einem der Ansprüche 1 bis 3, des Weiteren umfassend Anweisungen, die das System veranlassen zum: Verzögern der Anpassung des Vektorzeichnungssegmentes an die erste Pixellinie bis nach der Detektion der zweiten Nutzerinteraktion, die die erste Pixellinie auswählt.
  5. System nach einem der Ansprüche 1 bis 4, des Weiteren umfassend Anweisungen, die das System veranlassen zum: Entfernen der ersten Überlagerung, die die erste Pixellinie umfasst, aus der Nutzerschnittstelle vor dem Bereitstellen der zweiten Überlagerung, die das Vektorzeichnungssegment umfasst, zur Anzeige.
  6. System nach einem der Ansprüche 1 bis 5, des Weiteren umfassend Anweisungen, die das System veranlassen zum: Identifizieren einer dritten Nutzerinteraktion, die dem Rasterelement in dem Rasterbild innerhalb der grafischen Nutzerschnittstelle zugeordnet ist; Identifizieren einer zweiten Kante der mehreren Kanten des Rasterelementes innerhalb der Kantenkarte auf Grundlage der dritten Nutzerinteraktion; und Generieren einer zweiten Pixellinie, die der zweiten Kante entspricht, in Reaktion auf die dritte Nutzerinteraktion zur Anzeige als dritte Überlagerung zu dem Rasterelement in dem Rasterbild innerhalb der grafischen Nutzerschnittstelle.
  7. System nach Anspruch 6, des Weiteren umfassend Anweisungen, die das System veranlassen zum: Generieren der zweiten Pixellinie zusammen mit dem Vektorzeichnungssegment über dem Rasterbild zur Anzeige als dritte Überlagerung zu dem Rasterelement in dem Rasterbild innerhalb der grafischen Nutzerschnittstelle.
  8. System nach Anspruch 6 oder 7, des Weiteren umfassend Anweisungen, die das System veranlassen zum: Entfernen der zweiten Pixellinie beim Empfangen der ersten Nutzerinteraktion und vor dem Bereitstellen der ersten Pixellinie.
  9. System nach einem der Ansprüche 6 bis 8, des Weiteren umfassend Anweisungen, die das System veranlassen zum: Identifizieren einer vierten Nutzerinteraktion innerhalb der grafischen Nutzerschnittstelle, die die zweite Pixellinie auswählt; und Bereitstellen eines zweiten Vektorzeichnungssegmentes, das an die zweite Pixellinie angepasst ist, in Reaktion auf die vierte Nutzerinteraktion, die die erste Pixellinie auswählt, zur Anzeige als vierte Überlagerung zu dem Rasterelement in dem Rasterbild innerhalb der grafischen Nutzerschnittstelle, wobei das zweite Vektorzeichnungssegment zusammen mit dem Vektorzeichnungssegment angezeigt wird.
  10. System nach einem der Ansprüche 6 bis 9, des Weiteren umfassend Anweisungen, die das System veranlassen zum: Verbinden des Vektorzeichnungssegmentes, das an die erste Pixellinie angepasst ist, und des zweiten Vektorzeichnungssegmentes, das an die zweite Pixellinie angepasst ist.
  11. Nichttemporäres computerlesbares Medium, das Anweisungen speichert, die bei Ausführung durch wenigstens einen Prozessor ein Computersystem veranlassen zum: Generieren einer Rand- bzw. Kantenkarte durch Detektieren mehrerer Ränder bzw. Kanten innerhalb eines Rasterbildes, das in einer grafischen Nutzerschnittstelle angezeigt wird; Rendern bzw. Wiedergeben einer ersten Pixellinie innerhalb der grafischen Nutzerschnittstelle als Überlagerung zu einer ersten Kante der mehreren Kanten in dem Rasterbild ohne Generieren eines Vektorzeichnungssegmentes, das der ersten Kante entspricht; Generieren eines Vektorzeichnungssegmentes, das an die erste Pixellinie angepasst ist, in Reaktion auf das Detektieren einer Nutzerinteraktion, die die erste Pixellinie auswählt; und Rendern bzw. Wiedergeben des Vektorzeichnungssegmentes, das an die erste Pixellinie angepasst ist, zusammen mit dem Rasterbild innerhalb der grafischen Nutzerschnittstelle.
  12. Nichttemporäres computerlesbares Medium nach Anspruch 11, des Weiteren umfassend Anweisungen, die das Computersystem zum Trimmen des Vektorzeichnungssegmentes veranlassen durch: visuelles Trennen des Vektorzeichnungssegmentes innerhalb der grafischen Nutzerschnittstelle in zwei Abschnitte an einem Punkt entlang des Vektorzeichnungssegmentes auf Grundlage eines Empfangens einer zweiten Nutzerinteraktion, die eine Auswahl des Punktes entlang des Vektorzeichnungssegmentes umfasst; Identifizieren eines ersten Abschnittes der zwei Abschnitte während einer Beibehaltung der Auswahl der zweiten Nutzerinteraktion zum Entfernen auf Grundlage einer Bewegungsinformation, die der zweiten Nutzerinteraktion entspricht; und Entfernen des ersten Abschnittes des Vektorzeichnungssegmentes auf Grundlage eines Identifizierens des ersten Abschnittes zum Entfernen und eines Detektierens eines Endes der Auswahl.
  13. Nichttemporäres computerlesbares Medium nach Anspruch 11 oder 12, des Weiteren umfassend Anweisungen, die das Computersystem veranlassen zum: Identifizieren eines Zoomgrades des Rasterbildes, das in der grafischen Nutzerschnittstelle angezeigt wird; Bestimmen von Pixeldichten für verfügbare Pixel auf Grundlage des Zoomgrades des Rasterbildes, das in der grafischen Nutzerschnittstelle angezeigt wird; und Generieren der Kantenkarte auf Grundlage der Pixeldichten für die verfügbaren Pixel, die auf Grundlage des Zoomgrades bestimmt werden.
  14. Nichttemporäres computerlesbares Medium nach einem der Ansprüche 11 bis 13, des Weiteren umfassend Anweisungen, die das Computersystem veranlassen zum: Rendern bzw. Wiedergeben der ersten Pixellinie auf Grundlage einer anfänglichen Nutzerinteraktion mit einem Pixel der ersten Kante des Rasterbildes innerhalb der grafischen Nutzerschnittstelle.
  15. Nichttemporäres computerlesbares Medium nach Anspruch 14, des Weiteren umfassend Anweisungen, die das Computersystem veranlassen zum: Entfernen der ersten Pixellinie aus der grafische Nutzerschnittstelle beim Detektieren einer zusätzlichen Nutzerinteraktion.
  16. Computerimplementiertes Verfahren zum Transformieren von rasterbasierten Elementen in vektorbasierte Segmente in einer Digitalmedienumgebung zum Rendern bzw. Wiedergeben von vektorbasierten Grafiken, wobei das Verfahren umfasst: Identifizieren eines Rasterbildes, das ein Rasterelement abbildet; Identifizieren eines ersten Randes bzw. einer ersten Kante von mehreren Rändern bzw. Kanten des Rasterelementes auf Grundlage einer ersten Nutzerinteraktion innerhalb einer grafischen Nutzerschnittstelle, die das Rasterbild anzeigt; Generieren einer ersten Pixellinie, die einem kontinuierlichen, nichtschneidenden Abschnitt der ersten Kante entspricht, zur Anzeige als erste Überlagerung zu dem Rasterelement in dem Rasterbild innerhalb der grafischen Nutzerschnittstelle; Identifizieren einer zweiten Nutzerinteraktion innerhalb der grafischen Nutzerschnittstelle, wobei die zweite Nutzerinteraktion eine Auswahl der ersten Pixellinie angibt; und Bereitstellen eines Vektorzeichnungssegmentes, das an die erste Pixellinie angepasst ist, in Reaktion auf die zweite Nutzerinteraktion, die die erste Pixellinie auswählt, zur Anzeige als zweite Überlagerung zu dem Rasterelement in dem Rasterbild innerhalb der grafischen Nutzerschnittstelle.
  17. Verfahren nach Anspruch 16, des Weiteren umfassend: Hervorheben der ersten Pixellinie in dem Rasterbild in Reaktion auf die erste Nutzerinteraktion, wobei die erste Pixellinie einem Rand bzw. einer Kante des Rasterelementes in dem Rasterbild entspricht und wobei nur eine einzige Pixellinie über der entsprechenden Kante des Rasterelementes angezeigt wird; und Entfernen der Hervorhebung der ersten Pixellinie auf Grundlage eines Detektierens einer zusätzlichen Nutzerinteraktion weg von der entsprechenden Kante des Rasterelementes in dem Rasterbild.
  18. Verfahren nach Anspruch 16 oder 17, des Weiteren umfassend ein Verzögern des Anpassens des Vektorzeichnungssegmentes an die erste Pixellinie bis nach der Detektion der zweiten Nutzerinteraktion, die die erste Pixellinie auswählt.
  19. Verfahren nach einem der Ansprüche 16 bis 18, des Weiteren umfassend: Generieren der Kantenkarte durch Detektieren der mehreren Kanten des Rasterelementes in dem Rasterbild, wobei: die Kantenkarte mehrere detektierte Kanten umfasst, die den mehreren Kanten des Rasterelementes in dem Rasterbild entsprechen; eine Auflösung der Kantenkarte auf eine Bildauflösung des Rasterbildes abgestimmt ist; und das Identifizieren der ersten Kante des Weiteren auf der Kantenkarte beruht.
  20. Verfahren nach Anspruch 19, des Weiteren umfassend: Identifizieren einer dritten Nutzerinteraktion, die dem Rasterelement in dem Rasterbild innerhalb der grafischen Nutzerschnittstelle zugeordnet ist; Identifizieren einer zweiten Kante der mehreren Kanten des Rasterelementes auf Grundlage der dritten Nutzerinteraktion innerhalb der grafischen Nutzerschnittstelle, die das Rasterbild anzeigt; und Generieren einer zweiten Pixellinie, die der zweiten Kante entspricht, in Reaktion auf die dritte Nutzerinteraktion, zur Anzeige als dritte Überlagerung über dem Rasterbild, wobei die dritte Überlagerung mit der zweiten Überlagerung, die das Vektorzeichnungssegment umfasst, angezeigt wird.
DE102019001695.5A 2018-06-01 2019-03-11 Generieren von verbesserten Digitalbildern durch selektives Transformieren von Rasterbildern in Vektorzeichnungssegmente Pending DE102019001695A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/996,115 2018-06-01
US15/996,115 US10685459B2 (en) 2018-06-01 2018-06-01 Generating enhanced digital images by selectively transforming raster images to vector drawing segments

Publications (1)

Publication Number Publication Date
DE102019001695A1 true DE102019001695A1 (de) 2019-12-05

Family

ID=66380982

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019001695.5A Pending DE102019001695A1 (de) 2018-06-01 2019-03-11 Generieren von verbesserten Digitalbildern durch selektives Transformieren von Rasterbildern in Vektorzeichnungssegmente

Country Status (5)

Country Link
US (1) US10685459B2 (de)
CN (1) CN110555893A (de)
AU (1) AU2019201961B2 (de)
DE (1) DE102019001695A1 (de)
GB (1) GB2574292B (de)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10838699B2 (en) 2017-01-18 2020-11-17 Oracle International Corporation Generating data mappings for user interface screens and screen components for an application
US10733754B2 (en) * 2017-01-18 2020-08-04 Oracle International Corporation Generating a graphical user interface model from an image
US10607374B2 (en) 2018-06-01 2020-03-31 Adobe Inc. Generating enhanced digital images by selectively transforming raster images to vector drawing segments
JP7225810B2 (ja) * 2019-01-11 2023-02-21 富士通株式会社 ひび線抽出装置、ひび線抽出方法、及び、ひび線抽出プログラム
US11257253B2 (en) 2019-12-10 2022-02-22 Nvidia Corporation Method and system for unified encoding of path segments, caps, and joins for path stroking
DE102020130293A1 (de) 2019-12-10 2021-06-10 Nvidia Corporation Polar stroking für vektorgrafiken
US11164372B2 (en) * 2019-12-10 2021-11-02 Nvidia Corporation Polar stroking for vector graphics
CN111552451B (zh) * 2020-04-09 2023-08-22 RealMe重庆移动通信有限公司 显示控制方法及装置、计算机可读介质及终端设备
US11257256B2 (en) * 2020-05-15 2022-02-22 Adobe Inc. Raster image tracing
US20220206676A1 (en) * 2020-12-28 2022-06-30 Adobe Inc. Modifying drawing characteristics of digital raster images utilizing stroke properties
US20230351650A1 (en) * 2022-04-28 2023-11-02 Dassault Systemes Solidworks Corporation Converting images to sketches that are modifiable using computer-aided design (cad) software
US20230367754A1 (en) * 2022-05-11 2023-11-16 Adobe Inc. Document co-editing using a forest representation

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4882683B1 (en) 1987-03-16 1995-11-07 Fairchild Semiconductor Cellular addrssing permutation bit map raster graphics architecture
US5101436A (en) 1990-05-11 1992-03-31 Optigraphics Corporation Hybrid image editor
US5381521A (en) 1993-05-14 1995-01-10 Microsoft Corporation System and method of rendering curves
US5644406A (en) 1995-05-11 1997-07-01 Xerox Corporation Method for selecting an optimum encoding process for a block of pixels from a plurality of predefined encoding processes
US7253792B2 (en) * 1998-05-27 2007-08-07 Advanced Testing Technologies, Inc. Video generation and capture techniques
US6683984B1 (en) * 2000-07-31 2004-01-27 Hewlett-Packard Development Company, L.P. Digital imaging device with background training
US6891536B2 (en) * 2001-11-30 2005-05-10 Canon Kabushiki Kaisha Method of determining active priorities
US7242415B1 (en) * 2004-02-25 2007-07-10 Adobe Systems Incorporated Processing illustrations using stored information
JP2007536634A (ja) * 2004-05-04 2007-12-13 フィッシャー−ローズマウント・システムズ・インコーポレーテッド プロセス制御システムのためのサービス指向型アーキテクチャ
US8446413B2 (en) 2007-05-23 2013-05-21 Dean Robert Gary Anderson As Trustee Of The D/L Anderson Family Trust Computer implemented methods for generating engraved images for works of art
JP4491488B2 (ja) 2008-03-03 2010-06-30 シャープ株式会社 画像処理装置、画像読取装置、画像データ出力処理装置、および画像処理方法
US8520972B2 (en) * 2008-09-12 2013-08-27 Adobe Systems Incorporated Image decomposition
US9286021B2 (en) * 2012-06-22 2016-03-15 Google Inc. Displaying map layers in order
US20140133760A1 (en) * 2012-11-15 2014-05-15 Qualcomm Incorporated Raster to vector map conversion
US20140193029A1 (en) 2013-01-08 2014-07-10 Natalia Vassilieva Text Detection in Images of Graphical User Interfaces
US20160085831A1 (en) 2014-09-22 2016-03-24 Qualcomm Incorporated Method and apparatus for map classification and restructuring
US10325386B2 (en) * 2016-03-31 2019-06-18 Ca, Inc. Visual generation of an anomaly detection image
US9972073B2 (en) 2016-06-22 2018-05-15 Adobe Systems Incorporated Enhanced vectorization of raster images
US10607374B2 (en) 2018-06-01 2020-03-31 Adobe Inc. Generating enhanced digital images by selectively transforming raster images to vector drawing segments

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
„A Computational Approach To Edge Detection" von J. Canny, veröffentlicht bei IEEE Trans. Pattern Analysis and Machine Intelligence, 8(6): 679-698, 1986
„A Survey of Curve and Surface Methods in CAGD" von Boem et al., veröffentlicht bei „Computer Aided Geometric Design", Band 1, Ausgabe 1, Juli 1984, Seite 21

Also Published As

Publication number Publication date
AU2019201961A1 (en) 2019-12-19
GB2574292A (en) 2019-12-04
CN110555893A (zh) 2019-12-10
AU2019201961B2 (en) 2021-08-19
US10685459B2 (en) 2020-06-16
US20190371008A1 (en) 2019-12-05
GB2574292B (en) 2021-02-24
GB201903498D0 (en) 2019-05-01

Similar Documents

Publication Publication Date Title
DE102019001695A1 (de) Generieren von verbesserten Digitalbildern durch selektives Transformieren von Rasterbildern in Vektorzeichnungssegmente
DE102018006317A1 (de) Tiefe neurale Netzwerke für hervorstechenden Inhalt für eine effiziente Segmentierung eines digitalen Objekts
DE102019000675A1 (de) Nutzen eines modells auf der basis eines tiefen neuronalen netzwerks zum identifizieren von visuell ähnlichen digitalen bildern auf der basis von nutzer-ausgewählten visuellen eigenschaften
DE102020002964A1 (de) Verwenden eines neuronalen Netzwerks mit einer Zwei-Strom Encoder-Architektur zur Erzeugung digitaler Kompositbilder
DE102019007196A1 (de) Identifizieren von Zielobjekten unter Nutzung der skalierungsdiversen Segmentierung dienender neuronaler Netzwerke
DE102019002735A1 (de) Bestimmen von Bildanfassorten
DE60031664T2 (de) Computerverfahren und vorrichtung zum schaffen von sichtbarer graphik unter verwendung von graph algebra
DE102019008168A1 (de) Dynamisches Schätzen von Beleuchtungsparametern für Positionen innerhalb realitätserweiterter Szenen unter Nutzung eines neuronalen Netzwerkes
US10607374B2 (en) Generating enhanced digital images by selectively transforming raster images to vector drawing segments
DE102018007941A1 (de) Generieren eines Dreiecksnetzes für ein Bild, das durch Kurven dargestellt wird
DE102017010210A1 (de) Bild-Matting mittels tiefem Lernen
DE112004000377B4 (de) Verfahren und Vorrichtung Bildsegmentierung in einer dreidimensionalen Arbeitsumgebung
DE102021005722A1 (de) Bereitstellen einer kontextbezogenen Fotoposenberatung mit erweiterter Realität
DE102019004670A1 (de) Automatisches Generieren und Anwenden von Grafiknutzerschnittstellenskalierungsrandbedingungen auf Grundlage von Gestaltungssemantiken
DE112012005827T5 (de) Bearbeiten von Medien unter Verwendung von graphischer Darstellung der Medien
DE102020007951A1 (de) Einsetzen eines der Einfärbung dienenden neuronalen Netzwerkes zum Generieren von eingefärbten Bildern auf Grundlage interaktiver Farbkanten
DE102018001136A1 (de) Interaktive Farbpalettenschnittstelle zum digitalen Malen
DE102018005610A1 (de) Diffusionsfärben unter Verwendung von gewichteten Farbpunkten
DE102020001437A1 (de) Verwendung kontextsensitiver Sensoren und multidimensionaler Gesteneingaben zum effizienten Generieren von nachbearbeiteten Digitalbildern
DE102018003475A1 (de) Formbasierte Grafiksuche
DE102017012116A1 (de) Vorschauerzeugung aus panoramischen Bildern
DE102017005964A1 (de) Techniken zum Auswählen von Objekten in Bildern
DE102016014188A1 (de) Erzeugung eines 3-D-Modells aus 2-D-Bildern
DE102019007796A1 (de) Einsetzen eines der Detektion kritischer Kanten dienenden neuronalen Netzwerkes und eines geometrischen Modells zum Bestimmen von Kameraparametern aus einem einzigen Digitalbild
DE102019122402A1 (de) Das klassifizieren von zeitreihenbilddaten

Legal Events

Date Code Title Description
R012 Request for examination validly filed