Computerimplementierter digitaler Unschärfefilter zur Erzeugung eines einem falsch fokussierten Linsensystem entsprechenden Unschärfeeindrucks in einem digital in einem Bild-Speicher ursprünglich vorliegenden Bild
Die vorliegende Erfindung betrifft einen computerimplementierten digitalen Unschärfefilter zur Erzeugung eines einem falsch fokussierten Linsensystem entsprechenden Unschärfeeindrucks in einem digital in einem Bild-Speicher ursprünglich vorliegenden Bild, sowie ein zugehöriges Computersystem und Computerprogramm(produkt).
Durch die fortschreitende Miniaturisierung werden Digitalkameras heute immer kleiner, ein Großteil derselben ist gar als technisches Beiwerk in andere Geräte wie zum Beispiel Smartpho- nes eingebunden. Diese vom Anwender ob der spontanen Verfügbarkeit geschätzte Entwicklung bringt aber auch Nachteile:
Nicht nur die Elektronik, auch die optischen Systeme werden immer kleiner. Die massiv verkleinerten Bauformen der Objektive und der Bildsensoren bedingen, dass heute ganz andere Objektivbrennweiten als„Normalbrennweiten" gelten, als noch vor wenigen Jahren. Hatte das Standardobjektiv einer marktüblichen Kleinbildfilmkamera vor ca. 15 Jahren noch eine Brennweite von z.B. 40-50 mm um einem dem menschlichen Auge ähnlichen Bildwinkel erfassen zu können, so hat das Objektiv einer marktüblichen Smartphonekamera heute nur noch etwa 4 mm Brennweite, erfasst dabei aber einen ähnlichen Bildwinkel.
Die kürzeren Brennweiten dieser modernen Linsensysteme bedingen nun einen deutlich größeren Schärfentiefebereich. Dieser Effekt ist zum einen gewünscht, da er durch Fehlfokussierung bedingte, komplett unscharfe Aufnahmen unwahrscheinlicher macht, er ändert aber auch nachhaltig den gesamten Bildeindruck dieser Kamerasysteme. So ist es dem Fotografen nicht mehr oder kaum noch möglich, Nahpunkt und Fernpunkt der Schärfeebene gezielt auf bestimmten
Motivbereichen zu platzieren, um bestimmte Motivdetails hervorzuheben und andere Bereiche gezielt in Unscharfe auszublenden.
Einer der Hauptgründe, weshalb Fotografen heute noch zu großformatigeren Systemkameras greifen, sind die besseren Gestaltungsmöglichkeiten durch die größeren Linsensysteme mit entsprechend längeren Brennweiten. Aufnahmen mit knappen, gezielt gesetzten Schärfentiefezonen werden in der Regel als professioneller erkannt und bevorzugt.
Allgemein bekannte Ansätze, dieses Problem durch eine digitale Bearbeitung des Bildes zu lösen, wenden meist simple Weichzeichnungsmethoden wie zum Beispiel den Gaußschen Weichzeichner an, deren optischer Unschärfeeindruck aber nicht dem echter Linsensysteme entspricht und deren Ergebnisse somit als unrealistisch empfunden werden. Desweiteren sind bekannte Lösungsansätze dieses Problems oft nicht in der Lage, gleitende Unschärfeverläufe zu erzeugen. Diese sind zur realitätsnahen Illusion von Raumtiefe und für einen schlüssigen Bildeindruck aber notwendig. Auch versagen bekannte digitale Bildbearbeitungsmethoden und die von ihnen verwendeten Algorithmen an den harten Ubergängen von scharfem Motiwordergrund zu mit sogenanntem ,Bokeh' strukturierten Unschärfen im Hintergrund (und andersherum).
Weitere bekannte Ansätze, dieses Problem zu lösen, wenden erheblich komplexere digitale Bildbearbeitungsmethoden an, die sich wesentlich aufwändigerer Algorithmen bedienen, um zu realistisch wirkenden Unschärfeillusionen zu gelangen. Diese Methoden benötigen aber erhebliche, auf digitale Bildbearbeitung spezialisierte Rechenkapazitäten mit entsprechend hohem Energiebedarf (etwa hochspezialisierte Bildverarbeitungsprozessoren und/oder Bildbearbeitungsbaugruppen), die Endanwendern üblicherweise nicht zur Verfügung stehen und auf herkömmlichen, tragbaren System wie zum Beispiel Smartphones oder Laptops schon aus Energieversorgungsgründen nicht zur Verfügung stehen. Daher ist die Anwendung derartiger komplexer digitaler Bildbearbeitungsmethoden auf vorerwähnten tragbaren Geräten, aber auch auf durchscnruttlich ausgestatteten sogenannten Desktopcomputer-Systemen unpraktikabel, da dies viel zu lange Rechenzeiten erfordern würde.
Vor diesem Hintergrund ist es daher Aufgabe der vorliegenden Erfindung, digitale Unschärfefil- ter zur Erzeugung eines einem falsch fokussierten Linsensystem entsprechenden Unschärfeein- drucks anzugeben, die auch auf durchschnittlich ausgerüsteten Computern, insbesondere mobilen Computern wie Smartphones oder Tablets oder Laptops, hinreichend schnell arbeiten.
Dies wird durch einen computerimplementierten digitalen Unschärfefilter zur Erzeugung eines einem falsch fokussierten Linsensystem entsprechenden Unschärfeeindrucks in einem digital in einem Bild-Speicher ursprünglich vorliegenden Bild nach Anspruch 1, sowie durch ein zugehöriges Computersystem nach Anspruch 8 oder 9 sowie ein Computerprogramm(produkt) nach Anspruch 10 bis 12 gelöst. Zweckmäßige Ausführungsformen ergeben sich aus den Unteransprüchen.
Die Erfindung löst die beschriebenen Probleme des bekannten Standes der Technik in dem sie erlaubt, beliebige, bereits vorliegende Fotos nachträglich und selektiv mit naturgetreuen Unscharfen zu versehen. Die dabei zur Anwendung kommenden Methoden erfordern sehr überschaubare Rechenkapazitäten und sind speziell zur Anwendung auf graphischen Co-Prozessoren optimiert, wie sie heute üblicherweise in Smartphones und DigitaLkameras zur Anwendung kommen.
Dabei werden, um eine realistisch anmutende Unschärfe zu erzeugen, im wesentlichen zwei Methoden auf das digitale Bild angewendet.
Zum einen kommt eine Faltungsformel (Konvolution) mit geformtem Filterkern zum Einsatz, bei dem die Form des Filterkerns der gewünschten Form des Zerstreuungskreises entspricht. Wenn f * g die Faltung des Filterkernes f mit einem Farbkanal des Bildes g ist, dann ist jedes Pixel von f * g, (f * g)(n), etwa durch fol ende Faltungsformel für jeden Bildpunkt n definiert:
k€D
[- L/»/2J , LW2J] x [- LAAK LA/2J] c z x
/ : D - [0, 1] C R
g : Z x Z - [0, 1) C R x [0, g
w - 1] x [0, g
h - l] = g(x) = 0
wo f(x) den Wert des Filterkernes am Pixel (c - x) angibt,
und g(x) den Wert des Farbkanals des Bildes am Pixel x angibt,
wobei der auf die nächst kleinste ganze Zahl abgerundete Wert von x ist, sowie ξν die Filterkernbreite, fh die Filterkernhöhe, gw die Bildbreite und gh die Bildhöhe angibt.
Zum anderen werden Spitzlichter identifiziert und mit Filterkernen spezifischer Größe überlagert, um die in optischen Systemen mit längeren Brennweiten üblichen sogenannten Bokeh- Scheiben zu erzeugen. Eine typische Ausfe typi der Erfindung sieht zudem vor, dass der Anwender die Form des anzuwendenden Filterkerns selber auswählen oder fesdegen kann, um die Simulation des einem falsch fokussierten Linsensystem entsprechenden Unschärfeeindrucks derart zu gestalten, als könne er die Form der Irisblende des simulierten optischen Systems (und damit die Form des Zerstreuungskreises) selber fesdegen.
Um eine noch realistischer wirkende Unschärfeberechnung zu erzielen, sind vorzugsweise weitere Maßnahmen förderlich.
Zum einen ist es der Qualität des Ergebnisses oft dienlich, wenn der Anwender jenen Bereich oder jene Bereiche des Ausgangsbildes selektiert, die den Motiwordergrund repräsentieren und keinesfalls unscharf oder aber gänzlich unscharf erscheinen sollen. Diese Motivteile sind in der Regel weitgehend parallel zum Aufnahmemedium ausgerichtete Objekte, beispielsweise Personen, ein Gesicht, Bäume oder ähnliches.
Eine sehr schnelle und einfache Markierung eines solchen Motiwordergrundes ist unter Anwendung entsprechender Verfahren, wie etwa dem weiter unten beschriebenen computerimplementierten Verfahren und/ oder System zur Erkennung eines mittels Stroke-Eingabe eines Anwenders markierten Objekts anhand von Pixeln in einem digitalen Bild (nachfolgend auch vorliegendes Verfahren oder System genannt) und zum Beispiel bei Verwendung eines berührungsempfindlichen Büdschirms oft schon durch einfaches oder mehrfaches Streichen mit dem Finger zu bewerkstelligen.
Der vom Benutzer so definierte Bildbereich repräsentiert nun vorzugsweise den Motiwordergrund. Dieser wird in einen separaten Buffer mit transparentem Alphakanal kopiert. Zugleich wird vom ursprünglichen Originalbild eine Kopie angefertigt, die zum Motivluntergrund aufgearbeitet wird.
Zum anderen ist ein ideales Ergebnis vor allem dann zu erzielen, wenn der Anwender einen oder mehrere Unschärfeverläufe im Bild definiert, die die Raumtiefe des Motivs repräsentieren. In einer zweidimensionalen Photographie ohne weitere Meta-Informationen zu Objektdistanzen etc. ist es in der Regel nur sehr bedingt automatisch ermittelbar, welche Entfernungen bestimmte Motivbereiche zur Aufnahmeebene hatten. Die Erfindung sieht es daher vorzugsweise vor, den Anwender einen oder mehrere Unschärfeverläufe definieren zu lassen, welche die Tiefeninformation im abgebildeten Motiv repräsentieren. Dies kann an berührungsempfindlichen Bildschirmen zum Beispiel durch eine einfache Zwei-Finger- Zangengeste erfolgen. Desweiteren sieht die Erfindung vor, solche Unschärfeverläufe automatisch so korrekt wie möglich vorzupositionieren, wobei Größe, Position und Form des markierten Motiwordergrundes in Betracht gezogen werden können. Vorzugsweise ist auch eine Auswertung weiterer Aufnahme- und Motivinformationen durch die Erfindung vorgesehen, wie Brennweite und Irisblendenöffnung des Aufnahmeobjektivs, Neigungswinkel der Kamera zum Aufnahmezeitpunkt, vermutete Objektdistanz sowie Analysedaten des Autofocus-Schärfe-Such-Prozesses, sofern elektronisch verfügbar.
Die vorliegende Erfindung sieht vor, dass der Motiwordergrund— vorzugsweise in einem Buffer Bjc im Speicher hinterlegt - innerhalb oder außerhalb der virtuellen Schärfezone liegen kann. Zur Veranschaulichung sei zunächst der häufigere Fall angenommen, in dem sich der Motiwordergrund (exakt) innerhalb der Schärfezone befindet. In diesem Fall wird der Motiwordergrund von der Erfindung nicht verändert, sondern zunächst nur in als Selektions-Bild für sich gespeichert .
Um dem Betrachter des manuell oder automatisch mit Tiefeninformationen angereicherten Bildes schließlich realistische Tiefenunschärfe zu suggerieren, wendet die Erfindung vorzugsweise einen mehrstufigen Prozess an, der je nach technischen Möglichkeiten des verwendeten Systems sequenziell oder parallel ablaufen kann. Im folgenden sei beispielhaft und ohne, daß dies eine Beschränkung der vorliegenden Erfindung bedeuten würde, ein sequenzielles Ausführungsbeispiel nach der vorliegenden Erfindung beschrieben.
Zunächst wird in der Hintergrundebene des Bildes der den Vordergrund repräsentierende Bildbereich mit Hilfe einer sogenannten Inpainling-Routine - vorzugsweise in Teilen - vollautomatisch ersetzt. Hierzu werden umliegende Motivstrukturen extrapoliert, bis der den Vordergrund repräsentierende selektierte Bildbereich soweit verkleinert wurde, dass in der nachfolgenden Un- schärfeberechnung auch bei maximalem Unschärferadius keine Bildpixel des Vordergrundmotivs
mehr in die Berechnung der iiintergrundunschärfe einfließen. Das Ergebnis dieser Routine wird in einen Buffer Biaf im Speicher kopiert.
Als nächstes werden nun die unterschiedlich starken Unschärfen der verschiedenen Bildebenen berechnet. Hierzu werden n Kopien von Bili erzeugt, die entsprechend im Speicher abgelegt werden. Auf jede dieser Kopien wird eine Faltungsformel (Konvolution) mit einem scheibenförmigen Filterkern angewendet, wobei die Größe des Filterkerns in jeder nachfolgenden Kopie vorzugsweise linear vergrößert wird, bis in der n-ten Kopie die größte definierte Filterkerngröße angewendet wird. Eine typische Ausführung der Erfindung sieht vor, dass die Intensität der zu berechnenden Maximalunschärfe vom Anwender frei gewählt werden kann, wodurch die Simulation verschiedener Motivtiefen, Objektdistanzen, Irisblendenöffnungen und Brennweiten ermöglicht wird.
Basierend auf den definierten Unschärfeverläufen, in denen der Wert 0„keine Konvolution" und der Wert 1 „Konvolution mit maximaler Filterkerngröße" definiert, werden nun alle Ebenen beginnend mit Bili über die erste bis zur n-ten Ebene aufeinanderkopiert, wobei vorzugsweise ein Alpha-Blending mit alpha=l zur Anwendung kommt. Das Ergebnis dieser Operation wird im Speicher, vorzugsweise etwa in einem neuen Buffer .BWm. abgelegt.
Um die Unschärfeerzeugung nach der vorliegenden Erfindung weiter zu verbessern und die von Objektiven längerer Brennweite und/oder großer Irisblendenöffnung bekannten, durch den Zerstreuungskreis (der zwar so heißt, aber kein Kreis sein muß, sondern auch andere [flächige] Formen, wie etwa die einer Scheibe, eines Kreuzes, eines Herzens oder dergl. aufweisen kann) entstehenden sogenannten„Bokehflecken" nachzubilden, sieht die vorliegende Erfindung vor, das Motiv auf sogenannte Spitzlichter - also helle (meist kleinere) Bereiche im Bild, die oberhalb einer bestimmten Luminanzschwelle liegen - zu analysieren. In einer typischen Ausfeiner der Erfindung kann der Schwellenwert zur Spitzlichterkennung vom Anwender frei gewählt werden kann, um die Anzahl der erkannten Spitzlichter den Motivgegebenheiten anzupassen, vorzugsweise durch Uberbelichtung des Ursprungsbildes entstandene sehr helle punktförmige Bildbereiche von der Simulation der Bokeh-Scheiben auszuschliessen.
In einem weiteren Schritt, der gemäß der vorliegenden Erfindung parallel oder sequenziell erfolgen kann, wird daher auf die Luminanzwerte des etwa im Buffer ΰ,^-Bereich des Speichers gespeicherten Bildes ein Hochpassfilter angewendet, der die Spitzlichter des Motivs isoliert und
wiederum vorzugsweise in einen Buffer BH im Speicher überführt. Die vorliegende Erfindung sieht dabei vorzugsweise vor, etwa durch den Buffer Bg repräsentierte Bildbereiche von der Filterung optional auszuschließen, wenn die Erkennung von Spitzlichtern hinter dem Vordergrundobjekt, insbesondere durch das sogenanntes Inpainting entstandene Spitzlichter, unerwünscht ist.
Vorzugsweise werden von einem Buffer BH, im Speicher nun n-1 Kopien BH2 bis BH„ angelegt. Auch auf diese Buffer wird nun jeweils die Faltungsformel (Konvolution) mit scheibenförmigen Filterkern angewendet, wobei die Größe des Filterkerns in jeder nachfolgenden Kopie vorzugsweise linear vergrößert wird, bis auf Kopie BHu_, die größte definierte Filterkerngröße angewendet wird.
Basierend auf den definierten Unschärfeverläufen, in denen der Wert 0 erneut„keine Konvolution" und der Wert 1„Konvolution mit maximaler Filterkerngröße" definiert, werden nun alle Bild-Ebenen beginnend mit BH über BH1 bis B,.M ineinanderkopiert, wobei vorzugsweise ein additiver Kopiermodus („lineares abwedeln") zur Anwendung kommt. Das Ergebnis dieser Operation wird vorzugsweise in einem neuen Buffer BHibir im Speicher abgelegt.
Liegt etwa der markierte Motiwordergrund— wie im Ausführungsbeispiel bisher angenommen— innerhalb der Schärfezone, wird etwa der Buffer B^ unverändert vorzugsweise über Alphablen- ding auf das Ergebnis von BHbl r kopiert, womit das Endresultat der Operation dort zur Verfügung steht.
Liegt der markierte Motiwordergrund hingegen außerhalb der Schärfezone, also innerhalb des Schärfeverlaufes oberhalb von Wert 0 und < 1, wird vorzugsweise anstelle eines sogenannten Inpainting- Verfahrens zur Erzeugung von etwa Bi„p ein sogenanntes Outpainting- Verfahren angewendet, das etwa durch Pixel-Extrapolation den Motiwordergrund vergrößert, ohne den Abbildungsmaßstab des abgebildeten Objektes zu verändern. Das Ergebnis dieser Operation wird dann vorzugsweise in einen Buffer B
ouip überführt. Unter Anwendung der der Position im Un- schärfeverlauf entsprechenden korrekten Filterkerngröße (der ebenfalls nicht nur kreisförmig sein kann, sondern auch andere flächige Formen, wie Scheiben, Kreuze, Rechtecke, Quadrate, Herzen etc. aufweisen kann) wird die Konvolution mit scheibenförmigem Filterkern nun etwa auch auf B
mip angewendet und das Ergebnis vorzugsweise in B^
b&r überführt. B
bbir wird nun etwa per Alphablending auf das Ergebnis B
Hhhir kopiert, womit wiederum das Endresultat der Operation zur Verfügung steht. Eine typische Ausführung der Erfindung sieht vor, dass der Alpha-Wert, mit dem die Ergebnisse
ineinandergeblendet werden, vom Anwender frei gewählt
werden kann, um die Simulation des einem falsch fokussierten Linsensystem entsprechenden Unschärfeeindrucks an unterschiedlich stark reflektierende Motive anzupassen.
Die nachstehende Beschreibung betrifft ein computer-implementiertes Verfahren und System zur Erkennung eines mittels Stroke-Eingabe eines Anwenders markierten Objekts anhand von Pixeln in einem digitalen Bild (nachfolgend auch vorliegendes Verfahren oder System genannt), das vorzugsweise im Rahmen der vorliegenden Erfindung Verwendung findet, vorzugsweise zur Selektion und/ oder Freistellung eines Bild-Bereiches in einem digital in einem Speicher vorliegenden Bild, aber auch als eigenständige Erfindung für sich allein Bedeutung hat und nutzbar ist:
Die Nachbearbeitung digitaler Bilddaten, vorzugsweise digitaler Fotos ist heute ein Prozess, der fest zum fotografischen Arbeitsablauf gehört. Zum einen optimieren moderne Kameras die zu speichernden Fotos automatisch mit komplexen Algorithmen, um optische Fehler wie chromatische Aberration oder Verzeichnungen auszugleichen. Zum anderen werden digitale Fotos aber auch individuell vom Fotografen bearbeitet.
Diese individuelle Bearbeitung findet in zunehmendem Maße direkt auf dem aufnehmenden Gerät statt, da der allgemein bekannte Arbeitsablauf, bei dem Bilder von der Kamera auf einen Computer überspielt werden, um dort selektiert, nachbearbeitet und ggf. exportiert zu werden, oft als zeitraubend und umständlich empfunden wird.
Zudem wird heute ein rasant wachsender Teil an Fotos mit Kamera-Smartphones aufgenommen, deren optische Abbildungsleistung und Rechenkapazität sich den klassischen Kompakt-Kameras immer mehr annähert bzw. diese bereits übersteigt. Die bekannte Funktionalität entsprechender Kamerasoftware beinhaltet gängige Bearbeitungs- und Korrekturfunktionen wie globale Einstellungen zu Helligkeit, Kontrast, Farbsättigung oder Weissbalance (Lichttemperatur). Ebenfalls zur Bearbeitung eines ganzen Fotos gängig sind Einstellungsfunktionen zur Mikrokontrastanhebung, Nachschärfung, Weichzeichnung oder Simulation der Verlagerung der Schärfebene nach Scheimpflugschem Gesetz (sogenannter„Tilt-Shift Effekt"). Desweiteren erfahren komplexe „Filter" eine zunehmende Beliebtheit, die bei sehr einfacher Bedienbarkeit durch komplexe, automatisch kaskadierte Bearbeitungsschritte das Foto aufwendig nachbearbeiten (Beispiele: Sepia- Umsetzung, Nostalgiefilter, Simulation spezifischer Eigenschaften chemischen Filmes oder Simulation spezieller chemischer Entwicklungsprozesse.)
Eine Einschränkung solcher Bearbeitungs- und Korrekt funktionen in allgemein bekannter Kamerasoftware ist nun aber, dass sie jeweils auf das gesamte Bild angewendet werden. Grund-
sätzlich ist die selektive Anwendung von Effekten und Bildberechnungen aber eine häufige Anforderung bei der Nachbearbeitung digitaler Bilder, um nur bestimmte Bereiche des Bildes bzw. des Motives zu verändern. Gängige Werkzeuge zur Bereichsauswahl, wie sie aus klassischen Bildbearbeitungsprogrammen stationärer Computer oder Laptops bekannt sind, sind aber insofern oft unbefriedigend, als dass sie umständlich und zeitaufwendig zu bedienen sind, um eine ausreichend präzise Auswahl zu definieren. Auch benötigen gängige Bereichsauswahlwerkzeuge eine große Menge an präzisen Informationen durch den Anwender, die einerseits präzise Eingabegeräte wie Computer-Maus und Grafiktablett, andererseits Kontrollhilfen wie großformatige Bildschirme und hohe Zoom-Stufen erfordern. Ein grundsätzliches Problem gegenüber der Bearbeitung am PC ist somit die Tatsache, dass Smartphones und Kameras mit Smartphone- Funktionalität und Formfaktor die gängigen Eingabegeräte wie Maus oder Grafiktablett fehlen und die Größe des Bildschirms ausgesprochen begrenzt ist. Es ist dadurch bisher nur sehr eingeschränkt möglich, ein Bild mit ausreichender Präzision selektiv zu bearbeiten. Neben den physikalischen Limitierungen der Geräte ist der Prozess der Auswahl eines zu bearbeitenden Bereiches aber auch grundsätzlich ein zeitraubendes, komplexes Unterfangen, das auch vom Profi am entsprechend ausgestatteten PC meist nur in vielen einzelnen Schritten und mit hohem Rechenaufwand zu bewerkstelligen ist.
So ist auch das selektive Bearbeiten einzelner Bild- oder Motivbereiche direkt auf Smartphones oder Kameras mit Smartphone-Funktionalität mit bekannten technischen Lösungen nicht zufriedenstellend möglich, da
- dem Anwender durch die in der Regel ausschließliche Verfügbarkeit eines berührungsemp- findlichen Displays (eines sogenennten Touchscreens) als Eingabegerät kein der Notwendigkeit der Bereichsmarkierung entsprechend präzises Instrument zur Verfügung steht,
- die für bekannte Algorithmen zur Bereichs- und Auswahloptimierung notwendige Rechenleistung in Smartphones und Kameras mit Smartphone-Funktionalität nicht oder nur eingeschränkt vorhanden ist,
- die Definition eines bestimmten Motivbereiches zur selektiven Bearbeitung somit ein so sehr zeitraubender Prozess ist, daß er der Verwendung der Smartphone-Kamera bzw. der der Kamera mit Smartphone-Funktionalität zur spontanen, unbeschwerten Fotografie („Schnappschuss-Fotografie") in der Regel entgegensteht.
Angesichts dessen stellt sich daher das Problem, eine effektivere, d.h. schnellere Erkennung von Objekten in digitalen Bildern bei guter Objekterkennungsqualität zu erreichen, als dies nach dem Stand der Technik derzeit möglich ist und so diese Funktionalität insbesondere auch auf mobilen Geräten, wie Smartphonekameras zur Verfügung stellen zu können. Darüber hinaus ist eine solche effektivere Objekterkennung unter dem Gesichtspunkt der Leistungssteigerung natürlich auch für den Einsatz auf herkömmlichen Computer zur Bildverarbeitung anstrebenswert, da auch deren Effektivität hierdurch erheblich gesteigert werden kann, wenn der einzelne Objekterkennungsprozeß bei guter Qualität deutlich rascher abläuft.
Dieses Problem wird gelöst durch ein computer-implementiertes Verfahren zur Erkennung eines mittels Stroke-Eingabe eines Anwenders markierten Objekts anhand von Pixeln in einem digitalen Bild, das folgende Verfahrensschritte aufweist:
Erhalten eines digitalen Bildes, im Speicher eines Computers;
Darstellen des digitalen Bildes auf einem Display des Computers;
Empfangen von Stroke-Eingaben eines Anwenders über eine Eingabeschnittstelle des Computers;
Bestimmen der Pixel im digitalen Bild, die mit der Stroke-Eingabe des Anwenders korrespondieren und die als dem zu erkennenden Objekt zugehörig bestimmt werden,
Bestimmen der Pixel, die in einem wählbaren Perimeterbereich um die Pixel herum liegen, die mit der Stroke-Eingabe des Anwenders korrespondieren,
Ausführung der Objekterkennung unter Verwendung der Pixel, die mit der Stroke- Eingabe des Anwenders korrespondieren und der Pixel in dem Perimeterbereich, wozu für jedes Pixel innerhalb des Perimeterbereichs bestimmt wird, ob es hinsichtlich einer gewählten Metrik näher am Außenrand des Perimeterbereiches oder näher an den Pixeln Hegt, die mit der Stroke-Eingabe des Anwenders korrespondieren, wobei ein Pixel innerhalb des Perimeterbereiches als dem zu erkennenden Objekt zugehörig bestimmt wird, wenn es hinsichtlich der gewählten Metrik näher an den Pixeln Hegt, die mit der Stroke-Eingabe des Anwenders korrespondieren
oder aber
ein Pixel innerhalb des Perimeterbereiches nicht als zu dem zu erkennenden Objekt zugehörig bestimmt wird, wenn es hinsichtlich der gewählten Metrik näher am Außentand des Perimeterberiches liegt und so alle Pixel des mittels Stroke-Eingabe des Anwenders markierten Objekts erkannt werden.
Vorstehend beschriebenes Verfahren (vorliegendes Verfahren oder System) arbeitet— am Beispiel eines Smartphones mit berührungssensitivem Display (sogenannter Touchscreen) erläutert - dabei vorzugsweise wie folgt (wobei das hier anhand eines Smartphones Erläuterte ohne weiteres auch auf einen anderen Computer - etwa einen konventionellen Desktop-Computer oder auch Laptop-Computer - mit etwa anderen Eingabeschnittstellen wie etwa einer Maus oder einem Trackball oder dergleichen übertragbar ist, wobei ein Sinke dann nicht mehr mit einem Fingerstreich, sondern etwa mittels einer Mausbewegung und Auslösung der Maus, zu bewerkstelligen ist):
Der Anwender kann nach dem vorliegenden Verfahren oder System zunächst grob den gewünschten Motivbereich bzw. das gewünschte Objekt nachzeichnen, was etwa auf einem Mobilgerät mit berülmtngsempfmdlichen Display meist schon mit einem einzigen Fingerstreich („Stro- ke") zu bewerkstelligen ist. Grundsätzlich kann ein Stroke aber auch vermittels eines anderen Eingabegerätes, wie etwa einer Maus oder einem Trackball oder ähnlichem ausgeführt werden. Desweiteren kann der Anwender seine Bereichsauswahl bei Bedarf mit weiteren einfachen Stro- kes konkretisieren, falls es durch komplexe Objektformen oder ungenaue Strokes zu Fehlerkennungen gekommen ist. Das vorliegende Verfahren oder System arbeitet ausgesprochen schnell und ermöglicht dem Anwender so eine interaktive Benutzung, die binnen kürzester Zeit zum Ziel führt.
Zum Markieren des gewünschten Objektes bzw. Bildbereiches steht dem Anwender somit über die jeweilige Eingabeschnittstelle des verwendeten Computers ein Malwerkzeug zur Verfügung. Ein Stroke mit diesem Werkzeug über das dargestellte digitale Bild - etwa das dargestellte Photo - stellt dabei vorzugsweise die so vormarkierten Bereiche durch eine farbliche Hervorhebung
- etwa eine transparente oder semitransparente— Hintergrundfarbmarkierung dar. Der Wirkradius (Perimeterbereich) des zur Markierung verwendeten Werkzeugs ?inselgrößec) ist im Durchmesser vorzugsweise etwas größer als die Spitze eines Zeigefingers vorgesehen, so daß der An-
wender sofort erkennen kann, wo (und das) er einen Bereich (Perimeterbereich) im Bild markiert. Sobald der Anwender den Finger vom Touchscreen hebt (Ende der Stroke-Geste), wird der vormarkierte Bereich vorzugsweise als Input nach dem Verfahren zur Objekterkennung in digitalen Bildern verarbeitet, das entsprechend markierte Objekt mit seinen Pixeln im Bild erkannt und vorzugsweise auch— etwa wiederum durch eine transparente oder semi-transparente farbige Hinterlegung - visuell dargestellt. Hierbei wird die farbliche Hervorhebung des vorausgewählten Bereiches vorzugsweise durch eine anders gefärbte Hervorhebung ersetzt, die die das erkannte Objekt repräsentiert.
Erkennt der Anwender im Ergebnis nun unzureichende Ergebnisse der automatischen Bereichsmarkierungen, kann er die bereits berechnete Bereichsmarkierung durch zusätzliche Stroke- Gesten— sei es mittels eines berührungssensitiven Displays, sei es vermittels einer konventionellen Eingabeschnittstelle, wie etwa einer Maus - iterativ konkretisieren und korrigieren. Das vorliegende Verfahren oder System sieht hier vorzugsweise ein weiteres Bearbeitungswerkzeug vor, dass die umgekehrte Wirkung des zuvor beschriebenen Malwerkzeuges hat, nämlich ein sogenanntes ,Löschwerk eug'. Der Anwender kann vorzugsweise auch mit Hilfe dieses Werkzeugs seine Bereichsauswahl iterativ konkretisieren und korrigieren, wobei die mit diesem Werkzeug jeweils getätigten Strokes zu einer entsprechenden Verkleinerung der Bereichsmarkierung führen.
Da die Auflösung des zu bearbeitenden Bildes die Auflösung des Displays eines Kamera- Smartphones bzw. einer Kamera mit Smartphone-Funktionalität in der Regel deutlich überschreitet, könnten feine Objektdetails in der Gesamtdarstellung des zu bearbeitenden Bildes für den Anwender nicht sichtbar sein. Auch ist es möglich, dass eine komplexe, fein aufgelöste Objektstruktur einen entsprechend präzise platzierten Stroke erfordert. Das vorliegende Verfahren oder System erlaubt es dem Anwender vorzugsweise nun, jederzeit mit der bekannten sogenannten J?inch-Geste' (Bewegung zweier Fingerspitzen auf dem Touchscreen voneinander weg bzw. aufeinander zu) beliebig in entsprechende Motivdetails herein zu zoomen. Dies kann jedoch ebenso vermittels konventioneller Eingabeschnittstellen (Eingabegeräte), wie etwa einer Maus mit Rän- dekad zum Zoomen oder auch einem Touchpad oder auch der Tastatur geschehen. Analog kann der Anwender den derzeitig sichtbaren Büdausschnitt nach Bedarf verschieben. Das vorliegende Verfahren oder System sieht hier vorzugsweise eine sogenannte ,Panning-Ges ' (Verschieben zweier in weitgehend gleichbleibendem Abstand liegender Fingerspitzen auf dem
Touchscreen) sowie ein dediziertes sogenanntes Panning-Werk^eug (auch ,H.and-Toof genannt) vor. Auch die Kombination von Pinch- und Panning-Geste ist vorzugsweise fließend möglich und erlaubt eine schnelle, intuitive Auswahl der nachzubearbeitenden Bereichsauswahl.
Ein Strohe bezeichnet - wie bereits vorstehend erwähnt und unbeschadet der allgemeineren Bedeutung des Begriffs, die sich etwa bei Verwendung anderer Eingabegeräte (wie etwa einer Maus) ergibt - eine zweidimensionale Form, die etwa durch eine abgeschlossene Malgeste des Anwenders auf dem berührungssensitiven Display definiert wird. Anhand der erkannten Koordinaten des der Malgeste zugrundeliegenden Fingerstreichs werden die Pixel im digitalen Bild bestimmt, die mit der Stroke-Eingabe des Anwenders korrespondieren, was einem relativ ,dünnen' Linienzug - wie etwa von der hierzu verwendbaren Fingerspitze (oder auch einem spitzer [stiftartig] zulaufenden etwaigen Berührungswerkzeug für das berührungssensitive Display) hervorgerufen— entspricht. Sodann werden die Pixel im Bild bestimmt, die in einem wählbaren Perimeterbereich
- vorzugsweise einem wählbaren Radius - um den Bereich der Pixel, die mit der Stroke-Eingabe des Anwenders korrespondieren, herum liegen, was vorzugsweise unter Berücksichtigung des jeweiligen Darstellungsmaßstabes geschieht.
Vorzugsweise beginnt, sobald der Anwender die Malgeste beendet, etwa indem er den malenden Finger vom berührungssensitiven Display abhebt, der Objekterkennungsprozeß. Alternativ kann dieser Objekterkennungsprozeß — etwa bei Verwendung eines enstprechend leistungsfähigen Computers— vorzugsweise auch schon parallel zur Ausführung des Strohes, etwa vermittels der vorerwähnten Malgeste, beginnen (sogenannter Online-Objekterkennungsprozess). Verwendet man jedoch einen Offline-Objeterkennungsprozess - etwa weil der zur Ausführung des Objekterkennungsverfahrens verwendete Computers für eine zum Stroke parallele Objekterkennung nicht leistungsfähig genug ist -, so ist der verwendete Computer vorzugsweise während der nun erfolgenden Schritte des Verfahrens zur Objekterkennung für eine gewisse Zeit (nach dem derzeitigen Stand der Technik zum Zeitpunkt der vorliegenden Anmeldung für einige Sekundenbruchteile) für weitere Eingaben durch den Anwender gesperrt.
Auch ist in diesem Zusammenhang zu erwähnen, daß die nach dem vorliegenden Verfahren zu bearbeitenden Speicherbereiche (Puffer) zur Aufnahme der digitalen Bilder eine sehr große Menge an Pixeln beinhalten können. Da sich die zur Objekterkennung benötigte Rechenzeit mit der Anzahl dieser Pixel mit erhöht, kann es vorteilhaft sein, die entsprechenden Bereiche des Spei-
chers, die der Aufnahme der digitalen Bilddaten dienen, mit Hilfe eines Skalierungsfaktors s (mit s < 1) so zu skalieren, dass sie maximal w Pixel enthalten. Wenn die Speicherbereiche jeweils weniger als w Pixel enthalten wird s— 1 gewählt. Die Umsetzung des vorliegenden Verfahrens erlaubt eine freie Wahl von w, so daß abhängig von der verfügbaren Rechenleistung w derart gewählt werden kann, daß eine akzeptable Bearbeitungsdauer zur Objekterkennung erreicht wird.
Die eigentliche Objekterkennung geschieht unter der Verwendung der Pixel im digitalen Bild, die mit der Stroke-Eingabe des Anwenders korrespondieren und der Pixel des digitalen Bildes, die im Perimeterbereich liegen, also vermittels der Pixel des digitalen Bildes, wie sie nach Abschluß etwa der Malgeste - wie oben beschrieben - bestimmt wurden.
Das Grundprinzip der hier dargestellten neuartigen Objekterkennung hierbei lautet, daß für jedes Pixel innerhalb des Perimeterbereichs bestimmt wird, ob es hinsichtlich einer gewählten Metrik näher am Außenrand des Perimeterbereiches oder näher an den Pixeln liegt, die mit der Stroke- Eingabe des Anwenders korrespondieren.
Liegt nun ein Pixel innerhalb des Perimeterbereiches hinsichtlich der gewählten Metrik näher an den Pixeln, die mit der Stroke-Eingabe des Anwenders korrespondieren (also etwa der ,dünnen' Linie, die durch die Berührung der Fingerspitze mit dem berührungssensitiven Displays beim Strohe hervorgerufen wird), als am Außenrand des Perimeterbereiches, so wird dieses Pixel als zu dem zu erkennenden Objekt zugehörig bestimmt.
Liegt ein Pixel innerhalb des Perimeterbereiches aber es hinsichtlich der gewählten Metrik näher am Außenrand des Perimeterberiches, als an den Pixeln, die mit der Stroke-Eingabe des Anwenders korrespondieren, so wird dieses Pixel als nicht zu dem zu erkennenden Objekt zugehörig bestimmt.
Führt man nun die vorstehende Objekt erkennung für alle Pixel im Perimeter ber eich auf einem Computer— hier vorzugsweise einem Smartphone - aus und ordnet obendrein die Pixel, die mit der Stroke-Eingabe des Anwenders korrespondieren, ebenfalls dem zu erkennenden Objekt zu, so werden alle Pixel des mittels Stroke-Eingabe des Anwenders markierten Objekts eines in einem Bereich eines Speichers eines Computers hinterlegten digitalen Bildes erkannt, womit das entsprechend erkannte Objekt auch im Speicher markiert und vorzugsweise selektiv— und damit unabhängig von den Pixeln des digitalen Bildes, die nicht zu dem Objekt gehören - digital weiterverarbeitet werden kann. Dies ist von großem Vorteil, da sich auf diese Weise eine objektselekti-
ve weitere Bildverarbeitung an die Objekterkennung anschließen kann, womit etwa die Freistellung eines in einem komplexen Bildzusammenhang befindlichen Objekts, etwa einer Person auf einem Foto, erfolgen kann.
Die Bestimmung dessen, ob ein Pixel aus dem Perimeterbereich hinsichtlich einer gewählten Metrik näher am Außenrand des Perimeterbereiches oder näher an den Pixeln liegt, die mit der Stroke-Eingabe des Anwenders korrespondieren, erfolgt vorzugsweise mittels eines Algorithmus zur Bestimmung der kürzesten Wege hinsichtlich der gewählten Metrik in einem kantengewichte- ten Graphen, wobei die Pixel im Perimeterbereich einschließlich der Pixel am Außenrand des Perimeterberiches und die Pixel, die mit der Stroke-Eingabe des Anwenders korrespondieren die Knoten des Graphen bilden und die Gewichte der, die Knoten verbindenden Kanten des Graphen einen Abstand zwischen den entsprechenden Pixeln hinsichtlich der gewählten Metrik repräsentieren.
Vorzugsweise wird dabei als Algorithmus zur Bestimmving der kürzesten Wege hinsichtlich der gewählten Metrik in dem Graphen der bekannte Algorithmus von Dijkstra verwendet, der einen kürzesten Weg zwischen einem gegebenen Startknoten und einem der oder auch allen übrigen Knoten in dem kantengewichteten Graph ermitteln kann. Alternativ können natürlich auch andere Algorithmen zur Ermitdung kürzester Wege in kantengewichteten Graphen benutzt werden, etwa die Algorithmen von Bellman-Ford, Moore, Floyd etc. . 8
Bei der Verwendung des Algorithmus von Dijkstra (oder auch einer Alternative hierzu) zur Bestimmung der kürzesten Wege erfolgt vorzugsweise eine Bestimmung der Länge des kürzesten Weges zwischen einem Pixel, der mit der Stroke-Eingabe des Anwenders korrespondiert oder einem Pixel am Außenrand des Perimeterbereichs als Startknoten und allen Knoten des Perimeterbereichs.
Besonders bevorzugterweise wird während der Ausführung des Dijkstra-Algorithmus als nächster Knoten, der auf dem jeweilig zu findenden kürzesten Weg liegt, der Knoten gewählt wird, dessen Abstandssumme hinsichtlich der gewählten Metrik auf dem zu diesem Knoten zugehörigen und bis dahin gefundenen kürzesten Weg über alle zwischenliegenden Knoten im Graphen hin zu diesem Knoten vom gewählten Startpunkt aus die kleinste ist. Dabei kann der als nächster auf dem jeweilig zu findenden kürzesten Weg gewählte Knoten vermittels eines hierzu verwendeten Fibonacci-Heaps bestimmt werden, dessen Schlüssel die Abstandssumme hinsichtlich der gewählten Metrik, der auf dem jeweiligen Knoten zugehörigen kürzesten Weg über alle zwischen-
liegenden Knoten im Graphen hin zu diesem Knoten vom gewählten Startpunkt aus ist. Der Einsatz eines Fibonacci-Heaps macht dabei insbesondere die Verwendung des vorgenannten Dijkstra-Algorithmus noch effizienter.
Besonders bevorzugterweise wird bei dem vorliegenden Verfahren sowohl der Abstand hinsichtlich der gewählten Metrik zwischen jeweils zwei beliebigen Pixeln, die mit der Stroke-Eingabe des Anwenders korrespondieren wie auch der Abstand zwischen jeweils zwei beliebigen Pixeln am Außenrand des Perimeterbereiches hinsichtlich der gewählten Metrik zu Null gesetzt. Auf diese Weise werden aus der Sich des kantengewichteten Graphen einerseits die Pixel, die mit der Stroke-Eingabe korrespondieren und so inmitten des zu erkennenden Objekts liegen als eine Art einziges Zentrum des zu erkennenden Objekts— gewissermaßen als ein sicher zum Objekt gehöriges Inneres des zu erkennenden Objekts - gewichtet und betrachtet und andererseits die Pixel am Außenrand des Perimeters ebenfalls als ein einziges gleichgewichtetes sicheres Äußeres gegenüber dem zu erkennenden Objekt angesehen.
Auch können Pixel, die entweder mit der Stroke-Eingabe des Anwenders korrespondieren oder am Außenrand des Perimeterbereichs liegen während der Ausführung des Dijkstra-Algorithmus auch wechselnd als jeweiliger Startknoten fungieren. Bei der Bestimmung des jeweiligen zu einem Knoten führenden kürzesten Weges wird dann festgehalten, ob dieser jeweilige kürzeste Weg von einem Pixel als Startknoten stammt, das mit der Stroke-Eingabe des Anwenders korrespondiert oder aber von einem Pixel als Startknoten stammt, das auf dem Außenrand des Perimeterbereichs Hegt. Hierdurch ist es mögHch die Bestimmung aller kürzeseten Wege für die Pixel im Perimeterbereich parallel im HinbHck auf den Abstand (hinsichtlich der gewählten Metrik) zum Außenrand des Perimeterbereichs und zu den Pixeln, die mit der Stroke-Eingabe des Anwenders korrespondieren im Inneren des Objekts durchzuführen. Hierbei wird dann jeder zu einem Pixel gehörige Knoten des Graphen dahingehend markiert, ob der zu ihm führende und ermittelte kürzeste Weg zum Außenrand des Perimeters führt oder zu den Pixeln, die mit der Stroke- Eingabe des Anwenders korrespondieren und daher im Inneren des Objektes als zu diesem in jedem Falle zugehörig Hegen.
Um die Erkennungsgenauigkeit tatsächHcher Kanten gegenüber Bildstörungen wie Rauschen, Filmkorn oder auch sehr feiner Bilddetails zu erhöhen und Signale die nicht zur Erkennbarkeit des Objekts beitragen, zu reduzieren, ist zudem vorzugsweise die Verwendung eines bilateralen Filters vorgesehen. Dieser wird auf das digitale Bild angewendet, wobei die Größe des dabei je-
weils verwendeten Filterkerns - vorzugsweise proportional zur Anzahl der Pixel des digitalen Bildes - gewählt wird. Die proportionale Wahl der Größe des Filterkerns bewirkt eine einheitliche und durchgängige Glättung unabhängig von den tatsächlichen Dimensionen des digitalen Bildes.
Als Metrik für den Abstand der Pixel kommt vorzugsweise die Distanz zwischen den Farben der beiden Pixel infrage, wobei vorteilhafterweise der Euklidische Abstand zwischen den beiden Farben der Pixel verwendet wird, indem die jeweiligen Farbkomponentenanteile— vorzugsweise etwa Rot-, Grün- und Blau-Komponentenanteile - als Koordinaten im dreidimensionalen Raum R3 verwendet werden, wodurch sich eine geometrische (euklidische) Distanz zwischen den beiden — den jeweiligen Pixeln entsprechenden - Punkten im Raum R3 ermitteln läßt. Jeder der beiden Punkte im dreidimensionalen Raum entspricht dabei der Farbe des ihm zugehörigen Pixels im digitalen Bild, die aus den, den drei Dimensionen des Raumes entsprechenden Farbkomponenten besteht und deren konkrete Anteile für das jeweilige Pixel den Ort des Punktes im Raum R3 festlegen. Grundsätzlich sind aber auch andere Metriken verwendbar, vorzugsweise, wenn diese zur Abbildung von Ähnlichkeiten der Bildinformation geeignet sind.
Es wird vorliegend somit ein neuartiges Verfahren zur automatischen Erkennung von Objekten in digitalen Bilddaten gezeigt, das besonders schnell und ressourcensparend arbeitet, dabei aber keine Abstriche bezüglich Präzision oder möglicher Bildauflösung macht. Die letztendlich entstehende Bereichsdefinition zur Objektmarkierung hat somit die gleiche Auflösung wie das zur Bearbeitung vorgesehene Bild, so daß keine Interpolationsartefakte oder andere Ungenauigkeiten entstehen.
Eine Besonderheit des vorliegenden Verfahrens ist die adaptive Präzision der Objekterkennung. Sie bewirkt, dass die Funktion unabhängig von der Größe des aktuell sichtbaren Bildausschnittes (,ZoomleveF) in immer gleicher, hoher Geschwindigkeit arbeitet. Eine Verkleinerung des sichtbaren Bildausschnittes (höherer Zoomlevel) erhöht dabei lediglich die Präzision der Erkennung komplexer Kanten, die ggf. unter Verwendung verschiedener Zoomlevel iterativ entstehende Bereichsauswahl hat grundsätzlich die dem Originalbild entsprechende Auflösung.
Ein Vorteil der adaptiven Erkennungspräzision ist es, daß das Signal-Rausch- Verhältnis immer optimiert ist. Sehr feine Bilddetails wie Sensorrauschen oder auch sehr fein gezeichnete Motivstrukturen werden in hohen Zoomstufen (wie zum Beispiel einer initialen Gesamtansicht des Bildes) nicht zur Berechnung der Bereichsmarkierung in Betracht gezogen. Sollte der Anwender aber die Erkennung solcher Details in bestimmten Motivbereichen wünschen (z.B. zur präzisen
Erkennung von Haaren oder Haarsträhnen), wird die Erkennungsgenauigkeit vorzugsweise durch den entsprechend zur Bearbeitung gewählten Zoomlevel adaptiv präzisiert.
Das vorliegende Verfahren oder System erlaubt es somit erstmals, direkt auf einem Kamera- Smartphone oder einer Kamera mit Smartphone-Funktionalität gezielt Objekte eines Motivs oder auch frei gewählte Motivbereiche binnen weniger Sekunden mit wenigen Schritten zu markieren und nachfolgend entsprechend selektiv zu bearbeiten, ohne Qualitätsverluste in Kauf nehmen zu müssen. Setzt man sie auf einem konventionellen Desktop-Computer oder einem Laptop oder Ähnlichem ein, so trägt sie etwa im Rahmen der Objekterkennung bei der Bildverarbeitung erheblich zur Leistungssteigerung bei, indem sie Dauer dieser Objekterkennung gegenüber den nach dem Stand der Technik bekannten Methoden massiv reduziert.
Ziel des Verfahrens zur Objekterkennung ist es, eine bestmögliche Objekterkennung bei möglichst hoher Geschwindigkeit zu gewährleisten. Bei einfachen Formen kann der Anwender so schon mit nur einem sogenannte ,Stroke' zum Ziel kommen. Sind aber komplexe Formen zu markieren (etwa Haare oder Gitter strukturen), kann der Anwender beliebig in das Bild hinein- zoomen und die Genauigkeit der verwendeten Objekterkennung entsprechend (proportional) erhöhen.
Im Ergebnis dauert eine Berechnung so immer gleich lange (auf einem handelsüblichen Smartphone zum Zeitpunkt der hier vorliegenden Anmeldung nur Sekundenbruchteile). Die erreichte Genauigkeit definiert sich durch den jeweiligen Zoom-Level.
Führt man die Objekterkennung nach dem vorliegenden Verfahren für alle Pixel im Perimeterbereich auf einem Computer— hier vorzugsweise einem Smartphone— aus und ordnet obendrein die Pixel, die mit der Stroke-Eingabe(n) des Anwenders korrespondieren, ebenfalls dem zu erkennenden Objekt zu, so werden alle Pixel des mittels Stroke-Eingabe(n) des Anwenders markierten Objekts eines in einem Bereich eines Speichers eines Computers hinterlegten digitalen Bildes erkannt, womit das entsprechend erkannte Objekt auch im Speicher markiert und vorzugsweise selektiv - und damit unabhängig von den Pixeln des digitalen Bildes, die nicht zu dem Objekt gehören - digital weiterverarbeitet werden kann. Dies ist von großem Vorteil, da sich auf diese Weise eine objektselektive weitere Bildverarbeitung an die Objekterkennung anschließen kann, womit etwa die Freistellung eines in einem komplexen Bildzusammenhang befindlichen Objekts, etwa einer Person auf einem Foto, erfolgen kann.
Im folgenden finden sich nicht einschränkend zu verstehende Ausfuhrungsbeispiele in der Zeichnung. In dieser zeigen:
Fig. la das digital in einem Bild-Speicher ursprünglich vorliegende Bild mit durchgehender Schärfe vom Vordergrund bis ins Unendliche,
Fig. lb einen vermittels einer getätigten digitalen Markierung— vorzugsweise durch eine sogenannte Stroke-Eingabe auf einem berührungsempfindlichen Bildschirm— selektierten Selektions-Bereich des ursprünglichen Bildes, wobei dieser Selektions-Bereich von den außerhalb seiner Grenzen befindlichen Bildbestandteilen freigestellt und vorzugsweise als Selektions-Bild abgespeichert wurde,
Fig. lc ein Bild, bei dem der außerhalb der Grenzen des Selektions-Bereichs befindliche Bildbereich in den Randbereich des Selektions-Bereichs hinein extrapoliert wird, indem die dortigen Bildwerte durch Bildwerte aus der Bildumgebung von außerhalb des Selektions- Bereichs ersetzt wurden,
Fig. 2a ein erstes mehrerer, verschieden unscharfer Bilder, die durch Verwendung mehrerer unterschiedlich großer Zerstreuungskreise, die sich aus unterschiedlich großen Filterkernen ergeben, erhalten wurden, und wobei für jeden Bildwert jeden Farbkanals jeden Punktes des ursprünglich vorliegenden Bildes anhand einer Faltungsformel mit einem Filterkern der die Form eines angestrebten optischen Zerstreuungskreises (der zwar so genannt wird, aber nicht unbedingt kreisförmig zu sein braucht) aufweist, ein neuer Bildwert erzeugt wurde und aus den so digital erzeugten neuen Bildwerten ein unscharfes Bild als Ergebnis erhalten wurde,
Fig. 2b ein zweites mehrerer, verschieden unscharfer Bilder, die durch Verwendung mehrerer unterschiedlich großer Zerstteuungskreise, die sich aus unterschiedlich großen Filterkernen ergeben, erhalten wurden, wobei dies zweite Bild aufgrund der Verwendung eines größeren Filterkerns, der auch einen größeren Zerstreuungskreis hervorruft, unschärfer als das erste Bild ist,
Fig. 2c ein drittes mehrerer, verschieden unscharfer Bilder, die durch Verwendung mehrerer unterschiedlich großer Zerstreuungskreise, die sich aus unterschiedlich großen Filterkernen ergeben, erhalten wurden, wobei dies dritte Bild aufgrund der Verwendung eines große-
ren Filterkerns, der auch einen größeren Zerstreuungskreis hervorruft, unschärfer als das zweite Bild ist,
d ein viertes mehrerer, verschieden unscharfer Bilder, die durch Verwendung mehrerer unterschiedlich großer Zerstreuungskreise, die sich aus unterschiedlich großen Filterkernen ergeben, erhalten wurden, wobei dies vierte Bild aufgrund der Verwendung eines größeren Filterkerns, der auch einen größeren Zerstreuungskreis hervorruft, unschärfer als das dritte Bild ist,
e ein fünftes mehrerer, verschieden unscharfer Bilder, die durch Verwendung mehrerer unterschiedlich großer Zerstreuungskreise, die sich aus unterschiedlich großen Filterkernen ergeben, erhalten wurden, wobei dies fünfte Bild aufgrund der Verwendung eines größeren Filterkerns, der auch einen größeren Zerstreuungskreis hervorruft, unschärfer als das vierte Bild ist,
f schließlich ein sechstes mehrerer, verschieden unscharfer Bilder, die durch Verwendung mehrerer unterschiedlich großer Zerstreuungskreise, die sich aus unterschiedlich großen Filterkernen ergeben, erhalten wurden, wobei dies sechste Bild aufgrund der Verwendung eines größeren Filterkerns, der auch einen größeren Zerstreuungskreis hervorruft, wiederum unschärfer als das fünfte Bild ist,
die digital— vorzugsweise vermittels eines Alpha-Blendings— ineinander geblendeten Bilder nach Fig. 2a bis 2f als das gewollt unscharfe (Bild-)Ergebnis,
a ein erstes mehrerer, verschieden unscharfer aus Lurninanzbildern durch Hochpassfilterung erhaltener Spitzlichterbilder, die durch Verwendung mehrerer unterschiedlich großer Zerstreuungskreise, die sich aus unterschiedlich großen Filterkernen ergeben, erhalten wurden, und wobei für jeden Bildwert jeden Farbkanals jeden Punktes des ursprünglich vorliegenden Bildes anhand einer Faltungsformel mit einem Filterkern der die Form eines angestrebten optischen Zerstreuungskreises (der zwar so genannt wird, aber nicht unbedingt kreisförmig zu sein braucht) aufweist, ein neuer Bildwert erzeugt wurde und aus den so digital erzeugten neuen Bildwerten ein unscharfes Spitzlichterbild als Ergebnis erhalten wurde,
b ein zweites mehrerer, verschieden unscharfer Spitzlichterbilder, die durch Verwendung mehrerer unterschiedlich großer Zerstreuungskreise, die sich aus unterschiedlich großen
Füterkernen ergeben, erhalten wurden, wobei dies zweite Bild aufgrund der Verwendung eines größeren Filterkerns, der auch einen größeren Zerstreuungskreis hervorruft, unschärfer als das erste Bild ist,
Fig. 4c ein drittes mehrerer, verschieden unscharfer Spitzlichterbilder, die durch Verwendung mehrerer unterschiedlich großer Zerstreuungskreise, die sich aus unterschiedlich großen Filterkernen ergeben, erhalten wurden, wobei dies dritte Bild aufgrund der Verwendung eines größeren Filterkerns, der auch einen größeren Zerstreuungskreis hervorruft, unschärfer als das zweite Bild ist,
Fig. 4d ein viertes mehrerer, verschieden unscharfer Spitzlichterbilder, die durch Verwendung mehrerer unterschiedlich großer Zerstreuungskreise, die sich aus unterschiedlich großen Filterkernen ergeben, erhalten wurden, wobei dies vierte Bild aufgrund der Verwendung eines größeren Filterkerns, der auch einen größeren Zerstreuungskreis hervorruft, unschärfer als das dritte Bild ist,
Fig. 4e ein fünftes mehrerer, verschieden unscharfer Spitzlichterbilder, die durch Verwendung mehrerer unterschiedlich großer Zerstreuungskreise, die sich aus unterschiedlich großen Filterkernen ergeben, erhalten wurden, wobei dies fünfte Bild aufgrund der Verwendung eines größeren Filterkerns, der auch einen größeren Zerstreuungskreis hervorruft, unschärfer als das vierte Bild ist,
Fig. 4f schließlich ein sechstes mehrerer, verschieden unscharfer Spitzlichterbilder, die durch Verwendung mehrerer unterschiedlich großer Zerstreuungskreise, die sich aus unterschiedlich großen Filterkernen ergeben, erhalten wurden, wobei dies sechste Bild aufgrund der Verwendung eines größeren Filterkerns, der auch einen größeren Zerstreuungskreis hervorruft, wiederum unschärfer als das fünfte Bild ist,
Fig. 5 die digital - vorzugsweise vermittels eines Alpha-Blendings— ineinander geblendeten Bilder nach Fig. 4a bis 4f als das Blending-Ergebnis der unscharfen Spitzlichterbilder,
Fig. 6 zeigt das Zwischenergebnis des durch das Ineinanderblenden des - selbst schon durch Ineinanderblenden der Bilder nach Fig. 4a bis 4f - entstandenen unscharfen Spitzlichterbildes mit dem bereits gefilterten und abgespeicherten neuen unscharfen Bild, das selbst auch durch digitales Ineinanderblenden der Bilder nach Fig. 2a bis 2f entstanden ist, erhalten wurde,
zeigt das Endergebnis, das wiederum durch das Ineinanderblenden des Bilder nach Fig. 6 mit dem separat abgespeicherten Selektions-Bild nach Fig. lb entstand, zeigt ein Bild, bei dem vom innerhalb der Grenzen des Selektions-Bereichs befindlichen Bildbereich heraus in den Randbereich des außerhalb des Selektions-Bereichs befindlichen Bildes extrapoliert wurde, indem die dortigen Bildwerte durch Bildwerte aus der Bildumgebung von innerhalb des Selektions-Bereichs ersetzt wurden, was die hierdurch bürstenartig aufgestellt erscheinenden Haare der Darstellerin veranschaulichen, ein Bild, das aus dem aus dem abgespeicherten Selektions-Bild - vgl. Fig. lb -, - in gleicher Weise, wie aus dem ursprünglich digital in einem Bild-Speicher vorliegenden Bild, vgl. Fig. la - durch den erfindungsgemäßen computerimplementierten digitalen Unschär- fefilter nach der vorliegenden Erfindung erzeugt wurde, und das einen Unschärfeein- druck erzeugt, der demjenigen entspricht, wie es ein falsch fokussiertes Linsensystem entsprechendend erzeugen würde, und
ein Bild als Endergebnis zeigt, wie es durch das Ineinanderblenden der Bilder nach Fig. 8 und 9 entstanden ist. und nachfolgend zeigen sodann ferner ebenfalls nicht einschränkend zu verstehende Aus- führungsbeispiele des der Durchführung der vorliegenden Erfindung dienenden compu- ter-implementiertes Verfahrens und/oder Systems zur Erkennung eines mittels Stroke- Eingabe eines Anwenders markierten Objekts anhand von Pixeln in einem digitalen Bild: als Diagramm exemplarisch verschiedene Geräte und ein sie verbindendes Netzwerk, wie vorliegend als Ausführungsform beschrieben sind,
exemplarisch das funktionale Blockdiagramm eines Endgerätes sowie einige Datenstrukturen und Komponenten desselben, das funktionale Blockdiagramm des Datenspeichers eines Endgerätes, wie er in Fig. 12 referenziert wird,
einen Prozess als Flussdiagramm, in dem ein Endgerät Fingerstreiche ("Strokes") eines Anwenders empfängt und verarbeitet, eine Objekterkennung ausführt, Filter- oder Effektfunktionen ausführt und schließlich das Ergebnis der gesamten Operation darstellt,
Fig. 15 ein Prozessdetail als Flussdiagramm zum Empfangen und Verarbeiten von Fingerstreichen des Anwenders ("Strokes"), im Folgenden Stroke-Eingabeprozess genannt,
Fig. 16 ein Prozessdetail als Flussdiagramm zur Ausführung der Objekterkennung, im folgenden auch als Objekterkennungsprozess bezeichnet,
Fig. 17 ein Beispiel eines Prozessdetails als Flussdiagramm zur Erzeugung eines (graphentheoretischen) Kosten-Netzwerks aus Pixeln, in dem ein Wegftndungs-Algorithmus zur Identifikation von Objektpixeln angewendet wird,
Fig. 18 eine grafische Illustration des Inhaltes der Puffer W, I, P, B und D,
Fig. 19 eine grafische Illustration des Inhaltes der Puffer W, P, B und D,
Fig. 20 eine grafische Illustration des Inhaltes der Puffer R, D, B, P und W,
Fig. 21 eine grafische Illustration des Inhaltes des Puffers R, die Anwendung eines Gauß-Filters auf denselben sowie die Anwendung einer Rampen-Schwellenwert-Funktion auf das Ergebnis,
Fig. 22 einen Prozess als Flussdiagramm, in dem ein Endgerät zum einen Fingerstreiche („Strokes") eines Anwenders empfängt und verarbeitet und zum anderen parallel eine Objekterkennung ausführt,
Fig. 23 als Illustration exemplarisch die Benutzeroberfläche eines Ausführungsbeispiels,
Fig. 24 als Illustration exemplarisch die Benutzeroberfläche eines Ausfuhrungsbeispiels, in dem Fingerstreiche des Anwenders als Eingabe empfangen wurden,
Fig. 25 als Illustration exemplarisch die Benutzeroberfläche eines Ausführungsbeispiels, in dem Fingerstreiche des Anwenders als Eingabe empfangen und zwecks Erkennung von Objekten verarbeitet wurden,
Fig. 26 als Illustration exemplarisch die Benutzeroberfläche eines Ausführungsbeispiels, in dem der Fingerstreich des Anwenders als Eingabe zur Löschung eines nicht zum Objekt gehörenden Bildbereiches empfangen wurde, und
Fig. 27 als Illustration exemplarisch die Benutzeroberfläche eines Ausführungsbeispiels, in dem das Ergebnis der in Fig. 16 ausgeführten Aktion dargestellt wird.
Fig. 11 zeigt als Netzwerk- und Geräte-Diagramm exemplarisch verschiedene Geräte, wie in diesem Dokument als Ausführungsform beschrieben. Eine Kamera 140, ein mobiles Endgerät 120 und ein Personal Computer 130 sind als untereinander verbunden dargestellt, wobei die Verbindungen entweder direkt und/ oder über ein Netzwerk 150, welches etwa ein Ethernet-Netzwerk, das Internet (welches auch drahdos angebunden sein könnte) und/ oder ein drahdoses Netzwerk auf Basis von GSM, TDMA, CDMA, EDGE, HSPA, UMTS, LTE oder anderer von einem Anbieter drahdoser Netzwerktechnik angebotenen Standards sein kann. Die direkte Verbindung zwischen den Geräten kann durch Netzwerkverbindungen (ähnlich wie zuvor genanntes Netzwerk 150) und/ oder durch Bluetooth™, USB oder ähnliche Gerät-zu-Gerät Verbindungen abgebildet sein. Die Kamera 140, das mobile Endgerät 120 und Personal Computer 130 sind ähnliche Computergeräte, die sich zum Beispiel durch ihre Benutzeroberfläche, das Netzwerk 150, zu dem sie sich verbinden und/ oder durch die Hard- und Software zur Eingabe und Ausgabe von Daten unterscheiden. Die Kamera 140, Das mobile Endgerät 120 und der Personal Computer 130 werden als dienstanfordernde Geräte im Folgenden als„Endgerät" bezeichnet. Ein Endgerät ist in Fig. 12 illustriert. Beispiele an Endgeräten beinhalten Digitalkameras, Personalcomputer, Laptop- Computer, Tablet Computer, Smartphones, e-Reader oder ähnliche Computergeräte. Endgeräte werden von„Anwendern" benutzt.
Eine Verbindung zum Netzwerk 150 kann erfordern, dass das Endgerät Softwareroutinen ausführt, die beispielsweise die bis zu sieben notwendigen Schichten des OSI Modells zur Vernetzung von Computern bedienen. Das Netzwerk 150 bezieht Computer, Netzwerkverbindungen zwischen Computern sowie Softwareroutinen ein, die die Kommunikation zwischen Computern über solche Netzwerkverbindungen ermöglichen.
Wie im Weiteren dargelegt wird, beinhaltet ein Endgerät Datenstrukturen, die eine digitale Fotografie repräsentieren. Diese Datenstruktur wird im Folgenden als„Puffer I" bezeichnet (in Fig. 13 als Element 305„Puffer I" dargestellt"). Ein Endgerät kann entweder verwendet werden um direkt selbst die zu verarbeitende digitale Fotografie aufzunehmen, oder aber um die digitale Fotografie eines zweiten Endgerätes zu verarbeiten, nachdem diese an das erste Endgerät übertragen oder übergeben wurde.
Wie im Folgenden genauer dargelegt wird, führt das Endgerät verschiedene Softwareroutinen aus, wie etwa einen Stroke-Eingabeprozess 500, einen Objekterkennungsprozeß 600, und/oder einen Filter/Effekt-Prozess 260. Der Stroke-Eingabeprozess 500 wird verwendet, um Stroke-
Eingaben zu erfassen, die ein Anwender etwa typischerweise durch Berührungen in Form eines Fingerstreichs auf einem Touchscreen oder aber auch durch andere Eingabemethoden (wie durch Finger, Stylus, Maus, Trackball, Steuerkreuze oder durch Gesten o.ä) erzeugt hat. Diese Stroke-Eingaben kommunizieren des Anwenders Absicht, bestimmte Pixelbereiche innerhalb des Puffer I 305 als ein Objekt beinhaltend zu kennzeichnen. Es wird darauf hingewiesen, dass der Begriff„Pixel" im Folgenden, abhängig vom Kontext, sowohl die Position eines Pixels innerhalb eines Puffers als auch die im Pixel kodierte Farbinformation bezeichnen kann. Wenn im Folgenden zum Beispiel zwei Pixel in zwei verschiedenen Puffern als„korrespondierend" bezeichnet werden, ist dies so zu verstehen, dass beide Pixel die gleiche Position in ihrem beinhaltenden Puffer einnehmen. Die vertikale, gestrichelte Linie in Fig. 20 illustriert diese Korrespondenz zwischen den Pixeln in fünf verschiedenen Puffern. Des Weiteren können, wie im Folgenden dargelegt wird, Pixel-Puffer entweder eindimensional (wie etwa ein Alphakanal-Puffer) oder mehrdimensional (wie etwa ein Puffer, der RGB-Daten beinhaltet) sein. Generell ergibt sich die Art des jeweiligen Puffers aus dem Kontext der Beschreibung: Wird zum Beispiel beschrieben, das ein Pixel den Wert 1 erhält, indiziert dies die Beschreibung eines eindimensionalen Puffers. Die Puf- fer-Dimensionalität ist ein Parameter, der je nach Ausführungsform des vorliegenden Verfahrens veränderlich sein kann, solange das zugrundeliegende Ziel erreicht wird; so kann ein mehrdimensionaler Puffer zum Beispiel auch als eindimensionaler Puffer behandelt werden. Im Allgemeinen sind die im Folgenden Puffer R 330, Puffer B 320, Puffer D 325, Puffer P 315, und Puffer M 335 bezeichneten Puffer eindimensional; die Puffer W 310 und Puffer I 305 hingegen melirdimensio- nal. Der Objekterkennungsprozeß 600 identifiziert ein oder mehrere Pixelobjekte innerhalb der Pixelmenge, die Ausgabe des Stroke-Eingabeprozesses 500 ist. Diese Pixelobjekte werden in Puffer M (in Fig. 13 als„Puffer M" 335 referenziert) gespeichert. Wie nachfolgend dargelegt, können die mit Pixeln in Puffer M 335 korrespondieren Pixel in Puffer I 305 durch einen oder mehrere Filter/Effekt-Prozesse 260 verändert werden, welcher einen Filter bzw. einen fotografischen Effekt appliziert. Die Pixel in Puffer I 305, die mit Pixeln in Puffer M 335 korrespondieren, können auch als alleinstehendes, von Puffer I 305 unabhängiges Bild extrahiert und verwendet werden.
Wenn dieses Dokument einen Computer beschreibt, der entweder zu einem zweiten Computer eine Verbindung aufbaut (etwa, wenn ein Endgerät eine Verbindung zu einem zweiten Endgerät herstellt) oder ein Computer eine Verbindung zu einem Datenspeicher (wie dem Endgeräte- Datenspeicher 300) herstellt, so ist dies derart zu verstehen, dass derlei Verbindungen zu, durch
oder über die andere der beiden Komponenten geschehen. Die Aussage etwa, dass ein Computer Daten an das Endgerät 200 schickt, soll derart verstanden werden, dass der Computer eine Verbindung zum Datenspeicher 300 des Endgerätes aufbaut bzw. Daten dorthin sendet. Die Begriffe "Datenbank" und "Datenspeicher" sind zudem in ihrer Bedeutung gleichzusetzen. Obwohl hier als in einer physikalischen Einheit integriert dargestellt, können Computer und Datenbanken auch als übliche (bzw. alleinstehende) physikalische Einheiten bereitgestellt werden. Auch die Softwareroutinen und Datengruppen der beschriebenen Software können, obwohl hier als innerhalb eines einzelnen Computergerätes ablaufend dargestellt, ggf. in entfernten oder virtualisierten Computergeräten gespeichert werden und/ oder ablaufen.
Fig. 12 stellt das funktionale Blockdiagramm eines exemplarischen Endgerätes inklusive einiger Datenstrukturen und Komponenten desselben dar. Das Endgerät 200 beinhaltet mindestens einen Prozessor 210, Endgerätespeicher 250, ein Display 240 und eine Anwendereingabe 245, alle über den Bus 220 mit der Netzwerkschnittstelle 230 verbunden. Die Prozessoreinheit 210 kann sowohl aus einer oder mehreren allgemein üblichen CPUs (Central Processing Units) 212 als auch aus einer oder mehreren anwendungsspezialisierten GPUs (Graphical Processing Units) 214 bzw. einer Kombination aus beiden bestehen. Die Komponenten der Prozessoreinheit 210 können auch durch das Betriebssystem 255 verwendet werden, um verschiedene Funktionen auszuführen, die von Routinen des Endgerätes angefordert werden. Die Netzwerkschnittstelle 230 kann verwendet werden, um Verbindungen mit dem Netzwerk 150 oder direkte Geräte- Verbindungen mit anderen Endgeräten herzustellen. Der Endgerätespeicher 250 beinhaltet üblicherweise RAM (Random Access Memory), ROM (Read Only Memory) und ein Massenspeichermedium wie eine Festplatte oder Flash-Speicher. Der Endgerätespeicher 250 speichert Programmcode und Softwareroutinen wie zum Beispiel den Stroke-Eingabeprozess 500, den Objekterkennungsprozeß 600, den Filter/Effekt-Prozess 260, aber beispielsweise auch Routinen zur Aufnahme digitaler Photos, zur Verwaltung digitaler Bilder und/ oder zur Bearbeitung digitaler Bilddaten (von denen der Filter/Effekt-Prozess 260 eine Unterroutine sein kann), Browser-, Email- und Serverroutinen aber auch Client- oder Datenbankanwendungen wie weiter unten beschrieben. Des Weiteren beinhaltet der Endgerätespeicher 250 auch das Betriebssystem 255. All diese Softwarekomp enen- ten können von einem nicht-flüchtigen, computerlesbaren Speichermedium 295 in den Endgerätespeicher 250 des Endgerätes geladen werden, wobei sich dieses auch außerhalb des Computersystem befinden und auch nur temporär über ein Netzwerk bzw. direkt verbunden sein kann.
Das Endgerät 200 kann auch Hardware enthalten, die gezielt Anwendereingaben 245 unterstützt, wie zum Beispiel ein Touchscreen, eine Kamera, eine Tastatur, eine Maus, ein Stylus, ein Mikrophon, Beschleunigungssensoren und dergleichen. Diese Hardware kann auch zugleich als Display 240 ausgebildet sein, wie etwa bei einem Touchscreen, der auf Kontakt mit Fingern oder einem Stylus interaktiv reagiert.
Das Endgerät 200 kann auch einen Bus 220 verwenden, um mit dem Endgerätedatenspeicher 300 zu kommunizieren. In verschiedenen Ausführungsbeispielen kann der Bus 220 als serieller Hochgeschwindigkeitsbus, als DMA-Direktzugriff, als DAS ("Direct Attached Storage") als SAN ("Storage Area Network" oder in anderer, zielführender Form ausgebildet sein, die auch die Netzwerkschnittstelle 230 einbeziehen kann. Das Endgerät 200 kann in einigen Ausführungsformen auch viel mehr Komponenten enthalten als hier abgebildet, es ist zur Illustration der beschriebenen Lösung aber nicht notwendig, alle diese Komponenten darzustellen.
Das Endgerät 200 umfasst Datengruppen für Routinen, wie etwa den Stroke-Eingabeprozess 500, den Objekterkennungsprozeß 600 und den Filter/Effekt-Prozess 260. Weitere Datengruppen für andere Routinen, wie etwa einen Web-Browser oder einen Webserver, können ebenfalls auf einem Endgerät 200 präsent sein und ausgeführt werden. Browserroutinen können dabei zum Beispiel eine Schnittstelle bereitstellen, mit der man mit anderen Endgeräten gemäß Fig. 11, aber auch mit anderen, entfernten Endgeräten interagieren kann. Web-Browser und Webserver seien hier als Technologie zur Bereitstellung einer Benutzeroberfläche exemplarisch genannt, sie können auch durch äquivalente Techniken ersetzt werden, die das Anzeigen und Bereitstellen von Informationen auf einem Endgerät ermöglichen, etwa durch native Anwendungen ("Apps") auf mobilen Endgeräten.
Fig. 13 ist das funktionale Blockdiagramm des Endgerätedatenspeichers 300, wie er auch in Fig. 12 referenziert ist. Die Komponenten des Endgerätedatenspeichers 300 sind Datengruppen, die von den nachfolgend beschriebenen Routinen unterschiedlich verwendet werden.
Die Datengruppen, die von den in Fig. 13 illustrierten Routinen verwendet werden, können als Zelle in einer Spalte oder als alleinstehender Wert in definierter Struktur innerhalb eines digitalen Dokuments bzw. einer Datei repräsentiert sein. Obwohl im Folgenden meist als einzelner Datensatz oder Eintrag bezeichnet, können Einträge auch mehr als einen Datenbankeintrag enthalten. Die Datensätze können Zahlen, numerische Operationen, binäre Werte, logische Werte, Matri-
zen, Text, Zeichenketten, Zeichenkettenoperatoren, zusammengesetzte Werte, fallabhängige Logik, Tests oder ähnliche Datenstrukturen sein, repräsentieren oder kodieren.
Fig. 14 ist ein Flussdiagramm, das einen Prozess darstellt, in dem ein Endgerät Anwendereingaben in Form von Strokes erhält und verarbeitet, eine Objekterkennung ausfuhrt, einen Filter oder Effekt anwendet und schließlich das finale Ergebnis des Gesamtprozesses präsentiert. In Schritt 405 erhält das Endgerät ein digitales Foto bzw. Zugriff auf ein solches, dessen beinhaltete Pixeldaten im Folgenden als Puffer I 305 bezeichnet werden. Puffer I 305 ist als Element 805 in Fig. 18 illustriert (Element 900, welches ebenfalls in Fig. 18 illustriert wird, ist hingegen nicht Bestandteil von Puffer I 305). Der Puffer I 305 kann nun zum Beispiel durch eine entsprechende Darstellungsroutine auf dem Display 240 des Endgerätes angezeigt werden.
Im Schritt 500 empfängt und verarbeitet das Endgerät Stroke-Eingaben (Fingerstreiche) des Anwenders durch den Stroke-Eingabeprozess 500, wie in Fig. 15 detaiJJiert ausgeführt wird. Wie an anderer Stelle beschrieben, empfängt der Stroke-Eingabeprozess 500 Eingaben durch einen Anwender, der seinen Finger auf einem Touchscreen bewegt ("Fingerstreich") oder auch durch andere Anwendereingaben (wie Stylus, Maus, durch Gesten etc.). Diese Stroke-Eingaben kommunizieren des Anwenders Absicht, diejenigen Pixel in Puffer I 305 zu beschreiben, die ein Objekt repräsentieren. Wie nachfolgend beschrieben, können die so identifizierten Pixel im Display 240 visuell hervorgehoben werden, etwa durch Einfärbung, Änderung der Luminanz, eine gezeichnete Linie oder ähnliche optische Verfahren.
In Schritt 600 führt das Endgerät die Pixel-Objekt- Erkennung aus, beispielsweise unter Verwendung des Objekterkennungsprozesses 600, der in der Beschreibung zu Fig. 16 ausführlich erläutert wird. Wie an anderer Stelle beschrieben, identifiziert der Objekterkennungsprozeß 600 ein oder mehrere durch Farbkanten abgegrenzte Pixelobjekte (im Folgenden "Objekte" genannt), die sich nahe jener Pixel befinden, die das Ergebnis des Stroke-Eingabeprozesses 500 beschreiben. Diese Objekte werden in einem Masken-Puffer ("Puffer M", in Fig. 13 als Element 335 illustriert) abgelegt, der unabhängig von Puffer I 305 behandelt werden kann.
In Schritt 410 erhält das Endgerät eine Filter- oder Effektauswahl, etwa wie vom Anwender durch Verwendung des Filter-/Effektprozesses 260 vorgesehen. Beispiele solcher Filter und Effekte beinhalten Einstellung von Helligkeit, Kontrast, Farbsättigung, Weißbalance sowie Sepiato- nungen, Nostalgiefilter, Simulation der Spezifika chemischer Filmemulsionen, Simulation der Alterung bestimmter chemischer Farbstoffe etc. Die für den Filter-/Effektprozess 260 benötig-
ten Daten können aus dem Endgeräte-Datenspeicher 300 und den Filter- und Effekt- Datensätzen 340 genommen werden. Wie an anderer Stelle beschrieben, kann Puffer M 335 auch für andere Zwecke verwendet werden; zum Beispiel zur Identifikation jener Pixel in Puffer I 305, auf die ein Filter oder Effekt angewendet werden soll bzw. die kopiert, vorbereitet oder auf andere Weise als von Puffer I 305 separiertes Bild ausgegeben werden sollen. In Schritt 415 wird die zuvor definierte Auswahl an Filtern und Effekten auf die Pixel in Puffer M 335 angewendet, wie zum Beispiel durch den Filter-/Effektprozess 260 vorgesehen, um etwa das Endergebnis 345 zu erzeugen. In Schritt 420 kann das Endergebnis 345 oder ein abgeleitetes Ergebnis ausgegeben werden, etwa durch Darstellung auf dem Display 240 des Endgerätes. Wie nachfolgend genauer beschrieben, kann der gesamte Prozess 400 iteriert werden; während aller Iterationen kann der Anwender alternativ auch ein Löschwerkzeug benutzen, um die Auswahl der in Schritt 500 ausgewählten und in Schritt 600 identifizierten Pixel zu verändern.
Fig. 15 zeigt als Flussdiagramm ein Detail eines Prozesses zur Entgegennahme und Verarbeitung von Anwendereingaben in Form von Fingerstreich-Bewegungen ("Strokes"). Der dargestellte Prozess kann vom Stroke-Eingabeprozess 500 ausgeführt werden. In Schritt 505 kann der Anwender ein Pinsel- oder ein Löschwerkzeug über die Benutzeroberfläche aktivieren. Pinsel- und Löschwerkzeug arbeiten in sehr ähnlicher Art und Weise, das Pinselwerkzeug allerdings fügt Eingaben hinzu, während das Löschwerkzeug es ermöglicht, Teile zuvor gemachter Eingaben und/oder derer Ergebnisse zu entfernen. Pinsel- und Löschwerkzeug können dabei temporär optische Spuren im Display 240 des Endgerätes hinterlassen, wobei es zweckdienlich sein kann, die Spur etwas breiter zu zeichnen als es die Fingerspitze bzw. der Stylus des Anwenders ist, so dass der Anwender im Display 240 unmittelbar erkennen kann, welche Bildbereiche von seine Eingaben betroffen sind bzw. sein werden. In Schritt 510 kann die automatische Pixel-Objekt- Erkennung, wie sie vom Objekterkennungsprozeß 600 ausgeführt wird, durch den Anwender optional deaktiviert werden. Wie auch in anderen der dargelegten Schritte ist Schritt 510 optional und/oder kann in anderer Reihenfolge ausgeführt werden, etwa Schritt 505 vorausgehend. In Schritt 515 kann der Anwender den im Display 240 sichtbaren Bildausschnitt des Puffers I 305 verschieben und in Schritt 520, etwa durch eine Zweifingerzangengeste, einen neuen Vergrößerungsmaßstab ("Zoom Level") einstellen bzw. akzeptieren. Wie es auch mit anderen Schritten der Fall ist, können die zuvor beschriebenen Schritte des Stroke-Eingabeprozesses 500 auch in anderer Reihenfolge ausgeführt werden, sowohl in Bezug zueinander, als auch in anderer Reihenfolge in Bezug auf andere Schritte; so kann der Anwender zum Beispiel den sichtbaren Bereich des
Puffers I 305 noch vor Ausführung von Schritt 505 verschieben und skalieren. Die zur Einstellung von Schritt 515 und 520 gewünschten Werte können vom Anwender zweckdienlich über Gesten gesetzt werden, etwa eine Zweifinger-Gesten in öffnender, schliessender oder schiebender Weise oder aber andere Gesten, sofern sich diese eindeutig von der zur Stroke-Eingabe verwendeten Geste unterscheiden. Eine andere Ausführungsform erlaubt es auch oder außerdem, den Anwender explizit einen Modus bzw. ein Werkzeug auswählen zu lassen, um den gewünschten sichtbaren Bildausschnitt und/ oder den Vergrößerungsmaßstab desselben durch solche oder ganz andere Methoden festzulegen. Der Abbildungsmaßstab bestimmt die Auflösung der Pixel in Puffer W 310.
In Schritt 525 führt der Anwender einen einzelnen Stroke aus, etwa indem er seine Zeigefingerspitze, während diese ununterbrochen Kontakt zum Touchscreen hat und hält, von einem durch Koordinaten definierten Ort zu einem anderen Ort auf dem Display 240 bewegt, während das Pinsel- oder das Löschwerkzeug aktiviert ist. In Schritt 530 speichert der Stroke-Eingabeprozess 500 den Wirkbereich des Pinsels bzw. Löschwerkzeuges in Puffer P 315 (Element 1005 in Fig. 19 und Fig. 20). Die Werte in Puffer P 315 sind entweder 1, für alle Pixel die innerhalb des Wirkbereichs liegen, oder 0, für alle Pixel außerhalb des Wirkbereichs. In Schritt 540 des Stroke- Eingabeprozesses 500 wird der Mittelpunkt des Pinsel- bzw. Löschwerkzeuges über den in Schritt 525 erzeugten Pfad gefunden, dieser kann zum Beispiel dem Mittelpunkt der eingesetzten Werkzeugspitze entsprechen. Die Koordinaten des Werkzeugmittelpunktes werden mindestens zu Beginn und zu Ende eines Strokes aufgezeichnet. Die Verbindungslinie zwischen den aufgezeichneten Koordinaten kann zum Beispiel durch die die Koordinaten verbindende Linien definiert werden, wobei diese Linien durch OpenGL®, durch eine linear-mathematische Linienzei- chenf nktion, durch einen abrundenden Polynomzug (Splinef nktion) o.ä. erzeugt werden können. Die Strichstärke der erzeugten Linie kann Parameter des Stroke-Eingabeprozesses 500 sein und kann zum Beispiel auf 1 Pixel festgelegt werden. In Schritt 545 wird die so den Pfad des Strokes definierende Linie in Puffer B 320 (Element 1010 in Fig. 19 und Fig. 20) abgelegt. Die Werte des Puffer B 320 können 1 sein, für Pixel die die Linie definieren, sowie 0, für Pixel, die dies nicht tun. Auf die in Puffer B 320 repräsentierten Linien wird fortan auch als "innere Pixel" verwiesen, da die Pixel dieser Linien innerhalb der Flächenabbildung des zu isolierenden Objektes liegen.
In Schritt 550 kann das Ergebnis der Operation als visuelles Feedback auf dem Display 240 grafisch dargestellt werden, was zweckmäßigerweise schon während des Stroke-Eingabeprozesses
durch den Anwender geschieht. Eine geeignete Darstellung ist die Ausgabe des Puffers P 315. Während Fig. 20 den Inhalt des Puffers P 315 an Element 1005 in reinem Schwarz darstellt, ist es dienlich, den Inhalt des Puffers P 315 (und/ oder den anderer Puffer wie in Fig. 20 illustriert) als Halbton, schattierte oder gefärbte Fläche und/oder durch Einsatz von Transparenz derart darzustellen, dass die darunter Hegenden Pixel des Puffers I 305 noch zu erkennen sind.
Schritt 555 zeigt, dass die Schritte 525 bis 555 iterativ wiederholt werden, solange der Anwender weitere Strokes macht.
In Schritt 560 beendet der Anwender seine Eingaben 245 etwa durch Anheben seiner Finger vom Touchscreen-Display, loslassen einer Maustaste oder andere erkennbare Moduswechsel.
In Schritt 565 ermittelt der Stroke-Eingabeprozess 500 Koordinaten und Größe des kleinsten Rechtecks, welches den Wirkbereich der in den Schritten 525 bis 555 erzeugten Strokes zusätzlich einer definierten Polstergröße ("Padding") umschliesst. Die mit dem Rechteck korrespondierenden Pixel aus Puffer I 305 werden als neuer Puffer W 310 abgelegt. Fig. 18 illustriert grafisch den Inhalt des Puffers W als Element 900 (und Puffer I 305 als Element 805; die Puffer P, B und D sind hier ebenfalls sichtbar, jedoch nicht nummeriert). Fig. 19 illustriert den Puffer W 310 isoliert als Element 900, einen beispielhaften Stroke 1010 inklusive Wirkbereich 1005 und Aufpolsterung 905 darstellend. Fig. 20 illustriert die verschiedenen Puffer als separate Ebenen.
In Schritt 570 ermittelt der Stroke-Eingabeprozess 500 den äußeren Umfang ("Perimeter") des kumulierten Wirkbereiches und speichert diesen in Puffer D 325 (Element 1015). Die Werte in Puffer D 325 sind entweder 1 für Pixel auf dem Perimeter oder 0 für Pixel außerhalb desselben. Das Ermitteln des Perimeters kann auf verschiedene Weise erfolgen. Eine zweckmäßige Ausführungsform des vorliegenden Verfahrens analysiert den Inhalt des Puffers P 315 und ermittelt für jeden Pixel "p", zu welchem Wert die Inhalte der acht ihm direkt benachbarten Pixel sich aufsummieren. Nur wenn sich die Werte der acht Nachbarpixel zu 8 summieren oder "p" selber 0 ist, ist "p" nicht auf dem Perimeter. Wenn "p" aber auf dem Perimeter ist, wird der Wert 1 an entsprechend korrespondierender Stelle im Puffer Q 325 abgelegt, ansonsten der Wert 0.
Fig. 16 ist ein Flussdiagramm zur detaillierten Illustration eines Prozesses zur Objekterkennung. Dieser Prozess kann beispielsweise durch den Objekterkennungsprozeß 600 ausgeführt werden. Schritt 605 illustriert, dass der vorige Schritt 500 abgeschlossen wurde oder dass er parallel zu Schritt 500 ausgeführt wird, wie unten unter Fig. 22 ("online Modus") genauer dargelegt wird. So wie alle hier aufgeführten Schritte optional sein können, beschreibt Schritt 610 einen optionalen
Schritt, in dem ermittelt werden kann, ob einer der Puffer W, P oder B mehr als "Z" Pixel enthält. Ist dies der Fall, können alle Puffer W, P und B um Faktor S <= 1 skaliert werden, um höchstens Z Pixel zu enthalten. Dieser Schritt kann die Ausfuhrungsgeschwindigkeit des Objekterkennungsprozesses 600 beschleunigen.
In Schritt 700 erzeugt der Objekterkennungsprozeß 600 Distanz-, Kosten- oder Graphentheoretisches Netzwerk aus Pixeln relativ zu den Puffern W, P, B und D, und benutzt dieses Netzwerk, um Pixel in einem Puffer R 330 (in Fig. 20 und 21 als Element 110 illustriert) als "innere Pixel" (mit dem Wert 1) oder "äußere Pixel" (mit dem Wert 0) zu markieren. Dieser Schritt wird in Fig. 17 genauer dargelegt und illustriert.
In Schritt 615 wird auf Puffer R 330 ein Gaußscher Weichzeichner oder eine ähnliche Weich- zeichnerfunktion angewendet, wobei dessen Filterkerngröße mit den Abmessungen von Puffer W 310 skaliert. Hierdurch wird sichergestellt, dass die Menge an erzeugter Kantenunschärfe relativ zur Größe des Fensters W ist, also kleinere Fenster W entsprechend weniger stark weichge- zeichnet werden als größere Fenster W. Der Effekt des Gaußschen Weichzeichners ist grafisch in Fig. 21 illustriert, in dem Element 1100 (den Puffer R 330 repräsentierend) durch den Gaußschen Weichzeichner zu Element 1105 transformiert wird. Eine Rampen-Schwellenwertfunktion T(p) erzeugt an den weichgezeichneten Kanten des Puffers R 330 saubere, weiche Kanten mit einer Rampe, die u.a. AHasing- Artefakte verhindert. Eine mögliche Schwellenwertfunktion lautet wie folgt (wobei "p" ein Pixel ist):
T(p)=
p < pO: 0
p >= pO und p < pl : (p - p0)/(pl - pO) p >= pl: l
Der Effekt der Schwellenwertfunktion ist grafisch in Fig. 21 illustriert wobei Element 1105 das durch Weichzeichner und Schwellenwertfunktion transformierte Element 1100 darstellt. Das Ergebnis dieser Transformationen kann anschließend (überschreibend) zurück in Puffer R 330 geschrieben werden.
Schritt 625 illustriert, dass Puffer R 330 um Faktor 1/S (also den Kehrwert aus Schritt 610) auf die ursprünglichen Abmessungen des Puffers W 310 skaliert werden kann. In Schritt 630 kann das Ergebnis aus Schritt 625 in den Puffer R 330 geschrieben werden. Schritt 635 sieht vor, dass
der Puffer R 330 in den Puffer M zusammengemischt werden kann. Erfolgte die Eingabe durch das Pinselwerkzeug (wurde also "gemalt"), wird beim Zusammenmischen der Maximalwert der Quellpixel (Puffer R 330) oder der Zielpixel (Puffer M 335) verwendet; erfolgte die Eingabe hingegen durch das Löschwerkzeug (wurde also "radiert"), wird beim Zusammenmischen der Minimalwert von 1 - Quellpixel (Puffer R 330) oder 1 - Zielpixel (Puffer M 335) verwendet. Hierdurch wird sichergestellt, dass die Zusammenmischfunktion aufeinanderfolgende Ergebnisse (sowohl vom Pinsel- als auch vom Löschwerkzeug ausgehend) korrekt akkumuliert.
Fig. 17 ist ein Flussdiagramm, welches illustriert, wie ein Prozess zur Erzeugung eines Pixel- Distanz-Netzwerks und die Anwendung von Wegfmdungsalgorithmen in diesem Netzwerk benutzt werden, um Objektpixel zu ermitteln. Ziel dieses Flussdiagramms ist es, darzulegen, wie der kürzeste Weg zwischen einem beliebigen Pixel p in Puffer W 310, welches ein korrespondierendes Pixel mit Wert 1 in Puffer P 315 hat, zu Pixeln mit einem Wert von 1 in entweder Puffer B 320 oder Puffer D 325 gefunden werden kann. Den kürzesten Pfad zu ermitteln (im Folgenden als "Wegfindung" bezeichnet) kann auf verschiedene Weisen erreicht werden, etwa durch Anwendung des Dijkstra Algorithmus, des Bellman-Ford Algorithmus, des A* Such-Algorithmus, des Floyd- Warshall Algorithmus, des Johnson Algorithmus oder anderer geeigneter Algorithmen. Fig. 17 illustriert exemplarisch eine effiziente Methode, um diese Operation auszuführen und wendet dazu den Dijkstra Algorithmus und einen*Fibonacci-Heap als Datenstruktur an.
In Schritt 701 werden zunächst alle Pixel in Puffer R 330 mit dem Wert 0 initialisiert. Die Schritte 705 bis 745 iterieren über jedes Pixel p in Puffer W 310, das ebenfalls im Wirkbereich der Strokes liegt (also dessen jeweils korrespondierendes Pixel in Puffer P 315 den Wert 1 hat). In Schritt 710 wird geprüft, ob das mit p korrespondierende Pixel in Puffer B 320 oder Puffer D 325 den Wert 1 hat. Wenn keines der mit p korrespondierenden Pixel in Puffer B 320 oder Puffer D 325 den Wert 1 hat, wird in Schritt 735 am korrespondierenden Pixel in Puffer W 310 der Wert unendlich (bzw. ein Datentyp-Maximalwert bzw. ein sehr hoher Wert) abgelegt. Wenn jedoch mindestens eines der mit p korrespondierenden Pixel in Puffer B 320 oder Puffer D 325 den Wert 1 hat, wird in Schritt 715 p ein Distanzwert von 0 zugewiesen. In Schritt 720 wird geprüft (falls nicht bereits geschehen), ob das mit p korrespondierende Pixel mit Wert 1 in Puffer B 320 oder Puffer D 325 gefunden wurde. Lag es in Puffer D 325, wird in Schritt 725 das korrespondierende Pixel in Puffer R 330 auf Wert 0 gesetzt (und das Pixel damit als "äußeres" Pixel deklariert). Lag das korrespondierende Pixel mit Wert 1 aber in Puffer B 320, wird in Schritt 730 das korrespondierende Pixel in Puffer R 330 auf Wert 1 gesetzt (und das Pixel damit als "inneres" Pixel deklariert). Das
Pixel p wird dann in Schritt 740 dem Fibonacci-Heap hinzugefügt, woraufhin der Prozess zu Schritt 705 zurückkehrt, um weiter durch alle Pixel p in Puffer W 310 zu iterieren, die auch im Wirkbereich des Strokes liegen, also deren korrespondierendes Pixel in Puffer P 315 den Wert 1 hat.
Wenn alle Pixel p dem Fibonacci-Heap hinzugefügt wurden, wird in Schritt 750 ein Pixel mit kleinstem Distanzwert ausgewählt. In Schritt 755 werden nun die Nachbarpixel q dieses Pixels p ausgelesen. In Schritt 760 wird nun die Summe aus einerseits den Distanzwerten von p sowie andererseits der p-q-Distanz errechnet. Die p-q-Distanz kann beispielsweise die euklidische Distanz zwischen den Farben in jedem der beiden Pixel sein, wobei deren jeweilige Rot-, Grün- und Blaukomponenten (in [0,1], ermittelt aus den Pixelfarben des Puffers W 310) als Koordinaten in der Distanzfunktion verwendet werden. In Schritt 765 wird geprüft, ob die in Schritt 760 ermittelte Summe kleiner als der Distanzwert von q ist. Ist dies der Fall, wird der Distanzwert von q auf den Wert, der in Schritt 760 ermittelten Summe (zurück-)gesetzt. Ist dies nicht der Fall, wird mit der Ausführung von Schritt 780 fortgefahren. In Schritt 770 wird der Fibonacci-Heap nach kleinstmöglichem Distanzwert neu sortiert. In Schritt 775 wird der Wert des mit q korrespondierenden Pixels in Puffer R 330 auf den Wert des Pixels in Puffer R 330 gesetzt, das mit Pixel p korrespondiert. In Schritt 780 wird geprüft, ob der Fibonacci-Heap leer ist. Ist er es nicht, wird der Prozess bei Schritt 750 fortgesetzt. Ist er es, kehrt der Prozess in Schritt 799 zu Schritt 615 in Fig. 16 zurück.
Fig. 18 ist eine grafische Illustration der Inhalte der Puffer W, I, P, B und D. Fig. 18 wird im Rahmen anderer Abbildungen genauer erläutert.
Fig. 19 ist eine grafische Illustration der Inhalte der Puffer W, P, B und D. Fig. 19 wird im Rahmen anderer Abbildungen genauer erläutert.
Fig. 20 ist eine grafische Illustration der Inhalte der Puffer R, D, B und P. Fig. 20 wird im Rahmen anderer Abbildungen genauer erläutert.
Fig. 21 ist eine grafische Illustration des Inhalts von Puffer R, Anwendung eines Gaußschen Weichzeichners und einer Rampen-Schwellenwertfunktion. Fig. 21 wird im Rahmen anderer Abbildungen genauer erläutert.
Fig. 22 ist ein Flussdiagramm zur Illustration eines Prozesses, in dem ein Endgerät Anwender- Eingaben parallel entgegennimmt und verarbeitet. Im in Fig. 14 beschriebenen Ablauf werden
der Stroke-Eingabeprozess 500 und der Objekterkennungsprozeß 600 seriell, also nacheinander ausgeführt. Im in Fig. 22 dargestellten Prozess werden diese Schritte hingegen im Wesentlichen parallel ausgeführt, wobei der Objekterkennungsprozeß 600 (das "Wegfinden") im Wesentlichen durch die CPU 212, der Stroke-Eingabeprozess 500 ("malen") im Wesentlichen durch die GPU 214 ausgeführt wird.
In Schritt 1205 erhält das Endgerät ein aus Pixeln bestehendes digitales Photo (oder Zugriff auf ein solches). Dieses wird im Folgenden als Puffer I 305 referenziert. Der Puffer I 305 kann auf dem Display 240 des Endgerätes angezeigt werden. In oder vor Schritt 1210 wurde das Pinseloder Löschwerkzeug des Stroke-Eingabeprozesses 500 aktiviert (ähnlich wie in Schritt 505) und der Anwender hat durch Verschieben und Skalieren den sichtbaren Ausschnitt des Puffers I 305 anpassen können (ähnlich wie in Schritt 515 und 520).
In Schritt 1210 wird Puffer C 350 erzeugt. Dieser Puffer reflektiert den kumulierten Wirkbereich der Pinsel- und Lösch-Strokes, ähnlich Puffer P 315, wobei der Puffer C 350 aber auf das Display 240 gerendert wird, um dem Anwender visuelle Rückmeldung zu geben, da der Puffer P 315 ja nur den dann-aktuellen Pinsel- bzw. Löschwerkzeug-Wirkbereich enthält, der nur mit dem einzelnen, zugehörigen Stroke korrespondiert, der im dann aktuellen Lauf von Schritt 1220 bis 1240 getätigt wurde. Wie auch Puffer M 335 kann Puffer C 350 für alle Eingabe-Strokes fortbestehen. In den nachfolgenden Schritten ist zu beachten, dass alle Modifikationen an Puffer C 350 auch auf das Display 240 gerendert werden.
In Schritt 1215 macht der Anwender einen oder mehrere Strokes, währenddessen (parallel) Schritt 1220 ausgeführt wird. Auch diese Strokes werden in Puffer C 350 gespeichert.
In Schritt 1220 empfängt und verarbeitet das Endgerät eine Stroke-Eingabe des Anwenders als Unter-Sequenz, also als Teil der gesamten durch den Anwender getätigten Strokes. Schritt 1220 bis 1240 werden auf einem dedizierten Thread ausgeführt, wobei, abhängig von Arbeitslast und den technischen Möglichkeiten des Endgerätes, mehrere Instanzen der Schritte 1220 bis 1240 parallel auf jeweils eigenen Threads ausgeführt werden können. Die Länge der Subsequenz kann eine fixe Größe sein, die zum Beispiel durch Ablauf eines bestimmten Zeitraums oder durch eine bestimmte Anzahl traversierter Pixel bestimmt wird; sie kann aber auch dynamisch über die dann-aktuelle Arbeitslast der CPU 212 ermittelt werden: Unterliegt die CPU 212 zum Beispiel gerade vergleichsweise geringer Arbeitslast, kann die Länge einer Untersequenz entsprechend kürzer definiert werden. Die Untersequenz eines vom Anwender getätigten Strokes kann generell
durch den Stroke-Eingabeprozess 500 ("malen") von der GPU 214 empfangen und verarbeitet werden, die parallel stattfindende Objekterkennung 600 ("Wegfindung") wird aber im Wesentlichen von der CPU 212 ausgeführt, wodurch die ideale Länge einer Untersequenz von der derzeitigen Arbeitslast der CPU 212 abgeleitet werden kann.
In Schritt 1225 wird der Wirkbereich der Stroke-Untersequenz in Puffer C 350 optisch derart hervorgehoben, dass dem Anwender visuell mitgeteilt wird, dass seine jeweilige Eingabe gerade verarbeitet wurde. Die visuelle Hervorhebung kann zum Beispiel durch Ausblenden, Veränderung von Helligkeit, Farbe oder Anwendung von Transparenzeffekten geschehen.
In Schritt 1230 erzeugt die GPU 214 die Puffer W (310), P (315), B (320) und D (325), entsprechend dem zuvor in Bezug auf Fig. 15 beschriebenen Prozess zur Erzeugung dieser Puffer, da eine Sequenz an Strokes durch Iteration zwischen den Schritten 525 und 545 verarbeitet werden kann (ein Durchlauf für jeden Stroke in der Sequenz). Schritt 550 wird in dieser Schleife jedoch ausgelassen, da das Rendern bereits durch Verwendung des Puffers C 350 geschieht.
In Schritt 1235 wird die Objekterkennung durch den Objekterkennungsprozeß 600 ausgeführt, wie in Fig. 16 zuvor beschrieben, wobei nun Schritt 635 (Zusarnmenmischen von Puffer R 330 in Puffer M 335) ebenfalls threadsafe ausgeführt wird, sodass die Ergebnisse der Stroke-Eingaben- Untersequenz eines jeden Threads, der die Schritte 1220 bis 1240 ausfuhrt, sequentiell in die richtige Reihenfolge gebracht werden. In Schritt 1240 wird geprüft, ob noch weitere Strokes zu verarbeiten sind. Solange dies der Fall ist, wird an Schritt 1215 fortgefahren.
Fig. 23 demonstriert als Illustration eine Benutzeroberfläche einer möglichen Ausführungsform. In dieser Illustration wird eine Fotografie 1320 dargestellt, die als Beispielmotiv eine Gießkanne 1325 zeigt. Des Weiteren werden Werkzeug-Auswahlknöpfe zum Beispiel für das Pinselwerkzeug ("malen") 1305 und das Löschwerkzeug ("löschen") 1310 sowie eine Möglichkeit zum Ein- und Ausschalten der automatischen Objekterkennung 1315 dargestellt. Weitere Werkzeug- Auswahlknöpfe können dargestellt werden, wie etwa Werkzeuge zur Beeinflussung der Benutzeroberfläche, zum erneuten Berechnen der Objekterkennung oder eine Auswahlpalette fotografischer Filter und Effekte.
Fig. 24 demonstriert als Illustration eine Benutzeroberfläche einer möglichen Ausführungsform, in der durch den Anwender getätigte Stroke-Eingaben entgegengenommen wurden. Die Linie 1405 illustriert Puffer B 310 und zeigt die Koordinaten des Strokes, die der Anwender getätigt hat. Das zum Zeichnen ausgewählte Werkzeug ist das Pinselwerkzeug 1305. Der Wirkbereich des
Pinselwerkzeugs ist durch den Kreis 1415 illustriert. Die Fläche 1410 (im Rautenmuster kreuzschraffiert) ergibt sich durch Kumulation der Wirkbereiche endang des Pfades, der durch den Stroke beschrieben wurde und in Puffer P 315 abgelegt ist.
Fig. 25 demonstriert als Illustration eine Benutzeroberfläche einer möglichen Aus führungs form, in der durch den Anwender getätigte Stroke-Eingaben entgegengenommen und durch den Objekterkennungsprozeß verarbeitet wurden. Das Ergebnis der Objekterkennung ist durch Bereich 1505 (diagonale Schrägschraffur) dargestellt. Der Bereich 1505 liegt innerhalb des kumulierten Wirkbereichs 1410 und korrespondiert mit den Pixeln in Puffer M 335. Der Bereich 1505 umfasst auch den Löschbereich 1510, dessen Löschung in Fig. 26 und Fig. 27 beschrieben wird.
Fig. 26 demonstriert als Illustration eine Benutzeroberfläche einer möglichen Ausfuhrungsform, in der eine durch den Anwender getätigte Stroke-Eingabe nahe dem Löschbereich 1510 erfolgte, da der Löschbereich 1510 über die tatsächlichen Objektkanten hinausragt und zur Korrektur entfernt werden soll. Die Zeile 1605 zeigt den Pfad aus den Koordinaten des Strokes, die der Anwender getätigt hat. Der Bereich 1610 illustriert den kumulierten Wirkbereich des in Fig. 26 angewendete Löschwerkzeugs. Der Bereich 1615 illustriert den Wirkbereich des in Fig. 26 verwendeten Löschwerkzeugs zum Zeitpunkt der Beendigung des getätigten Strokes.
Fig. 27 demonstriert als Illustration eine Benutzeroberfläche einer möglichen Ausfuhrungsform, in der das Ergebnis aus Fig. 26 dargestellt wird. Der Bereich 1705 (in diagonaler Schrägschraffur dargestellt) illustriert das überarbeitete Objekt, bei dem ein im Bereich 1610 identifiziertes Objekt 1510 vom Bereich 1505 entfernt wurde. Nun kann ein Effekt oder Filter selektiv auf das erkannte Objekt im Bereich 1705 angewendet werden.