-
Die
vorliegende Erfindung betrifft generell Bildverarbeitungsgeräte, Bildverarbeitungsverfahren und
Speichermedien. Insbesondere betrifft die Erfindung ein Bildverarbeitungsgerät und ein
Bildverarbeitungsverfahren zum Einbetten von Information in Bilder
mit minimalem Verlust bei der Qualität wiedergegebener Bilder und
ohne Erhöhung
der Datenmenge. Die Erfindung betrifft auch ein Speichermedium zum Speichern
des oben beschriebenen Verfahrens.
-
Eine
der Techniken zum Einbetten von Information ohne Erhöhung der
Datenmenge ist, das niedrigstwertige Bit (LSB (least signifikant
bit)) oder die niedrigeren zwei Bits von beispielsweise digitalen Audiodaten
in einzubettende Information umzusetzen. Bei dieser Technik werden
die niedrigeren Bits von digitalen Audiodaten, welche die Tonqualität nicht
signifikant beeinflussen, einfach durch die einzubettende Information
ersetzt. Demgemäss
werden die digitalen Audiodaten bei der Wiedergabe so wie sie sind
ohne Wiederherstellung der niedrigeren Bits in den originalen Zustand
ausgegeben. Insbesondere werden, da es schwierig ist, die niedrigeren
Bits, in die Information eingebettet ist, in den originalen Zustand
wiederherzustellen, und auch da die niedrigeren Bits die Tonqualität nicht
signifikant beeinflussen, die digitalen Audiodaten ausgegeben, während sie die
in sie eingebettete Information aufweisen.
-
Gemäß der oben
beschriebenen Technik wird jedoch nachteiligerweise ein sich vom
originalen Signal unterscheidendes Signal ausgegeben, das, wenn
das Signal Audiodaten ist, die Tonqualität, oder, wenn das Signal Videodaten
ist, die Bildqualität
bis zu einem gewissen Grad beeinflusst.
-
Gemäß einem
Aspekt der vorliegenden Erfindung ist ein Bildverarbeitungsgerät, -verfahren
und ein auf einem Speichermedium gespeichertes Computersteuerungsprogramm
zum Einbetten von Information in Bilddaten bereitgestellt, wie sie
in den beigefügten
Ansprüchen
1 bis 5, 14, 23, 25, 27 und 29 dargelegt sind.
-
Gemäß einem
anderen Aspekt der vorliegenden Erfindung ist ein Bildverarbeitungsgerät, -verfahren
und ein auf einem Speichermedium gespeichertes Computersteuerungsprogramm
zum Decodieren von mit Information in originale Bilddaten eingebetteten
codierten Bilddaten und der Information bereitgestellt, wie sie
in den beigefügten
Ansprüchen
6 bis 13, 15 bis 22, 24, 26, 28 und 30 dargelegt sind.
-
Die
Erfindung wird nun beispielhaft anhand der beigefügten Zeichnungen
beschrieben, in denen durchwegs gleiche Teile mit gleichen Bezugszeichen bezeichnet
sind und in denen:
-
1 ein
Blockdiagramm ist, das ein Beispiel der Konfiguration eines eine
Ausführungsform der
vorliegenden Erfindung aufweisenden Bildübertragungssystems darstellt;
-
2 ein
in einem in 1 gezeigten Einbettungscodierer
zu codierendes Bild darstellt;
-
3 die
Energieverteilung von Information durch Beziehungen zwischen dem
Abstand und der Korrelation darstellt und auch darstellt, dass die
Energieverteilung durch Tauschen gewisser Linien der Information
zerstört
wird;
-
4 ein
Blockdiagramm ist, das ein Beispiel der Hardwarekonfiguration des
in 1 gezeigten Einbettungscodierers darstellt;
-
5 ein
Blockdiagramm ist, das die funktionelle Konfiguration des in 4 gezeigten
Einbettungscodierers gemäß einer
ersten Ausführungsform der
vorliegenden Erfindung darstellt;
-
6 ein
Flussdiagramm ist, das eine von dem in 5 gezeigten
Einbettungscodierer ausgeführte
Einbettcodierungsverarbeitung darstellt;
-
7 Pixel
darstellt, die bei der Ausführung der
in 6 gezeigten Einbettcodierungsverarbeitung für jeden
Bildblock auszuwählen
sind, und auch die Dateneinbettungsoperation durch Drehen (Rotieren)
der ausgewählten
Pixel darstellt;
-
8 ein
Blockdiagramm ist, das ein Beispiel der Hardwarekonfiguration eines
in 1 gezeigten Decodierers darstellt;
-
9 ein
Blockdiagramm ist, das die funktionelle Konfiguration des in 8 gezeigten
Decodierers gemäß der ersten
Ausführungsform
der vorliegenden Erfindung darstellt;
-
10 ein
Flussdiagramm ist, das die von dem in 9 gezeigten
Decodierer ausgeführte
Decodierungsverarbeitung darstellt;
-
11 Pixel
darstellt, die bei der Ausführung der
in 10 gezeigten Decodierungsverarbeitung für jeden
Bildblock auszuwählen
sind, und auch die Datendecodierungsoperation durch Umgekehrtdrehen
(Umgekehrtrotieren) der ausgewählten
Pixel darstellt;
-
12 die
bei dem in 10 gezeigten Schritt S15 ausgeführte Berechnungsverarbeitung von
Differenzen zwischen Pixeln darstellt;
-
13 ein
Blockdiagramm ist, das die funktionelle Konfiguration des in 4 gezeigten
Einbettungscodierers gemäß einer
zweiten Ausführungsform
der vorliegenden Erfindung darstellt;
-
14 ein
Flussdiagramm ist, das eine von dem in 13 gezeigten
Einbettungscodierer ausgeführte
Einbettcodierungsverarbeitung darstellt;
-
15 Pixel
darstellt, die bei der Ausführung der
in 14 gezeigten Einbettcodierungsverarbeitung für jeden
Bitblock auszuwählen
sind, und auch die Dateneinbettungsoperation durch Berechnen eines
exklusiven ODER zwischen einem der ausgewählten Pixel und zusätzlicher
Information und durch Berechnen eines exklusiven ODER zwischen einem der
ausgewählten
Pixel und der umgekehrten zusätzlichen
Information darstellt;
-
16 ein
Blockdiagramm ist, das die funktionelle Konfiguration des in 8 gezeigten
Decodierers gemäß der zweiten
Ausführungsform
der vorliegenden Erfindung darstellt;
-
17 ein
Flussdiagramm ist, das eine von dem in 16 gezeigten
Decodierer ausgeführte Decodierungsverarbeitung
darstellt;
-
18 Pixel
darstellt, die bei der Ausführung der
in 17 gezeigten Decodierungsverarbeitung für jeden
Bildblock auszuwählen
sind, und auch die Datendecodierungsoperation durch Berechnen eines exklusiven
ODER zwischen einem der ausgewählten Pixel
und zusätzlicher
Information und durch Berechnen eines exklusiven ODER zwischen einem
der ausgewählten
Pixel und der umgekehrten zusätzlichen
Information darstellt;
-
19 die
bei dem in 17 gezeigten Schritt S45 ausgeführte Berechnungsverarbeitung von
Differenzen zwischen Pixeln darstellt;
-
20 Pixel
darstellt, die bei der Ausführung der
in 17 gezeigten Decodierungsoperation für jeden
Bildblock auszuwählen
sind, und auch die Dateneinbettungsoperation durch Berechnen eines
exklusiven ODER zwischen einem der ausgewählten Pixel wird zusätzlicher
Information und durch Berechnung eines exklusiven ODER zwischen
einem der umgekehrten ausgewählten
Pixel und der zusätzlichen
Information darstellt;
-
21A einen Computer darstellt, in dem ein die Verarbeitung
einer Ausführungsform
der vorliegenden Erfindung implementierendes Programm zu installieren
ist;
-
21B Speichermedien darstellt, in denen ein die
Verarbeitung einer Ausführungsform
der vorliegenden Erfindung implementierendes Programm zu speichern
ist;
-
21C ein Programm darstellt, das die über einen
Satelliten oder ein Netzwerk in einen Computer verbreitete Verarbeitung
einer Ausführungsform
der vorliegenden Erfindung implementiert; und
-
22 ein
Blockdiagramm ist, das ein Beispiel eines Computers darstellt, in
welchem ein die Verarbeitung einer Ausführungsform der vorliegenden
Erfindung implementierendes Programm zu installieren ist.
-
Die
vorliegende Erfindung wird unten anhand der beigefügten Zeichnungen
durch Darstellung bevorzugter Ausführungsformen detailliert beschrieben.
-
1 ist
ein schematisches Diagramm, das ein eine Ausführungsform der vorliegenden
Erfindung aufweisendes Bildübertragungssystem
darstellt. In dieser Beschreibung kann ein „System" eine aus mehreren Geräten logisch
gebildete Einheit sein, und es ist nicht notwendig, dass die Geräte im gleichen
Gehäuse
enthalten sind.
-
Nach 1 ist
das Bildübertragungssystem aus
einem Codierungsgerät 10 und
einem Decodierungsgerät 20 gebildet.
Das Codierungsgerät 10 codiert
beispielsweise ein Bild und gibt die codierten Daten aus. Das Decodierungsgerät 20 gibt
das originale Bild aus den codierten Daten wieder.
-
Insbesondere
speichert eine Bilddatenbank 1 zu codierende Bilder (beispielsweise
digitale Bilder), und ein Bild wird von der Bilddatenbank 1 ausgelesen
und einem Einbettungscodierer 3 zugeführt. Eine Zusätzlichinformationsdatenbank 2 speichert zusätzliche
Information (digitale Daten) als in das zu codierende Bild einzubettende
Information. Die zusätzliche
Information wird von der Zusätzlichinformationsdatenbank 2 gelesen
und dem Einbettungscodierer 3 zugeführt.
-
Beim
Empfang des Bildes von der Bilddatenbank 1 und zusätzlichen
Information von der Zusätzlichinformationsdatenbank 2 codiert
der Einbettungscodierer die Bilder entsprechend der von der Zusätzlichinformationsdatenbank
zugeführten
zusätzlichen Information,
so dass das codierte Bild durch Benutzung der Energieverteilung
des von der Bilddatenbank 1 zugeführten Bildes decodiert werden
kann. Das heißt,
der Einbettungscodierer 3 codiert das Bild durch Einbetten
der zusätzlichen
Information in das Bild, so dass das codierte Bild durch Benutzung
der Energieverteilung des Bildes decodiert werden kann, und gibt
die codierten Daten aus. Die codierten Daten können dann in einem Speichermedium 4 wie
beispielsweise einer magnetooptischen Platte, einer Magnetplatte,
einer optischen Platte, einem Magnetband, einer PD-Platte oder einem
Halbleiterspeicher aufgezeichnet werden. Alternativ dazu können die codierten
Daten über
ein Übertragungsmedium 5 wie beispielsweise
ein terrestisches Rundfunksignal, ein Satellitenrundfunksignal,
ein CATV-Netzwerk (CATV = cable television (Kabelfernsehen)), das
Internet oder ein öffentliches
Netzwerk übertragen
werden.
-
Das
Decodierungsgerät 20 ist
aus einem Decodierer 6 gebildet, in welchem über das
Speichermedium 4 oder das Übertragungsmedium 5 bereitgestellte
codierte Daten empfangen werden. Der Decodierer 6 decodiert
außerdem
die codierten Daten in das originale Bild und in die zusätzliche
Information durch Benutzung der Energieverteilung des Bildes. Das
decodierte Bild wird dann einem Monitor (nicht gezeigt) zugeführt und
angezeigt. Die decodierte zusätzliche
Information wird zur Ausführung
einer vorbestimmten Verarbeitung benutzt.
-
Das
Prinzip der vom Einbettungscodierer 3 ausgeführten Codierungsoperation
und der von dem in 1 gezeigten Decodierer 6 ausgeführten Decodierungsoperation
wird unten beschrieben.
-
Generell
weist was „Information" genannt wird eine
Energieverteilung (Entopieverteilung) auf, die als Information (nützliche
Information bzw. Nutzinformation) identifiziert wird. Insbesondere
kann beispielsweise ein durch Fotografieren einer Landschaft erhaltenes
Bild als ein Bild der Landschaft identifiziert werden. Dies deshalb,
weil das Bild (die Werte der das Bild bildenden Pixel) eine mit
der Landschaft korrespondierende Energieverteilung aufweist. Ein
Bild ohne eine Energieverteilung ist nur Rauschen und als Information
nutzlos.
-
Folglich
kann, selbst wenn die von einem Stück Nutzinformation besessene
Energieverteilung durch Ausführung
einer gewissen Operation zerstört wird,
die originale Information durch Wiederherstellen der zerstörten Energieverteilung
in den originalen Zustand wiedergegeben werden. Das heißt die durch Codieren
der Information erhaltenen codierten Daten können durch Benutzung der in
der Information inhärenten
Energieverteilung in die originale Information decodiert werden.
-
Die
Energieverteilung der Information kann beispielsweise durch Korrelation
dargestellt sein. Die Korrelation von Information ist die Korrelation
zwischen den Elementen der Information (wenn beispielsweise die
Information ein Bild ist, die das Bild bildenden Pixel oder Linien),
das heißt
die Selbst- bzw. Autokorrelation oder der Abstand zwischen den die
Information bildenden Elementen.
-
Ein
aus H Linien gebildetes Bild wie beispielsweise das in 2 gezeigte
sei als ein Beispiel genommen. Was die Korrelation zwischen der
ersten Linie und einer anderen Linie wie beispielsweise bei (A)
der 3 dargestellt betrifft, so ist die Korrelation der
ersten Linie mit einer nahe bei der ersten Linie befindlichen Linie
(eine obere Linie des in 2 gezeigten Bildes) groß. Umgekehrt
ist die Korrelation der ersten Linie mit einer weit von der ersten
Linie entfernt positionierten Linie (eine untere Linie des in 2 gezeigten
Bildes) klein. In anderen Worten weist das in 2 gezeigte
Bild eine Korrelationsvariation auf, bei der eine näher bei
der ersten Linie liegende Linie einen größeren Korrelationspegel aufweist
und eine weiter von der ersten Linie weiter entfernte Linie einen
kleineren Korrelationspegel aufweist.
-
Bei
dem in 2 gezeigten Bild sind die näher bei der ersten Linie befindliche
M-te Linie und die weiter von der ersten Linie entfernte N-te Linie
getauscht (1 < M < N ≤ H), und nach
Berechnung der Korrelation zwischen der ersten Linie und jeder von der
M-ten Linie und N-ten Linie kann das resultierende Bild wie in 3B gezeigt angezeigt werden. Das heißt, das
Bild, bei dem die M-te Linie und die N-te Linie getauscht worden
sind, wird die Korrelation der ersten Linie mit der näher bei
der ersten Linie befindlichen M-ten Linie (die mit der N-ten Linie
vor dem Tausch korrespondiert) kleiner, während die Korrelation der ersten
Linie mit der von der ersten Linie weiter entfernten N-ten Linie
(die mit der M-ten Linie vor dem Tausch korrespondiert) größer wird.
-
Infolgedessen
wird bei der bei (B) der 3 gezeigten Korrelation die
originale Korrelationsvariation zerstört. Generell kann jedoch, was
Bilder betrifft, die zerstörte
Korrelationsvariation durch Benutzung der originalen Korrelationsvariation
im originalen Zustand wiederhergestellt werden. Das heißt, die
bei (B) der 3 gezeigte Korrelationsvariation
ist in Form der vom Bild besessenen originalen Korrelationsvariation
unnatürlich
(inkorrekt), und die M-te Linie und die N-te Linie sollten getauscht
werden. Infolgedessen kann die unnatürliche Variation in die bei (A) der 3 gezeigte
korrekte Variation wiederhergestellt werden, so dass das originale
Bild decodiert werden kann.
-
Gemäß dem in 2 und
(A) und (B) der 3 gezeigten Beispiel wird das
Bild durch Tauschen der Linien codiert. In diesem Fall bestimmt
der Einbettungscodierer 3, welche Linien entsprechend der
zusätzlichen
Information bewegt und getauscht werden sollten. Indessen bringt
der Decodierer 6 die getauschten Linien durch Benutzung
der Korrelation in die originalen Positionen zurück, das heißt er ersetzt das codierte
Bild durch das originale Bild und decodiert dadurch das codierte
Bild. Während
der Decodierungsoperation detektiert der Decodierer 6, welche
Linien bewegt und getauscht worden sind, um die in das Bild eingebettete
zusätzliche
Information zu decodieren.
-
4 stellt
ein Beispiel der Konfiguration des in 1 gezeigten
Einbettungscodierers 3 dar, der durch Einbetten zusätzlicher
Information in ein Bild eine Einbettcodierung ausführt, so
dass das codierte Bild durch Benutzung der Korrelation des Bildes
in das originale Bild decodiert werden kann.
-
Von
der Bilddatenbank 1 ausgegebene Bilder werden einem Rahmenspeicher 31 zugeführt, in welchem
die Bilder beispielsweise in Einheiten von Rahmen (frames) zeitweilig
gespeichert werden.
-
Eine
zentrale Verarbeitungseinheit (CPU (central processing unit)) 32 führt eine
unten beschriebene Einbettcodierungsverarbeitung durch Ausführen eines
in einem Programmspeicher 33 gespeicherten Programms aus.
Das heißt,
die CPU 32 bettet von der Zusätzlichinformationsdatenbank 2 zugeführte zusätzliche
Information in das im Rahmenspeicher 31 gespeicherte Bild
ein.
-
Der
Programmspeicher 33 ist beispielsweise aus einem Nurlesespeicher
(ROM (read only memory)) oder einem Direktzugriffspeicher (RAM (random access
memory)) gebildet und speichert ein Computerprogramm zum Befähigen der
CPU 32, die Einbettcodierungsverarbeitung auszuführen. Eine
Ausgabeschnittstelle 34 liest ein Bild, in das zusätzliche Information
eingebettet ist, aus dem Rahmenspeicher 31 und gibt es
als codierte Daten aus.
-
Der
Rahmenspeicher 31 ist aus mehreren Speicheradressbereichen
bzw. Banken (banks) gebildet, so dass mehrere Rahmen gespeichert
werden können.
Durch Schalten der Banken speichert der Rahmenspeicher 31 gleichzeitig
das von der Bilddatenbank 1 zugeführte Bild und die von der CPU 32 zu verarbeitenden
Pixel des Bildes. Gleichzeitig gibt der Rahmenspeicher 31 auch
das Bild aus, in das die Information (codierte Daten) eingebettet
ist. Mit dieser Anordnung können
die codierten Daten in Realzeit ausgegeben werden, selbst wenn das
von der Bilddatenbank 1 zugeführte Bild ein Bewegtbild ist.
-
5 stellt
ein Beispiel der funktionellen Konfiguration des Einbettungscodierers 3,
der durch Ausführen
des im Programmspeicher 33 gespeicherten Programms durch
die in 4 gezeigte CPU 32 implementiert werden
kann, entsprechend einer ersten Ausführungsform der vorliegenden
Erfindung dar.
-
Zu
codierende Bilder werden einer Blockteilungseinheit 41 beispielsweise
in Einheiten von Rahmen zugeführt.
Die Blockteilungseinheit 41 teilt ein Einrahmenbild in
Blöcke,
deren jeder eine vorbestimmte Größe aufweist,
und führt
die geteilten Blöcke
einer Bitrotations- bzw. Bitdrehungseinheit 42 zu.
-
Nicht
nur die Bildblöcke
aus der Blockteilungseinheit 41, sondern auch zusätzliche
Information, die in ein Bild einzubetten ist, werden der Bitdrehungseinheit 42 zugeführt. Die
Bitdrehungseinheit 42 wählt
gewisse der jeden Bildblock bildenden Pixel aus und dreht den Wert
der Pixel (nachfolgend manchmal als „ausgewählte Pixel" bezeichnet) und bettet dadurch die
zusätzliche
Information in die ausgewählten
Pixel ein. Der Block, in den die zusätzliche Information in die
ausgewählten
Pixel eingebettet ist, wird einem Codiertbildspeicher 43 als
ein codierter Block zugeführt.
-
Der
Codiertbildspeicher 43 speichert codierte Blöcke, die
von der Bitdrehungseinheit 42 zugeführt werden, sequentiell, und
wenn codierte Blöcke für einen
einzelnen Rahmen gespeichert werden, gibt der Codiertbildspeicher 43 die
codierten Blöcke als
codierte Daten aus.
-
Es
wird nun anhand des Flussdiagramms der 6 eine Beschreibung
einer von dem in 5 gezeigten Einbettungscodierer
ausgeführten
Einbettcodierungsverarbeitung gegeben.
-
Wie
oben beschrieben werden der Blockteilungseinheit 41 zu
codierende Bilder in Einheiten von Rahmen zugeführt. Beim Empfang eines Bildes
für einen
einzelnen Rahmen teilt die Blockteilungseinheit 41 beim
Schritt S1 das Einrahmenbild in Blöcke, deren jeder eine vorbestimmte
Größe aufweist.
Insbesondere teilt die Blockteilungseinheit 41 das Bild, wie
bei (A) der 7 gezeigt, in 4 × 4-Pixel-Bildblöcke. Die
durch die Bildteilungseinheit 41 geteilten Bildblöcke werden
dann der Bitdrehungseinheit 42 in beispielsweise einer
Rasterabtastordnung zugeführt.
-
Beim
Empfang des Bildblocks von der Blockteilungseinheit 41 stellt
die Bitdrehungseinheit 42 beim Schritt S2 den empfangenen
Bildblock so ein, dass er der laufende Bildblock ist, und wählt gewisse der
den laufenden Block bildenden Pixel aus. Insbesondere wählt die
Bitdrehungseinheit 42 unter den Pixeln, die den laufenden
Block bilden, Pixel wie beispielsweise die bei (A) der 7 gezeigten
und durch die schwarzen Abschnitte • und die schraffierten Abschnitte
angezeigten entsprechend einem Schachtbrettmuster aus. Das heißt, beim
Schritt S2 wird eine Hälfte
der den Bildblock bildenden Pixel ausgewählt.
-
Beim
Schritt S3 werden die Werte der ausgewählten Pixel durch die Bitdrehungseinheit 42 entsprechend
der zugeführten
zusätzlichen
Information gedreht (rotiert), so dass die zusätzliche Information in die
ausgewählten
Pixel eingebettet werden kann. Insbesondere dreht (rotiert) die
Bitdrehungseinheit 42 die Werte der durch die bei (A) der 7 gezeigten
schraffierten Abschnitte angezeigten ausgewählten Pixel in der Richtung
vom niedrigstwertigen Bit (LSB (least significant bit)) zum höchtwertigen
Bit (MSB (most significant bit)) (nachfolgend manchmal als „Linksdrehung
(Linksrotation)" bezeichnet)
durch die mit dem Wert der zusätzlichen
Information korrespondierenden Anzahl von Bits.
-
Der
oben benutzte Ausdruck „Drehung
(Rotation)" ist ähnlich zu
einer Bitverschiebung, jedoch werden beim Ausfüuren einer Drehung in der Richtung
vom LSB zum MSB die MSBs nicht verworfen, sondern zu den LSBs verschoben.
Wenn umgekehrt eine Drehung in der Richtung vom MSB zum LSB ausgeführt wird,
werden die LSBs nicht verworfen, sondern zu den MSBs verschoben.
-
Die
Bitdrehungseinheit 42 dreht auch den Wert der durch die
bei (A) der 7 gezeigten schwarzen Abschnitte • angezeigten
ausgewählten Pixel
in der Richtung vom MSB zum LSB (nachfolgend manchmal als „Rechtsdrehung
(Rechtsrotation)" bezeichnet)
durch die mit dem Wert der zusätzlichen
Information korrespondierenden Anzahl von Bits.
-
Die
Pixel, deren Werte nach links zu drehen sind, und diejenigen, die
nach rechts zu drehen sind, können
als „Linksdrehungspixel
(Linksrotationspixel)" bzw. „Rechtsdrehungspixel
(Rechtsrotationspixel)" bezeichnet
werden.
-
Bei
dieser Ausführungsform
sind die Linksdrehungspixel und die Rechtsdrehungspixel in jedem Block
in der diagonalen Richtung abwechseln angeordnet, wobei eine Hälfte der
ausgewählten
Pixel nach links gedreht ist, während
die andere Hälfte nach
rechts gedreht ist.
-
Es
sei nun angenommen, dass ein Pixel acht Bits aufweist, und dass
der Wert eines Linksdrehungspixels 00111101B (B stellt dar, dass
die vorhergehende Zahl binär ist)
und der Wert eines Rechtsdrehungspixels 10010111B ist. Es sei auch
angenommen, dass die zusätzliche
Information „2" ist. Das Linksdrehungspixel
00111101B und das Rechtsdrehungspixel 10010111B werden um zwei Bits
jeweils nach links bzw. rechts gedreht, was, wie bei (B) der 7 gezeigt,
in 11110100B bzw. 11100101B resultiert. Ähnlich werden die anderen Linksdrehungspixel
und die anderen Rechtsdrehungspixel im Bildblock entsprechend der
zusätzlichen
Information gedreht.
-
Wenn
der Pixelwert durch acht Bits dargestellt ist, kann er um 0 bis
7 Bits gedreht werden, in welchem Fall 0 bis 7-Bit zusätzliche
Information (durch drei Bits dargestellt) in den Einbildblock eingebettet
werden kann.
-
Der
Bildblock, dessen ausgewählte
Pixel beim Schritt S3 gedreht worden sind, wird dem Codiertbildspeicher 43 als
ein codierter Block zugeführt und
darin gespeichert. Dann wird beim Schritt S4 festgestellt, ob es
irgendeinen Bildblock (nachfolgend als ein „nicht verarbeiteter Block" bezeichnet) in der
Bitdrehungseinheit 42 gibt, und wenn dem so ist, wird einer
der nicht verarbeiteten Bildblöcke
so eingestellt, dass er ein laufender Block ist. Der Prozess kehrt
dann zum Schritt S2 zurück,
und die korrespondierende Verarbeitung wird wiederholt.
-
Wenn
beim Schritt S4 festgestellt wird, dass es keinen nicht verarbeitenden
Block gibt, das heißt, dass
alle codierten Blöcke
für einen
einzelnen Rahmen im Codiertbildspeicher 43 gespeichert
sind, werden die codierten Blöcke
aus dem Codiertbildspeicher 43 gelesen. Der Prozess geht
dann zum Schritt S5 weiter, bei dem festgestellt wird, ob es noch
mehr Rahmen gibt, die in der Blockteilungseinheit 41 zu verarbeiten
sind. Wenn das Ergebnis des Schritts S5 ja ist, kehrt der Prozess
zum Schritt S1 zurück,
und es wird die korrespondierende Verarbeitung wiederholt.
-
Wenn
beim Schritt S5 festgestellt wird, dass es keine von der Blockteilungseinheit 41 zu
verarbeitenden Rahmen mehr gibt, wird die Einbettcodierungsverarbeitung
vollendet.
-
Wie
oben beschrieben werden gewisse der das Bild bildenden Pixel ausgewählt, und
die Werte der ausgewählten
Pixel werden entsprechend der zusätzlichen Information gedreht
und dadurch die zusätzliche
Information in das Bild eingebettet. Es ist auf diese Weise mögliche,
die zusätzliche
Information mit einem minimalen Verlust an der Bildqualität und ohne
Erhöhung
der Datenmenge einzubetten.
-
Die
ausgewählten
Pixel, in welche die zusätzliche
Information eingebettet ist (durch die schwarzen Abschnitte • und die
schraffierten Abschnitte bei (A) der 7 angezeigte
Pixel) können, wie
unten beschrieben, durch Benutzung der Korrelation des Bildes, das
heißt
der Korrelation zwischen den ausgewählten Pixeln und den Pixeln
ohne die zusätzliche
Information (bei (A) der 7 durch 0 angezeigte Pixel)
ohne einen Systemverwaltungsplatzbedarf bzw. Aufwand bzw. Überhang
(overhead) in die originalen Pixel und in die zusätzliche
Information decodiert (wiederhergestellt) werden. Demgemäss wird die
Verschlechterung der Bildqualität,
die herkömmlicherweise
durch Einbetten der zusätzlichen
Information verursacht wird, bei dem resultierenden codierten Bild
(wiedergegebenes Bild) nicht beobachtet.
-
8 stellt
ein Beispiel der Konfiguration des in 1 gezeigten
Decodierers 6 zur Decodierung der von dem in 5 gezeigten
Einbettungscodierer 3 ausgegebenen codierten Daten in das
originale Bild und in die zusätzliche
Information durch Benutzung der Korrelation des Bildes dar.
-
Die
codierten Daten, das heißt
das Bild, in das die zusätzliche
Information eingebettet ist (nachfolgend manchmal als „eingebettetes
Bild" bezeichnet),
wird einem Rahmenspeicher 51 zugeführt. Der Rahmenspeicher 51 speichert
zeitweilig eingebettete Bilder beispielsweise in Einheiten von Rahmen.
Der Rahmenspeicher 51 ist ähnlich wie der in 4 gezeigte
Rahmenspeicher 31 konfiguriert, und durch Schalten von
für den
Rahmenspeicher 51 bereitgestellten Bänken (banks) können eingebettete
Bilder in Echtzeit verarbeitet werden, selbst wenn sie Bewegtbilder
sind.
-
Eine
Ausgabeschnittstelle 52 liest ein aus dem Rahmenspeicher 51 durch
Ausführung
einer wie unten beschriebenen Decodierungsverarbeitung durch eine
CPU 53 erhaltenes Bild (decodiertes Bild) aus dem Rahmenspeicher 51 und
gibt das Bild aus.
-
Die
CPU 53 führt
durch Ausführen
eines in einem Programmspeicher 54 gespeicherten Programms
eine Decodierungsverarbeitung aus. Das heißt, die CPU 53 decodiert
das im Rahmenspeicher 51 gespeicherte eingebettete Bild
durch Benutzung der Korrelation des Bildes in das originale Bild
und in die zusätzliche
Information.
-
Der
Programmspeicher 54 ist ähnlich wie der in 4 gezeigte
Programmspeicher 33 konfiguriert und speichert das Computerprogramm
zum Befähigen
der CPU 53, die Decodierungsverarbeitung auszuführen.
-
9 stellt
ein Beispiel der funktionellen Konfiguration des Decodierers 6,
der durch Ausführen
des im Programmspeicher 54 durch die in 8 gezeigte
CPU 53 gespeicherten Programms implementiert werden kann,
entsprechend der ersten Ausführungsform
der vorliegenden Erfindung dar.
-
Das
eingebettete Bild wird einer Blockteilungseinheit 61 beispielsweise
in Einheiten von Rahmen als codierte Daten zugeführt. Wie bei der in 5 gezeigten
Blockteilungseinheit 41 teilt die Blockteilungseinheit 61 das
eingebettete Bild in Blöcke,
deren jeder eine vorbestimmte Größe aufweist, das
heißt
in codierte Blöcke,
und führt
sie einer Bitumgekehrtdrehungseinheit (Bitumgekehrtrotationseinheit) 62 sequentiell
zu.
-
Aus
den Pixeln, die jeden von der Blockteilungseinheit 61 zugeführten codierten
Block bilden, wählt
die Bitumgekehrtdrehungseinheit 62 Pixel aus, die bei den
gleichen Positionen wie die von der in 5 gezeigten
Bitdrehungseinheit 42 ausgewählten angeordnet sind. Die
Bitumgekehrtdrehungseinheit 62 dreht (rotiert) dann die
Werte der ausgewählten
Pixel um die mit einem von einem Drehungsbitregister (Rotationsbitregister) 63 zugeführten Drehungswert
(Rotationswert) korrespondierenden Anzahl von Bits und führt den
resultierenden Wert einer Differenzwertberechnungseinheit 64 zu.
Die Bitumgekehrtdrehungseinheit 62 dreht (rotiert) auch
die Werte der ausgewählten
Pixel um die in einem Optimaldrehungsbit-Speicherregister 69 gespeicherte Anzahl
von Optimaldrehungsbits. Als ein Resultat wird der codierte Block
in den originalen Bildblock decodiert, der dann einem Decodiertbildspeicher 71 zugeführt wird.
-
Das
Drehungsbitregister 63 stellt den Drehungswert als die
Anzahl von Bits ein, um die der Pixelwert zu drehen ist, und führt den
eingestellten Drehungswert der Bitumgekehrtdrehungseinheit 62 und einem
Schalter 65 zu. Insbesondere wenn der Pixelwert durch th_r
Bits dargestellt ist, kann er von 0 bis th_r-1 Bits gedreht werden
(eine Drehung um eine Anzahl gleich oder größer als th_r Bits erhält das gleiche
Resultat wie eine Drehung um eine korrespondierende Anzahl von 0
bis th_r-1 Bits) In diesem Fall stellt das Drehungsbitregister 63 sequentiell
0 bis th_r-1 Bits als die Drehungswerte ein und führt sie der
Bitumgekehrtdrehungseinheit 62 und dem Schalter 65 zu.
-
Beim
Empfang des codierten Blocks, in welchem die Werte der ausgewählten Pixel
gedreht worden sind, von der Bitumgekehrtdrehungseinheit 62 berechnet
die Differenzwertberechnungseinheit 64 einen Korrelationswert
zwischen jedem ausgewählten
Pixel und dem benachbarten Pixel, beispielsweise die Summe der absoluten
Differenzwerte (nachfolgend als die „Summe absoluter Differenzen" bezeichnet). Die
Summe absoluter Differenzen der Pixelwerte werden einem Schalter 66 und
einem Komparator 68 zugeführt.
-
Der
Schalter 65 empfängt
den Drehungswert vom Drehungsbitregister 63 und führt ihn
unter der Steuerung des Komparators 68 dem Optimaldrehungsbit-Speicherregister 69 zu.
Der Schalter 66 empfängt
den Korrelationswert von der Differenzwertberechnungseinheit 64 und
führt ihn
unter der Steuerung des Komparators 68 einem Minimumdifferenzwert-Speicherregister 67 zu.
-
Das
Minimumdifferenzwert-Speicherregister 67 speichert den
von der Differenzwertberechnungseinheit 64 über den
Schalter 66 zugeführten
Korrelationswert als einen sich auf den laufend bearbeiteten codierten
Block (nachfolgend manchmal als der „laufend codierte Block" bezeichnet) beziehenden
Maximumkorrelationswert. Bei dieser Ausführungsform wird, wie oben dargelegt,
die Summe der absoluten Differenzen zwischen den individuellen ausgewählten Pixeln
und den benachbarten Pixeln als der Korrelationswert in Bezug auf
den codierten Block benutzt. Demgemäss ist der Maximumkorrelationswert die
Minimumsumme der absoluten Differenzen der Pixelwerte.
-
Die
im Minimumdifferenzwert-Speicherregister 67 als der Maximumkorrelationswert
gespeicherte Minimumsumme der absoluten Differenzen wird dem Komparator 68 zugeführt. Der
Komparator 68 vergleicht dann die Summe der von der Differenzwertberechnungseinheit 64 ausgegebenen
Summe der absoluten Differenzen mit der im Minimumdifferenzwert-Speicherregister 67 gespeicherten
Minimumsumme der absoluten Differenzen, und auf Basis des Vergleichsresultats
steuert der Komparator 68 die Schalter 65 und 66.
-
Das
Optimaldrehungsbit-Speicherregister 69 empfängt den
Drehungswert aus dem Drehungsbitregister 63 über den
Schalter 65 und speichert ihn als ein Optimaldrehungsbit,
das eine optimale Anzahl von Bits ist, um welche die Werte der ausgewählten Pixel
des codierten Blocks zu drehen sind. Das Optimaldrehungsbit-Speicherregister 69 führt das
Optimaldrehungsbit der Bitumgekehrtdrehungdseinheit 62 und
einem Decodiertzusätzlichinformationsspeicher 70 geeignet
zu.
-
Der
Decodiertzusätzlichinformationsspeicher 70 speichert
den mit dem vom Optimaldrehungsbit-Speicherregister 69 zugeführten Optimaldrehungsbit
korrespondierenden Wert zeitweilig als die in den codierten Block
eingebettete decodierte zusätzliche
Information und gibt sie aus. Der Decodiertbildspeicher 71 speichert
den von der Bitumgekehrtdrehungseinheit 62 ausgegebenen
codierten Block, dessen Werte der ausgewählten Pixel um das Optimaldrehungsbit
gedreht worden sind, zeitweilig als den decodierten Bildblock. Wenn
decodierte Bilder für
einen einzelnen Rahmen gespeichert sind, gibt sie der Decodiertbildspeicher 71 aus.
-
Eine
von dem in 9 gezeigten Decodierer 6 ausgeführte Einbettdecodierungsverarbeitung
wird unten anhand des Flussdiagramms der 10 beschrieben.
-
Wie
oben dargelegt werden der Blockteilungseinheit 61 eingebettete
Bilder in Einheiten von Rahmen zugeführt. Beim Empfang der eingebetteten Bilder
für einen
einzelnen Rahmen teilt die Blockteilungseinheit 61 beim
Schritt S11 wie im Fall der in 5 gezeigten
Blockteilungseinheit 41 das eingebettete Bild in Blöcke, deren
jeder eine vorbestimmte Größe aufweist.
Das heißt,
die Blockteilungseinheit 61 teilt das eingebettete Bild,
wie bei (A) der 11 gezeigt, in codierte 4 × 4-Pixel-Blöcke. Die
von der Blockteilungseinheit 61 geteilten codierten Blöcke werden
der Bitumgekehrtdrehungseinheit 62 in beispielsweise einer
Rasterabtastordnung sequentiell zugeführt.
-
Beim
Empfang des codierten Blocks von der Blockteilungseinheit 61 stellt
die Bitumgekehrtdrehungseinheit 62 den codierten Block
so ein, dass er der laufende codierte Block ist, und wählt gewisse der
den laufenden codierten Block bildenden Pixel aus. Insbesondere
wählt die
Bitumgekehrtdrehungseinheit 62 die gleichen Pixel, die
in 11 durch die schraffierten Abschnitte und die
schwarzen Abschnitte • gezeigt
sind, wie die von der in 5 gezeigten Bitdrehungseinheit 42 ausgewählten aus.
Die Bitumgekehrtdrehungseinheit 62 stellt auch die Pixel,
die von der in 5 gezeigten Bitdrehungseinheit 42 als die
Linksdrehungspixel und die Rechtsdrehungspixel bestimmt worden sind,
als Rechtsdrehungspixel bzw. Linksdrehungspixel ein.
-
Das
heißt,
unter den codierten ausgewählten Pixeln
werden die von der Bitdrehungseinheit 42 als die Linksdrehungspixel
bestimmten Pixel um die mit der in das Bild eingebetteten zusätzlichen
Information korrespondierende Anzahl von Bits nach rechts gedreht. Ähnlich werden
die von der Bitdrehungseinheit 42 als die Rechtsdrehungspixel
bestimmten Pixel um die mit der in die codierten Pixel eingebetteten zusätzlichen
Information korrespondierende Anzahl von Bits nach links gedreht.
Als ein Resultat können die
codierten Pixel in die originalen Pixel decodiert werden.
-
Die
Bitumgekehrtdrehungseinheit 62 stellt deshalb die Pixel,
die als die Linksdrehungspixel und als die Rechtsdrehungspixel bestimmt
worden sind, so ein, dass sie Rechtsdrehungspixel bzw. Linksdrehungspixel
sind. Demgemäss
werden im Gegensatz zu der in Bezug auf (A) der 7 beschriebenen Drehungsoperation
in der Bitumgekehrtdrehungseinheit 62 die durch die bei
(A) der 11 gezeigten schraffierten Abschnitte
angezeigten Pixel so bestimmt, dass sie Rechtsdrehungspixel sind,
während die
durch die bei (A) der 11 gezeigten schwarzen Abschnitte • angezeigten
Pixel so bestimmt werden, dass sie Linksdrehungspixel sind.
-
Der
Prozess geht dann zum Schritt S13 weiter. Beim Schritt S13 initialisiert
das Drehungsbitregister 63 den Drehungswert n so, dass
er 0 ist, und das Minimumdifferenzwert-Speicherregister 67 initialisiert
den Wert (Minimumsumme absoluter Differenzen) so, dass er ein vorbestimmte
großer
Wert (beispielsweise der Maximumwert, der gespeichert werden kann)
ist. Danach führt
das Drehungsbitregister 63 den Drehungswert n der Bitumgekehrtdrehungseinheit 62 zu
und gibt ihn auch an den normalerweise ausgeschalteten Schalter 65 aus,
und der Prozess geht zum Schritt S14 weiter.
-
Beim
Schritt S14 dreht die Bitumgekehrtdrehungseinheit 62 die
Werte der Linksdrehungspixel und die Werte der Rechtsdrehungspixel
des laufenden codierten Blocks um den vom Drehungsbitregister 63 zugeführten Drehungswert
n nach links bzw. nach rechts und führt den resultierenden laufenden codierten
Block der Differenzwertberechnungseinheit 64 zu.
-
Es
sei nun angenommen, dass der Pixelwert durch acht Bits dargestellt
ist, und dass der Wert eines Rechtsdrehungspixels 11110100B und
der Wert eines Linksdrehungspixels 11100101B ist. Es sei auch angenommen,
dass der Drehungswert n gleich „2" ist. Das Rechtsdrehungapixel 11110100B
wird um zwei Bits nach rechts gedreht, während das Linksdrehungspixel
11100101B um zwei Bits nach links gedreht wird was, wie bei (B)
der 11 gezeigt, in 00111101B bzw. 10010111B resultiert.
In gleicher Weise werden die anderen Linksdrehungspixel und die
anderen Rechtsdrehungspixel im laufenden codierten Block entsprechend
dem Drehungswert n nach links bzw. nach rechts gedreht.
-
Beim
Empfang des laufenden codierten Blocks, der die um n Bits gedrehten
Pixelwerte von der Bitumgekehrtdrehungseinheit 62 aufweist,
berechnet die Differenzwertberechnungseinheit 64 beim Schritt
S15 die Summe der individuellen ausgewählten Pixel und der benachbarten
Pixel, das heißt in
diesem Fall die Summe der absoluten Differenzen zwischen den ausgewählten Pixeln
und den benachbarten Pixeln, als den Korrelationswert des laufenden
codierten Blocks (Korrelationswert der den laufenden codierten Block
bildenden Pixel). Insbesondere sind im codierten Block, wie in 12 dargestellt,
die durch die schwarzen Abschnitte • und die schraffierten Abschnitte
angezeigten ausgewählten Pixel
neben wenigstens einem einzelnen Pixel angeordnet, das während der
Einbettverarbeitung nicht gedreht worden ist (nachfolgend manchmal
als ein „nicht
ausgewähltes
Pixel" bezeichnet).
In der Differenzwertberechnungseinheit 64 werden die absoluten
Differenzen zwischen jedem ausgewählten Pixel und dem benachbarten
nicht ausgewählten
Pixel berechnet, und die Summe solcher absoluter Differenzen wird
so bestimmt, dass sie der Korrelationswert des laufenden codierten
Blocks ist.
-
Wenn
wie bei dem in 12 gezeigten Fall ein ausgewähltes Pixel
neben mehreren nicht ausgewählten
Pixeln angeordnet ist, wird, wie durch die in 12 gezeigten
durchgezogenen Pfeile angezeigt, die absolute Differenz zwischen
dem ausgewählten Pixel
und jedem der nicht ausgewählten
Pixel berechnet.
-
Bei
dem oben beschriebenen Beispiel wird der Korrelationswert durch
Benutzung nur der Pixel im laufenden codierten Block erhalten. Jedoch
kann der Korrelationswert durch Benutzung von Pixeln eines Blocks
anders als der laufende codierte Block bestimmt werden.
-
Wenn
beispielsweise ein eingebettetes Bild bildende codierte Blöcke als
die laufenden codierten Blöcke
in einer Rasterabtastordnung verarbeitet werden, sind codierte Blöcke, die
einem laufenden codierten Block links, oben und oben links benachbart sind,
schon in die originalen Pixelwerte decodiert worden. Gewisse Pixel,
die dem laufenden codierten Block links, oben, rechts oder unten
benachbart sind, sind während
der Einbettcodierungsverarbeitung noch nicht gedreht worden (nicht
ausgewählte
Pixel).
-
Unter
den Pixeln außerhalb
des laufenden codierten Blocks können
die Pixel, welche vor und nach der Einbettcodierungsverarbeitung
die gleichen bleiben (durch die in 12 gezeigten
gestrichelten Kreise angezeigt) zur Berechnung absoluter Differenzen
mit den ausgewählten
Pixeln des laufenden codierten Blocks benutzt werden, wie es durch
die gestrichelten Pfeile in 12 angezeigt
ist.
-
Zusätzlich wird
bei dem oben beschriebenen Beispiel die absolute Differenz zwischen
dem ausgewählten
Pixel und jedem der benachbarten nicht ausgewählten Pixel zur Bestimmung
des Korrelationswerts des codierten Blocks benutzt. Jedoch kann
die absolute Differenz zwischen dem ausgewählten Pixel und nicht ausgewählten Pixeln,
die nicht benachbart sind, aber das ausgewählte Pixel umgeben, benutzt werden.
-
Alternativ
dazu können
nicht nur Pixel, die dem ausgewählten
Pixel räumlich
benachbart sind, sondern auch Pixel, die dem ausgewählten Pixel
zeitlich benachbart sind, benutzt werden.
-
Auf
diese Weise wird die in der Differenzwertberechnungseinheit 64 berechnete
Summe der absoluten Differenzen als der Korrelationswert des laufenden
codierten Blocks dem Komparator 68 und auch dem normalerweise
ausgeschalteten Schalter 66 zugeführt.
-
Beim
Empfang der Summe der absoluten Differenzen des laufenden codierten
Blocks bestimmt der Komparator 68 beim Schritt S16, ob
die Summe der absoluten Differenzen kleiner als der im Minimumdifferenzwert-Speicherregister 67 gespeicherte Wert
(Minimumsumme der absoluten Differenzen) ist.
-
Wenn
das Ergebnis des Schritts S16 ja ist, wird festgestellt, dass der
Korrelationswert des laufenden codierten Blocks, dessen ausgewählte Pixel um
n Bits gedreht worden ist, größer als
der vorher erhaltene Korrelationswert ist. Es wird auf diese Weise
bestimmt, dass der laufende codierte Block, dessen ausgewählte Pixel
um n Bits gedreht worden sind, am Wahrscheinlichsten in den originalen
Bildblock decodiert worden ist. Der Prozess geht dann zum Schritt
S17 weiter, bei dem der Komparator 68 die Schalter 65 und 66 zeitweilig
von Aus auf Ein wechselt, und der Prozess geht zum Schritt S18 weiter.
-
Durch
zeitweiliges Einschalten der Schalter 65 und 66 beim
Schritt S17 wird der vom Drehungsbitregister 63 ausgegebene
Drehungswert n über den
Schalter 65 dem Optimaldrehungsbit-Speicherregister 69 zugeführt. Im
Optimaldrehungsbit-Speicherregister 69 wird
der als das Optimaldrehungsbit n_min gespeicherte Wert durch den
Drehungswert n vom Drehungsbitregister 63 als neues Optimaldrehungsbit
n_min (optimale Anzahl von Bits, um welche die ausgewählten Pixel
zu drehen sind, um den laufenden codierten Block zu decodieren) überschrieben.
-
Beim
Schritt S17 wird die Summe der absoluten Differenzen von der Differenzwertberechnungseinheit 64 über den
Schalter 66 dem Minimumdifferenzwert-Speicherregister 67 zugeführt. Im
Minimumdifferenzwert-Speicherregister 67 wird
der darin gespeicherte Wert mit der von der Differenzwertberechnungseinheit 64 ausgegebenen
Summe der absoluten Differenzen als eine neue Minimumsumme der absoluten
Differenzen (als der Maximumkorrelationswert in Bezug auf den laufenden
codierten Block) überschrieben.
-
Wenn
beim Schritt S16 festgestellt wird, dass die von der Differenzwertberechnungseinheit 64 ausgegebene
Summe der absoluten Differenzen nicht kleiner als der im Minimumdifferenzwert-Speicherregister 67 ist,
in anderen Worten, wenn festgestellt wird, dass der Korrelationswert
in Bezug auf den laufenden codierten Block, dessen ausgewählten Pixelwerte
um n Bits gedreht worden sind, nicht größer als der vorher erhaltene
Maximumkorrelationswert ist, kann festgestellt werden, dass der
laufende codierte Block nicht in den originalen Block decodiert
worden ist. Dann geht der Prozess durch Überspringen des Schritts S17
zum Schritt S18 weiter. Beim Schritt S18 wird der Drehungswert n
im Drehungsbitregister 63 um 1 inkrementiert.
-
Dann
wird beim Schritt S19 festgestellt, ob der Drehungswert n im Drehungsbitregister 63 kleiner
als die Anzahl von Bits des Pixelwerts th_r ist. Wenn das Resultat
des Schritts S19 ja ist, das heißt, wenn der Drehungswert n
in der Anzahl von Bits ist, um die der Pixelwert gedreht werden
kann, kehrt der Prozess zum Schritt S14 zurück, und die korrespondierende
Verarbeitung wird wiederholt.
-
Wenn
umgekehrt beim Schritt S19 festgestellt wird, dass der Drehungswert
n nicht kleiner als die Anzahl von Bits des Pixelwerts th_r ist,
das heißt, wenn
der Korrelationswert (Summe der absoluten Differenzen) in Bezug
auf den laufenden codierten Block durch Benutzung aller möglichen
Drehungswerte n, um die der Pixelwert gedreht werden kann, berechnet
worden ist, geht der Prozess zum Schritt S20 weiter. Beim Schritt
S20 werden die Werte der ausgewählten
Pixel im laufenden codierten Block um das optimale Drehungsbit n_min
gedreht und dadurch der laufende codierte Block in den originalen Block
decodiert und die in den codierten Block eingebettete zusätzliche
Information decodiert.
-
Insbesondere
führt das
Optimaldrehungsbit-Speicherregister 69 das darin gespeicherte
optimale Drehungsbit n_min der Bitumgekehrtdrehungseinheit 62 zu.
Die Bitumgekehrtdrehungseinheit 62 dreht die Linksdrehungspixel
und die Rechtsdrehungspixel des laufenden codierten Blocks wie beim Schritt
S14 beschrieben um das optimale Drehungsbit n_min nach links bzw.
nach rechts und decodiert dadurch den laufenden codierten Block
in den originalen Block. Der decodierte Block wird dann dem Decodiertbildspeicher 71 zugeführt und
bei einer korrespondierenden Adresse gespeichert.
-
Das
Optimaldrehungsbit-Speicherregister 69 führt auch
das in ihm gespeicherte optimale Drehungsbit n_min dem Decodiertzusätzlichinformationsspeicher 70 als
die in den laufenden codierten Block eingebettete decodierte zusätzliche
Information zu.
-
Danach
wird beim Schritt S21 festgestellt, ob es noch mehr zu verarbeitenden
Blöcke
(nachfolgend manchmal als ein „nicht
verarbeiteter Block" bezeichnet)
in der Bitumgekehrtdrehungseinheit 72 als den laufenden
codierten Block gibt. Wenn das Ergebnis des Schritts S21 ja ist,
wird einer der nicht verarbeiteten Blöcke (beispielsweise der in
der Rasterabtastordnung nachfolgende codierte Block) als der laufende
codierte Block bestimmt. Der Prozess kehrt dann zum Schritt S12
zurück,
und die korrespondierende Verarbeitung wird wiederholt festgestellt
wird, dass es keine nicht verarbeitenden Blöcke mehr gibt, in anderen Worten,
wenn alle decodierten Blöcke
für einen
einzelnen Rahmen im Decodiertbildspeicher 71 gespeichert
sind und alle Elemente der in die Einzelrahmenblöcke eingebetteten decodierten
zusätzlichen
Information im Decodiertzusätzlichinformationsspeicher 70 gespeichert
sind, werden die decodierten Bilder für einen einzelnen Rahmen aus
dem Decodiertbildspeicher 71 ausgelesen, und auch die decodierte
zusätzliche
Information wird aus dem Decodiertzusätzlichinformationsspeicher 70 ausgelesen.
-
Danach
wird beim Schritt S22 festgestellt, ob es noch mehr eingebettete
Bildrahmen gibt, die danach in der Blockteilungseinheit 61 zu
verarbeiten sind. Wenn das Resultat des Schritt S22 ja ist, kehrt der
Prozess zum Schritt S11 zurück,
und die korrespondierende Verarbeitung wird wiederholt.
-
Wenn
andererseits beim Schritt S22 festgestellt wird, dass es keine eingebetteten
Bildrahmen mehr gibt, die danach in der Blockteilungseinheit 61 zu
verarbeiten sind, ist die Decodierungsverarbeitung vollendet.
-
Gemäß der vorhergehenden
Beschreibung werden die codierten Bilddaten, in die zusätzliche
Information eingebettet ist, durch Benutzung der Korrelation des
Bildes in das originale Bild und in die zusätzliche Information decodiert.
Infolgedessen kann die Decodierungsoperation ausgeführt werden,
ohne in einen Überhang
zu geraten, der zur Ausführung der
Decodierungsoperation erforderlich ist. Folglich ist das decodierte
Bild (wiedergegebenes Bild) grundsätzlich frei von der Verschlechterung
der Bildqualität,
die es herkömmlicherweise
durch Einbetten der zusätzlichen
Information erleidet.
-
Ein
Simulationstest wurde wie folgt durchgeführt. Ein natürliches
Bild, bei dem jedes Pixel acht Bits aufweist, wurde in 4 × 4-Pixel-Blöcke geteilt,
und die Einbettcodierungsoperation wurde ausgeführt. (Da in diesem Fall in
einem einzelnen Block eine zusätzliche
Information aus drei Bit eingebettet werden kann, beträgt die Einbettungsrate
der zusätzlichen Information
3 Bit/16 Pixel). Dann wurde die Decodierungsoperation am eingebetteten
Bild ausgeführt, und
alle Pixelwerte wurden korrekt decodiert (was bedeutet, dass die
zusätzliche
Information auch korrekt decodiert wurde).
-
Ein
anderer Simulationstest wurde wie folgt durchgeführt. Ein natürliches
Bild ähnlich
zu dem beim oben beschriebenen Simulationstest benutzten wurde in
2 × 2-Pixel-Blöcke beteilt,
und die Einbettcodierungsoperation wurde ausgeführt (in diesem Fall beträgt die Einbettungsrate
der zusätzlichen
Information 3 Bits/4 Pixel, was viermal so hoch wie die des oben
beschriebenen Simulationstexts ist). Dann wurde die Decodierungsoperation
beim eingebetteten Bild ausgeführt,
und 97,92% der Pixelwerte wurden korrekt decodiert.
-
Wenn
demgemäss
ein einzelner Block aus einer größeren Anzahl
von Pixeln gebildet wird, können
die Pixel mit einer höheren
Präzision
decodiert werden. Andererseits wird die Menge der zusätzlichen
Information, die in einen einzelnen Rahmen eingebettet werden kann,
das heißt
die Einbettungsrate, erhöht.
Wenn im Gegensatz dazu ein einzelner Block aus einer kleineren Anzahl
von Pixeln gebildet ist, wird die Einbettungsrate erhöht, aber
die Decodierungspräzision
wird erniedrigt. Infolgedessen wird die einen einzelnen Block bildende
Anzahl von Pixeln vorteilhafterweise im Hinblick auf die Abwägungen der
Einbettungsrate und der Decodierungspräzision bestimmt.
-
Wenn
bei der vorhergehenden Ausführungsform
ein Pixelwert durch mehrere Komponenten wie beispielsweise YUV oder
RGB dargestellt wird, können
alle diese Komponenten entsprechend der gleichen zusätzlichen
Information gedreht werden. Alternativ dazu können die Komponenten entsprechend unterschiedlichen
Elementen der zusätzlichen
Information individuell gedreht werden.
-
Bei
der vorhergehenden Ausführungsform werden
gewisse der den Block bildenden Pixel entsprechend einem Schachtbrettmuster
ausgewählt, und
die zusätzliche
Information wird in die ausgewählten
Pixel eingebettet. Jedoch können
gewisse der zur Einbettung der zusätzlichen Information benutzten
Pixel entsprechend einem unterschiedlichen Muster ausgewählt werden.
Außerdem
ist, obgleich bei dieser Ausführungsform
eine Hälfte
der den Block bildenden Pixel ausgewählt wird und die Werte der ausgewählten Pixel
entsprechend der zusätzlichen Information
gedreht werden, die Anzahl von zur Ausführung der Drehung benutzten
Pixel nicht auf eine Hälfte
der den Block bildenden Pixel beschränkt. Wie oben dargelegt kann
jedoch bei der Decodierung der Pixel, in die zusätzliche Information eingebettet
ist, der Korrelationswert durch Benutzung der Pixel ohne die zusätzliche
Information nach Wunsch bestimmt werden. Die Korrelation zwischen
Pixeln wird kleiner, wenn die Pixel räumlich oder zeitlich weiter
voneinander entfernt sind. Deshalb können zur Ausführung der
korrekten Decodierungsoperation die Pixel, in die zusätzliche
Information einzubetten ist, derart ausgewählt werden, dass sie räumlich oder
zeitlich spärlich (sparsely)
lokalisiert sind.
-
Bei
der vorhergehenden Ausführungsform werden
die Linksdrehungspixel und die Rechtsdrehungspixel so ausgewählt, dass
sie in der diagonalen Richtung der ausgewählten Pixel abwechseln angeordnet
sind. Jedoch können
die Linksdrehungspixel und die Rechtsdrehungspixel entsprechend
einem anderen Muster angeordnet sein.
-
Bei
der oben erwähnten
Ausführungsform werden
gewisse der ausgewählten
Pixel so bestimmt, dass sie Linksdrehungspixel sind und infolgedessen
entsprechend der zusätzlichen
Information nach links gedreht sind, während die verbleibenden ausgewählten Pixel
so bestimmt werden, dass sie Rechtsdrehungspixel sind und infolgedessen
entsprechend der zusätzlichen
Information nach rechts gedreht sind. Jedoch können alle diese ausgewählten Pixel
nach links oder nach rechts gedreht sein.
-
13 stellt
ein Beispiel der Konfiguration des Einbettungscodierers, der durch
Ausführen
des im Programmspeicher 33 gespeicherten Programms durch
die in 4 gezeigte CPU 32 implementiert werden
kann, gemäß einer
zweiten Ausführungsform der
vorliegenden Erfindung dar.
-
Zu
codierende Bilder werden einer Blockteilungseinheit 81 beispielsweise
in Einheiten von Rahmen zugeführt.
Die Blockteilungseinheit 81 teilt dann die Bilder für einen
einzelnen Rahmen in Bildblöcke, deren
jeder eine vorbestimmte Größe aufweist,
und führt
die geteilten Blöcke
einer Exklusiv-ODER-Arithmetikeinheit 82 zu.
-
Nicht
nur die Bildblöcke
aus der Blockteilungseinheit 81, sondern auch zusätzliche
Information, die in Bilder einzubetten ist, wird der Exklusiv-ODER-Arithmetikeinheit 82 zugeführt. Die
Exklusiv-ODER-Arithmetikeinheit 82 wählt gewisse der von der Blockteilungseinheit 81 zugeführten, den Bildblock
bildenden Pixel (nachfolgend manchmal als „ausgewählte Pixel" bezeichnet) aus und berechnet zwischen
jedem der ausgewählten
Pixel und der zusätzlichen
Information ein exklusives ODER und bettet dadurch die zusätzliche
Information in die ausgewählten
Pixel ein. Der die in die ausgewählten
Pixel eingebettete zusätzliche
Information aufweisende Bildblock wird einem Codiertbildspeicher 83 als
ein codierter Block zugeführt.
-
Der
Codiertbildspeicher 83 speichert die von der Exklusiv-ODER-Arithmetikeinheit 82 zugeführten codierten
Bildblöcke
sequentiell. Wenn codierte Bildblöcke für einen einzelnen Rahmen gespeichert
sind, werden die codierten Bildblöcke als codierte Daten ausgegeben.
-
Es
wird nun eine Beschreibung der von dem in 13 gezeigten
Einbettungscodierer 3 ausgeführten Einbettcodierungsverarbeitung
anhand des Flussdiagramms der 14 gegeben.
-
Wie
oben dargelegt werden zu codierende Bilder der Blockteilungseinheit 81 in
Einheiten von Rahmen zugeführt.
Beim Empfang eines Bildes für einen
einzelnen Rahmen teilt die Blockteilungseinheit 81 beim
Schritt S31 das Bild in Blöcke,
deren jeder eine vorbestimmte Größe aufweist.
Das heißt,
die Blockteilungseinheit 81 teilt das Bild wie bei (A)
der 15 gezeigt in 4 × 4-Pixel-Bildblöcke. Die
von der Blockteilungseinheit 81 erhaltenen Bildblöcke werden
der Exklusiv-ODER-Arithmetikeinheit 82 sequentiell,
beispielsweise in einer Rasterabtastordnung zugeführt.
-
Beim
Empfang des Bildblocks von der Blockteilungseinheit 81 stellt
die Exklusiv-ODER-Arithmetikeinheit 82 beim Schritt S32
den empfangenen Bildblock so ein, dass er der laufende Bildblock
ist, und wählt
gewisse der den laufenden Block bildenden Pixel aus. Insbesondere
wählt die
Exklusiv-ODER-Arithmetikeinheit 82 die von den bei (A) der 15 gezeigten
schwarzen Abschnitten • und den
schraffierten Abschnitten angezeigten Pixel entsprechend einem Schachbrettmuster
aus. Das heißt, es
wird eine Hälfte
der den laufenden Block bildenden Pixel ausgewählt.
-
Dann
berechnet die Exklusiv-ODER-Arithmetikeinheit 82 beim Schritt
S33 zwischen jedem der ausgewählten
Pixel und der zusätzlichen
Information ein exklusives ODER und bettet dadurch die zusätzliche
Information in die ausgewählten
Pixel ein. Insbesondere berechnet die Exklusiv-ODER-Arithmetikeinheit 82 ein
exklusives ODER zwischen jedem der durch die schraffierten Abschnitte
bei (A) der 15 angezeigten ausgewählten Pixel
und dem Bitstrom der zusätzlichen Information
und stellt das berechnete Resultat so ein, dass es der Wert des
ausgewählten
Pixels ist.
-
Die
Exklusiv-ODER-Arithmetikeinheit 82 berechnet auch ein exklusives
ODER zwischen jedem der durch die schwarzen Abschnitte • angezeigten ausgewählten Pixel
und dem durch Umkehren der Ordnung des Bitstroms der zusätzlichen
Information erhaltenen Bitstrom (nachfolgend als „Umgekehrtbitstrom" bezeichnet) und
stellt das berechnete Resultat so ein, dass es der Wert des ausgewählten Pixel ist.
-
Die
zum Berechnen eines exklusiven ODER mit dem Bitstrom der zusätzlichen
Information und mit dem umgekehrten Bitstrom der zusätzlichen
Information benutzten Pixel werden nachfolgend als „Normalbitstrompixel" bzw. „Umgekehrtbitstrompixel" bezeichnet. Bei
der zweiten Ausführungsform
werden, wie bei (A) der 15 dargestellt,
die „Normalbitstrompixel" und die „Umgekehrtbitstrompixel" in der diagonalen
Richtung der ausgewählten
Pixel abwechseln angeordnet. Demgemäss wird eine Hälfte der
ausgewählten
Pixel so eingestellt, dass sie die „Normalbitstrompixel" sind, und die andere
Hälfte wird
so eingestellt, dass sie die „Umgekehrtbitstrompixel" sind.
-
Es
sei nun angenommen, dass der Pixelwert durch acht Bit dargestellt
ist, und dass der Wert eines Normalbitstrompixels 00111101B (B stellt
dar, dass die vorhergehende Zahl binär ist) und der Wert eines Umgekehrtbitstrompixels
10010111B ist. Es sei auch angenommen, dass die zusätzliche
Information 00101001B (= 41) ist. Dann wird, wie bei (B) der 15 gezeigt,
ein die zusätzliche
Information darstellendes exklusives ODER zwischen dem Wert des Normalbitstrompixels
00111101B und dem Bitstrom 00101001B berechnet, was in 00010100B
resultiert. Ein exklusives ODER wird auch, wie bei (C) der 15 gezeigt,
zwischen dem Wert des Umgekehrtbitstrompixels 10010111B und dem
Umgekehrtbitstrom 10010100B der zusätzlichen Information berechnet,
was in 00000011B resultiert. Ähnlich
wird ein exklusives ODER für
die anderen Normalbitstrompixel und die Umgekehrtbitstrompixel berechnet.
-
Wenn
der Pixelwert durch acht Bits dargestellt wird, kann die Exklusiv-ODER-Berechnung zwischen
dem Pixelwert und der die gleiche Anzahl Bits aufweisenden zusätzlichen
Information ausgeführt werden.
Demgemäss
kann in diesem Fall eine zusätzliche
Information aus acht Bits (von 0 bis 255 reichend) in einen einzelnen
Block eingebettet werden.
-
Beim
Schritt S33 wird nach Berechnung eines exklusiven ODER zwischen
den ausgewählten Pixeln
und der zusätzlichen
Information wie oben beschrieben der resultierende Block dem Codiertbildspeicher 38 als
ein codierter Block zugeführt
und darin gespeichert. Der Prozess geht dann zum Schritt S34 weiter.
-
Beim
Schritt S34 wird festgestellt, ob es noch mehr Blöcke gibt,
die in der Exklusiv-ODER-Arithmetikeinheit 82 als der laufende
Block zu verarbeiten sind (nachfolgend manchmal als „nicht
verarbeitete Blöcke" bezeichnet). Wenn
das Ergebnis des Schritts S34 ja ist, wird einer der nicht verarbeiteten
Blöcke
so eingestellt, dass er der laufende Block ist, und der Prozess
kehrt zum Schritt S32 zurück
und die korrespondierende Verarbeitung wird wiederholt.
-
Wenn
durch die Exklusiv-ODER-Arithmetikeinheit 82 beim Schritt
S34 festgestellt wird, dass es keine nicht verarbeiteten Blöcke mehr
gibt, in anderen Worten, wenn alle codierten Blöcke für einen einzelnen Rahmen im
Codiertbildspeicher 83 gespeichert sind, werden die codierten
Blöcke
aus dem Codiertbildspeicher 83 gelesen.
-
Es
wird dann beim Schritt S35 festgestellt, ob es noch mehr Rahmen
gibt, die in der Blockteilungseinheit 81 zu verarbeiten
sind. Wenn das Resultat des Schritts S35 ja ist, kehrt der Prozess
zum Schritt S31 zurück,
und der korrespondierende Rahmen wird in einer zum Obigen ähnlichen
Weise verarbeitet.
-
Wenn
beim Schritt S35 gefunden wird, dass es keine Rahmen mehr gibt,
die in der Blockteilungseinheit 81 zu verarbeiten sind,
wird die Einbettcodierungsverarbeitung vollendet.
-
Auf
diese Weise wird die zusätzliche
Information durch Auswählen
gewisser der den Bildblock bildenden Pixel und durch Berechnen eines
exklusiven ODER zwischen jedem der ausgewählten Pixel und der zusätzlichen
Information in den Bildblock eingebettet. Es ist auf diese Weise
möglich,
die zusätzliche
Information in das Bild mit dem minimalen Verlust der Bildqualität und ohne
Erhöhung
der Datenmenge einzubetten.
-
Das
heißt,
zwischen den bei (A) der 15 gezeigten
ausgewählten
Pixeln, in welche die zusätzliche
Information eingebettet ist, können
die durch die schraffierten Abschnitte und die schwarzen Abschnitte • angezeigten
Pixelwerte durch Benutzung der Korrelation des Bildes, das heißt der Korrelation
zwischen den ausgewählten
Pixeln und den Pixeln ohne die zusätzliche Information, die bei
(A) der 15 durch 0 angezeigt sind, ohne
in einen Überhang
zu geraten in die originalen Pixel und in die zusätzliche Information
decodiert (wiederhergestellt) werden. Dies wird unten detailliert
beschrieben. Demgemäss wird
im decodierten Bild (wiedergegebenes Bild) die durch Einbetten der
zusätzlichen
Information verursachte Verschlechterung der Bildqualität nicht
beobachtet.
-
16 stellt
ein Beispiel der Konfiguration des Decodierers 6, der durch
Ausführen
des im Programmspeicher 54 gespeicherten Programms durch die
in 8 gezeigte CPU 53 implementiert werden kann,
gemäß der zweiten
Ausführungsform
der vorliegenden Erfindung dar.
-
Eingebettete
Bilder werden einer Blockteilungseinheit 161 beispielsweise
in Einheiten von Rahmen als codierte Daten zugeführt. Die Blockteilungseinheit 161 teilt
das eingebettete Bild in Blöcke, deren
jeder eine vorbestimmte Größe aufweist,
das heißt
in codierte Blöcke,
und führt
die geteilten Blöcke
wie im Fall der in 13 gezeigten Blockteilungseinheit 81 einer
Exklusiv-ODER-Arithmetikeinheit 162 sequentiell zu.
-
Unter
den Pixeln, die den von der Blockteilungseinheit 161 zugeführten codierten
Block bilden, wählt
die Exklusiv-ODER-Arithmetikeinheit 162 die bei den gleichen
Positionen wie die von der in 13 gezeigten
Exklusiv-ODER-Arithmetikeinheit 82 ausgewählten angeordnet
sind, aus. Dann berechnet die Exklusiv-ODER-Arithmetikeinheit 162 ein
exklusives ODER zwischen jedem der ausgewählten Pixelwerte und EX-ODER-Daten,
die von einem EX-ODER-Datenregister 163 zugeführt werden,
und führt
es einer Differenzwertberechnungseinheit 164 zu. Die Exklusiv-ODER-Arithmetikeinheit 162 berechnet
auch ein exklusives ODER zwischen jedem der ausgewählten Pixelwerte
und optimalen EX-ODER-Daten, die in einem Optimal-EX-ODER-Daten-Speicherregister 169 gespeichert
sind. Als ein Resultat kann der codierte Block in den originalen
Bildblock decodiert und einem Decodiertbildspeicher 171 zugeführt werden.
-
Das
EX-ODER-Datenregister 163 stellt die EX-ODER-Daten ein,
welche die zum Berechnen eines exklusiven ODER mit dem Pixelwert
benutzten Daten sind, und führt
sie der Exklusiv-ODER-Arithmetikeinheit 162 und einem Schalter 165 zu.
Wenn der Pixelwert durch th_r Bits dargestellt ist, kann ein exklusives
ODER zwischen dem Pixelwert und den die th_r Bits aufweisenden Daten
berechnet werden. In diesem Fall stellt das EX-ODER-Datenregister 163 die
Daten, die durch th_r Bits dargestellt werden können, das heißt den von
0 bis 2th_r-1 reichenden Wert, als die EX-ODER- Daten sequentiell
ein und führt
sie der Exklusiv-ODER-Arithmetikeinheit 162 und dem Schalter 165 zu.
-
Die
Differenzwertberechnungseinheit 164 empfängt von
der Exklusiv-ODER-Arithmetikeinheit 162 den
codierten Block, in welchem ein exklusives ODER zwischen jedem der
ausgewählten
Pixelwerte und den EX-ODER-Daten berechnet worden ist, und berechnet
den Korrelationswert zwischen den ausgewählten Pixeln und den benachbarten
Pixeln, das heißt
in diesem Fall die Summe von absoluten Differenzen der individuellen
Pixelwerte. Die Summe der absoluten Differenzen wird einem Komparator 168 als
der Korrelationswert zugeführt.
-
Der
Schalter 165 führt
die EX-ODER-Daten vom EX-ODER-Datenregister 163 unter der
Steuerung des Komparators 168 dem Optimal-EX-ODER-Daten-Speicherregister 169 zu.
Ein Schalter 166 führt
den Korrelationswert von der Differenzwertberechnungseinheit 164 unter
der Steuerung des Komparators 168 einem Minimumdifferenzwert-Speicherregister 167 zu.
-
Das
Minimumdifferenzwert-Speicherregister 167 speichert über den
Schalter 166 den von der Differenzwertberechnungseinheit 164 zugeführten Korrelationswert
als den Maximumkorrelationswert in Bezug auf den laufend verarbeiteten
codierten Block (nachfolgend manchmal als der „laufende codierte Block" bezeichnet). Wie
oben beschrieben wird bei der zweiten Ausführungsform die Summe der absoluten
Differenzen zwischen den ausgewählten
Pixeln und den benachbarten Pixeln als der Korrelationswert zwischen
ihnen benutzt. Demgemäss
bedeutet der Maximumkorrelationswert die Minimumsumme der absoluten
Differenzen der Pixelwerte.
-
Die
im Minimumdifferenzwert-Speicherregister 167 gespeicherte
Minimumsumme der absoluten Differenzen wird dem Komparator 168 als
die Maximumkorrelation zugeführt.
Der Komparator 168 vergleicht die von der Differenzwertberechnungseinheit 164 ausgegebene
Summe der absoluten Differenzen mit der im Minimumdifferenzwert-Speicherregister 167 gespeicherten
Minimumsumme der absoluten Differenzen, und auf Basis des Vergleichsresultats steuert
der Komparator 168 die Schalter 165 und 166.
-
Das
Optimal-EX-ODER-Daten-Speicherregister 169 empfängt die
EX-ODER-Daten vom EX-ODER-Datenregister 163 über den
Schalter 165 und speichert sie als die optimalen EX-ODER-Daten, die
der zur Berechnung eines exklusiven ODER mit den ausgewählten Pixelwerten
des codierten Blocks benutzte optimale Bitstrom sind. Dann führt das
Optimal-EX-ODER-Daten-Speicherregister 169 die optimalen
EX-ODER-Daten der
Exklusiv-ODER-Arithmetikeinheit 162 und dem Decodiertzusätzlichinformationsspeicher 170 geeignet
zu.
-
Der
Decodiertzusätzlichinformationsspeicher 170 speichert
die vom Optimal-EX-ODER-Daten-Speicherregister 169 zugeführten optimalen EX-ODER-Daten
zeitweilig als die in den codierten Block eingebettete decodierte
zusätzliche
Information und gibt sie aus. Der Decodiertbildspeicher 171 speichert
den codierten Block, in welchem ein exklusives ODER zwischen den
ausgewählten
Pixelwerten und den optimalen EX-ODER-Daten berechnet worden ist,
zeitweilig als den decodierten originalen Bildblock, und wenn die
decodierten Bildblöcke
für einen
einzelnen Rahmen gespeichert sind, werden die decodierten Bilder
ausgegeben.
-
Die
von dem in 16 gezeigten Decodierer 6 ausgeführte Decodierungsverarbeitung
wird unten anhand des Flussdiagramms der 17 beschrieben.
-
Wie
oben dargelegt werden der Blockteilungseinheit 161 eingebettete
Bilder in Einheiten von Rahmen zugeführt. Beim Empfang eingebetteter
Bilder für
einen einzelnen Rahmen teilt die Blockteilungseinheit 161 wie
im Fall der in 13 gezeigten Blockteilungseinheit 161 das
eingebettete Bild in Blöcke,
deren jeder eine vorbestimmte Größe aufweist. Insbesondere
teilt die Blockteilungseinheit 161, wie bei (A) der 18 gezeigt,
in codierte 4 × 4-Pixel-Blöcke. Die
von der Blockteilungseinheit 161 geteilten codierten Blöcke werden
der Exklusiv-ODER-Arithmetikeinheit 162 beispielsweise
in einer Rasterabtastordnung sequentiell zugeführt.
-
Beim
Empfang des codierten Blocks von der Blockteilungseinheit 161 stellt
die Exklusiv-ODER-Arithmetikeinheit 162 beim Schritt S42 den
empfangenen codierten Block als den laufenden codierten Block ein
und wählt
gewisse der den laufenden codierten Block bildenden Pixel aus. Insbesondere
wählt die
Exklusiv-ODER-Arithmetikeinheit 162 die
durch die bei (A) der 18 durch die schraffierten Abschnitte
und die schwarzen Abschnitte • angezeigten
gleichen Pixel wie die von der in 13 gezeigten
Exklusiv-ODER-Arithmetikeinheit 82 ausgewählten aus.
Die Exklusiv-ODER-Arithmetikeinheit 162 wählt auch
die Normalbitstrompixel und die Umgekehrtbitstrompixel wie im Fall
der Exklusiv-ODER-Arithmetikeinheit 82 aus den oben erwähnten ausgewählten Pixeln
aus.
-
Das
heißt,
unter den ausgewählten
Pixeln des codierten Blocks können
die Pixel, die von der in 13 gezeigten
Exklusiv-ODER-Arithmetikeinheit 82 als die Normalbitstrompixel
bestimmt sind, durch Berechnen eines exklusiven ODER zwischen jedem der
Pixelwerte und dem mit der in die codierten Pixel eingebetteten
zusätzlichen
Information korrespondierenden Bitstrom in die originalen Pixel
decodiert werden. Ähnlich
können
die Pixel, die von der Exklusiv-ODER-Arithmetikeinheit 82 als die
Umgekehrtbitstrompixel bestimmt sind, durch Berechnen eines exklusiven
ODER zwischen jedem der Pixelwerte und dem Umgekehrtbitstrom der
in die codierten Pixel eingebetteten zusätzlichen Information in die
originalen Pixel decodiert werden.
-
Demgemäss wählt die
Exklusiv-ODER-Arithmetikeinheit 162 die Normalbitstrompixel
und die Umgekehrtbitstrompixel wie im Fall der Exklusiv-ODER-Arithmetikeinheit 62 aus
den ausgewählten
Pixeln aus. Infolgedessen werden in der Exklusiv-ODER-Arithmetikeinheit 162 in
einer zu dem in Bezug auf (A) der 15 beschriebenen
Beispiel ähnlichen
Weise die durch die schraffierten Abschnitte bei (A) der 18 angezeigten
Pixel als die Normalbitstrompixel eingestellt, während die durch die schwarzen
Abschnitte • angezeigten
Pixel als die Umgekehrtbitstrompixel eingestellt werden.
-
Danach
geht der Prozess zum Schritt S43 weiter. Beim Schritt S43 initialisiert
das EX-ODER-Datenregister 163 die EX-ODER-Daten n so, dass
sie 0 sind, und das Minimumdifferenzwert-Speicherregister 167 initialisiert
den Wert (Minimumsumme der absoluten Differenzen) so, dass er ein
vorbestimmter großer
Wert ist (beispielsweise der Maximumwert, der gespeichert werden
kann). Das EX-ODER-Datenregister 163 führt dann
die EX-ODER-Daten n der Exklusiv-ODER-Arithmetikeinheit 162 und dem
normalerweise ausgeschalteten Schalter 165 zu, und der
Prozess geht dann zum Schritt S44 weiter.
-
Beim
Schritt S44 berechnet die Exklusiv-ODER-Arithmetikeinheit 162 ein
exklusives ODER zwischen den vom EX-ODER-Datenregister 163 ausgegebenen
EX-ODER-Daten n
und jedem der Normalbitstrompixel und der Umgekehrtbitstrompixel
des laufenden codierten Blocks und führt das berechnete Resultat
der Differenzwertberechnungseinheit 164 zu.
-
Es
sei nun angenommen, dass der Pixelwert durch acht Bits dargestellt
ist, und dass der Wert eines Normalbitstrompixels 00010100B ist
und der Wert eines Umgekehrtbitstrompixels 00000011B ist. Es sei
auch angenommen, dass die EX- ODER-Daten
n gleich 00101001B (= 41) sind. Dann wird, wie bei (B) der 18 gezeigt,
zwischen dem Normalbitstrompixelwert 00010100B und dem Bitstrom 00101001B,
der die EX-ODER-Daten n darstellt, ein exklusives ODER berechnet,
was in 00111101B resultiert. Es wird auch, wie bei (C) der 18 gezeigt, zwischen
dem Umgekehrtbitstrompixelwert 00000011B und dem Bitstrom 10010100B,
welcher der Umgekehrtbitstrom der EX-ODER-Daten n ist, ein exklusives
ODER berechnet, was in 10010111B resultiert.
-
Beim
Empfang des laufenden codierten Blocks von der Exklusiv-ODER-Arithmetikeinheit 162,
bei dem zwischen den ausgewählten
Pixeln und den EX-ODER-Daten
n ein exklusives ODER berechnet worden ist, berechnet die Differenzwertberechnungseinheit 164 beim
Schritt S45 die Summe der Korrelationswerte zwischen den ausgewählten Pixeln
und den benachbarten Pixeln, das heißt in diesem Fall die Summe
der absoluten Differenzen zwischen den ausgewählten Pixeln und den benachbarten
Pixeln, als den Korrelationswert in Bezug auf den laufenden codierten
Block (der Korrelationswert zwischen den Pixeln, die den laufenden
codierten Block bilden).
-
Insbesondere
sind im codierten Block, wie in 19 dargestellt,
die durch die schraffierten Abschnitte und die schwarzen Abschnitte • angezeigten ausgewählten Pixel
neben wenigstens einem einzelnen Pixel lokalisiert, in welchem mit
der zusätzlichen Information
ein exklusives ODER nicht berechnet worden ist (nachfolgend manchmal
als ein „nicht
ausgewähltes
Pixel" bezeichnet).
Die Differenzwertberechnungseinheit 164 berechnet die absolute
Differenz zwischen den ausgewählten
Pixeln und den benachbarten nicht ausgewählten Pixeln und bestimmt die
Summe der absoluten Differenzen als den Korrelationswert des codierten
Blocks.
-
Wenn
das ausgewählte
Pixel mehreren nicht ausgewählten
Pixeln benachbart ist, wird, wie durch die durchgezogenen Pfeile
der 19 angedeutet, die absolute Differenz zwischen
dem ausgewählten Pixel
und jedem der nicht ausgewählten
Pixel berechnet.
-
Bei
dem oben beschriebenen Beispiel wird der Korrelationswert durch
Benutzung nur der Pixel im laufenden codierten Block erhalten. Jedoch
kann der Korrelationswert durch Benutzung von Pixeln eines Blocks
anders als der laufende codierte Block bestimmt werden.
-
Wenn
beispielsweise codierte Blöcke,
die ein eingebettetes Bild bilden, in einer Rasterabtastungsordnung
als die laufenden codierten Blöcke
verarbeitet werden, sind codierte Blöcke links neben einem laufenden
codierten Block schon in die originalen Pixelwerte decodiert worden.
Ein exklusives ODER ist zwischen gewissen Pixeln, die dem laufenden
codierten Block links, oben, rechts oder unten benachbart sind,
und der zusätzlichen
Information während der
Einbettcodierungsverarbeitung noch nicht berechnet worden.
-
Unter
den Pixeln außerhalb
des laufenden codierten Blocks können
die Pixel, die vor und nach der Einbettcodierungsverarbeitung die
gleichen bleiben (durch in 19 gezeigte
gestrichelte Kreise angezeigt), wie durch die gestrichelten Pfeile
in 19 angezeigt zur Berechnung absoluter Differenzen
mit den ausgewählten
Pixeln des laufenden codierten Blocks benutzt werden.
-
Außerdem wird
bei dem oben beschriebenen Beispiel die absolute Differenz zwischen
dem ausgewählten
Pixel und jedem der benachbarten nicht ausgewählten Pixel zur Bestimmung
des Korrelationswerts des codierten Blocks benutzt. Jedoch kann
die absolute Differenz zwischen dem ausgewählten Pixel und nicht ausgewählten Pixeln,
die dem ausgewählten
Pixel nicht benachbart sind aber dieses umgeben, benutzt werden.
-
Alternativ
dazu können
nicht nur Pixel, die räumlich
neben dem ausgewählten
Pixel sind, sondern auch Pixel, die zeitlich neben dem ausgewählten Pixel
sind, benutzt werden.
-
Wie
oben beschrieben wird die von der Differenzwertberechnungseinheit 164 berechnete
Summe der absoluten Differenzen der Pixelwerte als der codierte
Wert in Bezug auf den laufenden codierten Block dem Komparator 168 und
auch dem normalerweise ausgeschalteten Schalter 166 zugeführt.
-
Beim
Empfang der Summe der absoluten Differenzen des laufenden codierten
Blocks von der Differenzwertberechnungseinheit 164 stellt
der Komparator 168 beim Schritt S46 fest, ob die Summe
der absoluten Differenzen kleiner als der im Minimumdifferenzwert-Speicherregister 167 gespeicherte
Wert ist.
-
Wenn
das Ergebnis des Schritt S46 ja ist, das heißt, wenn der Korrelationswert
des durch Ausführen
eines exklusiven ODER zwischen den ausgewählten Pixeln und den EX-ODER-Daten
n größer als
der vorher erhaltene Korrelationswert in Bezug auf den laufenden
codierten Block ist, kann auf diese Weise bestimmt werden, dass
der laufende codierte Block am wahrscheinlichsten in den originalen
Block decodiert worden ist. Dann geht der Prozess zum Schritt S47
weiter, bei dem der Komparator 168 die Schalter 165 und 166 zeitweilig
von Aus auf Ein wechselt, und der Prozess geht zum Schritt S48 weiter.
-
Beim
Schritt S47 werden die vom EX-ODER-Daten-Register 163 ausgegebenen EX-ODER-Daten
n über
den Schalter 165 dem Optimal-EX-ODER-Daten-Speicherregister 169 zugeführt. Der
im Optimal-EX-ODER-Daten-Speicherregister 169 als
die optimalen EX-ODER-Daten n_min gespeicherte Wert wird von den
EX-ODER-Daten n aus dem EX-ODER-Datenregister 163 als neue
optimale EX-ODER-Daten n_min (als der zum Berechnen eines exklusiven
ODER mit den ausgewählten Pixeln
bei der Decodierung des laufenden codierten Blocks benutzten optimalen
Bitstrom) überschrieben.
-
Beim
Schritt S47 wird die Summe der absoluten Differenzen von der Differenzwertberechnungseinheit 164 über den
Schalter 166 dem Minimumdifferenzwert-Speicherregister 167 zugeführt. Der
im Minimumdifferenzwert-Speicherregister 167 gespeicherte
Wert wird von der von der Differenzwertberechnungseinheit 164 ausgegebenen
Summe der absoluten Differenzen als eine neue Minimumsumme der absoluten
Differenzen (als der Maximumkorrelationswert in Bezug auf den laufenden
codierten Block) überschrieben.
-
Wenn
im Gegensatz dazu beim Schritt S46 vom Komparator 168 festgestellt
wird, dass die Summe der absoluten Differenzen aus der Differenzwertberechnungseinheit 164 nicht
kleiner als der im Minimumdifferenzwert-Speicherregister 167 gespeicherte
Wert ist, das heißt,
wenn der durch Ausführen
eines exklusiven ODER zwischen den ausgewählten Pixeln und den EX-ODER-Daten
n erhaltene Korrelationswert in Bezug auf den laufenden codierten
Block nicht größer als
der vorher erhaltene Korrelationswert in Bezug auf den laufenden
codierten Block ist, wird festgestellt, dass der laufende codierte
Block nicht am wahrscheinlichsten in den originalen Block decodiert
worden ist. Infolgedessen geht der Prozess durch Überspringen
des Schritts S47 zum Schritt S48 weiter. Beim Schritt S48 werden
die EX-ODER-Daten n im EX-ODER-Datenregister 163 um 1 inkrementiert.
-
Danach
wird beim Schritt S49 festgestellt, ob die EX-ODER-Daten n gleich
oder kleiner als der Maximumwert 2th_r-1
ist, der durch die dem Pixelwert zugeordnete Anzahl von Bits dargestellt
werden kann. Wenn dem so ist, kehrt der Prozess zum Schritt S44 zurück, und
die korrespondierende Verarbeitung wird wiederholt.
-
Wenn
das Ergebnis des Schritts S44 nein ist, das heißt, die EX-ODER-Daten n sind
zum Berechnen des Korrelationswerts (Summe der absoluten Differenzen)
in Bezug auf den laufenden codierten Block als alle die von 0 bis
2th_r-1 reichenden Werte benutzt worden,
geht der Prozess zum Schritt S50 weiter. Beim Schritt S50 wird zwischen
den ausgewählten
Pixeln und den optimalen EX-ODER-Daten n_min ein exklusives ODER
berechnet und dadurch der laufende codierte Block in den originalen
Block decodiert und auch die in den codierten Block eingebettete
zusätzliche
Information decodiert.
-
Insbesondere
führt das
Optimal-EX-ODER-Daten-Speicherregister 169 die optimalen
EX-ODER-Daten n_min der Exklusiv-ODER-Arithmetikeinheit 162 zu.
In der Exklusiv-ODER-Arithmetikeinheit 162 wird zwischen
jedem der Normalbitstrompixel und jedem der Umgekehrtbitstrompixel
des laufenden codierten Blocks und den EX-ODER-Daten n_min in einer
zum Schritt S44 ähnlichen
Weise ein exklusives ODER berechnet und dadurch der originale Bildblock
decodiert. Der decodierte Bildblock wird dem Decodiertbildspeicher 171 zugeführt und
bei einer korrespondierenden Adresse gespeichert.
-
Das
Optimal-EX-ODER-Daten-Speicherregister 169 führt die
in ihm gespeicherten optimalen EX-ODER-Daten n_min dem Decodiertzusätzlichinformationsspeicher 170 als
die in den laufenden codierten Block eingebettete decodierte zusätzliche
Information zu.
-
Danach
geht der Prozess zum Schritt S51 weiter, bei dem festgestellt wird,
ob es noch mehr in der Exklusiv-ODER-Arithmetikeinheit 162 zu
verarbeitenden Blöcke
(nachfolgend manchmal als „nicht verarbeitete
Blöcke" bezeichnet) gibt.
Wenn das Ergebnis des Schritts S51 ja ist, wird einer der nicht
verarbeiteten Blöcke
als der laufende codierte Block (beispielsweise der in der Rasterabtastordnung nachfolgende
laufende codierte Block) eingestellt. Der Prozess kehrt dann zum
Schritt S42 zurück,
und die korrespondierende Verarbeitung wird wiederholt.
-
Wenn
umgekehrt von der Exklusiv-ODER-Arithmetikeinheit 162 beim
Schritt S51 festgestellt wird, dass es keine nicht verarbeiteten Blöcke mehr
gibt, das heißt,
wenn alle decodierten Blöcke
für einen
einzelnen Rahmen im Decodiertbildspeicher 171 gespeichert
sind und wenn die in den Rahmen eingebettete decodierte zusätzliche
Information im Decodiertzusätzlichinformationsspeicher 170 gespeichert
ist, wird das decodierte Bild aus dem Decodiertbildspeicher 171 gelesen,
und die decodierte zusätzliche
Information wird aus dem Decodiertzusätzlichinformationsspeicher 170 gelesen.
-
Danach
wird beim Schritt S52 festgestellt, ob es noch mehr in der Blockteilungseinheit 161 zu
verarbeitenden eingebetteten Bildrahmen gibt. Wenn dem so ist, kehrt
der Prozess zum Schritt S41 zurück, und
die korrespondierende Verarbeitung wird wiederholt.
-
Wenn
beim Schritt S52 gefunden wird, dass es keine von der Blockteilungseinheit 161 zu
verarbeitenden eingebetteten Bildrahmen mehr gibt, wird die Decodierungsverarbeitung
vollendet.
-
Gemäß der vorhergehenden
Beschreibung werden bei der zweiten Ausführungsform ebenso wie bei der
ersten Ausführungsform
die codierten Bilddaten, in welche die zusätzliche Information eingebettet ist,
durch Benutzung der Korrelation des Bildes in das originale Bild
und in die zusätzliche
Information decodiert. Infolgedessen gerät man nicht in einen zum Ausführen der
Decodierungsoperation erforderlichen Überhang. Deshalb ist das decodierte
Bild (wiedergegebenes Bild) frei von der Verschlechterung der Bildqualität, die herkömmlicherweise
aus der Einbettung der zusätzlichen
Information erlitten wird.
-
Ein
Simulationstest wurde wie folgt durchgeführt. Ein natürliches
Bild, bei dem jedes Pixel acht Bits aufweist, wurde in 4 × 4-Pixel-Blöcke geteilt
und die Einbettcodierungsoperation wurde ausgeführt (da in diesem Fall eine
zusätzliche
8-Bit-Information
in einen einzelnen Block eingebettet werden kann, beträgt die Einbettungsrate
der zusätzlichen
Information 8 Bit/16 Pixel). Dann wurde die Decodierungsoperation
am eingebetteten Bild ausgeführt,
und 98,74% der Pixelwerte wurden korrekt decodiert.
-
Ein
anderer Simulationstest wurde wie folgt durchgeführt. Ein natürliches
Bild ähnlich
zu dem beim oben beschriebenen Simulationstest benutzten wurde in
2 × 2-Pixel-Blöcke geteilt,
und die Einbettcodierungsoperation wurde ausgeführt (in diesem Fall beträgt die Einbettungsrate
der zusätzlichen
Information 8 Bit/4 Pixel, was viermal so hoch wie die des oben
beschriebenen Simulationstests ist). Dann wurde die Decodierungsoperation
am eingebetteten Bild ausgeführt,
und 79,12% der Pixelwerte wurden korrekt decodiert.
-
Wenn
demgemäss
ein einzelner Block aus einer größeren Anzahl
von Pixeln gebildet ist, können die
Pixel mit einer höheren
Präzision
decodiert werden. Andererseits wird die Menge zusätzlicher
Information, die in einen einzelnen Rahmen eingebettet werden kann,
das heißt
die Einbettungsrate erniedrigt. Wenn im Gegensatz dazu ein einzelner
Block aus einer kleineren Anzahl von Pixeln gebildet ist, wird die
Einbettungsrate erhöht,
aber die Decodierungspräzision
wird erniedrigt. Infolgedessen wird die einen einzelnen Block bildende
Anzahl von Pixeln vorteilhafterweise im Hinblick auf die Abwägungen der
Einbettungsrate und der Decodierungspräzision bestimmt.
-
Bei
der vorhergehenden Ausführungsform wird
bei der Einbettcodierungsverarbeitung, wie in 15 gezeigt,
die Umgekehrtbitstrom-Zusätzlichinformation
zum Berechnen eines exklusiven ODER mit den Werten der Umgekehrtbitstrompixel
benutzt. Jedoch kann ein exklusives ODER zwischen den durch Umkehrung
der Ordnung der Umgekehrtbitstrompixel und der zusätzlichen
Information berechnet werden.
-
Beispielsweise
sei nun, wie in 20 dargestellt, angenommen,
dass der Pixelwert durch acht Bits dargestellt ist, und dass der
Wert eines Normalbitstrompixels 00111101B und der Wert eines Umgekehrtbitstrompixels
10010111B ist. Es sei auch angenommen, dass die zusätzliche
Information 00101001B (= 41) ist. Dann wird zwischen dem Normalbitstrompixel
00111101B und dem die zusätzliche Information
darstellenden Bitstrom 00101001B ein exklusives ODER berechnet,
das, wie bei (B) der 20 gezeigt, in 00010100B resultiert,
was das gleiche wie bei (B) der 15 ist.
Andererseits wird zwischen dem durch Umkehrung des oben beschriebenen
Umgekehrtbitstrompixels 11101001B erhaltenen Bitstrom 10010111B
und dem die zusätzliche
Information darstellenden Bitstrom 00101001B ein exklusives ODER
berechnet, das in dem wie bei (C) der 20 gezeigten
10111110B resultiert.
-
In
diesem Fall wird jedoch bei der Decodierungsoperation zwischen den
Umgekehrtbitstrompixeln und den EX-ODER-Daten n zuerst ein exklusives
ODER berechnet, und dann wird der erhaltene Bitstrom umgekehrt.
Durch Benutzung des resultierenden Werts als der Pixelwert wird
der Korrelationswert berechnet.
-
Die
in den 6, 10, 14 und 17 gezeigten,
oben beschriebenen Verarbeitungen können durch Hardware oder Software
ausgeführt
werden. Wenn sie durch Benutzung von Software ausgeführt werden,
kann das korrespondierende Softwareprogramm in einem zur Verfügung gestellten,
in ein Pixelverarbeitungsgerät
oder ein Lerngerät untergebrachten
Hardwarecomputer oder in einem Universalcomputer, der durch Installieren
der korrespondierenden Programme unterschiedliche Verarbeitungen
ausführt,
installiert werden.
-
Es
wird nun anhand der 21A, 21B und 21C eine Beschreibung von zur Installation eines
die oben beschriebenen Verarbeitungen implementierenden Programms
in einem Computer und zum Ausführbarmachen
des Programms durch den Computer benutzten Medien gegeben.
-
Das
Programm kann, wie in 21A dargestellt,
Benutzern durch Installiertsein in einer Festplatte 102 oder
einem Halbleiterspeicher 103, die bzw. der als ein Speichermedium
dient und in einem Computer 1 untergebracht ist, bereitgestellt
sein.
-
Alternativ
dazu kann das Programm, wie in 21B gezeigt,
als Standard-Software
bzw. Softwarepaket (package software) bereitgestellt sein, indem
es vorübergehend
oder permanent in einem Speichermedium wie beispielsweise einer
Diskette 101, einem CD-Nurlesespeicher (CD-ROM (compact disc-read
only memory)) 112, einer magneto-optischen Platte (MO-Platte) 113,
einer mehrseitigen digitalen Platte (digital versatile disk (DVD)) 114,
einer Magnetplatte 115 oder einem Halbleiterspeicher 116 installiert
ist.
-
Alternativ
dazu kann das Programm, wie in 21C gezeigt,
von einer Herunterladestelle 121 über einen künstlichen Digitalsatellitrundfunk-Satelliten 122 zum
Computer 101 durch Funk (radio) übertragen werden oder über ein
Netzwerk 131 wie beispielsweise ein LAN (lokal area network
(lokales Netz)) oder das Internet über Kabel zum Computer 101 übertragen
werden und kann in der in den Computer 101 eingebauten
Festplatte 101 gespeichert werden.
-
Die
in der Beschreibung beschriebenen Medien umfassen das die oben beschriebenen
Medien einschließende
breiteste Konzept.
-
Die
das durch die Medien bereitgestellte Programm bildenden Schritte
können
entsprechend der in der Beschreibung beschriebenen Zeitreihenfolge ausgeführt werden.
Alternativ dazu brauchen die oben beschriebenen Schritte nicht in
Zeitreihenfolge ausgeführt
zu werden, sondern können
individuell oder parallel ausgeführt
werden (beispielsweise in Objektverarbeitung).
-
22 stellt
ein Beispiel der Konfiguration des in den 21A und 21C gezeigten Computers dar.
-
Der
Computer 101 weist, wie in 22 gezeigt,
eine eingebaute zentrale Verarbeitungseinheit (CPU) 142 auf.
Eine Eingabe/Ausgabe-Schnittstelle 145 ist über einen
Bus 141 mit der CPU 142 verbunden. Bei der Eingabe
einer Instruktion seitens eines Benutzers durch Bedienen einer aus
einer Tastatur, einer Maus usw. bestehenden Eingabeeinheit 147 über die
Eingabe/Ausgabe-Schnittstelle 145 führt die CPU 142 ein
in einem mit dem in 21A gezeigten Halbleiterspeicher 103 korrespondierenden
Nurlesespeicher (ROM) 143 gespeichertes Programm aus. Alternativ
dazu lädt
die CPU 142 in einen Direktzugriffsspeicher (RAM) 144 ein
in der Festplatte 102 gespeichertes Programm, ein vom Satelliten 122 oder Netzwerk 131 zu
einer Kommunikationseinheit 148 übertragenes und in der Festplatte 102 installiertes Programm
oder ein von der Diskette 101, dem CD-ROM 112,
der MO-Platte 113, der DVD 114 oder der Magnetplatte 115,
die in ein Laufwerk 149 geladen ist, gelesenes und in der
Festplatte 102 installiertes Programm. Dann führt die
CPU 142 das geladene Programm aus. Die CPU 142 gibt
dann das verarbeitete Resultat über
die Eingabe/Ausgabe-Schnittstelle 145 an eine aus beispielsweise
einer Flüssigkristallanzeige
(LCD (liquid crystal display)) gebildete Anzeigeeinheit 146 geeignet
aus.
-
Gemäß der ersten
und zweiten Ausführungsform
wird bei Ausführung
der Einbettcodierungsverarbeitung und der Codierungsverarbeitung
ein Bild in 4 × 4-Pixel-Blöcke geteilt.
Jedoch ist die Anzahl von einen einzelnen Block bildenden Pixeln
nicht beschränkt.
Außerdem
ist die Konfiguration des Blocks nicht auf eine Quadrat- oder Rechteckform
beschränkt.
-
Wenn
bei den vorhergehenden Ausführungsformen
in alle einen Rahmen bildenden Blöcke zusätzliche Information eingebettet
wird, so kann sie in einige der einen Rahmen bildenden Blöcke eingebettet
sein. In diesem Fall können
die Pixel, welche Blöcke
ohne die zusätzliche
Information bilden, bei der Decodierung der Blöcke, in welche die zusätzliche
Information eingebettet ist, zur Berechnung von Korrelationswerten
benutzt werden.
-
Bei
den oben erwähnten
Ausführungsformen wird
ein einzelner Rahmen in Blöcke
geteilt und in die geteilten Blöcke
wird zusätzliche
Information eingebettet. Jedoch kann bei der Einbettung zusätzlicher Information
jeder Rahmen, anstelle in Blöcke
geteilt zu werden, als ein einzelner Block benutzt werden, oder
es können
mehrere Rahmen als ein einzelner Block benutzt werden.
-
Wenn
bei der zweiten Ausführungsform
ein Pixelwert durch mehrere Komponenten wie beispielsweise YUV oder
RGB dargestellt ist, kann zwischen all den Komponenten und der gleichen
zusätzlichen
Information ein exklusives ODER berechnet werden. Alternativ dazu
kann zwischen den individuellen Komponenten und unterschiedlichen
Elementen von zusätzlicher
Information ein exklusives ODER berechnet werden.
-
Bei
der zweiten Ausführungsform
werden gewisse der den Block bildenden Pixel entsprechend einem
Schachbrettmuster ausgewählt,
und die zusätzliche
Information wird in die ausgewählten
Pixel eingebettet. Jedoch können
gewisse der zum Einbetten der zusätzlichen Information benutzten
Pixel entsprechend einem anderen Muster ausgewählt werden. Wenn außerdem bei
der zweiten Ausführungsform
eine Hälfte
der den Block bildenden Pixel ausgewählt wird und zwischen den Werten
der ausgewählten
Pixel und der zusätzlichen
Information ein exklusives ODER berechnet wird, so ist die Anzahl von
zur Berechnung eines exklusiven ODER benutzten Pixeln nicht auf
eine Hälfte
der den Block bildenden Pixel beschränkt. Wie oben dargelegt kann
jedoch bei der Decodierung der Pixel, in die zusätzliche Information eingebettet
ist, der Korrelationswert durch Benutzen der Pixel ohne die zusätzliche
Information geeignet bestimmt werden. Die Korrelation zwischen Pixeln
wird kleiner, wenn die Pixel räumlich oder
zeitlich weit voneinander entfernt sind. Um deshalb die korrekte
Decodierungsoperation auszuführen,
können
die Pixel, in die zusätzliche
Information eingebettet ist, derart ausgewählt werden, dass sie räumlich oder
zeitlich spärlich
lokalisiert sind.
-
Bei
der zweiten Ausführungsform
werden die Normalbitstrompixel und die Umgekehrtbitstrompixel so
ausgewählt,
dass sie in der Diagonalrichtung der ausgewählten Pixel abwechseln angeordnet
sind. Jedoch können
die Normalbitstrompixel und die Umgekehrtbitstrompixel entsprechend
einem anderen Muster angeordnet sein.
-
Bei
der zweiten Ausführungsform
werden gewisse der ausgewählten
Pixel als Normalbitstrompixel bestimmt, während die verbleibenden ausgewählten Pixel
als die Umgekehrtbitstrompixel bestimmt werden, und zwischen jedem
der Pixel und der zusätzlichen
Information wird ein exklusives ODER berechnet. Jedoch können alle
ausgewählten Pixel
als Normalbitstrompixel oder Umgekehrtbitstrompixel bestimmt werden.
-
Der
Typ von zusätzlicher
Information ist nicht speziell beschränkt. Beispielsweise können Bilder, Ton,
Text, Computerprogramme und andere Typen von Daten als die zusätzliche
Information eingebettet sein. Ein Teil der in der Bilddatenbank 1 gespeicherten
Bilder kann als die zusätzliche
Information benutzt werden, und die verbleibenden Bilder können dem
Rahmenspeicher 31 zugeführt werden.
In diesem Fall kann die zusätzliche
Information in die zu codierenden Bilder eingebettet werden und
dadurch die Bildkompression implementiert werden.