-
Die Erfindung betrifft ein Verfahren und eine Vorrichtung zur Kompression von Bilddaten, insbesondere von Bilddaten von Fernerkundungsbildern.
-
Fernerkundungsbilder können beispielsweise durch Satelliten erzeugt werden.
-
Ein digitales Bild besteht aus einzelnen Bildpunkten oder Bildelementen, die in der Regel rechteckförmig in Bildzeilen und Bildspalten angeordnet sind. Ein Intensitätswert der einzelnen Bildelemente, beispielsweise ein Grauwert, kann hierbei als Zahl in einer festgelegten Reihenfolge abgespeichert werden. Eine radiometrische Auflösung ist durch eine Anzahl von Bits pro Bildpunkt begrenzt. So können z. B. in einem Byte (8 Bits) 256 verschiedene Intensitätswerte dargestellt werden. Bei realen Bildern sind Intensitätswerte nicht gleich verteilt. Es können somit Bilddaten komprimiert werden, indem häufige Grauwerte mit kurzen Zeichen, also einer geringeren Bitanzahl, und seltene Intensitätswerte mit längeren Zeichen, also einer größeren Bitanzahl, kodiert werden. Bekannte Verfahren zur Komprimierung derartiger Bilder, bei denen ein Zeichen, beispielsweise ein Intensitätswert, durch ein anderes, z. B. kürzeres Zeichen, ersetzt wird, sind die so genannte Shannon-Fano- und die so genannte Huffman-Kodierung. Diese werden auch als so genannte alphabetbasierte Kodierung bezeichnet werden. Ein Alphabet bezeichnet hierbei eine Zuordnung z. B. eines Intensitätswertes zu einem Zeichen oder einer Zeichenfolge des Alphabets. Somit können z. B. ein 8-Bit-basierter Intensitätswert auf ein 3-Bit-großes Zeichen abgebildet werden. Ein Alphabet kann hierbei aufgrund von Erfahrungshäufigkeiten vor einer Kompression bestimmt werden oder während der Kompression konstruiert werden.
-
Bei jedem Kompressionsverfahren muss jedoch zuerst zusätzlicher Aufwand aufgebracht werden, um eine Kompression zu erzielen. Bei den vorhergehend genannten alphabetischen Kodierungen besteht ein zusätzlicher Aufwand beispielsweise in zusätzlichen Bits für seltene, lange Zeichen. Je geringer ein solcher zusätzlicher Aufwand im Verhältnis zu einer Speicherplatzeinsparung, desto höhere Kompressionsraten können erreicht werden.
-
Reale Bilder, insbesondere Fernerkundungsbilder, bilden in der Regel verschieden große Objekte ab, wobei die Objekte in sich unterschiedlich homogen sind. Unterschiedlich homogen bedeutet hierbei, dass Intensitätswerte von Bildpunkten der Bildobjekte mehr oder weniger streuen. Eine Objektform lässt sich hierbei in der Regel nicht mit einfachen geometrischen Figuren beschreiben. Eine exakte Beschreibung einer Objektform wäre daher sehr aufwendig.
-
Es stellt sich das technische Problem, ein Verfahren und eine Vorrichtung zur verlustfreien Kompression von Bilddaten, insbesondere von Bilddaten von Fernerkundungsbildern, zu schaffen, welche eine rechentechnisch einfache, robuste und eine hohe Kompressionsrate aufweisende Komprimierung eines Bildes ermöglicht.
-
Die Lösung des technischen Problems ergibt sich durch die Gegenstände mit den Merkmalen der Ansprüche 1 und 10. Weitere vorteilhafte Ausgestaltungen der Erfindung ergeben sich aus den Unteransprüchen.
-
Vorgeschlagen wird ein Verfahren zur Kompression von Bilddaten, insbesondere von Bilddaten von Fernerkundungsbildern. Die Bilddaten bezeichnen hierbei Daten eines Ausgangsbildes. Das Ausgangsbild wird in einem Segmentierabschnitt in mindestens ein Bildobjekt segmentiert. Ein Bildobjekt bezeichnet hierbei eine Menge von zusammenhängenden Bildpunkten, also einen Teilbereich, des Ausgangsbildes. Die Intensitätswerte der Bildpunkte des Bildobjekts können hierbei relativ homogen sein. Hierbei werden in dem Segmentierabschnitt mehrere Bildpunkte des Ausgangsbildes einem Bildobjekt zugeordnet. Weiter wird das mindestens eine Bildobjekt in Abhängigkeit einer Objektanfangsposition des Bildobjekts, eines Randverlaufs von Rändern des Bildobjekts und von Intensitätswerten der dem Bildobjekt zugeordneten Bildpunkte kodiert. Die Objektanfangsposition bezeichnet eine Position oder Koordinate eines Objektanfangsbildpunktes.
-
Das Ausgangsbild umfasst hierbei Bildzeilen und Bildspalten. Ein Ursprungsbildpunkt des Ausgangsbildes kann beispielsweise in einer linken oberen Ecke des Ausgangsbildes angeordnet sein. Der Ursprungsbildpunkt kann somit gleich einem Bildpunkt sein, der in der ersten Zeile und der ersten Spalte des Ausgangsbildes angeordnet ist. Hierbei nimmt in einer Leserichtung eine Zeilennummer von oben nach unten und eine Spaltennummer von links nach rechts zu. Eine Objektanfangsposition des Bildobjektes kann beispielsweise die Position des Bildpunkts des Bildobjektes sein, der im Vergleich mit den weiteren Bildpunktes des Bildobjekts die geringste Zeilennummer und im Vergleich mit den weiteren Bildpunkten des Bildobjekts in dieser Zeile die geringste Spaltennummer aufweist. Ein Randverlauf kann, wie nachfolgend später erläutert, ebenfalls durch Bildkoordinaten, also eine Zeilen- und Spaltennummer, in welcher ein Randbildpunkt des Bildobjekts angeordnet ist, kodiert werden. Intensitätswerte von Bildpunkten des Bildobjekts können beispielsweise Grauwerte sein.
-
Die Kodierung eines Bildobjekts in Abhängigkeit der vorhergehend genannten Eigenschaften des Bildobjekts ermöglicht eine im Vergleich zu einer Kodierung in Abhängigkeit von Bildpunktkoordinaten und Intensitätswerten dieser Bildpunkte des Bildobjekts verbesserte Komprimierung, insbesondere eine Komprimierung mit einer höheren Kompressionsrate.
-
In einer weiteren Ausführungsform werden in einem Segmentierabschnitt ausschließlich Bildobjekte segmentiert, deren Bildpunkte Intensitätswerte aufweisen, die innerhalb eines vorbestimmten Streubereiches liegen. Die Größe des vorbestimmten Streubereichs kann hierbei vorzugsweise eine ganzzahlige Potenz von Zwei sein. Die Größe des Streubereichs von Intensitätswerten von Bildpunkten des Bildobjekts bezeichnet hierbei eine Differenz zwischen einem maximalen Intensitätswert der Bildpunkte des Bildobjekts und einem minimalen Intensitätswert von Bildpunkten des Bildobjekts. Im Falle, dass ein Exponent der Zweierpotenz Null ist, weisen Intensitätswerte des Bildobjekts keine Streuung auf. In diesem Fall müssen, wie nachfolgend näher erläutert, keine Differenzen von Intensitätswerten kodiert werden. Durch die Verwendung eines Streubereichs mit einer vorbestimmten Größe lassen sich, wie nachfolgend näher erläutert, Intensitätswerte von Bildpunkten in Abhängigkeit eines minimalen Intensitätswertes des Bildobjekts bzw. einer für eine Kodierung dieses minimalen Intensitätswertes benötigten Bitanzahl und einer Differenz zwischen Intensitätswerten weiterer Bildpunkte des Bildobjekts und diesem minimalen Intensitätswert bzw. einer zur Kodierung dieser Differenz benötigten Bitanzahl kodieren.
-
Dies ermöglicht in vorteilhafter Weise eine Kodierung von Intensitätswerten des Bildobjekts mit einer hohen Kompressionsrate, insbesondere im Vergleich zu einer Kodierung, die ausschließlich Intensitätswerte der entsprechenden Bildpunkte kodiert.
-
Der Segmentierabschnitt kann hierbei wiederholt durchgeführt werden, wobei die Größe des Streubereiches mit einer steigenden Anzahl von Durchläufen des Segmentierabschnitts bis zu einer maximal zulässigen Größe des Streubereichs ansteigt. Die maximal zulässige Größe des Streubereichs kann beispielsweise einer Differenz zwischen einem maximalen Intensitätswert und einem minimalen Intensitätswert von Bildpunkten des Bildobjekts entsprechen.
-
In einer weiteren Ausführungsform wird in einem Segmentierabschnitt ein Objektanfang eines Bildobjektes bestimmt, falls eine intensitätsbasierte Anfangsbedingung erfüllt ist.
-
Beispielsweise kann das Bild zeilenweise durchlaufen werden, wobei eine Zeile mit steigender Spaltenanzahl durchlaufen wird. Somit werden Bildpunkte des Bildes zeilenweise von oben nach unten und in einer Zeile von links nach rechts durchlaufen und geprüft. Ein solcher Durchlauf erfolgt in Leserichtung. Eine Anfangsbedingung kann beispielsweise erfüllt sein, wenn eine vorbestimmte Anzahl, vorzugsweise drei, in einer Zeile aufeinanderfolgende Bildpunkte Intensitätswerte aufweisen, die innerhalb eines Streubereiches des entsprechenden Durchlaufes des Segmentierabschnitts liegen. Somit liegt eine Differenz eines maximalen Intensitätswerts der Anzahl von in einer Zeile aufeinanderfolgenden Bildpunkten zu einem minimalen Intensitätswert dieser Bildpunkte innerhalb des für diesen Durchlauf des Segmentierabschnitts zulässigen Streubereiches. Beträgt die in dem jeweiligen Durchlauf des Segmentierabschnitts zulässige Größe des Streubereichs beispielsweise 0, so müssen eine vorbestimmte Anzahl, beispielsweise drei, in einer Zeile aufeinanderfolgende Bildpunkte mit gleichen Intensitätswerten detektiert werden.
-
Selbstverständlich sind weitere Anfangsbedingungen möglich.
-
Weiter werden in mindestens einem Wachstumsschritt einer Menge von Bildpunkten des Bildobjekts weitere Bildpunkte des Ausgangsbildes hinzugefügt, wenn deren Intensitätswerte innerhalb eines objektspezifischen Streubereichs liegen und Bedingungen für einen Randverlauf des Bildobjekts, also für einen Verlauf von Randbildpunkten des Bildobjekts, erfüllt sind. Der objektspezifische Streubereich wird hierbei während des Durchlaufs des Segmentierabschnitts aufgebaut, wobei die vorhergehend erwähnte Größe des Streubereiches in diesem Durchlauf festgelegt ist. Somit ist eine Größe des Streubereichs während eines Durchlaufs des Segmentierabschnitts fest vorgegeben, ein minimaler und maximaler Intensitätswert des Streubereichs ergibt sich jedoch objektspezifisch. Beträgt z. B. die Größe des Streubereichs Zwei, so kann ein minimaler Intensitätswert Fünf und ein maximaler Intensitätswert Sechs betragen. Es ist jedoch auch möglich, dass ein ein minimaler Intensitätswert Vier und ein maximaler Intensitätswert Fünf beträgt. Der objektspezifische Streubereich kann z. B. durch den maximalen und den minimalen Intensitätswert derjenigen Bildpunkte des Bildobjekts bestimmt werden, die die Anfangsbedingung erfüllt haben. Weitere Bildpunkte des Bildobjektes müssen also kleiner/gleich diesem maximalen Intensitätswert oder größer/gleich diesem minimalen Intensitätswert sein. Wie vorhergehend erläutert kann eine Größe des Streubereichs zusätzlich eine durchlaufspezifische Größe des Streubereichs sein, die für den entsprechenden Durchlauf des Segmentierabschnittes gilt.
-
Wird beispielsweise in einer ersten Zeile des Bildobjekts eine Anzahl von Bildpunkten detektiert, deren Intensitätswerte die Anfangsbedingung erfüllen, so können die diesen Anfangsbildpunkten in dieser ersten Zeile nachfolgenden Bildpunkte bzw. deren Intensitätswerte während des Wachstumsschrittes geprüft werden. Werden weitere Bildpunkte in der ersten Zeile detektiert, die dem Bildobjekt zugeordnet werden, so ist jedoch eine Kodierung der Anzahl von in dieser Zeile zum Bildobjekt gehörenden Bildpunkten notwendig. Es können jedoch auch unmittelbar nach Detektion einer Anzahl von Bildpunkten, die die Anfangsbedingungen erfüllen, weitere Bildpunkte der Folgezeile geprüft werden. In diesem Fall muss die Anzahl von Bildpunkten in der ersten Zeile des Bildobjektes nicht kodiert werden. Nach einer Prüfung eines letzten Bildpunktes der ersten Zeile des Bildobjektes, also des Bildpunktes mit der höchsten Spaltenzahl, können Bildpunkte einer der ersten Zeile des Bildobjekts nachfolgenden Bildzeile geprüft werden. Hierbei kann ein linker Randbildpunkt des Bildobjektes detektiert werden, falls ein Intensitätswert des Randbildpunktes innerhalb des objektspezifischen Streubereiches liegt und ein in der entsprechenden Zeile bzw. in Leserichtung vorhergehender Bildpunkt (in einer zu einer Bildspalte des Randbildpunktes links benachbarten Bildspalte angeordneter Bildpunkt) nicht innerhalb des objektspezifischen Streubereiches liegt. Entsprechend kann ein rechter Randbildpunkt in der entsprechenden Zeile detektiert werden. Bildpunktkoordinaten dieser Randbildpunkte müssen weiterhin Bedingungen für einen Randverlauf erfüllen, wobei bevorzugte Bedingungen nachfolgend näher erläutert werden. Weiter wird ein Wachstum des Bildobjektes beendet, falls eine intensitätsbasierte Endbedingung erfüllt ist. Eine intensitätsbasierte Endbedingung kann beispielsweise erfüllt sein, wenn in einer Bildzeile eine vorbestimmte Anzahl von aufeinanderfolgenden Bildpunkten detektiert wird, deren Intensitätswerte innerhalb des objektspezifischen Streubereiches liegen oder eine Anzahl von in dieser Zeile aufeinanderfolgenden Bildpunkten, deren Intensitätswerte innerhalb des objektspezifischen Streubereichs liegen, kleiner als die vorhergehend genannte vorbestimmte Anzahl, vorzugsweise um Eins kleiner als die Anzahl der für die Erfüllung der Anfangsbedingung notwendigen Bildpunkte, ist. Die vorbestimmte Anzahl kann hierbei beispielsweise Zwei sein.
-
Wird in einer Zeile die Endbedingung nicht erfüllt und in einer auf diese Zeile nachfolgende Zeile kein Bildpunkt detektiert, dessen Intensitätswert innerhalb des objektspezifischen Streubereichs liegt, so kann in der Vorgängerzeile eine Anzahl von Bildpunkten, deren Intensitätswerte innerhalb des objektspezifischen Streubereiches liegen, bestimmt werden, die die Endbedingung erfüllen und die eine Anzahl von dem Bildobjekt zugeordneten Bildpunkten maximieren. Dies wird nachfolgend näher erläutert.
-
Das vorgeschlagene Verfahren ermöglicht in vorteilhafter Weise eine einfache streubereichsabhängige Segmentierung, wobei gleichzeitig für eine Kodierung vorteilhafte Randverläufe des Bildobjektes gegeben sind.
-
In einer weiteren Ausführungsform ist eine Randbedingung erfüllt, falls ein Randbildpunkt des Bildobjektes in einer Bildzeile unterhalb eines Vorgänger-Randbildpunktes des Bildobjektes und in einer zu einer Bildspalte des Vorgänger-Randbildpunktes benachbarten Bildspalte oder in einer gleichen Bildspalte wie der Vorgänger-Randbildpunkt angeordnet ist. Im Falle eines detektierten linken Randbildpunktes (siehe vorhergehende Ausführungen) ist der Vorgänger-Randbildpunkt ein linker Randbildpunkt der Vorgängerbildzeile. Entsprechend ist bei einem detektierten rechten Randbildpunkt der Vorgänger-Randbildpunkt ein rechter Randbildpunkt der Vorgängerzeile. Die Randbedingung ist somit erfüllt, wenn ein in einer aktuellen Zeile detektierter Randbildpunkt links unter, unter oder rechts unter dem entsprechenden Vorgänger-Randbildpunkt angeordnet ist.
-
Alternativ ist eine Randbedingung erfüllt, falls ein Randbildpunkt des Bildobjektes in einer Bildzeile unterhalb eines Vorgänger-Randbildpunktes des Bildobjektes und in einer um mehr als eine Bildspalte von einer Bildspalte des Vorgänger-Randbildpunktes entfernten Bildspalte angeordnet ist. Hierbei ist also der detektierte Randbildpunkt zwar in einer Zeile unterhalb des Vorgänger-Randbildpunktes angeordnet, jedoch in einer Bildspalte, die um mehr als eine Bildspalte von der Bildspalte des Vorgänger-Randbildpunktes abweicht.
-
Diese Randbedingung ist jedoch nur dann erfüllt, falls der (detektierte) Randbildpunkt an einen (bereits detektierten) Randbildpunkt eines benachbarten (bereits segmentierten) Bildobjekts angrenzt. Hierbei bezieht sich "angrenzen" auf eine aktuelle Zeile. Ein in einer Zeile detektierter linker Randbildpunkt erfüllt also nur dann die Randbedingung, falls in dieser Zeile der zu dem detektierten Randbildpunkt links (also entgegen der Leserichtung) benachbarte Randbildpunkt ein Randbildpunkt eines bereits segmentierten Bildobjekts ist. Entsprechend erfüllt ein detektierter rechter Randbildpunkt die Randbedingung nur dann, falls ein in dieser Zeile zu dem detektierten Randbildpunkt rechts (also in Leserichtung) benachbarter Bildpunkt ein Randbildpunkt eines bereits segmentierten Objekts ist.
-
Wie nachfolgend näher erläutert, ermöglicht eine Einhaltung der vorhergehend erläuterten Randbedingungen eine Kodierung eines Randverlaufs des Bildobjekts mit einer hohen Kompressionsrate.
-
In einer weiteren Ausführungsform wird, falls ein linker Randbildpunkt detektiert wird, der eine Randbedingung nicht erfüllt, ein Randverlauf des Bildobjekts entlang einer Diagonalen konstruiert, wobei die Diagonale vom detektierten linken Randbildpunkt ausgeht und in einem bereits detektierten Randbildpunkt des Bildobjekts endet, der in einer Zeile oberhalb einer Zeile des detektierten linken Randbildpunktes und in einer Spalte links von einer Spalte des detektierten linken Randbildpunktes angeordnet ist. Ausgehend von dem aktuell detektierten linken Randbildpunkt wird also schrittweise der jeweils links oberhalb des aktuellen Bildpunktes liegende Bildpunkt hinsichtlich einer Eigenschaft als Randbildpunkt des Bildobjektes überprüft. Wird ein Bildpunkt entlang dieser Diagonalen gefunden, der ein Randbildpunkt des Bildobjektes ist, so werden die Bildpunkte entlang der Diagonalen als neue Randbildpunkte des Bildobjektes festgelegt und alle bereits segmentierten Bildpunkte des Bildobjekts, die links von diesen neuen Randbildpunkten, also in einer Spalte links von einer Spalte der neuen Randbildpunkte, angeordnet sind, verworfen.
-
Wird entlang der Diagonalen kein weiterer Randbildpunkt des Bildobjektes detektiert, so wird ein Ausgangspunkt der Diagonalen auf einen zu einem aktuellen Ausgangsbildpunkt in einer Zeile des aktuellen Ausgangsbildpunktes in Leserichtung benachbarten Bildpunkt festgelegt. Wird also ausgehend vom detektierten linken Randbildpunkt entlang der Diagonalen kein weiterer Randbildpunkt des Bildobjektes detektiert, so wird in einem nächsten Schritt der zu dem detektierten linken Randbildpunkt in Leserichtung benachbarte Bildpunkt als neuer Ausgangsbildpunkt der Diagonalen festgelegt. Alternativ kann geprüft werden, an welchen Bildpunktkoordinaten entlang der konstruierten Diagonale der Bereich der dem Bildobjekt zugeordneten Bildpunkte erstmals verlassen wird. In diesem Fall kann der Endpunkt der Diagonalen als der Vorgängerbildpunkt dieses Bildpunktes entlang der Diagonalen festgelegt werden.
-
Entsprechend wird, falls ein rechter Randbildpunkt detektiert wird, der eine Randbedingung nicht erfüllt, ein Randverlauf des Bildobjekts entlang einer Diagonalen konstruiert, wobei die Diagonale vom detektierten rechten Randbildpunkt ausgeht und in einem bereits detektierten Randbildpunkt endet, der in einer Zeile oberhalb einer Zeile des detektierten rechten Randbildpunktes und in einer Spalte rechts von einer Spalte des detektierten rechten Randbildpunktes angeordnet ist. Hierfür gelten die gleichen Ausführungen wie vorhergehend im Zusammenhang mit einem detektierten linken Randbildpunkt erläutert.
-
Das vorgeschlagene Verfahren zur Festlegung eines Randverlaufes ermöglicht in vorteilhafter Weise eine Vermeidung eines um mehr als eine Bildspalte springenden Randverlaufes, wodurch, wie nachfolgend näher erläutert, eine Kodierung des Randverlaufes mit einer hohen Kompressionsrate ermöglicht wird.
-
In einer bevorzugten Ausführungsform wird eine Objektanfangsposition des Bildobjektes in Abhängigkeit einer Bildpunktdifferenz zu einer Bildanfangsposition oder zu einer Objektanfangsposition eines unmittelbar vorhergehenden Bildobjektes kodiert. Eine Objektanfangsposition des Bildobjektes bezeichnet hierbei beispielsweise eine Bildpunktkoordinate eines Bildpunktes mit der geringsten Zeilenanzahl und geringsten Spaltenanzahl von den in dieser Zeile angeordneten Bildpunkten des Bildobjektes. Eine Bildanfangsposition bezeichnet beispielsweise den vorhergehend erläuterten Ursprungsbildpunkt, also die Bildkoordinate (1; 1). Eine Objektanfangsposition eines unmittelbar vorhergehenden Bildobjektes bezeichnet eine Bildpunktkoordinate eines Objektanfangspunktes, der der dem Objektanfangspunkt des aktuellen Bildobjekts entgegen der Leserichtung unmittelbar vorhergehende Objektsanfangspunkt ist, also dem entgegen der Leserichtung unmittelbar vorhergehend Bildobjekt zugeordnet ist.
-
Durch eine Kodierung von Bildpunktdifferenzen werden in vorteilhafter Weise in der Regel weniger Bits zur Kodierung benötigt als bei einer Kodierung von absoluten Bildkoordinaten. Insbesondere können Bildpunktdifferenzen alphabetbasiert kodiert werden, wobei Alphabet z. B. nach einer Konstruktionsregel einer Huffman-Kodierung erstellt sein kann. Eine Häufigkeit von möglichen Bildpunktdifferenzen kann hierbei aus Beispielsrechnungen geschätzt werden. Prinzipiell sind aber kleine Y-Differenzen (Zeilendifferenzen) häufiger als X-Differenzen (Spaltendifferenzen).
-
Weiter können Intensitätswerte von Bildpunkten des Bildobjektes durch einen minimalen Intensitätswert (eines Bildpunktes) des Bildobjektes und durch Differenzen zwischen Intensitätswerten weiterer Bildpunkte des Bildobjekts und diesem minimalen Intensitätswert kodiert werden. Zur Kodierung des minimalen Intensitätswertes kann eine zur Kodierung eines maximalen Intensitätswertes des Ausgangsbildes notwendige Bitanzahl benötigt werden. Die Kodierung der Differenzen benötigt in vorteilhafter Weise nur eine Bitanzahl, die zur Kodierung der Größe des objektspezifischen Streubereiches notwendig ist. Im Falle homogener Intensitätswerte der Bildpunkte des Bildobjektes, beispielsweise im Falle eines Streubereichs von 20, wird also kein Bit zur Kodierung der Differenzen benötigt. Im Falle einer Größe des Streubereiches von 2, beispielsweise 21, wird also nur 1 Bit zur Kodierung von Differenzen der Intensitätswerte von Bildpunkten des Bildobjektes zum minimalen Intensitätswert des Bildobjektes benötigt.
-
Dies ermöglicht in vorteilhafter Weise eine Kodierung von Intensitätswerten des Bildobjektes mit einer hohen Kompressionsrate, insbesondere im Vergleich zu einer Kodierung der absoluten Intensitätswerte.
-
Ein Randverlauf eines Randes des Bildobjektes kann in Abhängigkeit einer Richtung des Randverlaufes kodiert werden. Ausgehend von einem Vorgänger-Randbildpunkt kann ein folgender Randbildpunkt des Bildobjektes links unterhalb, unterhalb oder rechts unterhalb des Vorgänger-Randbildpunktes angeordnet sein. Zur Kodierung dieser drei Möglichkeiten der Anordnung des folgenden Randbildpunktes werden 2 Bit benötigt, wobei eine verbleibende Bitkonstellation der insgesamt vier möglichen Bitkonstellationen genutzt werden kann, um zu kodieren, dass auf den Vorgänger-Randbildpunkt ein mehrere Randbildpunkte umfassender Randabschnitt folgt. Somit kann also eine Richtung des Randverlaufes bzgl. eines (einzelnen) nachfolgenden Randbildpunktes des Bildobjektes durch 2 Bit kodiert werden.
-
Liegt ein mehrere Randbildpunkte umfassender Randabschnitt vor, so kann ein Randverlauf eines Randes des Bildobjektes in Abhängigkeit einer Art des Randabschnitts und einer Länge des Randabschnitts kodiert werden. Hierbei können insbesondere zwei Arten von Randabschnitten vorliegen. Einerseits kann ein linienförmiger Randabschnitt vorliegen, wobei mehrere Randbildpunkte entlang einer senkrechten Linie oder entlang einer diagonalen Linie angeordnet sind. In diesem Falle kann zusätzlich zu einer Länge des Randabschnitts, also z. B. einer Anzahl von Randbildpunkten, die dieser Randabschnitt umfasst, eine Richtung des Randabschnittes, beispielsweise durch 2 Bit, kodiert werden. Alternativ kann eine Richtung eines Randabschnittes alphabetbasiert kodiert werden, wobei ein Alphabet beispielsweise nur drei Zeichen umfassen kann, welche jeweils durch 1 Bit, 2 Bit und 2 Bit kodiert werden können. Durch 1 Bit kann in Abhängigkeit davon, ob der Vorgänger-Randbildpunkt ein rechter oder ein linker Randbildpunkt ist, eine häufigste Richtung des folgenden Randabschnitts kodiert werden. Im Falle eines linken Vorgänger-Randbildpunktes kann die häufigste Richtung beispielsweise eine Diagonale von links oben nach rechts unten sein. Entsprechend kann bei einem rechten Vorgänger-Randbildpunkt die häufigste Richtung eine Diagonale von rechts oben nach links unten sein. Durch die verbleibenden beiden Zeichen, die jeweils durch 2 Bit kodiert werden können, können die hiervon abweichenden Richtungen kodiert werden.
-
Auch die Länge eines Randabschnittes kann alphabetbasiert kodiert werden. Ein Alphabet für die Kodierung der Länge des Randabschnittes kann beispielsweise durch Beispielrechnungen erstellt werden.
-
Eine weitere Art eines Randabschnittes kann eine Folge von Randbildpunkten sein, die entlang eines Randes eines bereits segmentierten Bildobjektes verlaufen. In diesem Fall kann ausschließlich eine Länge dieses Randabschnittes, also beispielsweise eine Anzahl von Randbildpunkten dieses Randabschnittes, kodiert werden, da sich Koordinaten der Randbildpunkte dieses Randabschnitts aus den entsprechend benachbarten Randbildpunkten des bereits segmentierten Bildobjektes ergeben. Wie vorhergehend erläutert, kann bei einem bereits segmentierten Bildobjekt eine Randbedingung auch dann erfüllt sein, wenn ein aktueller Randbildpunkt keinen Vorgänger-Randbildpunkt aufweist, der rechts über, über oder links über dem aktuellen Randbildpunkt angeordnet ist. Vielmehr kann eine Spaltendifferenz zwischen einem aktuellen Randbildpunkt und einem Vorgänger-Randbildpunkt größer als eins sein, wodurch Spaltensprünge auftreten können. Bei einer Größe des Streubereichs von Eins können jedoch nur senkrecht verlaufende Bildränder als bereits vorhandene Randabschnitte gelten. Bei größeren Streubereichen gelten auch Randabschnitte von bereits segmentierten oder kodierten Bildobjekten als Randabschnitte.
-
Die vorgeschlagene Kodierung eines Randverlaufes durch Randabschnitte kann in einer weiteren Ausführungsform jedoch nur dann vorgenommen werden, falls der Randabschnitt eine Länge aufweist, die größer als eine (artspezifische) minimale Länge ist. Für einen linienförmigen Randabschnitt, also einen Randabschnitt, der sich nicht an einem Randverlauf eines bereits segmentierten oder kodierten Bildobjektes orientiert, ergibt sich eine minimale Länge des Randabschnittes durch MLOR × 2 > KR + RA + RI + BL Formel 1 wobei MLOR eine minimale Länge des Randabschnitts bezeichnet, RI eine zur Kodierung einer Richtung des Randabschnitts benötigte Bitanzahl, beispielsweise maximal 2 Bit, bezeichnet, KR eine zur Kodierung einer Kennzeichnung eines folgenden Randabschnitts benötigte Bitanzahl, beispielsweise 2 Bit, bezeichnet, RA eine zur Kodierung einer Randart benötigte Bitanzahl, beispielsweise 1 Bit, bezeichnet und BL eine zur Kodierung der Länge des Randabschnitts benötigte Bitanzahl bezeichnet. Hierbei kann KR die verbleibende Bitkonstellation der vorhergehend erwähnten vier möglichen Bitkonstellationen, die zur Kodierung einer Richtung des Randverlaufs für einen einzelnen nachfolgenden Randbildpunkt benötigt werden, sein (siehe vorhergehende Ausführungen). Wird beispielsweise angenommen, dass BL 2 beträgt, also mindestens 2 Bit zur, beispielsweise alphabetbasierten, Kodierung der Länge des Randabschnitts benötigt werden, so ergibt sich nach Formel 1 eine minimale Länge eines linienartigen Randabschnittes von Vier.
-
Im Falle, dass ein Randabschnitt entlang eines Randverlaufs eines bereits segmentierten bzw. kodierten Bildobjektes verläuft, ergibt sich eine minimale Länge eines solchen Randabschnittes durch MLMR × 2 > KR + RA + BL Formel 2, wobei MLMR eine minimale Länge des Randabschnittes bezeichnet. Wird beispielsweise davon ausgegangen, dass BL 2 beträgt, also mindestens 2 Bit zur, beispielsweise alphabetbasierten, Kodierung der Länge des Randabschnittes benötigt werden, so ergibt sich eine minimale Länge eines solchen Randabschnittes von MLMR = 3.
-
Durch die vorgeschlagene Kodierung bzw. die Kombination der vorgeschlagenen Kodierungen lässt sich in vorteilhafter Weise eine Kodierung mit einer hohen Kompressionsrate erreichen, die trotzdem eine vollständige Beschreibung von Bildobjekten des Bildes und somit eine verlustfreie Dekomprimierung und Dekodierung ermöglicht.
-
In einer weiteren Ausführungsform wird eine für die Kodierung benötigte Bitanzahl bestimmt, wobei ein Bildobjekt nur dann kodiert wird, falls die benötigte Bitanzahl kleiner als eine Anzahl der Bildpunkte des Bildobjektes ist. Hierbei wird also ein Gesamtkodierungsaufwand für eine Fläche oder alle Bildpunkte des segmentierten Bildobjektes bestimmt. Hiernach wird geprüft, ob für die Fläche des Bildobjekts bei einer vorgeschlagenen Kodierung wirklich eine Kompression erfolgt. Da zu diesem Zeitpunkt eine Intensitätswertverteilung in einer Umgebung einer Fläche des entsprechenden Bildobjektes unbekannt ist, kann eine Abschätzung nur unter Annahme eines ungünstigsten Falls vorgenommen werden. Dieser ungünstigste Fall bezeichnet einen Fall, dass die Bildpunkte des segmentierten Bildobjektes innerhalb einer diese Bildpunkte umfassenden größeren Fläche des Ausgangsbildes, beispielsweise innerhalb eines größeren Bildobjektes des Ausgangsbildes, liegen, welches zur Kodierung der Intensitätswerte nur 1 Bit mehr benötigt. Ein Kodierungsaufwand kann daher wie folgt abgeschätzt werden: N > UR + DY + DX + KG Formel 3, wobei N eine Anzahl der Bildpunkte des Bildobjektes, UR einen Kodierungsaufwand, beispielsweise eine benötigte Bitanzahl, für eine Kodierung der Ränder des Bildobjektes, DY einen Kodierungsaufwand, beispielsweise eine notwendige Bitanzahl, zur Kodierung von Y-Differenzen (Zeilendifferenzen) zu einer Objektanfangsposition eines unmittelbar vorhergehenden Bildobjektes, DX einen Kodierungsaufwand, beispielsweise eine benötigte Bitanzahl, zur Kodierung von X-Differenzen (Spaltendifferenzen) zu der Objektanfangsposition des unmittelbar vorhergehenden Bildobjektes und KG ein Kodierungsaufwand, beispielsweise eine notwendige Bitanzahl, für einen minimalen Intensitätswert des Bildobjektes bezeichnet. Eine Kodierung wird also nur dann vorgenommen, falls die Summe UR + DY + DX + KG kleiner als die Anzahl der Bildpunkte des segmentierten Bildobjektes ist.
-
Hierdurch ergibt sich in vorteilhafter Weise, dass die vorgeschlagene Kodierung nur dann durchgeführt wird, falls hierdurch eine Kompression folgt. Grundsätzlich darf bei einer Segmentierung eines Bildobjekts in einem Wachstumsschritt kein Bildpunkt verwendet werden, welcher ein bereits segmentierter, also einem bereits bestehenden Bildobjekt zugeordneter Bildpunkt, ist.
-
In einer weiteren Ausführungsform wird, falls der Segmentierabschnitt mit einer maximalen, zulässigen Größe des Streubereichs durchgeführt wird, bestimmt, ob ein noch mehrere unsegmentierte Bildpunkte umfassender Bildbereich vorliegt. Unsegmentierte Bildpunkte bezeichnen hierbei Bildpunkte, die keinem Bildobjekt zugeordnet sind. Hierbei wird bestimmt, ob der Bildbereich kodierbar ist oder einen kodierbaren Unterbereich umfasst. Der Bildbereich oder ein Unterbereich des Bildbereiches ist kodierbar, falls eine zur Kodierung benötigte Bitanzahl kleiner einem Produkt aus einer Anzahl der Bildpunkte des Bild- oder Unterbereichs und einer Differenz zwischen einer für eine Kodierung des maximalen Intensitätswertes des Bild- oder Unterbereichs benötigten Bitanzahl und einer für eine Kodierung der optimalen Größe des Streubereiches benötigten Bitanzahl ist.
-
Die optimale Größe des Streubereichs kann z. B. als die Größe des Streubereichs ausgewählt werden, der eine maximale Kompression des Bildbereichs oder Unterbereichs ermöglicht. Hierzu kann in Abhängigkeit verschiedener Größen des Streubereichs eine Menge von zur Kodierung des Bildbereiches oder Unterbereiches benötigten Bitanzahlen bestimmt werden, wobei die zur Kodierung benötigte optimale Bitanzahl dann als kleinste Bitanzahl dieser Menge ausgewählt wird. Die zu dieser optimalen Bitanzahl korrespondierende Größe des Streubereichs wird dann als optimale Größe bestimmt. So kann z. B. die zur Kodierung benötigte Bitanzahl wiederholt bestimmt werden und zur Menge von zur Kodierung des Bildbereiches oder Unterbereiches benötigten Bitanzahlen hinzugefügt werden, wobei die Größe des Streubereiches von einer minimalen Größe bis zu einer Größe des zweitgrößten Streubereiches, z. B. in Zweierpotenzen oder in Einser-Schritten, ansteigt.
-
Weiter wird mit einem Bit kodiert, ob der Bildbereich kodierbar ist oder einen kodierbaren Unterbereich umfasst. Unsegmentierte Bildpunkte, die nicht zu einem kodierbaren Bildbereich oder einem kodierbaren Unterbereich des Bildbereiches gehören, können intensitätsbasiert, also mit einer maximalen Bitanzahl, kodiert werden.
-
Das Ausgangsbild kann in mehreren Segmentierabschnitten mit ansteigender Größe eines zulässigen Streubereiches segmentiert werden. Wird die maximale, zulässige Größe des Streubereichs erreicht, erfolgt also ein letzter Durchlauf des Segmentierabschnitts, so existieren in einem Objektbild, welches die bereits segmentierten Bildobjekte umfasst, nur noch unsegmentierte Bildpunkte. Auch können Bereiche existieren, die mehrere unsegmentierte Bildpunkte umfassen. Nunmehr kann geprüft werden, ob innerhalb derartiger Bereiche noch komprimierbare Bereiche gefunden werden können, da jetzt für eine Kompression eine Differenz des zugelassenen Streubereiches zum benötigten Bereich von Intensitätswerten genutzt werden kann. Statt der vorhergehend erläuterten Formel 3 kann ein Kodierungsaufwand wie folgt überprüft werden. N × (M – BS) > KFK + UR + DY + DX + KG Formel 4, wobei M eine zur Kodierung des maximalen Intensitätswertes des Ausgangsbildes benötigte Bitanzahl, BS eine zur Kodierung der optimalen Größe des Streubereichs benötigte Bitanzahl und KFK eine zur Kennzeichnung einer Flächenkodierung benötigte Bitanzahl bezeichnet. KFK wird benötigt, um zu unterscheiden, ob ein noch unsegmentierter Bereich kodierbar ist oder einen kodierbaren Unterbereich umfasst. KFK muss bei jedem noch unsegmentierten Bereich kodiert werden. Bei KFK = 1 kann beispielsweise eine Flächenkodierung erfolgen, bei KFK = 0 kann beispielsweise eine intensitätswertbasierte Kodierung der Bildpunkte des Bereiches erfolgen. Im Falle der Formel 4 kann für DY und DX eine alphabetbasierte Kodierung erfolgen, für die in vorteilhafter Weise ein kurzes Alphabet konstruiert werden kann, da innerhalb von Bereichen noch unsegmentierter Bildpunkte keine großen Differenzen von Bildpunktkoordinaten auftreten können.
-
Nachdem so noch alle komprimierbaren Bereiche kodiert wurden, verbleiben unkodierte Restbildpunkte oder Restbildbereiche. Diese können dann als Originalwerte abgespeichert werden.
-
Hierdurch ergibt sich in vorteilhafter Weise eine besonders effektive Kodierung des Ausgangsbildes mit einer hohen Kompressionsrate.
-
In einer weiteren Ausführungsform wird, nachdem ein kodierbares Bildobjekt detektiert wurde, ein Streubereich für die Kodierung des Bildobjektes optimiert. Hierzu können ein minimaler Intensitätswert und ein maximaler Intensitätswert des Streubereiches erhöht werden, beispielsweise um Eins, und mit diesem neuen Streubereich ein Bildobjekt segmentiert werden, welches das ursprüngliche Bildobjekt zumindest teilweise umfasst. Hierzu können, ausgehend von einem Anfangsbildpunkt des ursprünglichen Bildobjektes, in der Zeile der Objektanfangsposition die entgegen der Leserichtung von der Objektanfangsposition liegenden Bildpunkte geprüft werden, bis eine neue Objektanfangsposition eines neuen Randbildpunkts in Abhängigkeit des neuen Streubereiches detektiert wird. Ausgehend von dieser neuen Objektanfangsposition kann dann gemäß den vorhergehenden Ausführungen ein Bildobjekt segmentiert werden. Weiter ist möglich, dass auch in einer Vorgängerzeile zur Zeile der Objektanfangsposition des aktuellen Bildobjektes nach neuen linken und rechten Randbildpunkten gesucht wird. Nach Abschluss der Segmentierung mit dem veränderten Streubereich kann dann geprüft werden, ob eine Kompressionsrate höher oder niedriger als eine Kompressionsrate für das ursprüngliche Bildobjekt ist. Eine Kompressionsrate kann hierbei als Verhältnis des Produkts aus einer Anzahl der Bildpunkte des Bildobjekts und einer zur Kodierung eines maximalen Intensitätswertes des Bildobjektes benötigten Bitanzahl zu der für die erfindungsgemäße Kodierung benötigten Bitanzahl, die in den Formeln 3 und 4 erläutert ist, definiert werden. Hierbei kann der Streubereich, insbesondere ein minimaler Intensitätswert und/oder ein maximaler Intensitätswert des Streubereiches, bis zu einem vorbestimmten Maß erhöht und/oder erniedrigt werden, wobei für alle derart bestimmten Streubereiche der Kompressionsfaktor errechnet wird. Folgend wird ein Bildobjekt kodiert, welches den höchsten Kompressionsfaktor aufweist.
-
Hierdurch ergibt sich in vorteilhafter Weise eine möglichst effektive Kodierung von Bildobjekten mit einer möglichst hohen Kompressionsrate.
-
Vorgeschlagen wird auch eine Vorrichtung zur Kompression von Bilddaten, insbesondere von Bilddaten von Fernerkundungsbildern. Die Vorrichtung umfasst mindestens eine Eingabeschnittstelle und mindestens eine Auswerteeinrichtung. Mittels der Eingabeschnittstelle ist ein Ausgangsbild einlesbar. Die Vorrichtung kann auch eine Speichereinrichtung zur Speicherung des Ausgangsbildes und eines Objektbildes umfassen. Mittels der Auswerteeinrichtung ist in einem Segmentierabschnitt mindestens ein Bildobjekt des Ausgangsbildes segmentierbar. Das mindestens eine Bildobjekt ist dann in Abhängigkeit einer Objektanfangsposition des Bildobjektes, eines Randverlaufs von Rändern des Bildobjektes und in Abhängigkeit von Intensitätswerten von Bildpunkten des Bildobjektes kodierbar. Mittels der vorgeschlagenen Vorrichtung kann in vorteilhafter Weise eines der vorhergehend erläuterten Verfahren durchgeführt werden.
-
Die Erfindung wird anhand eines Ausführungsbeispiels näher erläutert. Die Fig. zeigen:
-
1 ein schematisches Flussdiagramm eines Verfahrens zur Komprimierung,
-
2 ein schematisches Flussdiagramm eines Verfahrens zur Dekodierung,
-
3 eine schematische Darstellung von Bildpunkten eines kodierbaren Bildobjektes und
-
4 ein schematisches Blockschaltbild einer Vorrichtung zur Kompression von Bilddaten.
-
Nachfolgend bezeichnen gleiche Bezugszeichen Elemente mit gleichen oder ähnlichen technischen Eigenschaften.
-
In 1 ist ein schematisches Flussdiagramm einer erfindungsgemäßen Kodierung dargestellt. Hierbei wird aus einer Speichereinrichtung 1 ein zu komprimierendes Ausgangsbild geladen. Vor der eigentlichen Kompression des Ausgangsbildes wird eine Zeilen- und Spaltenzahl des Ausgangsbildes sowie eine zur Kodierung eines maximalen Intensitätswertes des Ausgangsbildes benötigte Bitanzahl ermittelt und abgespeichert. Diese Bitanzahl definiert dann die Größe eines maximalen Streubereichs. Aus der Speichereinrichtung 1 des Ausgangsbildes wird, beginnend in einer linken oberen Ecke von einem Ursprungsbildpunkt UB (siehe 3) mit den Zeilen-/Spaltenkoordinaten (1; 1) in Leserichtung ein Intensitätswert von Bildpunkten des Ausgangsbildes gelesen. In einer Leserichtung bedeutet hierbei, dass zunächst alle Bildpunkte einer Zeile mit aufsteigender Spaltenanzahl untersucht werden, wobei nach dem Bildpunkt mit der höchsten Spaltenanzahl einer Zeile der erste Bildpunkt der Nachfolgezeile, also mit der Spaltenzahl 1, untersucht wird.
-
In einem ersten Durchlauf eines Segmentierabschnittes 2 hat ein aktueller Streubereich eine Größe Eins (20). Zunächst wird ein Intensitätswert des Ursprungsbildpunktes UB eingelesen. Folgend werden die in der Zeile des Ursprungsbildpunktes UB folgenden beiden Bildpunkte bzw. deren Intensitätswerte eingelesen. Aufgrund des aktuellen Streubereiches mit der Größe Eins ist eine Anfangsbedingung für die Segmentierung eines Bildobjektes nur dann erfüllt, wenn die Intensitätswerte der beiden folgenden Bildpunkte gleich dem Intensitätswert des Ursprungsbildpunktes UB sind. Ist dies nicht der Fall, so wird eine Segmentierung abgebrochen und ein neuer Versuch zur Segmentierung beginnt mit einem potentiellen Objektanfangsbildpunkt, der in Leserichtung zu dem bisherigen potentiellen Objektanfangsbildpunkt benachbart ist. In dem ersten Segmentierungsabschnitt 2 werden somit Objekte mit homogenen Intensitätswerten, also gleichen Intensitätswerten, segmentiert. Hierbei ist zu beachten, dass nur Bildpunkte untersucht werden, die noch unsegmentiert sind, also noch keinem Bildobjekt zugeordnet sind. Eine Anfangsbedingung ist erfüllt, falls mindestens drei in Leserichtung aufeinanderfolgende Bildpunkte innerhalb des aktuellen Streubereiches liegen, im ersten Durchlauf des Segmentierungsabschnitts 2 also gleiche Intensitätswerte aufweisen. Ist die Anfangsbedingung erfüllt, so wird in der Folgezeile fortgefahren. In dieser wird in Leserichtung in einem Wachstumsschritt geprüft, ob weitere Bildpunkte innerhalb des aktuellen Streubereiches liegen. Gleichzeitig wird ein linker Randbildpunkt LRB als auch ein rechter Randbildpunkt in Leserichtung bestimmt. In der Folgezeile wird ein Wachstum abgebrochen, falls ein rechter Randbildpunkt RRB des Objekts detektiert wird. Ein rechter Randbildpunkt RRB bezeichnet hierbei einen Bildpunkt, auf den in Leserichtung ein weiterer Bildpunkt folgt, dessen Intensitätswert nicht innerhalb des aktuellen Streubereiches liegt und/oder dessen Spaltenposition um Eins höher ist als ein rechter Randbildpunkt RBB in der Vorgängerzeile. Die derart bestimmten Randbildpunkte LRB, RRB müssen hierbei die vorhergehend erläuterten Randbedingungen erfüllen. Erfüllt ein Randbildpunkt LRB, RRB die vorhergehend erläuterten Randbedingungen für eine Konstruktion von Randbildpunkten nicht, so kann eine Rückwärtskorrektur des Randes erfolgen. Dies wurde ebenfalls vorhergehend erläutert. Weiter wird ein linker und ein rechter Randbildpunkt LRB, RRB in der aktuellen Zeile gespeichert. Anschließend wird in der nächst höheren Zeile in der gleichen Weise fortgefahren. Kann in einer Zeile nur ein Bildpunkt oder eine Folge von zwei in Leserichtung benachbarten Bildpunkten gefunden werden, deren Intensitätswerte innerhalb des aktuell zugelassenen Streubereiches liegen, so ist eine Endbedingung für das Wachstum erfüllt. Kann in einer Zeile kein Bildpunkt gefunden werden, dessen Intensitätswert innerhalb des zugelassenen Streubereiches liegt, so wird in der Vorgängerzeile eine Folge von zwei in Leserichtung benachbarten Bildpunkten, deren Intensitätswerte innerhalb des zugelassenen Streubereiches liegen, bestimmt, welche bei einer vorhergehend erläuterten Rückwärtskorrektur ein Bildobjekt mit einer größtmöglichen Anzahl von Bildpunkten erzeugen, wonach das Wachstum ebenfalls beendet wird. Nun erfolgt nach Formel 3 eine Prüfung, ob bei einer Kodierung des derart segmentierten Bildobjektes eine Kompression stattfinden würde. Die Bildpunktanzahl N ergibt sich hierbei aus der Summe der jeweils um Eins erhöhten Differenzen zwischen den gespeicherten Koordinaten der linken und rechten Randbildpunkte LRB, RRB der einzelnen Zeilen des Bildobjekts (siehe 3). UR wird für jede Zeile des Bildobjektes aus den Spaltenpositionen des linken und des rechten Randbildpunktes LRB, RRB berechnet. DY und DX ergeben sich aus entsprechenden Differenzen zwischen einem Objektanfangsbildpunkt OAB bzw. dessen Koordinaten und einem Objektanfangsbildpunkt eines vorhergehenden Bildobjektes bzw. dessen Koordinaten oder dem Ursprungsbildpunkt UB bzw. dessen Koordinaten. KG ist für eine festgelegte maximale Größe des Streubereichs konstant.
-
UR ist hierbei eine Summe aus allen eine Randrichtung kodierenden Bits und einer zur Kodierung von Randabschnitten, die entlang eines Randes eines bereits segmentierten bzw. kodierten Bildobjektes verlaufen, benötigten Bitanzahl und einer Bitanzahl von zur Kodierung von linienartigen Randabschnitten benötigten Bits.
-
Ist auf diese Weise das gesamte Ausgangsbild, also alle Bildpunkte des Ausgangsbildes, untersucht worden, so kann in einem zweiten Durchlauf des Segmentierungsabschnittes 2 die Größe des zugelassenen Streubereichs um eine Potenz erhöhte werden, also beispielsweise auf 2 (21) erhöht werden. Für Streubereiche, die größer als 1 sind, ergibt sich ein objektspezifischer Streubereich. Dieser wird ausgehend von einem potentiellen Objektanfangsbildpunkt OAB des Bildobjektes gebildet. Beträgt z. B. ein Intensitätswert eines potentiellen Objektanfangsbildpunktes OAB 5, so kann, im Falle einer Größe des Streubereiches von 2, ein Intensitätswert eines in Leserichtung folgenden Bildpunktes einen Intensitätswert von 4, 5, 6 aufweisen. Beträgt ein Intensitätswert dieses in Leserichtung folgenden Bildpunktes beispielsweise 6, so ist der objektspezifische Streubereich auf den Bereich von 5 bis 6 festgelegt. Beträgt jedoch der Intensitätswert des in Leserichtung folgenden Bildpunktes 4, so ist der objektspezifische Streubereich auf einen Intensitätswertbereich von 4 bis 5 festgelegt.
-
Sind die in Formel 3 bzw. 4 formulierten Bedingungen erfüllt, kann das Bildobjekt in einem in einer weiteren Speichereinrichtung 3 gespeicherten Objektbild gekennzeichnet werden und in einem Kodierungsschritt 5 kodiert werden. Die Prüfung der Bedingungen in Formel 3 und 4 erfolgt in einem Prüfschritt 4. Bei einer Kodierung sind vier Fälle zu unterscheiden:
- 1. Eine zugelassene Streuung ist Eins. In diesem Fall erfolgt eine Kodierung in der Reihenfolge DY, DX, KG und UR, wobei die Reihenfolge eine Reihenfolge der Bits in einem Datenstrom bezeichnet.
- 2. Eine zugelassene Streuung ist größer als Eins, jedoch kleiner als die maximale Streuung. In diesem Fall beginnt eine Kodierung ebenfalls mit DY, DX, KG und UR. Hiernach folgen die als Differenzen zwischen einem Intensitätswert eines Bildpunktes und einem minimalen Intensitätswert des Bildobjektes kodierten Intensitätswerte. Eine zur Kodierung dieser Differenzen benötigte Bitanzahl ergibt sich aus der Größe des für diesen Durchlauf des Segmentierungsabschnitts zugelassenen Streubereichs.
- 3. Die zugelassene Streuung entspricht der maximalen Streuung und das Bild wird mit dieser maximalen Streuung zum ersten Mal in einem Segmentierungsabschnitt 2 durchlaufen. Lassen sich in einem Bereich von noch unsegmentierten Bildpunkten im Objektbild keine weiteren komprimierbaren Bereiche finden, die die Bedingung in Formel 4 erfüllen, wird KFK mit 0 kodiert und der nächste noch unsegmentierte Bereich wird in Leserichtung gesucht. Lässt sich dagegen ein kodierbarer bzw. komprimierbarer Bereich finden, dann wird zuerst KFK mit der Zahl 1 kodiert. Es folgen DY, DX, KG, UR und BS. Eine Größe von BS bzw. einer Anzahl von benötigten Bits hängt von der maximalen Größe des Streubereichs ab. Es ist die Bitanzahl, mit der die maximale Größe des Streubereichs kodiert werden kann. Ist z. B. die maximale Größe des Streubereichs 256, ist die dafür notwendige Bitanzahl 8. Um z. B. Intensitätswerte zwischen 1 und 8 kodieren zu können, werden für BS 3 Bit benötigt. Darauf folgen wiederum die als Differenzen zwischen dem Intensitätswert eines Bildpunktes und dem minimalen Intensitätswert kodierten Intensitätswerte. Die notwendige Bitanzahl für die Differenz ist in diesem Fall der Wert von BS bzw. die für die Kodierung von dem Wert von BS benötigte Bitanzahl.
- 4. Die zugelassene Streuung entspricht der maximalen Streuung und das Bild wird mit dieser Streuung in einem zweiten Durchlauf eines Segmentierungsabschnitts 2 durchlaufen. In diesem Fall wird zuerst KFK mit der Zahl 0 kodiert. Hierauf folgen die originalen Intensitätswerte der im Objektbild noch unsegmentierten Bildpunkte in Leserichtung. Die Begrenzung der einzelnen Zeilenteile ist hier im Gegensatz zum zweiten Fall durch die bereits im Objektbild als segmentiert gekennzeichneten Bildobjekte gegeben. Damit entfallen UR, KG, DX, DY in Formel 4. Ein Bereich von Bildpunkten, die in Abhängigkeit der originalen Intensitätswerte kodiert werden, kann solange fortgesetzt werden, wie sich noch weitere Bildpunkte in Folgezeilen finden lassen, die mit Bildpunkten in der Vorgängerzeile in senkrechter Richtung verbunden sind.
-
DY, DX und UR werden kodiert, indem ein Wert einer Position in einem zugehörigen Alphabet ausgedrückt wird. Das Zeichen wird dann an dieser Position abgespeichert. Die Alphabete können in einer Speichereinrichtung gespeichert sein. In einer weiteren Speichereinrichtung 6 kann dann das komprimierte Bild abgespeichert werden.
-
In 2 ist ein schematisches Flussdiagramm eines Verfahrens zur Dekodierung dargestellt. Hierbei ist ein komprimiertes Bild bzw. Daten des komprimierten Bildes in einer Speichereinrichtung 6 (siehe 1) gespeichert. In einem Dekodierschritt 7 wird zunächst eine Größe des Streubereichs auf den Wert 1 (20) und eine Anfangsposition auf die vorhergehend erläuterte Position des Ursprungsbildpunktes UB (siehe 3) des Ausgangsbildes (Bildpunktkoordinaten (1; 1)) gesetzt. Anschließend werden Zeilen- und Spaltenanzahl des Ausgangsbildes sowie die maximale Größe des Streubereichs aus dem komprimierten Bild eingelesen. Danach werden DY und DX eines kodierten und komprimierten Bildobjektes ausgelesen und dekodiert. Durch eine Addition zu einer vorherigen Objektanfangsposition bzw. der Bildanfangsposition erhält man eine Position eines Objektanfangsbildpunktes OAB eines zu erzeugenden Objektes. Hiernach wird KG ausgelesen und abgespeichert. Es folgt in dem Dekodierschritt 7 eine Dekodierung von UR, wobei ein Ergebnis z. B. in einer Tabelle gespeichert wird. Entsprechend der Reihenfolge der Kodierung wird zunächst KR gelesen. Handelt es sich bei der in KR kodierten Bitfolge um eine eine Bildpunktkoordinate eines folgenden Randbildpunktes LRB, RRB (siehe 3) kodierende Kombination, so wird eine aktuelle Bildpunktkoordinate des Randbildpunktes entsprechend verändert. Z. B. wird bei einem rechts unter einem Randbildpunkt LRB, RRB liegenden folgenden Randbildpunkt LRB, RRB eine Y-Koordinate und eine X-Koordinate des aktuellen Randbildpunktes LRB, RRB um 1 erhöht. Zeigt KR ein Randabschnitt an, wird als nächstes RA gelesen. Handelt es sich um einen gemeinsamen Randabschnitt, wird eine in BL kodierte Länge dekodiert. Bei einem gemeinsamen Randabschnitt wird im bereits dekodierten Bild, welches in einem Objekterzeugungsschritt 8 erzeugt und in einer Speichereinrichtung 9 gespeichert wird, ein bereits beschriebenes Bildobjekt in Leserichtung gesucht. Bei einem rechten Rand wird ein bereits beschriebenes (dekodiertes) Bildobjekt in Leserichtung gesucht, wobei der Randbildpunkt RRB des aktuellen Bildobjektes dann der in Leserichtung vor einem Randbildpunkt des bereits dekodierten Objektes liegende Bildpunkt ist. Bei einem linken Rand wird ein bereits beschriebenes Bildobjekt entgegen der Leserichtung gesucht, wobei ein Randbildpunkt LRB des aktuellen Bildobjektes ein in Leserichtung auf einen Randbildpunkt des bereits dekodierten Objektes folgender Randbildpunkt ist. Dieser Vorgang wird entsprechend einer Länge des Randabschnittes in den folgenden Zeilen wiederholt. Handelt es sich bei einem Randabschnitt um einen linienartigen Randabschnitt, wird zunächst RI gelesen und dekodiert und dann BL gelesen und dekodiert. Entsprechend der in RI und BL kodierten Richtung und Länge werden dann Randbildpunktkoordinaten im Objekterzeugungsschritt 8 erzeugt und gespeichert. Ist der vollständige Rand abgespeichert, wird im Objekterzeugungsschritt ein Objektanfangsbildpunkt OAB und die darauf in Leserichtung folgenden beiden Bildpunkte in Abhängigkeit eines dekodierten Inhaltes von KG erzeugt und gespeichert. Die folgenden Bildpunkte des Bildobjektes können, da Randbildpunktkoordinaten LRB, RRB des Bildobjektes bereits erzeugt sind, ebenfalls durch Dekodierung von KG beschrieben werden. Wird ein Objektende bzw. ein Objektendbildpunkt OEB detektiert, so wird erneut ein Dekodierungsschritt 7 durchgeführt, wobei Daten, die ein folgendes Bildobjekt kodieren, eingelesen werden.
-
Liegt eine in Abhängigkeit von DY und DX bestimmter Objektanfangsbildpunkt OAB hinter einem Bildendpunkt BEP (siehe 3), so können DY und DX durch Subtraktion von Koordinaten des Bildendpunktes korrigiert werden und eine Größe des Streubereichs mit 2 multipliziert werden. Nunmehr erfolgt eine Dekodierung mit einem größeren zugelassenen Streubereich. Im Unterschied zum ersten Durchgang der Dekodierung müssen nach Dekodierung und Speicherung von DY, DX, KG und UR noch die einzelnen Intensitätswerte ausgelesen werden. Hierbei ist keine Dekodierung erforderlich, da die ausgelesenen Intensitätswerte als Differenz zu einem minimalen Intensitätswert kodiert sind und somit nur noch zu dem in KG kodierten Intensitätswert addiert und an einer entsprechenden Bildpunktposition gespeichert werden müssen.
-
Bei einem Durchlauf eines Dekodierungsschrittes 7 mit dem größten Streubereich wird in einem ersten Durchlauf vom Bildanfang an in Leserichtung der erste noch nicht beschriebene (dekodierte) Bildpunkt des in der Speichereinrichtung 9 gespeicherten dekomprimierten Bildes gesucht. Hiernach wird das Bit KFK gelesen. Ist dieses gleich 0, wird nach dem ersten bereits beschriebenen Bildpunkt des dekomprimierten Bildes in Leserichtung gesucht und anschließend wieder nach dem in Leserichtung folgenden ersten unbeschriebenen Bildpunkt. Ist KFK = 1, so werden als nächsten DY, DX, KG, UR und BS ausgelesen und bis auf die Bits KG und BS dekodiert. DY und DX werden zu einer Bildpunktposition des ersten noch nicht beschriebenen Bildpunktes addiert und ergeben somit eine Position eines Objektanfangsbildpunktes OAB. Im Unterschied zu dem vorhergehend erläuterten Fall ergibt sich in diesem Fall eine Größe des Streubereichs nicht automatisch, sondern ist jetzt durch den Inhalt von BS definiert. In dem Objekterzeugungsschritt 8 wird dann eine Anzahl von Bits, die zur Kodierung von BS notwendig sind, aus dem komprimierten Bild (bzw. dem Datenstrom des komprimierten Bildes) ausgelesen. Anschließend werden solange Intensitätswerte der Länge BS ausgelesen, zu KG addiert und abgespeichert bis das durch den Randverlauf vorgegebene Bildobjekt gefüllt ist. Anschließend wird, ausgehend von dem aktuellen Objektanfangsbildpunkt OAB wieder der erste in Leserichtung noch nicht beschriebene Bildpunkt des dekomprimierten Bildes gesucht. Ist ein Bildende erreicht, wird erneut ein erster in Leserichtung noch nicht beschriebener Bildpunkt des dekomprimierten Bildes gesucht. Hiernach werden solange Intensitätswerte aus dem komprimierten Bild mit einer Bitanzahl, die vom größten Streubereich abhängig ist, ausgelesen und in Leserichtung in die noch nicht beschriebenen Bildpunkte des dekomprimierten Bildes geschrieben, bis kein unbeschriebener Bildpunkt mehr gefunden werden kann. Wird in diesem zweiten Durchlauf des Dekodierschrittes 7 mit der maximalen zulässigen Größe des Streubereichs das Bildende erreicht, ist die Dekompression beendet.
-
In 3 ist ein schematischer Ausschnitt aus einem zu komprimierenden Bild dargestellt, welcher ein Bildobjekt enthält. Dargestellt ist ein Ursprungsbildpunkt UB, der in einer linkeren oberen Ecke des Ausschnitts angeordnet ist. Dieser hat die Bildkoordinaten (1; 1). Weiter dargestellt ist ein Objektanfangsbildpunkt OAB, der die Bildkoordinaten (2; 5) aufweist, also in der zweiten Zeile und der fünften Spalte des Ausschnitts angeordnet ist. Die mit einer Kreuzschraffur dargestellten Bildpunkte sind Bildpunkte, die nach dem Segmentierabschnitt 2 (siehe 1) dem Bildobjekt zugeordnet sind. Die mit einer einfachen Schraffur dargestellten Bildpunkte sind Bildpunkte, deren Intensitätswerte zwar innerhalb des für den Segmentierabschnitt 2 geltenden Streubereichs liegen, jedoch Bedingungen für einen Randverlauf nicht erfüllen. Während des Segmentierabschnitts 2 wird ein Objektanfang in der zweiten Zeile detektiert, wobei, beginnend mit dem Objektanfangsbildpunkt OAB, drei in Leserichtung benachbarte Bildpunkte innerhalb des für den aktuellen Durchlauf des Segmentierabschnitts 2 geltenden Streubereichs liegen. In der dritten Zeile wird ein linker Randbildpunkt LRB des Bildobjekts detektiert, der die Koordinaten (3; 4) aufweist, also links unter dem Objektanfangsbildpunkt OAB angeordnet ist, der ebenfalls einen linken Randbildpunkt darstellt. Ebenfalls in der dritten Zeile wird ein rechter Randbildpunkt RRB des Bildobjekts detektiert, der die Koordinaten (3; 8) aufweist, also rechts unter einem rechten Randbildpunkt des Bildobjekts in der zweiten Zeile angeordnet ist. Der Einfachheit halber ist jeweils nur ein exemplarischer linker Randbildpunkt LRB und ein rechter Randbildpunkt RRB mit einem Bezugszeichen dargestellt.
-
In der zehnten Zeile weist ein linker Randbildpunkt LRB des Bildobjekts die Koordinaten (10; 2) auf. Der in der elften Zeile detektierte linke Randbildpunkt LRB weist die Koordinaten (11; 6) auf. Somit tritt ein Spaltensprung, der größer als 1 ist, zwischen den linken Randbildpunkten LRB der zehnten und elften Zeile auf. Ausgehend von dem linken Randbildpunkt LRB der elften Zeile wird nun eine Diagonale bestimmt, die von diesem Bildpunkt ausgeht und in einem bereits detektierten linken Randbildpunkt LRB endet, dessen Zeilenkoordinate und Spaltenkoordinate jeweils kleiner als die entsprechende Koordinate des in der elften Zeile detektierten linken Randbildpunktes LRB ist. In 3 ist dargestellt, dass der Endpunkt der Diagonalen der linke Randbildpunkt LRB in der Zeile 7 ist, der die Koordinaten (7; 2) aufweist. Hiernach werden die bereits dem Bildobjekt zugeordneten Bildpunkte, die links von dieser Diagonalen liegen, also die Bildpunkte mit den Koordinaten (8; 2), (9; 2), (9; 3), (10; 2), (10; 3), (10; 4) verworfen. Wird angenommen, dass alle Bildpunkte des in 3 dargestellten Bildobjekts den gleichen Intensitätswert aufweisen (homogenes Bildobjekt), so werden für die Kodierung der Randabschnitte in den Zeilen 3 bis 7 20 Bit benötigt, nämlich 10 Bit für den rechten und 10 Bit für den linken Randabschnitt. Die Randabschnitte in den Zeilen 8 bis 11 können als Linienabschnitte kodiert werden. Mit 2 Bit für KR, 1 Bit für RA, ein Bit für RI und 2 Bit für BL benötigt man für jeden Randabschnitt 6 Bit, also insgesamt 12 Bit. Somit werden insgesamt zur Kodierung der Randabschnitte 32 Bit benötigt. Für eine Lagebeschreibung können mittlere Erfahrungswerte, beispielsweise 2 Bit für DY und 9 Bit für DX, angenommen werden. Weiterhin werden noch 8 Bit zur Kodierung des niedrigsten Intensitätswerts benötigt. Für das Bildobjekt werden somit 51 Bit zur Kodierung benötigt. Das Bildobjekt besteht aus 57 Bildpunkten, so dass die Bedingung aus Formel 3 erfüllt ist und das Bildobjekt erfindungsgemäß kodiert werden kann. Da die ursprüngliche Kodierung für einen Grauwert 8 Bit benötigt, erhält man einen Kompressionsfaktor von KF = 57·8/51 ≈ 9.
-
4 zeigt ein schematisches Blockschaltbild einer Vorrichtung 10 zur Kompression von Bilddaten. Die Vorrichtung 10 umfasst eine Eingabeschnittstelle 11 und eine Auswerteeinrichtung 12. Mittels der Auswerteeinrichtung 12 ist das in Bezug auf 1 erläuterte Verfahren zur Kompression durchführbar. Insbesondere kann die Auswerteeinrichtung 12 den Segmentierabschnitt 2, den Prüfschritt 4, den Kodierungsschritt 5 und die erläuterten Speicherschritte durchführen. Weiter kann die Auswerteeinrichtung 12 datentechnisch mit Speichereinrichtungen 3, 6 verbunden sein. Weiter kann die Vorrichtung 10 eine Ausgabeschnittstelle 13 umfassen mittels der das komprimierte Bild ausgegeben werden kann.