-
Die Erfindung betrifft ein Verfahren und eine Vorrichtung zum
elektronischen Modifizieren des Aussehens eines Bildes.
-
Aus GB-A 2 089 625 ist ein Videobild-Erzeugungssystem mit einem
Bildspeicher für den Farbinhalt eines Bildes und einem Speicher für die Eigenschaften
eines elektronischen Malwerkzeuges bekannt. Ein gespeichertes Bild wird in einem
dreistufigen Verfahren verändert: Ein durch die Position eines Zeichenstiftes auf
einem Tablett bezeichneter Teil von Bilddaten wird ausgelesen, in Abhängigkeit
von den Eigenschaften des elektronischen Malwerkzeuges verändert und in den
Bildspeicher zurückgeschrieben.
-
Es ist auch bekannt, einen Bildrand elektronisch zu verstärken, indem ein
elektronischer Pinsel um den Bildrand "geführt" wird. Diese Funktion ist nur
begrenzt anwendbar und es besteht Bedarf, komplexere Darstellungen einfach zu
erzeugen.
-
Erfindungsgemäß ist ein Verfahren zum elektronischen Modifizieren des
Aussehens eines Bildes vorgesehen, das in Form digitaler Daten gespeichert ist, die
den Farbinhalt des Bildes definieren, wobei das Verfahren folgende Schritte
aufweist: es werden Koordinatensätze gespeichert, die die Positionen um die
Bildränder definieren und für jeden Koordinatensatz werden die Eigenschaften eines
elektronischen Malwerkzeuges einschließlich des Profils des Malwerkzeuges mit
anschließend gespeicherten unterschiedlichen Eigenschaften gespeichert, worauf das
Bild abgebildet, das Malwerkzeug um den Bildrand herumgeführt, die laufende
Position des Malwerkzeuges mit den gespeicherten Koordinatensätzen verglichen
wird und wenn das Werkzeug am oder im Bereich eines gespeicherten
Koordinatensatzes liegt, werden die Malwerkzeug-Eigenschaften in jene vorher für diesen
Koordinatensatz bestimmten umgewandelt.
-
Weiterhin ist erfindungsgemäß eine Vorrichtung zum elektronischen
Modifizieren des Aussehens eines Bildes vorgesehen, das in Form digitaler Daten
gespeichert
ist, die den Farbinhalt des Bildes definieren, wobei die Vorrichtung einen
Speicher zum Speichern von Koordinatensätzen aufweist, die Positionen um den
Bildrand definieren und wobei für jeden Koordinatensatz die Eigenschaften eines
elektronischen Malwerkzeuges gespeichert werden einschließlich des Profils des
Malwerkzeuges mit nachfolgend gespeicherten unterschiedlichen Eigenschaften,
mit einem Monitor zur Darstellung des Bildes, und mit Prozessormitteln zum
Führen des Malwerkzeuges um den Bildrand, wobei die laufende Position des
Werkzeugs mit den gespeicherten Koordinatensätzen verglichen wird und wenn das
Werkzeug am oder im Bereich eines gespeicherten Koordinatensatzes ist, die
Werkzeugeigenschaften in die vorher für diesen Koordinatensatz bestimmten
umgewandelt werden.
-
Das erfindungsgemäße Verfahren und die erfindungsgemäße Vorrichtung
ermöglichen es, viele komplizierte Eigenschaften relativ leicht zu erreichen.
Beispielsweise ermöglicht das Verfahren nicht nur Darstellungen, wie
Tropfenschattierung oder Reliefbildung, sondern auch neue kreative Effekte.
-
Das Werkzeug oder Pinselprofil kann die geometrische Form des Werkzeugs
und/oder den Dichteverlauf innerhalb der Werkzeugfläche beinhalten, während
andere Werkzeugcharakteristiken die vom Werkzeug abgegebene Farbe bestimmen.
-
Die Koordinatensätze und Werkzeugcharakteristiken können in Form einer
Tabelle gespeichert werden.
-
Ein Beispiel eines erfindungsgemäßen Verfahrens und einer
erfindungsgemäßen Vorrichtung wird nun anhand der Zeichnung beschrieben. Es zeigen:
-
Fig. 1 ein Blockschaltbild der Vorrichtung;
-
Fig. 2 ein Blockschaltbild eines Graphikbildprozessors aus Fig. 1;
-
Fig. 3 ein Flußdiagramm zur Veranschaulichung der Funktion der
Vorrichtung; und
-
Fig. 4 ein Bild, auf das das Verfahren angewandt wird.
-
Die in Fig. 1 dargestellte Vorrichtung kann in zwei Hauptteile eingeteilt
werden, den Hostrechner 1 und das Graphikteilsystem 2. Die Unterteilung wird in Fig. 1
durch eine gestrichelte Linie verdeutlicht. Der Hostrechner 1 ist ein 68020
Mikroprozessorsystem
mit dem Betriebssystem Unix, einem Multitasking-Mehrbenutzer-
Betriebssystem. Der Hostrechner hat einen Ein-/Ausgabe-Prozessor 3 für eine
Tastatur 4, ein Digitalisiertablett 5 mit Stift 31, ein Systemlaufwerk 6 und andere
Datenquellen (nicht dargestellt). Der Ein-/Ausgabe-Prozessor 3 ist an einen
Systeminternen Bus (SIB) 7 angeschlossen, der in Verbindung mit ROM und RAM
Speicher 8, einer CPU 9 und einem Schnittstellenadapter 10 steht. Der
Schnittstellenadapter 10 ist mit mehreren Hochgeschwindigkeitsbildplatten 11 verbunden, die
Daten zur Beschreibung des Farbinhalts von Bildpixeln bei hoher Auflösung
speichern. Der Schnittstellenadapter 10 ist weiter über eine Schnittstelle 12 mit dem
Graphikteilsystem 2 verbunden. Wie bereits erwähnt, ist der Hostrechner bekannter
Bauart und wird nicht detailliert beschrieben. Der systeminterne Bus 7 ist
detaillierter in EP-A-0 332 417 beschrieben.
-
Das auf dem Hostrechner laufende Programm ist ein einzelner "Prozeß", der
Eingaben des Digitalisiertablettes, das vom Benutzer bedient wird, liest, diese
verarbeitet, das Graphikteilsystem 2 zur Anzeige der Ergebnisse auf dem Monitor 30
ansteuert. Im wesentlichen nutzt das System die Vorteile des Hostrechners, der in
der Lage ist, verschiedenartige Berchnungen durchzuführen, so daß nur wenig
Steuerdaten an das Graphikteilsystem übergeben werden müssen. Das Graphikteilsystem
kann besser als der Hostrechner 1 graphische Objekte erzeugen und verändern,
während der Hostrechner 1 Ein-/Ausgabe zu Peripheriegeräten, Festplatten und
Bandlaufwerken besser als das Graphikteilsystem 2 steuern kann und darüber hinaus
relativ einfach zu programmieren ist.
-
Das Graphikteilsystem 2 hat eine Schnittstelle 13, die es mit dem
Hostrechner 1 verbindet. Die Schnittstelle 13 ist an einen Bus 14 angeschlossen. Der Bus 14
steht in Verbindung mit fünf Graphikbildprozessoren (GIP) 15 bis 19. In diesem
Ausführungsbeispiel ist angenommen, daß die Bilder durch vier Farbkomponenten
Zyan, Magenta, Gelb und Schwarz beschrieben werden, weshalb ein GIP für jede
Farbe vorhanden ist. Somit verarbeitet GIP 15 die Farbkomponente Zyan, GIP 16
die Farbkomponente Magenta, GIP 17 die Farbkomponente Gelb, GIP 18 die
Farbkomponente Schwarz. Würde das Bild durch eine andere Anzahl Farbkomponenten
beschrieben, beispielsweise Rot, Grün und Blau, wären nur drei GIP erforderlich.
Der Vorteil, die GIP 15 bis 18 parallel vorzusehen, ist, daß alle Farbkomponenten
eines Bildpixels parallel verarbeitet werden, so daß die gesamte Verarbeitungszeit
um Faktor 4 gegenüber der Verarbeitungszeit mit einem einzigen Prozessor
verringert wird. Ein weiterer Vorteil der Verwendung von GIP ist, daß sie einen
kaskadierbaren Prozessor haben, mit dem der Programmierer für einzelne Anwendungen
nützliche Befehle festlegen kann.
-
Ein fünfter GIP 19 ist zur Festlegung einer oder mehrerer Masken sowie
weiterer Darstellungen vorgesehen.
-
Der Aufbau eines GIP aus Fig. 1 ist in Fig. 2 dargestellt. Jeder GIP hat einen
kaskadierbaren Prozessor 20, der mit einem Massenspeicher 21 in Verbindung steht.
Dieser Massenspeicher 21 enthält je nach Anforderung Bilddaten, Pinselprofile und
Text und wird als virtueller Bildspeicher verwendet.
-
Der kaskadierbare Prozessor 20 ist weiterhin mit einem Paar Rahmenspeicher
(frame store) 22, 23 verbunden, die beide die Abmessung 1280 x 1204 und 8 Bit
Tiefe haben. Jeder Rahmenspeicher in den GIP 15 bis 18 enthält 8 Bit Farbdaten.
Der Rahmenspeicher im Masken-GIP 19 kann eine 8 Bit Maske oder zwei einzelne
4 Bit Masken enthalten. Darüber hinaus kann ein Rahmenspeicher des GIP 19 dazu
verwendet werden, Menues in einer 4 Bit-Ebene und Overlays in der anderen 4 Bit-
Ebene anzuzeigen. Overlays bestehen aus Konstruktionslinien und Quadraten etc.,
die auf dem Monitor dargestellt werden sollen.
-
Die 8 Bit-Daten eines jeden Rahmenspeichers 22, 23 werden in 4 Bit
Portionen entsprechenden Verschiebe-, Verstärkungs- und Vergrößerungs-Schaltungen 24
bis 27 zugeführt, die auf bekannte Art eine oder mehrere der Funktionen
verschieben, vergrößern und verstärken bewirken. Die Ausgänge dieser Schaltungen werden
einer Mischerschaltung 28 zugeführt. Sie mischt Daten aus jedem Rahmenspeicher
22 der GIP 15 bis 18 mit den Daten aus den Rahmenspeichern 23 der GIP 15 bis 18
entsprechend der im Rahmenspeicher 22 des GIP 19 gespeicherten Maske. Diese
zweistufig arbeitende Mischerschaltung ist detaillierter in EP-A-0 344 976
beschrieben.
-
Der Ausgang der Mischerschaltung 28 wird einem zweistufigen
Farbumsetzer 29 zugeführt, der die Daten zur Anzeige auf dem Monitor 30 von
Vierfarbendarstellung in Dreifarbendarstellung, z.B. Rot, Grün und Blau, umwandelt.
-
Im Betrieb werden Bilder auf den Hochgeschwindigkeitsbildplatten 11
abgespeichert. Diese Bilder können durch Abtastung von originalen Folienvorlagen o.ä.
oder durch Malen mit einem elektronischen Pinsel erzeugt worden sein. Der
Hostrechner 1 sorgt dafür, daß die entsprechenden Anteile dieser Bilder in und aus dem
Massenspeicher 21 in die GIP 15 bis 18 gegeben werden und daß Pinselprofile in
und aus dem Massenspeicher 21 in die GIP 15 bis 18 und den GIP 19 gelesen
werden. Der Schnittstellenadapter 10 verfügt über einen eigenen 68020 Prozessor, um
eine unabhängige Steuerung der Hochgeschwindigkeitsbildplatten 11 zu
ermöglichen. Die GIP 15 bis 18 werden vom Hostrechner 1 gesteuert, um die Bilder im
Massenspeicher 21 auf vielfältige Art zu bearbeiten, so daß, wenn ein GIP auf eine
gegenwärtig nicht im Massenspeicher vorhandene Bildadresse zuzugreifen, ein Teil
des Speichers auf die Hochgeschwindigkeitsbildplatte zurückgeschrieben und ein
entsprechender neuer Teil eingelesen wird. Nachdem die GIP die Verarbeitung
abgeschlossen haben, sind die Daten in den Rahmenspeichern wie gewünscht
verschoben, vergrößert und/oder verstärkt, in der Mischerschaltung 28 gemischt, auf
Monitorformat umgewandelt und werden dargestellt. Will der Hostrechner 1
Menues auf dem Monitor anzeigen, werden diese in den Rahmenspeicher 23 des
Masken-GIP, bekannt als die "Overlay"-Ebene, eingelesen.
-
Am Anfang erzeugt der Benutzer eine Form, wie den Buchstaben "O" (Fig.
4), indem er den druckempfindlichen Stift 31 auf geeignete Weise über das
Digitalisiertablett 5 bewegt. Alternativ könnte das Bild auch von den
Hochgeschwindigkeitsbildplatten 11 stammen. Die Farbe eines jeden Bildpixels ist als eigene
Farbkomponente in den entsprechenden Rahmenspeichern 22 der GIP 15 bis 18
gespeichert. Gleichzeitig ist eine monochrome Version des Bildes im Rahmenspeicher 22
des Masken-GIP 19 gespeichert, der zuvor auf Null gelöscht wurde.
-
Wird die "Randumführen"-Funktion gewünscht, wird ein geeigneter
Menuebefehl ausgewählt (Schritt 40 aus Fig. 3). Auf dem Monitor 30 ist dann ein
kreisförmiger
Zeiger (Cursor) vorhanden. Der Benutzer bewegt diesen Zeiger über dem
Monitor auf normale Art mit Hilfe des Stiftes 31 und des Digitalisiertabletts 5. Der
Zeiger wird über dem Teil des Objektumrisses angeordnet, an dem eine Änderung
des Pinsels gewünscht wird. Dann wirde der Stift 31 gedrückt und dient so als
Schalter, um dem Hostrechner 1 mitzuteilen, daß dieser Ort ausgewählt ist (Schritt
41). Nun erscheint das Pinselmenue auf dem Monitor 30, so daß der Benutzer das
gewünschte Pinselprofil auswählen kann, das ab diesem Punkt verwendet werden
soll (Schritt 42). Das wird dann vom Hostrechner 1 abgespeichert. Der Benutzer
kann das Vorgehen um den Objektrand so oft wie nötig wiederholen. Das
Programm im Hostrechner 1 stellt eine Liste von Koordinaten auf, die mit je einer
Parameterliste für einen neuen Pinsel zusammenhängen (z.B. Koordinaten 33, 34 aus
Fig. 4).
-
Der Hostrechner 1 bestimmt dann die Lage der verschiedenen Ränder, indem
er ein Befehl- und Datenpaket an jeden GIP 15 bis 19 sendet. Das Paket enthält die
Adresse der "Randumführen"-Funktion im Programmspeicher der GIP und eine
(x,y)-Adresse. Diese Adresse ist der Bildort des Zeigers, der den Startpunkt für die
"Randumführen"-Funktion angibt. Zu diesem Zeitpunkt enthält nur der Masken-GIP
19 brauchbare Information, da er immer die Umrisse einer Zeichnung enthält,
unabhängig von der Farbgebung.
-
Nach dem von den GIP 15 bis 19 durchgeführten Algorithmus werden die
Daten in den Bildspeicher mit einem vorbestimmten Suchmuster überprüft,
ausgehend von dem im Maskenbildspeicher 22 angegebenen Startpunkt. Das unmittelbar
über dem Startpunkt liegende Pixel wird daraufhin geprüft, ob sein Wert Null ist. Ist
das der Fall, wird das nächste darüberliegende Pixel untersucht. So wird
fortgefahren, bis ein nicht nullwertiges Pixel gefünden ist, was bedeutet, daß der Rand des
"O" 32 gefunden wurde. Wurde ein nicht nullwertiges Pixel "nördlich" der
aktuellen Position gefunden, speichert der Hostrechner 1 die Koordinaten dieses Pixels in
einem Zwischenspeicher. Das Programm sucht dann nach "Osten", "Westen" oder
"Süden" nach einem nullwertigen Pixel. Ein Algorithmus bekannter Art stellt sicher,
daß die Koordinaten des Objektumrisses mitprotokolliert werden. Mit diesem
Verfahren
wird fortgefahren, bis der Startpunkt des Objektes wieder erreicht ist. Diese
Funktion der GIP ist damit beendet (Schritt 44).
-
Der Hostrechner 1 erhält die Koordinaten vom GIP 19 losweise, bis der GIP
anzeigt, daß der Spurverfolgungsalgorithmus das Objekt vollständig umrundet hat.
Dieses geschieht, indem spezielle Werte an den Hostrechner geschickt werden, die
nicht als Koordinaten fehlinterpretierbar sind. Der Hostrechner 1 stellt die
Zwischenspeicher mit den Koordinaten zu einem einzigen Zwischenspeicher
zusammen, den er dann filtert und rationalisiert. In einem konventionellen System wird
der Zwischenspeicher mit den Koordinaten dann an einen Programmteil zum
Pinselzeichen übergeben und von diesem so verwendet, als stammten die Koordinaten
von einem Digitalisiertablett eines Benutzers. Der aktuelle Pinsel (Art, Farbe,
Profil) wird in die Rahmenspeichers 22 der GIP eingelesen. Der Hostrechner 1 "sagt"
den GIP, die Koordinaten aus dem Zwischenspeicher zum Malen zu verwenden.
-
Gemäß dieser Erfindung weiß der Hostrechner 1 jedoch von der Existenz der
Koordinaten-/Pinselparameter-Liste, so daß nach Beginn des "Umführens" mit dem
Pinsel (Schritt 45) der Hostrechner 1 die Koordinaten dieser Liste mit denen der
Liste der GIP vergleicht (Schritt 46). Die programmierten Koordinaten sind nicht
Einzelkoordinaten, sondern kleine Bereiche um die aktuelle Koordinate herum. Hat
der Benutzer den Rand des Objektes sorgfaltig "markiert", führt die Koordinate
eines GIP wahrscheinlich durch diesen Bereich. Das bedeutet, die Koordinaten für
die GIP müssen alle getestet werden, um festzustellen, ob sie nahe an den
programmierten Koordinaten vorbeiführen. Tun sie das (Schritt 47), können die GIP-
Koordinaten in mehrere einzelne Koordinatenlisten aufgeteilt werden, die jede
einem besonderen Pinsel zugeordnet sind. Jede dieser Listen kann vom
Programmteil zum Pinselzeichnen verwendet werden, um verschiedene Konturen um das
gleiche Objekt zu malen.
-
Will der Benutzer beispielsweise den Buchstaben "O" 32 als Relief
darstellen, wird ein Programmodus begonnen und ein kreisförmiger Zeiger auf die untere
linke "Ecke" der Buchstabenumrißlinie auf dem Monitor geführt. Durch Drücken
des Stiftes wird "Beginn des Pinselzeichnens" z.B. mit einem weißen, rundern Pin-s
sel definiert und gleichzeitig die Startkoordinate abgespeichert. Als nächstes führt
der Benutzer den Zeiger auf die obere rechte Ecke der Umrißlinie, drückt den Stift
und wählt einen schwarzen Pinsel. Die "Randumführen"-Funktion wird dann auf
bekanntem Art durchgeführt. Wie beschrieben, gibt der GIP 19 an den Hostrechner
1 eine Koordinatenliste aus der Umgebung der Umrißlinie. Die Liste wird vom
Hostrechner 1 so verarbeitet, daß er zwei Koordinatenlisten erzeugt, eine beginnend
von der unteren linken Ecke des Buchstabens auf dem Monitor und eine von der
oberen rechten Ecke zur unteren linken. Wichtig ist, daß der Hostrechner aus der
Liste der Randkoordinaten die vom Benutzer eingegebene Startkoordinate innerhalb
einer gewissen Pixelanzahl nahe des ersten Programmpunktes findet. Diese
Startkoordinate wird aus der Liste ausgelesen und an den Beginn einer neuen Liste gesetzt.
Weiter folgen alle Koordinaten, bis das Ende des ursprünglichen Zwischenspeichers
erreicht ist (z.B. wieder zurück am Startpunkt der Zeichnung) oder bis eine
Koordinate ausreichend nahe des zweiten Programmpunktes liegt. Im letzteren Fall wird
eine neue Liste begonnen. Schließlich "steuert" jede dieser Listen den Programmteil
zum Pinselzeichnen, um eine Relief-Funktion (oder viele andere Effekte)
herzustellen.