Bildbearbeitungseinrichtungen und -verfahren Image processing equipment and processes
Die Erfindung betrifft Bildbearbeitungseinrichtungen und -verfahren. Im Besonderen findet die Erfindung Anwendung auf dem Gebiet der sogenannten Nideophone oder Bildtelephone.The invention relates to image processing devices and methods. In particular, the invention finds application in the field of so-called nideophones or video telephones.
Nideoko miinikationsvorrichtungen, Nideokommumkationssysteme und Nideokommunikati- onsverfahren, die neben dem auditiven Bereich auch visuelle Medien bzw. Kanäle zur Übermittlung von Ton- und Bildinformation anbieten, sind bekannt, haben jedoch in der breiten Bevölkerung noch keine große Verbreitung gefunden. Ein wesentlicher Nachteil beim Stand der Technik ist nämlich, daß durch die damit verbundene Übertragung von Bildinformationen zu wenigstens einem weiteren Konimunikationsteilnehmer ein häufig nicht erwünschter Eingriff in die Privatsphäre des Anwenders erfolgt, hl Abhängigkeit davon, wer den Kommunikationskontakt auslöst, möchte der Anwender und/oder sein Kommunikationspartner gewisse visuelle Informationen übertragen oder nicht. Am liebsten würden die Kommunikationsteilnehmer ein auf den jeweiligen Kommunikationspartner abgestimmtes optimales „Wunscherscheinungsbild" übertragen. Dazu gehört nicht nur ein passender Hintergrund, sondern auch eine geeignete Kleidung und vorteilhaftes übriges Aussehen.Nideoki miinikationsvorrichtungen, Nideokommumkationssysteme and Nideokommunikations- that, in addition to the auditory area also offer visual media or channels for the transmission of sound and image information are known, but have not yet been widely used in the general population. A major disadvantage of the prior art is that the associated transmission of image information to at least one other communication participant often interferes with the privacy of the user, depending on who triggers the communication contact, the user would like and / or his communication partner transmits certain visual information or not. The communication participants would prefer to transmit an optimal “desired appearance” tailored to the respective communication partner. This includes not only a suitable background, but also suitable clothing and an advantageous other appearance.
I'I '
Die Erfindung geht von dem Vorhandensein audiovisueller Kommunikationationsmedien aus. Allgemeine Merkmale audiovisueller Kommunikationsmedien sind Mikrophon und Lautsprecher, Videokamera und Bildschirm, eine Steuerungseinheit, eine Verarbeitungseinheit abgehend zur Verarbeitung von Audio- und Videosignalen, einer Verarbeitungseinheit kommend zur Verarbeitung von Audio- und Videosignalen und einer Kompressionseinheit zur optimalen Ausnützung der zur Verfügung stehenden Leitungsbandbreite, z.B. über analoge und digitale Telefonnetze, paketgesteuerte Kommunikation über das Internet, interne Computernetze usw.The invention is based on the presence of audiovisual communication media. General features of audiovisual communication media are microphone and loudspeaker, video camera and screen, a control unit, a processing unit outgoing for processing audio and video signals, a processing unit coming for processing audio and video signals and a compression unit for optimal use of the available line bandwidth, e.g. via analog and digital telephone networks, packet-controlled communication via the Internet, internal computer networks, etc.
Insbesondere betrifft die Erfindung Bildbearbeitungseinrichtungen, wie z.B. in Tele- oder Videokommunikationsvorrichtungen mit Anwenderbilddaten-Eingabeeinrichtungen zum Eingeben von aktuellen Anwenderbilddaten, Bilddaten-Editiereinrichtungen zur Erzeugung von edi-
tierten Anwenderbilddaten aus den aktuellen Anwenderbilddaten, und Bilddaten- Ausgabeeinrichtungen zum Ausgeben von Anwenderbilddaten an beispielsweise wenigstens einen weiteren Kommunikationsteilnehmer.In particular, the invention relates to image processing devices, such as, for example, in telecommunications or video communication devices with user image data input devices for inputting current user image data, image data editing devices for generating edi oriented user image data from the current user image data, and image data output devices for outputting user image data to, for example, at least one further communication subscriber.
Basis der vorliegenden Erfindung ist auch ein Bildbearbeitungsverfahren für z.B. Tele- oder Videokommunikationsverfahren, wobei wenigsten ein Kommunikationsteilnehmer oder allgemein Anwender mittels Identifikationseinrichtungen identifiziert wird, aktuelle Anwenderbilddaten in Anwenderbilddaten-Eingabeeinrichtungen eingegeben werden, eine Editierauswahlsteuerung die aktuellen Anwenderbilddaten in Abhängigkeit vom Identifikationsergebnis der Identifikationseinrichtungen an Bilddaten-Editiereinrichtungen leitet oder nicht, die Bilddaten-Editiereinrichtungen, wenn sie die aktuellen Anwenderbilddaten erhalten haben, daraus oder dafür editierte Anwenderbilddaten erzeugt, und schließlich uneditierte aktuelle oder, falls vorhanden, editierte Anwenderbilddaten mittels Bilddaten- Ausgabeeinrichtungen ausgegeben werden. Ferner ist Grundlage ein entsprechend ausgestattetes oder funktionierendes Tele- oder Videokommunikationssystem.The basis of the present invention is also an image processing method for e.g. Tele or video communication method, whereby at least one communication subscriber or user in general is identified by means of identification devices, current user image data are entered in user image data input devices, an edit selection controller directs the current user image data to image data editing devices as a function of the identification result of the identification devices, the image data editing devices, when they have received the current user image data, generated user image data edited therefor or for this, and finally unedited current or, if present, edited user image data are output by means of image data output devices. Furthermore, the basis is an appropriately equipped or functioning telecommunications or video communication system.
Solche Vorrichtungen, Verfahren und Systeme sind in der Internationalen Patentanmeldung PCT/DE 00/00442 mit dem Anmeldetag 16. Februar 2000 und den Prioritätsdaten 16. Februar und 8. Oktober 1999 derselben Anmelderin offenbart. Der vollständige Offenbarungsgehalt dieser Anmeldung wird hiermit zur Vermeidung bloßer wiederholender Wiedergabe durch die vorliegende Bezugnahme vollumfänglich in die gegenwärtigen Unterlagen übernommen. Insbesondere gilt diese Bezugnahme für Editiermöglichkeiten und Steuerungen.Such devices, methods and systems are disclosed in the international patent application PCT / DE 00/00442 with the filing date February 16, 2000 and the priority dates February 16 and October 8, 1999 by the same applicant. The full disclosure content of this application is hereby incorporated in its entirety in the current documents to avoid merely repetitive reproduction by means of the present reference. In particular, this reference applies to editing options and controls.
Das Grundprinzip dieser Technologie besteht darin, daß das von einem Anwender aufgenommene Bild in beispielsweise -drei Ebenen zerlegt wird, die Gesichts- oder Kopf-Ebene, die Körperebene und die Hintergrundebene, die jeweils für sich editiert werden können. Darauf basieren auch die Vorrichtungs- und Verfahrensausgestaltungen und -merkmale der vorliegenden Erfindung.The basic principle of this technology is that the image taken by a user is broken down into, for example, three levels, the face or head level, the body level and the background level, which can each be edited individually. The device and method configurations and features of the present invention are also based on this.
Die Vorrichtungen, Verfahren und Systeme insbesondere gemäß der PCT/DE 00/00442 sollen mit der vorliegenden Erfindung weiter verbessert werden.The devices, methods and systems, in particular according to PCT / DE 00/00442, are intended to be further improved with the present invention.
Soweit nachfolgend auf Tele- oder Videokommunikationsvorrichtungen oder Tele- oder Videokommunikationsverfahren Bezug genommen wird, erfolgt dies lediglich exemplarisch und nicht beschränkend.
Dazu schafft die vorliegende Erfindung eine Bildbearbeitungseinrichtung mit Anwenderbilddaten-Eingabeeinrichtungen zum Eingeben von aktuellen Anwenderbilddaten, Bilddaten-Editiereinrichtungen zur Erzeugung von editierten Anwenderbilddaten aus den aktuellen Anwenderbilddaten, und Bilddaten- Ausgabeeinrichtungen zum Ausgeben von Anwenderbilddaten, wobei die Bilddaten-Editiereinrichtungen Verarbeitungseinrichtungen enthalten, die dazu ausgelegt sind, das größte sich bewegende Objekt zu ermitteln und als Anwender oder verfügbare Teile des Anwenders zu identifizieren und lokalisieren sowie zu verfolgen.Insofar as reference is made below to telecommunications or video communication devices or telecommunications or video communication methods, this is done only by way of example and not by way of limitation. To this end, the present invention provides an image processing device with user image data input devices for entering current user image data, image data editing devices for generating edited user image data from the current user image data, and image data output devices for outputting user image data, the image data editing devices containing processing devices designed for this purpose are to determine the largest moving object and to identify and locate and track them as users or available parts of the user.
Vorzugsweise ist bei einer erfindungsgemäßen Bildbearbeitungseinrichtung femer vorgesehen, daß die Verarbeitungseinrichtungen das größte sich bewegende Objekt segmen- tieren, um die erhaltenen Daten weiteren Bearbeitungen zuzuführen.In an image processing device according to the invention, it is also preferably provided that the processing devices segment the largest moving object in order to feed the received data to further processing.
Das Ziel der Erfindung wird auch mittels einem Bildbearbeitungsverfahren erreicht, bei dem aktuelle Anwenderbilddaten erfaßt, editiert und ausgegeben werden, wobei das größte sich bewegende Objekt ermitteln und als Anwender oder verfügbare Teile des Anwenders identifiziert und lokalisiert sowie verfolgt wird.The object of the invention is also achieved by means of an image processing method in which current user image data are acquired, edited and output, the largest moving object being determined and identified and located and tracked as the user or available parts of the user.
Bei einem erfindungsgemäßen Bildbearbeitungsverfahren ist bevorzugt ferner vorgesehen, daß das größte sich bewegende Objekt segmentieren wird und seine Daten weiteren Bearbeitungen zugeführt werdenIn an image processing method according to the invention, it is preferably further provided that the largest moving object is segmented and that its data are fed to further processing
Weitere vorteilhafte und bevorzugte Ausgestaltungen der Erfindung ergeben sich aus der Gesamtheit der vorliegenden Unterlagen einschließlich dem Offenbarungsgehalt der PCT/DE 00/00442 sowie dem Stand der Technik und dem fachmännischen Wissen.Further advantageous and preferred embodiments of the invention result from the entirety of the present documents including the disclosure content of PCT / DE 00/00442 as well as the state of the art and the professional knowledge.
Aus dem Offenbarungsgehalt der vorliegenden Unterlagen ergeben sich noch weitere für sich alleine schutzfähige und schutzwürdige Aspekte der Erfindung, auch ohne Kombination mit den in den Ansprüchen formulierten und vorstehend erläuterten Aspekten der Erfindung. Die Erfindung betrifft insofern jegliche durch die Merkmale und Merkmalskombinationen, die in den vorliegenden Unterlagen offenbart sind, bestimmten Ausgestaltungen von Bildbearbeitungseinrichtungen und -verfahren, die insofern sowohl zum Gegenstand der vorliegenden Anmeldung als auch zu Gegenständen von Teilanmeldungen gemacht werden können.From the content of the disclosure of the present documents, further aspects of the invention that can be protected and are worthy of protection are obtained on their own, even without a combination with the aspects of the invention formulated in the claims and explained above. In this respect, the invention relates to any configurations of image processing devices and methods determined by the features and combinations of features disclosed in the present documents, which can be made both the subject of the present application and the subject of divisional applications.
Nachfolgend wird die Erfindung lediglich exemplarisch anhand eines Ausfuhrungsbeispiels näher erläutert, auf das und dessen Merkmale sowie Merkmalskombinationen die Erfindung aber nicht beschränkt ist .
Die vorliegende Erfindung wird als verbesserte Blue-Screen-Technologie angesehen, die besonders geeignet ist für, aber nicht beschränkt ist auf Videokonferenz- Anwendungen oder Vi- deophonie.The invention is explained in more detail below merely by way of example using an exemplary embodiment, to which and its features and combinations of features, however, the invention is not restricted. The present invention is considered to be an improved blue screen technology that is particularly suitable for, but not limited to, video conferencing applications or video phonography.
Segmentation von Schauspielern in Film- und Videosequenzen ist seit vielen Jahren in den Film- und Fernsehindustrien ein wichtiges Thema. Für die Segmentation in diesen Industrien wurde typischerweise einen Ansatz gewählt, der erfordert, daß ein Schauspieler mit einem einfarbigen Hintergrund hinter dem Schauspieler aufgenommen wird. Diese bekannte einzige Farbe wird dann wie ein Schlüssel verwendet, um zu wissen, welche Teile jedes einzelnen Bild-Rahmens der Hintergrund ist und welche Teile jedes einzelnen Bild-Rahmens der Schauspieler ist. Nach der Segmentation kann der Schauspieler eingefügt werden in einen oder überlagert werden mit einem neuen, möglicherweise zusammengesetzten Rahmen.Segmentation of actors in film and video sequences has been an important topic in the film and television industries for many years. For segmentation in these industries, an approach has typically been chosen that requires an actor with a plain background to be included behind the actor. This known single color is then used like a key to know which parts of each frame is the background and which parts of each frame is the actor. After segmentation, the actor can be inserted into or overlaid with a new, possibly composite frame.
Mit dem Auftreten von Videokonferenz- Applikationen auf Desktop-Computern und bevorstehend auf dem Markt von handgehaltenen und tragbaren Vorrichtungen ist nun Segmentation, die günstige Kameras und Vorrichtungen mit geringem Leistungsverbrauch verwendet, ein Thema.With the advent of video conferencing applications on desktop computers and the upcoming handheld and portable device market, segmentation using low cost cameras and low power consumption devices has become an issue.
Im folgenden wird eine Lösung zu diesem Thema der Echtzeit-Segmentation für insbesondere Videokonferenz- Anwendungen und Videophonie, vorzugsweise auf einem Desktop oder handgehaltenen und tragbaren Vorrichtungen gezeigt.In the following, a solution to this topic of real-time segmentation is shown for in particular video conference applications and videophony, preferably on a desktop or hand-held and portable devices.
Der Schlüsselgedanke ist, die Tatsache auszunutzen, daß ein Mensch während einer Videokonferenzsitzung oder eines Videoferngesprächs typischerweise die größte Figur im Blickfeld ist. Die gegenwärtige neue Technik macht die Notwendigkeit, daß der Mensch vor einem spezifisch gefärbten Hintergrund ist, überflüssig. Zusätzlich wird gezeigt, daß bewegte Objekte im Hintergrund vorhanden sein können, und wie diese Objekte automatisch gefunden und aus der Liste der möglichen interessanten Objekte entfernt werden können.The key idea is to take advantage of the fact that a person is typically the largest figure in view during a videoconferencing session or long distance video conversation. The current new technology eliminates the need for man to be against a specifically colored background. In addition, it is shown that moving objects can exist in the background and how these objects can be automatically found and removed from the list of possible interesting objects.
Anwendungen für Echtzeit-Segmentation von Menschen, z.B. in Videokonferenz- Anwendungen, beinhalten, daß ein Hintergrund ersetzt wird. Zusätzlich wird Segmentation als ein erster Schritt in der Gesichtsdetektion und -erkennung verwendet, und als ein erster Schritt zur Änderung jedes Teiles des segmentierten Menschen.Applications for real-time segmentation of humans, e.g. in video conferencing applications involve replacing a background. In addition, segmentation is used as a first step in facial detection and recognition, and as a first step in changing every part of the segmented person.
Viele dieser vorhandenen Ansätze zum Thema der segmentierten Schauspieler und Videosequenzen existieren seit vielen Jahren. Diese Ansätze basieren oft auf Farbe (RuzonOO, Wojda- la98, Szeliski98, Nachshon97, Hall97, Shimoda89) und einige auf der Figur (Panusopone99,
PanusoponeOO, Qian99, Poth90, Ben-EzraOO). Kürzlich Ansätze verwenden Tiefenkarten, vorhergehende Information, die mit der Verwendung von multiplen Kameras (Kompatsiaris98) oder mit vorhergehenden Wissen des Hintergrundes (KompatsiarisOO) verwendet wird.Many of these existing approaches to segmented actors and video sequences have existed for many years. These approaches are often based on color (RuzonOO, Wojdala98, Szeliski98, Nachshon97, Hall97, Shimoda89) and some on the figure (Panusopone99, PanusoponeOO, Qian99, Poth90, Ben-EzraOO). Recent approaches use depth maps, previous information used with the use of multiple cameras (Kompatsiaris98) or with previous background knowledge (KompatsiarisOO).
Der vorliegende Ansatz arbeitet gut für teileingeschränkte oder -beschränkte („semi con- strained") Szenen. Dieser Ansatz erwies sich als eine effektive Lösung nicht nur für Desktop- Videokonferenz- Anwendungen, sondern auch auf dem aufkommenden Markt mit handgehaltenen Videokonferenz- oder Videophonvorrichtungen und anderen ähnlichen Anwendungen. In allen getesteten Anwendungen wurden günstige Desktopvideokameras oder eine Digitalvideokamerakarte verwendet.The present approach works well for semi constrained scenes. This approach has proven to be an effective solution not only for desktop video conferencing applications, but also in the emerging market for handheld video conferencing or videophone devices and other similar applications, cheap desktop video cameras or a digital video camera card were used in all tested applications.
Diese Lösung läuft in Echtzeit und baut auf auf dem und erweitert den traditionellen Gedanken der Verwendung eines Blue-Screens oder einer anderen einheitlichen Farbe, wie grün, als Hintergrund.This solution runs in real time and builds on and extends the traditional idea of using a blue screen or other uniform color, such as green, as the background.
Nachfolgend werden folgende Aspekte diskutiert:The following aspects are discussed below:
Abschnitt „Semi Constrained Szenen": Die charakteristischen Formen von Menschen bei Videokonferenzanwendungen."Semi Constrained Scenes" section: The characteristic shapes of people in video conferencing applications.
Abschnitt „Advanced Blue Screen": Der eingesetzte Segmentations- Algorithmus. Abschnitt „Verwendung in Videokonferenzanwendungen": Anwendungen zum Nutzen eines detektierten Gesichts. Abschnitt „Schlußfolgerung": Schlußfolgerungen.Section "Advanced Blue Screen": The segmentation algorithm used. Section "Use in video conference applications": Applications for the use of a detected face. Conclusion section: Conclusions.
Semi Constrained (teilweise 'eingeschränkte oder beschränkte) SzenenSemi constrained scenes
Der hierin beschriebenen Ansatz arbeitet mit sogenannten „semi constrained" Szenen. „Semi constrained" Szenen werden definiert als Szenen, die die folgenden Kriterien erfüllen. Zuerst müssen die Randfarben des Kopfes und der Kleidung eines Videokonferenzteilnehmers mit der Farbe des Hintergrunds in Kontrast stehen. Zweitens dürfen sich keine anderen Szeneobjekte mit dem Menschen überschneiden.The approach described here works with so-called "semi-constrained" scenes. "Semi-constrained" scenes are defined as scenes that meet the following criteria. First, the border colors of a video conference participant's head and clothing must contrast with the color of the background. Second, no other scene objects may overlap with humans.
Das erste Kriterium wird typischerweise leicht erfüllt, da z.B. die meisten Büroumgebungen feste, helle Wände haben und Videokonferenzteilnehmer typischerweise dunkle Kleidung tragen. Es ist nicht notwendig, daß Wände hell sind und Videokonferenzteilnehmer dunkle Kleidung tragen, nur daß ein leichter Kontrast zwischen den beiden besteht.
Das zweite Kriterium ist auch einfach zu erfüllen, da die meisten Büroumgebungen typischerweise Objekte an den Wänden, wie Uhren und gerahmte Kunstwerke, aufweisen, zwischen denen Videokonferenzteilnehmer leicht plaziert werden können, so daß diese Objekte sich nicht mit seinem Kopf oder Körper oder ihren Köpfen oder Körpern überschneiden.The first criterion is typically easily met because, for example, most office environments have solid, light walls and video conference participants typically wear dark clothing. It is not necessary for walls to be light and for video conference participants to wear dark clothes, only that there is a slight contrast between the two. The second criterion is also easy to meet, since most office environments typically have objects on the wall, such as clocks and framed works of art, between which videoconferencing participants can be easily placed so that these objects do not interfere with his head or body or their heads or Intersect bodies.
Advanced (Fortgeschrittener) Blue Screen Segmentations- AlgorithmusAdvanced Blue Screen Segmentation Algorithm
Unter Verwendung einer Live-Videoeinspeisung von einer günstigen Digitalvideokamera führt dieser Ansatz mehrere aufeinanderfolgende Schritte durch, um jeden Nideorahmen zu verarbeiten. Der erste Schritt extrahiert 8-bit Luminanzdaten von den vom Video eingefangenen Vollfarbendaten. Unter Verwendung dieses Lichtkanals wird bei Verwendung des Medianfilters Salz-und-Pfeffer-Rauschen entfernt. Daraufhin werden unter Verwendung eines Operators, wie Sobel, Ränder detektiert. Eine Ausschneidbegrenzung (cutoff thresholding) entfernt anschließend alle Ränder, deren „Randschärfe" (edginess) unter einem spezifizierten, numerischen Wert liegt. Das Herz dieses Segmentatins- Algorithmus ist ein Mehrstufen-Vek- torisierungsvorgang, der als Advanced Blue Screen (ABS) bezeichnet wird.Using live video feed from an inexpensive digital video camera, this approach performs several consecutive steps to process each video frame. The first step extracts 8-bit luminance data from the full color data captured by the video. Using this light channel, salt and pepper noise is removed using the median filter. Then edges are detected using an operator such as Sobel. A cutoff thresholding then removes all edges whose "edge sharpness" (edginess) is below a specified numerical value. The heart of this segmentatins algorithm is a multi-stage vectorization process, which is referred to as an advanced blue screen (ABS) ,
ABS beginnt den Suchvorgang Reihe für Reihe in der unteren, linken Ecke jedes Nideorah- mens. Immer wenn ein Randpixel gefunden wird, tastet ABS den Rand in einer Uhrzeigersinn-Richtung ab, bis das Originalpixel erreicht ist. Während ein Rand abgetastet wird, wird eine sekundäre Maske, bekannt als die Segmentationsmaske, erzeugt. Während des Randabtastvorgangs wird eine numerierte Grenze in der Segmentationsmaske eingestellt.ABS begins the search process row by row in the lower left corner of each nideo frame. Whenever an edge pixel is found, ABS scans the edge in a clockwise direction until the original pixel is reached. While an edge is being scanned, a secondary mask, known as the segmentation mask, is created. A numbered limit is set in the segmentation mask during the edge scanning process.
Sobald die aktuelle Figur abgetastet ist, zeigt sich eine invertierte Flutfüllung (inverted flood fill) innerhalb des eingrenzenden Rechtecks der neu abgetasteten Figur oder Form. Die Grenzdaten und die invertierten Flutfüllungsdaten werden dann verwendet, um diese neu abgetastete Figur oder Form zu „flutfüllen", während die neu gefundenen Innenfigu ixel eindeutig numeriert werden und der neu gefundene Oberflächenbereich der Figur oder Form oder Gestalt berechnet wird.As soon as the current figure is scanned, an inverted flood fill appears within the bounding rectangle of the newly scanned figure or shape. The boundary data and the inverted flood fill data are then used to "flood fill" this rescanned figure or shape, while the newly found interior figure is clearly numbered and the newly found surface area of the figure or shape or shape is calculated.
Dieser Vorgang zum Finden, Abtasten und Flutfüllen jeder geschlossenen Figur in dem aktuellen Videorahmen geht weiter, bis alle Formen oder Gestalten gefunden sind. Es ist zu beachten, daß die Grenzpixel für jede gefundene Figur oder Form eindeutig numeriert werden und genauso alle Innenpixel jeder Figur unterschiedlich und eindeutig numeriert werden.
In dem letzten Durchgang über die Nideorahmendaten werden alle Figuren außer der größten Figur automatisch entfernt. Dies schließt den Segmentationsvorgang ab, der Grenzpixel-genau ist.This process of finding, scanning, and flooding each closed figure in the current video frame continues until all shapes or forms are found. It should be noted that the boundary pixels are uniquely numbered for each figure or shape found, and likewise all inner pixels of each figure are numbered differently and uniquely. In the last pass through the Nideorahmendaten all figures except the largest figure are automatically removed. This completes the segmentation process, which is border pixel accurate.
Verwendung in VideokonferenzanwendungenUse in video conferencing applications
Die Segmentationsdaten, die durch diesen Ansatz erzeugt werden, können für zahllose Zwek- ke verwendet werden. Der erste Verwendungszweck ist ein Echtzeit-Hintergrungersetzen sein. Ein zweiter Verwendungszweck ist, das Gesicht des Anwenders zu detektieren, um eine Gesichtserkennung oder -bearbeitung durchzuführen. Ein dritter Verwendungszweck ist, das Gesicht des Anwenders zu verbergen.The segmentation data generated by this approach can be used for countless purposes. The first use is real-time background replacement. A second use is to detect the user's face in order to perform face recognition or processing. A third use is to hide the face of the user.
SchlußfolgerungConclusion
Ein Fortschritt in der historischen Blue-Screen-Film- und Videosegmentationstechnik ist vorstehend beschrieben. Es wurde beschrieben, daß diese fortgeschrittene Blue-Screen-Technik verwendet wird z.B. für Desktop-Videokonferenz- und Videophon- Anwendungen, und daß diese fortgeschrittene (advanced) Blue-Screen-Technik besonders geeignet ist für zukünftige Videokonferenz- Videophon- Anwendungen unter Verwendung von z.B. Digitalvideokamerakarten in handgehaltenen und tragbaren Vorrichtungen.Progress in historical blue screen film and video segmentation technology has been described above. This advanced blue screen technique has been described to be used e.g. for desktop videoconferencing and videophone applications and that this advanced blue screen technology is particularly suitable for future videoconferencing videophone applications using e.g. Digital video camera cards in hand-held and portable devices.
Der Begriff semi constrained Szene wurde definiert und ein Beispiel von semi constrained Szenen wurde gezeigt. Die fortgeschrittene Blue-Screen-Technik basiert auf diesen semi constrained Szenen, die als Eingabe vorgegeben werden.The term semi constrained scene was defined and an example of semi constrained scenes was shown. The advanced blue screen technique is based on these semi constrained scenes that are given as input.
Mögliche Anwendungen der Technik wurden beschrieben und viele mehr sind vorstellbar.Possible applications of the technology have been described and many more are conceivable.
Im Folgenden wird anhand von Verfahrensschritten eine weitere konkrete Version der Erfindung detailliert, aber lediglich exemplarisch beschrieben.In the following, a further concrete version of the invention is described in detail but only by way of example using method steps.
Dieses nachfolgend genauer ausgeführte Ausführungsbeispiel des erfindungsgemäßen Bildbearbeitungsverfahrens, wobei sich die Merkmale einer entsprechenden Bildbearbeitungseinrichtung, wie auch in den übrigen vorliegenden Unterlagen, für einen Fachmann analog ergeben, bezieht sich auf Bildverarbeitung und Verfahren, die Algorithmen verwenden, besonders die Blue-Screen-Technologie, zur Verbesserung des Bildes, vorzugsweise in Videokonferenz- und Videophonanwendungen, aber auch in anderen vergleichbaren Anwendungen.
Allgemeine BeschreibungThis exemplary embodiment of the image processing method according to the invention, which is described in more detail below, the characteristics of a corresponding image processing device, as in the other available documents, resulting analogously for a person skilled in the art, relates to image processing and methods that use algorithms, in particular the blue screen technology. to improve the image, preferably in videoconferencing and videophone applications, but also in other comparable applications. general description
Der Segmentationsansatz der vorliegenden Erfindung nimmt die folgenden Bedingungen als gegeben an.The segmentation approach of the present invention assumes the following conditions.
A. Der Vordergrund und Hintergrund teilen sich keine Ränder.A. The foreground and background do not share borders.
B. In dem Vordergrundbildbereich steht der Hintergrund in Kontrast mit dem Vordergrund.B. In the foreground image area, the background contrasts with the foreground.
Das Verfahren enthält die grundsätzlichen Schritte:The procedure contains the basic steps:
1. Konvertiere von 24-bit Farbe in 8-bit Graustufen unter Verwendung der „Y"-Komponen- te der YIQ.1. Convert 24-bit color to 8-bit grayscale using the "Y" component of YIQ.
2. Führe Medianfilterung durch, um „Salz-und-Pfeffer"-Rauschen zu entfernen.2. Perform median filtering to remove "salt and pepper" noise.
3. Berechne Randdaten.3. Calculate marginal data.
4. Führe eine Ausschneid-Grenzwertbildung (cutoff thresholding) durch, um Ränder, die kaum vorhanden sind, zu entfernen, oder anders ausgedrückt, entferne alle detektierten Ränder, deren „egdiness" oder Randwert oder Randschärfe sehr niedrig ist.4. Carry out cutoff thresholding to remove margins that are barely present, or in other words, remove all detected margins whose "egdiness" or marginal value or edge sharpness is very low.
5. Vektorisiere die Bilddaten. Dies wird null oder mehrere definierte Figuren zum Ergebnis haben. Sortiere alle Figuren oder Formen oder Gestalten außer der mit dem größten Oberflächenbereich aus. Dies-wird Hintergrundränder und -figuren, einschließlich aller bewegten Figuren im Hintergrund, entfernen, die keinen Rand mit der Vordergrundfigur gemeinsam haben.5. Vectorize the image data. This will result in zero or more defined figures. Sort out all figures or shapes or shapes except the one with the largest surface area. This will remove background borders and figures, including any moving figures in the background, that have no border in common with the foreground figure.
6. Führe resultierende Segmenationsdaten dem Modifizierungscode zu, um das zusammengesetzte Bild zu erhalten.6. Feed resulting segmentation data to the modification code to get the composite image.
Definitionendefinitions
Segmentatiosmaske:Segmentatiosmaske:
- Anordnung von unsignierten 1-Byte Werten Höhe x Breite- Arrangement of unsigned 1-byte values height x width
- Eingabe als Randdaten- Entry as marginal data
- Ausgabe als anti-aliasing Daten für die Modifikationslogik
- Interpretation der anti-aliasing Werte- Output as anti-aliasing data for the modification logic - Interpretation of anti-aliasing values
0 ≡ 0% undurchsichtiger Vordergrund 255 ≡ 100% undurchsichtiger Vordergrund 1 bis 254 ≡ anti-aliasing Niveau X, so daß resultierender Pixelwert für Anzeige und Übertragung auf einer Basis von Farbkomponente zu Farbkomponente berechnet wird als Resultierendes Pixel =0 ≡ 0% opaque foreground 255 ≡ 100% opaque foreground 1 to 254 ≡ anti-aliasing level X, so that the resulting pixel value for display and transmission is calculated on the basis of color component to color component as the resulting pixel =
((Vordergrundfarbkomponente * X)((Foreground color component * X)
++
(Hintergrundfarbkomponente * (255 - X))(Background color component * (255 - X))
))
/ 255/ 255
Formmaske:Form mask:
- Anordnung von unsignierten Werten Höhe x Breite- arrangement of unsigned values height x width
- Vielleicht eine Anordnung von 1 -Byte- Werten, 2-Byte-Werten oder mehr, in Abhängigkeit von der maximalen Anzahl der unterstützten Formen oder Figuren- Perhaps an arrangement of 1-byte values, 2-byte values or more, depending on the maximum number of supported shapes or figures
- Beinhaltet Figurengrenzen- und Figureninhalt-Informationen- Contains figure boundary and figure content information
- Interpretation von Werten- interpretation of values
0 ≡ Außenseite von allen Figuren0 ≡ outside of all figures
1, 3, 5, ... ≡ Figurengrenzpixel, dessen Figurennummer gegeben ist1, 3, 5, ... ≡ Figure boundary pixel whose figure number is given
2, 4, 6, ... s Figureninhaltpixel, dessen Figurennummer berechnet wird durch Subtrahieren von 1 von dem gegebenen Wert2, 4, 6, ... s figure content pixel whose figure number is calculated by subtracting 1 from the given value
Vektorisierenvectorize
1. Initialisiere die folgenden Variablen a. Weise dem Speicher für eine Figurenmaske (ShapeMask) eine Variablenaufstellung oder -anordnung von unsignierten Werten zu, deren Anordnungs- oder Aufstellungsbreite- und höhe dieselbe ist wie die der Segmentationsmaske (SegMask) und initialisiere ShapeMask alle auf null. b. Weise Speicher für die Aufstellung oder Anordnung, pVectShape genannt, zu, die alle der Figurenoberflächenbereichswerte und die engsten Grenzkastenkoordinaten für jede Figur oder Form beinhaltet. c. CurrentShapeBoundaryNumber (aktuelle Figurgrenzahl) = 1 d. X = l
e. Y = l1. Initialize the following variables a. Allocate an array of unsigned values to the memory for a figure mask (ShapeMask), the width or height of which is the same as that of the segmentation mask (SegMask), and initialize ShapeMask to zero. b. Allocate storage for the layout or arrangement, called pVectShape, that includes all of the figure surface area values and the narrowest bounding box coordinates for each figure or shape. c. CurrentShapeBoundaryNumber (current figure limit) = 1 d. X = l e. Y = l
2. Beginnend mit der Stelle (X, Y), Abtasten von links nach rechts, von unten nach oben bis ein Nicht-Null-Pixel gefunden wird, das gleichzeitig ein nullwertiges Pixel in der ShapeMask ist.2. Starting with the position (X, Y), scanning from left to right, from bottom to top until a non-zero pixel is found that is also a zero-valued pixel in the ShapeMask.
Wenn diese Bedingung erfüllt ist, gehe zum nächsten Schritt. Verlasse die Schleife und gehe zu Schritt 6, wennIf this condition is met, go to the next step. Exit the loop and go to step 6 if
((X >= (.Breite - 2)) && (Y >= (iHöhe - 2)))((X> = (.Width - 2)) && (Y> = (iheight - 2)))
Der Grund, daß von links nach rechts und von unten nach oben abgetastet wird, ist gegeben durch: a. Der Bildursprung ist in der unteren linken Ecke b. Die positive X-Achse weist nach rechts c. Die positive Y-Achse weist nach obenThe reason for scanning from left to right and from bottom to top is given by: a. The origin of the picture is in the lower left corner b. The positive X axis points to the right c. The positive Y axis points upwards
3. Aufruf der Routine „Trace Around Shape" (folge der Form nach), die ShapeMask aktualisiert oder updated und zurückkommt mit dem Wert SurfaceArea und den Koordinaten des engsten Grenzkastens um die Figur.3. Call the routine "Trace Around Shape" (follow the shape), the ShapeMask updates or updates and comes back with the value SurfaceArea and the coordinates of the closest border box around the figure.
4. Wenn (SurfaceArea > 0), speichere die zurückgekehrte SurfaceArea und Grenzkastenko- ordinatenwerte (eine SHAPEJDATA Aufzeichnung), und inkrementiere, um die nächste verfügbare Figurnummer zu erhalten. pVectShape->sd [ (CurrentShapeBoundaryNumber - 1) / 2 ] =4. If (SurfaceArea> 0), save the returned SurfaceArea and boundary box coordinate values (a SHAPEJDATA record) and increment to get the next available figure number. pVectShape-> sd [(CurrentShapeBoundaryNumber - 1) / 2] =
SHAPEJDATA; CurrentShapeBoundaryNumber += 2;SHAPEJDATA; CurrentShapeBoundaryNumber + = 2;
5. Gehe zu Schritt 25. Go to step 2
6. Rufe Routine „Cull Shapes" (Formen oder Figuren aussortieren) auf6. Call routine "Cull Shapes" (sort out shapes or figures)
7. Rufe Routine „Opaque Foreground" (Undurchsichtiger Vordergrund) auf7. Call routine "Opaque Foreground" (opaque foreground)
8. Leere den Speicher, der ShapeMask und pVectShape zugewiesen ist.
Folgen um Figur oder Form herum8. Empty the memory assigned to ShapeMask and pVectShape. Episodes around figure or shape
1. Wie eingegeben, erfordert diese Routine a. die aktuelle Figurgenzpixelstelle (X, Y), b. die aktuelle Figurgrenznummer (CurrentShapeBoundaryNumber), und c. es wird angenommen, daß wir gegenwärtig an der untersten, ganz linken Figurengrenze sind1. As entered, this routine requires a. the current figure pixel location (X, Y), b. the current figure boundary number (CurrentShapeBoundaryNumber), and c. it is assumed that we are currently on the lowest leftmost figure boundary
Die Tatsache, daß Daten von links nach rechts und von unten nach oben in der Pixelaufstellung verfolgt werden, führt zum Beginn des Abtastvorgangs an dem untersten, äußerst linken Figurgrenzpixel. Der Grund dafür ist, daß die BITMAP-Daten, die gegeben sind, in umgekehrter Reihenfolge sind. In anderen Worten, obwohl die Abtastlinien von links nach rechts orientiert sind, sind die Abtastreihen von unten nach oben geordnet, was die Standard-BITMAP-Reihenordnung darstellt. Der Bildursprung ist in der unteren linken Ecke mit der positiven X-Achse, die nach rechts weist, und der positiven Y-Achse, die nach oben weist.The fact that data is traced from left to right and from bottom to top in the pixel array leads to the beginning of the scan at the bottom leftmost figure boundary pixel. The reason for this is that the BITMAP data that is given is in reverse order. In other words, although the scan lines are left to right oriented, the scan rows are ordered from the bottom up, which is the standard BITMAP order. The image origin is in the lower left corner with the positive X-axis pointing to the right and the positive Y-axis pointing upwards.
2. Speichere die Stelle dieses ersten, gefundenen Figurgrenzpixel. a. XFirstShapeBoundaryPixel = X b. YFirstShapeBoundaryPixel = Y2. Save the location of this first figure boundary pixel found. a. XFirstShapeBoundaryPixel = X b. YFirstShapeBoundaryPixel = Y
3. Initialisiere die Minimum- und Maximum x und y -Stellen für den engsten Grenzkasten, der diese Figur einschließt. a. XMin = X < ' b. YMin = Y c. XMax = X d. YMax = Y3. Initialize the minimum and maximum x and y digits for the closest bounding box that includes this figure. a. XMin = X <' b. YMin = Y c. XMax = X d. YMax = Y
4. Zusätzlich zu dieser Option, dort zu bleiben, wo man ist, gibt es acht unterschiedliche, angrenzende Richtungen, in die man sich bewegen kann, hn folgenden sind nun diese acht angrenzenden Richtungen aufgeführt:4. In addition to this option to stay where you are, there are eight different adjacent directions that you can move in, the following are these eight adjacent directions:
5 6 - 75 6 - 7
4 aktuell 04 currently 0
3 2 1
Diese Werte 0 bis 7 entsprechen den Indizes der Aufstellung oder Anordnung aCW_Offsets entspricht, die untenstehend definiert sind.3 2 1 These values 0 to 7 correspond to the indexes of the arrangement or arrangement aCW_Offsets, which are defined below.
Die positive X-Achse zeigt nach rechts, während die positive Y-Achse nach oben zeigt. Diese Tatsache bleibt wahr, solange Windows BITMAP-Daten vorliegen. In anderen Worten, für die Standard Windows BITMAPs gilt die Tatsache, daß die Abtastlinien von links nach rechts orientiert sind und die Abtastreihen von unten nach oben angeordnet sind, was das Gegenteil der normalen Y- Ansichtsorientierung ist, bei der der Bildur- sprung in der oberen linken Ecke ist.The positive X axis points to the right, while the positive Y axis points upwards. This fact remains true as long as Windows BITMAP data is available. In other words, for the standard Windows BITMAPs the fact applies that the scan lines are oriented from left to right and the scan lines are arranged from bottom to top, which is the opposite of the normal Y-view orientation, in which the image origin in top left corner.
5. Bei Blickrichtung dorthin, wohin wir uns gerade bewegt haben, werden wir uns in eine Richtung bewegen, die 135° CCW von der ist, in die wir uns gerade bewegt haben, und dann werden wir in 45° Schrittweiten in eine CW-Richtung fortfahren, bis wir entweder a. die zu prüfenden Pixel verlassen, oder b. auf das Anfangsfigurgrenzpixel (XFirstShapeBoundaryPixel, YFirstShapeBoun- daryPixel) treffen, das die natürliche Begrenzungsbedingung für diesen Algorithmus ist, nachdem wir uns an dem ersten Figurgrenzpixel vorbeibewegt haben, oder c. das nächste Figurgrenzpixel finden durch Finden des nächsten Randpixels (d.h. von null verschiedenes SegMask-Pixel) sowie durch Herumwenden in der CW- Richtung über das letzte, gefundene Figurgrenzpixel, oder d. weiter das nächste angrenzende Pixel betrachten, indem wir uns 45° in der CW- Richtung drehen.5. Looking towards where we have just moved, we will move in a direction that is 135 ° CCW from the one we have just moved in, and then we will move in 45 ° increments in a CW direction continue until we either a. leave the pixels to be checked, or b. encounter the initial figure boundary pixel (XFirstShapeBoundaryPixel, YFirstShapeBoundaryPixel), which is the natural constraint for this algorithm after moving past the first figure boundary pixel, or c. find the next figure boundary pixel by finding the next edge pixel (i.e. non-zero SegMask pixel) and by turning in the CW direction over the last figure figure pixel found, or d. continue looking at the next adjacent pixel by turning 45 ° in the CW direction.
6. Von den Annahmen, dieobenstehend in (1) gemacht wurden, kennen wir die Richtung, die wir abtasteten, als wir das Anfangsfigurgrenzpixel fanden. Da wir wissen, daß wir unseren CW-Gang an einer Stelle beginnen, die 135° CCW von der Richtung ist, in die wir uns zuletzt bewegten, können wir so eine Initialisierung wie folgt durchführen:6. From the assumptions made in (1) above, we know the direction we scanned when we found the initial figure boundary pixel. Since we know that we start our CW course at a point that is 135 ° CCW from the direction we last went, we can initialize it as follows:
Arrayh dex 0 1 2 3 4 5 6 7Arrayh dex 0 1 2 3 4 5 6 7
(Anordnungsindex) aCW Offsets (1;0) (1;-1) (0;-l) (-1;-1) (-1;0) (-1;1) (0;1) (1;1)(Arrangement index) aCW Offsets (1; 0) (1; -1) (0; -l) (-1; -1) (-1; 0) (-1; 1) (0; 1) (1; 1 )
Arraylndex = 5;Array index = 5;
7. Einstellen der „run out of pixels to examine"- oder „verlassen der zu untersuchenden Pixel" Bedingung ein.
LastArraylndex = (Arraylndex + 7) mod 8;7. Set the "run out of pixels to examine" or "leave the pixels to be examined" condition. LastArraylndex = (Arraylndex + 7) mod 8;
8. FALL 5.a - Wenn die zu prüfenden Pixel verlassen werden (d.h. wenn LastArraylndex = Arraylndex), wurde eine Figur mit nur einem Pixel gefunden. Führe die folgenden Schritte durch: a. Setze das einzige gefundene Pixel auf den Wert null, um es in der SegMask zu ! ; entfernen, und8. CASE 5.a - If the pixels to be checked are left (i.e. if LastArraylndex = Arraylndex), a figure with only one pixel was found. Do the following: a. Set the only pixel found to zero to get it in the SegMask! ; remove, and
1 b. Kehre mit dem Wert 0 für die SurfaceArea zurück. Dieser spezielle Fall sollte vor dem Eintreten in die Schleife gehandhabt werden. 1 b. Return with the value 0 for the SurfaceArea. This particular case should be handled before entering the loop.
9. FALL 5.b - Wenn9. CASE 5.b - If
(X + aCW_Offsets [Arraylndex] .x = XFirstShapeBoundaryPixel) und (Y + aCW_Offsets [Arraylndex] .y = YFirstShapeBoundaryPixel),(X + aCW_Offsets [Arraylndex] .x = XFirstShapeBoundaryPixel) and (Y + aCW_Offsets [Arraylndex] .y = YFirstShapeBoundaryPixel),
dann haben wir die Figurgrenzdiagonale vervollständigt. Führe die folgenden Schritte durch: a. Setze das Pixel an der aktuellen (X, Y) Stelle auf den Wert der aktuellen Figurgrenzzahl. b. Rufe Routine „Inverted Boundary Fill" (invertierte Grenzfüllung) auf, um das Innere der aktuellen Figur zu füllen, und berechne den SurfaceArea- Wert für diese Figur.then we have completed the figure boundary diagonal. Do the following: a. Set the pixel at the current (X, Y) position to the value of the current figure limit. b. Call routine "Inverted Boundary Fill" to fill the inside of the current figure and calculate the SurfaceArea value for that figure.
10. FALL 5.c - Wenn10. CASE 5.c - If
(SegMask [X + aCW_Offsets [Arraylndex]. x,(SegMask [X + aCW_Offsets [Arraylndex]. X,
Y + aCW_Offsets [Arraylndex] .y] != 0)Y + aCW_Offsets [Arraylndex] .y]! = 0)
dann haben wir das nächste Figurgrenzpixel gefunden, indem wir das nächste Randpixel (d.h. von null verschiedene SegMask-Pixel) finden, während wir in der CW-Richtung schwenken über das letzte, gefundene Figurgrenzpixel. Führe die folgenden Schritt durch: a. Setze das Pixel an der aktuellen (X, Y) Stelle auf den Wert der aktuellen Figur- grenzzahl. b. Aktualisiere die aktuelle (X, Y) Stelle wie folgt: X += aCW_Offsets [Arraylndex]. x;then we found the next figure boundary pixel by finding the next edge pixel (i.e. non-zero SegMask pixels) while panning in the CW direction over the last figure boundary pixel found. Do the following: a. Set the pixel at the current (X, Y) position to the value of the current figure limit. b. Update the current (X, Y) position as follows: X + = aCW_Offsets [Arraylndex]. x;
Y += aCW_Offsets [Arraylndex] .y;
c. Aktualisiere die Figurgrenzkastenkoordinaten:Y + = aCW_Offsets [ArrayIndex] .y; c. Update the figure boundary box coordinates:
1. Wenn (XMin > X) XMin = X;1. If (XMin> X) XMin = X;
2. Wenn (XMax < X) XMax = X;2. If (XMax <X) XMax = X;
3. Wenn (YMin > Y) YMin = Y;3. If (YMin> Y) YMin = Y;
4. Wenn (YMax < Y) YMax = Y; d. Aktualisiere die Anfangsrichtung, um zu prüfen :4. If (YMax <Y) YMax = Y; d. Update the starting direction to check:
Arraylndex = ((Arraylndex + 6) mod 8);Array index = ((array index + 6) mod 8);
e. Gehe zu Schritt 7e. Go to step 7
11. FALL 5.d - Wir drehen uns immer noch in 45° Schrittweiten über dem zuletzt gefundenen Figurgrenzpixel, so a. Arraylndex = (Arraylndex + 1) mod 8; b. Gehe zu Schritt 811. CASE 5.d - We are still turning in 45 ° increments above the last figure boundary pixel found, so a. Array index = (array index + 1) mod 8; b. Go to step 8
Invertiere GrenzfüllungInvert border fill
1. Der tovers-Grenzfullungsalgoritrimus füllt von allen vier Seiten des engsten Grenzkastens, der die aktuelle Figur umschließt. Zuerst tritt eine Pseudofiutfüllung von jeder der vier Grenzkastenseiten auf bis, aber nicht einschließlich, zu der aktuellen Figurgrenze. Zweitens wird die Pseudofiutfüllung invertiert, um die gewünschte Figur- grenzsinnenfüllung.zu erhalten.1. The tovers boundary filling algorithm fills from all four sides of the narrowest boundary box, which encloses the current figure. First, a pseudo-fill occurs from each of the four boundary box sides up to, but not including, the current figure boundary. Second, the pseudo-fill is inverted in order to obtain the desired figure boundary fill.
Nur eine der vier seitlichen Pseudoflutfüllungen wird beschrieben. Die anderen folgen analog und tatsächlich als eine einzige Routine in dem Code implementiert.Only one of the four lateral pseudo-flood fillings is described. The others follow analog and are actually implemented as a single routine in the code.
2. Taste von links nach rechts längs des Bodens des Figurgrenzbegrenzungskasten ab, suche ein Pixel, das nicht ein aktuelles Figurgrenzpixel ist, und gleichzeitig nicht schon als ein aktuelles Figuraußenpixel gekennzeichnet wurde. Wenn eines gefunden ist, gehe zum Schritt 3. Ansonsten prüfe weiter die Pixel entlang der aktuellen Abtastlinie. Sobald alle der Abtastlinienpixel in der aktuellen Scannlinie geprüft sind, gehe zu Schritt 5.2. Press the button from left to right along the bottom of the figure boundary box, look for a pixel that is not a current figure boundary pixel and at the same time has not already been marked as a current figure outer pixel. If one is found, go to step 3. Otherwise, continue checking the pixels along the current scan line. Once all of the scan line pixels in the current scan line are checked, go to step 5.
3. Wenn das aktuelle Pixel in der Abtastlinie nicht schon als eine Figurgrenze oder ein Innenpixel einer vorher gefunden Figur gekennzeichnet wurde, kennzeichne das aktuelle Pixel als ein aktuelles Figuraußenpixel.
. Wenn es eine weitere Abtastlinie über der aktuellen Abtastlinie gibt, die innerhalb des aktuellen Figurgrenzkastens liegt, und das Pixel direkt über dem aktuellen Abtastpixel nicht das aktuelle Figurgrenzpixel ist, dann3. If the current pixel in the scan line has not already been marked as a figure boundary or an inner pixel of a previously found figure, mark the current pixel as a current figure outer pixel. , If there is another scan line above the current scan line that is within the current figure boundary box and the pixel directly above the current scan pixel is not the current figure boundary pixel, then
a. Wenn das Pixel in der Abtastlinie über dem aktuellen Abtastlinienpixel noch nicht als ein Figurgrenz- oder Innenpixel einer vorher gefundenen Figur gekennzeichnet wurde, dann kennzeichne das aktuelle Pixel als ein aktuelles Figuraußenpixel. b. Wenn wir im Moment nicht in einer Spanne sind, i. Inkrementiere die Zahl der gefundenen Spannen ii. Speichere den beginnenden Pixelversatz für die aktuelle Spanne iii. Setze die „in einer Spanne"-Markierung, um anzuzeigen, daß wir gegenwärtig in einer Spanne oder Entfernung sind c. Inkrementiere die Zahl der Pixel in der aktuellen Spanne Ansonsten - wenn wir auf ein aktuelles Figurgrenzpixel treffen - a. Setze die „in einer Spanne"-Markierung zurück Gehe zu Schritt 2.a. If the pixel in the scan line above the current scan line pixel has not yet been marked as a figure boundary or inside pixel of a previously found figure, then mark the current pixel as a current figure outside pixel. b. If we're not in a span at the moment, i. Increment the number of ranges found ii. Save the beginning pixel offset for the current span iii. Place the "in a range" flag to indicate that we are currently in a range or distance c. Increment the number of pixels in the current range. Otherwise - when we encounter a current figure boundary pixel - a. Set the "in one Span "mark back Go to step 2.
5. Wenn es eine oder mehrere Entfernungen oder Spannen in der nächsten Abtastlinie gibt, fahre mit Schritt 6 fort. Ansonsten gehe zurück.5. If there is one or more distances or spans in the next scan line, go to step 6. Otherwise go back.
6. Dehne den aktuellen Spannen- oder Entfernungssatz aus durch Prüfung der Pixel auf der rechten und linken Seite für jede Spanne auf Spannenzugehörigkeit. Inkrementiere die „PrecedingRunLength"- oder „vorhergehenden Luflängen"- Werte in die PIXEL_SPAN- Datenstruktur, die für jede Spanne pder Entfernung verwaltet werden und deren Datenelemente wie folgt sind:6. Extend the current span or distance set by checking the pixels on the right and left for each span for span membership. Increment the "PrecedingRunLength" or "previous air lengths" values into the PIXEL_SPAN data structure, which are managed for each span or distance and whose data elements are as follows:
BegPixelOffset RunLength PrecedingRunLength SubsequentRunLengthBegPixelOffset RunLength PrecedingRunLength SubsequentRunLength
7. Gehe zurück beginnend mit Schritt 2 bis keine Entfernungen oder Spannen mehr erzeugt werden unter Verwendung von Abtastspannen- oder -entfernungsdaten anstelle von direktem Prüfen der Pixeldaten, da die Pixeldaten schon geprüft und aktualisiert wurden, wie es erforderlich war, als jede Entfernung oder Spanne erzeugt wurde.
8. Rufe Routine „Invert Fill Regions" (Invertiere Füllregionen) auf, um den invertierten Grenzfüllalgorithmus abzuschließen.7. Go back starting from step 2 until distances or spans are no longer generated using scan span or range data instead of directly checking the pixel data, since the pixel data has already been checked and updated as needed as each range or span was generated. 8. Call routine "Invert Fill Regions" to complete the inverted limit fill algorithm.
Invertiere FüllregionenInvert fill regions
1. Scanne von links nach rechts, von unten nach oben innerhalb des aktuellen Figurgrenzkastens.1. Scan from left to right, from bottom to top within the current figure limit box.
2. Führe für jedes geprüftes ShapeMask-Pixel einen der folgenden Schritte aus:2. Do one of the following for each ShapeMask pixel checked:
a. Wenn das aktuelle ShapeMask-Pixel ein vorheriges Figurgrenz- oder Innenpixel ist, ignoriere das aktuelle ShapeMask-Pixel und fahre fort. b. Wenn das aktuelle ShapeMask-Pixel ein aktuelles Figuraußenpixel ist, dann setze das aktuelle Pixel auf den Wert null zurück. c. Wenn das aktuelle ShapeMask-Pixel ein aktuelles Figurgrenzpixel ist, inkrementiere den Oberflächenbereichszähler um eins d. Wenn das aktuelle ShapeMask-Pixel ein aktuelles Figurinnenpixel ist, i. setze das aktuelle Pixel auf CurrentShapeBoundaryNumber + 1, und ii.inkrementiere den Oberflächenbereichszähler um eins.a. If the current ShapeMask pixel is a previous figure boundary or interior pixel, ignore the current ShapeMask pixel and continue. b. If the current ShapeMask pixel is a current figure outer pixel, then reset the current pixel to the value zero. c. If the current ShapeMask pixel is a current figure boundary pixel, increment the surface area counter by one d. If the current ShapeMask pixel is a current figure inner pixel, i. set the current pixel to CurrentShapeBoundaryNumber + 1, and ii.increment the surface area counter by one.
Aussortierformen oder -figuren (Cull Shapes)Sorting shapes or figures (cull shapes)
1. Suche pVectShape für den größten SurfaceArea- Wert und speichere den Mengenindex im variablen ShapeArealdx.-1. Search pVectShape for the largest SurfaceArea value and save the quantity index in the variable ShapeArealdx.-
2. Wenn (ShapeArealdx = 0) gehe zurück;2. If (ShapeArealdx = 0) go back;
3. CurrentShapeBoundaryNumber = (ShapeArealdx * 2) + 13. CurrentShapeBoundaryNumber = (ShapeArealdx * 2) + 1
4. Unter Verwendung der engsten Figurgrenzkastenkoordinaten, die in pVectShape in dem Index ShapeArealdx gespeichert sind, taste ShapeMask von links nach rechts, von oben nach unten für von null verschiedene Werte ab.4. Using the closest figure bound box coordinates stored in pVectShape in the ShapeArealdx index, key ShapeMask from left to right, from top to bottom for non-zero values.
5. Für alle ShapeMask-Pixel, die nicht null sind und nicht gleich dem Wert CurrentShapeBoundaryNumber (ein größtes SurfaceArea-Figurgrenzpixel) oder gleich dem Wert Cur-
rentShapeBoundaryNumber + 1 (einem größten SurfaceArea-Figurinnenpixel) sind, setze das Pixel in SegMask an der aktuellen (X, Y) Stelle auf den Wert null, um anzuzeigen, daß dieses SegMask-Pixel vordergrundtransparent ist.5. For all non-zero ShapeMask pixels that are not equal to the CurrentShapeBoundaryNumber value (one of the largest SurfaceArea figure boundary pixels) or equal to the Cur- rentShapeBoundaryNumber + 1 (a largest SurfaceArea figure pixel), set the pixel in SegMask to zero at the current (X, Y) position to indicate that this SegMask pixel is foreground transparent.
Transparenter VordergrundTransparent foreground
Das Verhalten dieser Routine hängt von dem Niveau der Funktionalität ab, wie in der untenstehenden Liste unter „Funktionalitätsniveau" vorgeschlagen ist."The behavior of this routine depends on the level of functionality as suggested in the list below under "level of functionality". "
Funktionalitätsniveaulevel of functionality
Wie erzeugen wir eine Transparenz des Vordergrundes?How do we create transparency of the foreground?
1. Wir können nur die Grenzen sehen durch a. Setzen aller Figurgrenzpixel auf den Wert 255 in der Segmentationsmaske, während b. alle anderen Segmentationsmaskenpixel auf den Wert 0 gesetzt werden.1. We can only see the limits through a. Set all figure boundary pixels to the value 255 in the segmentation mask, while b. all other segmentation mask pixels are set to the value 0.
2. Wir können Grenzen und Innenräume sehen durch a. Setzen aller Figurgrenzpixel auf den Wert 128 in der Segmentationsmaske, und b. Setzen aller Figureninnenpixel auf den Wert 255 in der Segmenationsmaske, während c. alle anderen Segmetationsmaskenpixel auf den Wert 0 gesetzt werden.2. We can see borders and interiors through a. Setting all figure boundary pixels to the value 128 in the segmentation mask, and b. Set all figure inner pixels to the value 255 in the segmentation mask, while c. all other segmentation mask pixels are set to the value 0.
3. Wir können den gesamten Vordergrund 100% transparent madien durch a. Setzen aller Figurgrenzpixel auf den Wert 255 in der Segmentationsmaske, und b. Setzen aller Figurinnenpixel auf den Wert 255 in der Segmentationsmaske, während c. alle anderen Segmentationsmaskenpixel auf den Wert 0 gesetzt werden.3. We can make the whole foreground 100% transparent madien through a. Setting all figure boundary pixels to the value 255 in the segmentation mask, and b. Set all figure inner pixels to the value 255 in the segmentation mask, while c. all other segmentation mask pixels are set to the value 0.
4. Wir können Boundary Blurring (Verwischen der Grenze) durchfuhren durch a. Setzen aller Figurgrenzpixel auf den Wert 128 in der Segmentationsmaske, und b. Setzen aller Figurinnenpixel auf den Wert 225 in der Segmentationsmaske, während c. alle anderen Segmentationsmaskenpixel auf den Wert 0 gesetzt werden, und d. die Modifikationslogik zum Blurren oder Verwischen aller resultierenden Pixel, die den Wert 128 in der Segmentationsmaske haben, veranlaßt wird.
5. Wir können Grenz- Anti-Aliasing durchfuhren durch a. Setzen der Segmentationsmaskenpixelwerte auf 64, die ein Pixel außerhalb jedes Segmentationsmaskengrenzpixels sind, und b. Setzen aller Segmentationsmaskengrenzpixel auf den Wert 128, und c. Setzen aller Segmentationsmaskenpixelwerte auf 192, die ein Pixel innerhalb jedes Segmentationsmaskengrenzpixels sind, und d. Setzen aller anderen Figurinnenpixel auf den Wert 255 in der Segmentationsmaske, während e. alle anderen Segmentationsmaskenpixel auf den Wert 0 gesetzt werden.4. We can do boundary blurring by a. Setting all figure boundary pixels to the value 128 in the segmentation mask, and b. Set all figure inner pixels to the value 225 in the segmentation mask, while c. all other segmentation mask pixels are set to 0, and d. the modification logic is made to blurr or blur all resulting pixels that have a value of 128 in the segmentation mask. 5. We can do border anti-aliasing through a. Setting the segmentation mask pixel values to 64, which is a pixel outside each segmentation mask boundary pixel, and b. Setting all segmentation mask boundary pixels to the value 128, and c. Setting all segmentation mask pixel values to 192 which is a pixel within each segmentation mask boundary pixel, and d. Set all other figure inner pixels to the value 255 in the segmentation mask, while e. all other segmentation mask pixels are set to the value 0.
6. Wir können Grenz- Anti-Aliasing mit Blurring (Verwischen) durchführen durch a. Ausführen aller Schritte wie unter „Grenz- Anti-Aliasing" oben beschrieben, und dann b. die Modifϊkationslogik zum Blurren oder Verwischen aller resultierenden Pixel, die den Wert 128 in der Segmentationsmaske haben, veranlassen.6. We can perform border anti-aliasing with blurring by a. Carry out all the steps as described under "Border Anti-Aliasing" above, and then b. Cause the modification logic to blurr or blur all resulting pixels that have the value 128 in the segmentation mask.
7. Wir können fortgeschrittenes Grenz- Anti-Aliasing ausführen durch a. das Vorhandensein linear dehnbarer Grenzpixelwerte als Eingabe von dem Rand- detektionsalgorithmus (d.h. Pixel, die am randschärfsten innerhalb ihrer lokalen Umgebung sind werden auf den Wert 255 durch den Randdetektionsalgorithmus gesetzt, und jene Pixel, die auch Randpixel sind, aber innerhalb ihrer lokalen Umgebung nicht am randschärfsten sind, werden linear gedehnt auf Werte zwischen 1 und 255) b. Setzen aller anderen Figurinnenpixel auf den Wert 255 in der Segmentationsmaske, während c. alle anderen Segmentationsmaskenpixel auf den Wert 0 gesetzt werden.7. We can do advanced border anti-aliasing through a. the presence of linearly stretchable boundary pixel values as input from the edge detection algorithm (ie pixels which are the sharpest within their local surroundings are set to the value 255 by the edge detection algorithm, and those pixels which are also edge pixels but not within their local surroundings) sharpest edges are linearly stretched to values between 1 and 255) b. Set all other figure inner pixels to the value 255 in the segmentation mask, while c. all other segmentation mask pixels are set to the value 0.
8. Wir können fortgeschrittenes Grenz- Anti-Aliasing mit Blurring (Verwischen) durchführen durch a. Ausfuhren der Schritte wie oben unter „fortgeschrittenem Grenz-Anti-Aliasing" beschrieben, und dann b. die Modifikationslogik zum Blurren oder Verwischen aller resultierenden Pixel, die Werte im Bereich von 1 bis 254 in der Segmentationsmaske haben, veranlassen.
Die Erfindung ist nicht auf die Merkmale und Merkmalskombinationen der vorbeschriebenen und in der Zeichnung gezeigten Ausführungsbeispiele beschränkt. Die einzelnen Aspekte, Merkmale und Merkmalskombinationen der vorliegenden Erfindung sind sowohl jeweils einzeln, als auch in ihrer Kombination umsetzbar und schutzwürdig. Neben den in den vorliegenden Unterlagen enthaltenen allgemeinen und konkreten Angaben zur Realisierung der Erfindung gehören zu deren Umfang auch alle Variationen, Modifikationen, Substitutionen und Kombinationen, die der Fachmann ohne weiteres aus den Unterlagen selbst und/oder unter Hinzuziehung seines Fachwissens erkennen kann.
8. We can do advanced border anti-aliasing with blurring by a. Perform the steps as described in "Advanced Border Anti-Aliasing" above, and then b. Cause the modification logic to blurr or blur any resulting pixels that have values in the range 1 to 254 in the segmentation mask. The invention is not restricted to the features and combinations of features of the exemplary embodiments described above and shown in the drawing. The individual aspects, features and combinations of features of the present invention can be implemented individually and in combination and are worthy of protection. In addition to the general and concrete information on the implementation of the invention contained in the present documents, its scope also includes all variations, modifications, substitutions and combinations which the person skilled in the art can readily recognize from the documents themselves and / or with the help of his specialist knowledge.