DE69631999T2 - Bildverarbeitungsgerät und Verfahren - Google Patents

Bildverarbeitungsgerät und Verfahren Download PDF

Info

Publication number
DE69631999T2
DE69631999T2 DE69631999T DE69631999T DE69631999T2 DE 69631999 T2 DE69631999 T2 DE 69631999T2 DE 69631999 T DE69631999 T DE 69631999T DE 69631999 T DE69631999 T DE 69631999T DE 69631999 T2 DE69631999 T2 DE 69631999T2
Authority
DE
Germany
Prior art keywords
block
pixel
coding
value
pixels
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69631999T
Other languages
English (en)
Other versions
DE69631999D1 (de
Inventor
Hiroshi Kajiwara
Tadashi Yoshida
Yasuji Kirabayashi
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from JP15614795A external-priority patent/JPH099266A/ja
Priority claimed from JP15614695A external-priority patent/JP3689454B2/ja
Priority claimed from JP7178708A external-priority patent/JPH0937262A/ja
Application filed by Canon Inc filed Critical Canon Inc
Publication of DE69631999D1 publication Critical patent/DE69631999D1/de
Application granted granted Critical
Publication of DE69631999T2 publication Critical patent/DE69631999T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Description

  • Die Erfindung betrifft eine Bildverarbeitungsvorrichtung und ein Verfahren zum Codieren eines Bilds.
  • Ein Bildcodierverfahren wird in zwei Hauptklassen klassifiziert, d. h. in ein nach dem Informationserhaltungsprinzip arbeitendes Codierverfahren, in welchem ein Originalbild bei der Decodierung vollständig wiederhergestellt wird, und ein nach dem Informationsnichterhaltungsprinzip arbeitendes Codieren, in welchem ein Fehler aus dem Originalbild eingeschlossen wird.
  • Als das nach dem Informationserhaltungsprinzip arbeitende Codierverfahren war ein DPCM-Codierverfahren bekannt. Bei einer üblichen DPCM-Codierung wird ein vorhergesagter Wert eines zu codierenden Pixels auf der Grundlage von codierten Pixeln, die das zu codierende Pixel umgeben, d. h. ein linkes Pixel (A), ein oberes Pixel (B) und ein linkes diagonales Pixel (C), unter Verwendung von zum Beispiel einer Formel (A + B – C) berechnet, und wird eine Differenz zwischen dem Ergebnis und dem Wert des zu codierenden Pixels codiert.
  • Bei dem nach dem Informationsnichterhaltungsprinzip arbeitenden Codierverfahren ist es nicht möglich, das Originalbild vollständig wiederherzustellen, jedoch erlaubt dieses ein hohes Kompressionsverhältnis. Daher wird dann, wenn eine Große Menge von Bilddaten gehandhabt wird oder ein Fehler nicht kritisch ist, häufig das nach dem Informationsnichterhaltungsprinzip arbeitende Codiersystem verwendet. Ein JPEG-Baseline-System ist eines der nach dem Informationsnichterhaltungsprinzip arbeitenden Codierverfahren.
  • Bei der bekannten Bildkompression wurde häufig ein Blockcode verwendet. Bei einer Umwandlungscodierung, welche viele unwiderrufliche Codierungen beinhaltet, ist ein Block eine Einheit der Codierung.
  • Das Konzept des Vorhersagens eines Pixelwerts durch eine Ebene wurde in einer üblicherweise verwendeten DPCM (Differential Pulse Code Modulation) angewandt. Zum Beispiel wird für ein betrachtetes Pixel ein vorhergesagter Wert durch (a + b – c) berechnet, worin a ein Wert eines linken benachbarten Pixels ist, b ein Wert eines oberen Pixels ist, und c ein Wert eines linken oberen Pixels ist.
  • Im allgemeinen ist die Wirkung der Verwendung der vorstehenden Vorhersage stark, da die meisten Teile eines Bilds durch einfache Helligkeitsgradienten gebildet werden.
  • Bei dem bekannten Prädiktions- bzw. Vorhersage-Codiersystem wird der Wert eines zu codierenden Pixels aus Werten von umgebenden Pixeln vorhergesagt, und wird eine Differenz zwischen dem vorhergesagten Wert und dem Wert des betrachteten Pixels entropiecodiert und übertragen. Bei diesem System wird die Menge von erzeugten Codes durch das Vorhersagesystem beeinflußt, und unterschied sich ein optimales Vorhersagesystem von Bereich zu Bereich. Demgemäß ist es, um dieses System effizient anzuwenden, üblich, ein Verfahren zu verwenden, bei dem das Bild in Blöcke unterteilt wird, und wird ein optimales Vorhersagesystem für jeden Block ausgewählt und wird ein Code durch Hinzufügen von Informationen zum Spezifizieren des Vorhersagesystems erzeugt.
  • Das Verfahren zum Auswählen des Vorhersagesystems für jeden Block ist wirkungsvoll, wenn sich das optimale Vorhersageverfahren von Block zu Block unterscheidet, aber die Übertragung der hinzugefügten Informationen ist nicht wirkungsvoll, wenn das Vorhersagesystem in einem großen Bereich, wie beispielsweise einem Bildhintergrundbereich, gleichförmig ist.
  • Bei der bekannten Codierung ist es, da die Menge codierter Daten einfach gesteuert wird, nicht möglich, ein Bild, in welchem ein bestimmter Fehlergrad zwischen einem tatsächlichen Pixelwert des zu codierenden Bilds und einem Pixelwert der codierten und decodierten Version des Originalbilds erlaubt ist (ein zulässiger Fehlerbereich), mit einer hohen Effizienz und innerhalb eines vorbestimmten Fehlers des Pixelwerts zu codieren.
  • Ein digitales Bild, welches tatsächlich gehandhabt wird, wird durch Lesen eines gedruckten Dokuments oder eines Silberhalogenid-Fotos durch einen Bildscanner oder einen CCD-Sensor erhalten, und in vielen Fällen ist Zufallsrauschen über die gesamte Fläche des Bilds enthalten. Erfahrungsgemäß ist in 8 Bit breiten Ton-Helligkeits-Daten Zufallsrauschen mit einer maximalen Amplitude von 3 enthalten. Wenn die Vorhersage auf der Grundlage des bekannten Verfahrens von a + b – c erfolgt, wird ein Rauschen, welches eine größere Dispersion bzw. Verteilung als ein Dispersions- bzw. Verteilungswert des Rauschens hat, in den vorhergesagten Wert eingeschlossen, so daß daher die Effizienz der Codierung nicht verbessert wird.
  • Es ist ein Ziel eines Gesichtspunkts der Erfindung, Bilddaten mit einem hohen Kompressionsverhältnis zu codieren, während ein Fehler eines Pixelwerts gesteuert wird.
  • Es ist ein Ziel eines anderen Gesichtspunkts der Erfindung, Mehrfachwertdaten mit einem hohen Kompressionsverhältnis zu codieren, während ein Fehler eines Pixelwerts gesteuert wird.
  • Es ist ein Ziel eines weiteren Gesichtspunkts der Erfindung, ein Codierverfahren bereitzustellen, welches die Probleme des Standes der Technik beseitigt und ein blockweises Codieren von Daten, insbesondere ein hocheffizientes reversibles Codieren von Gradientenbilddaten, erlaubt.
  • In Übereinstimmung mit einem ersten Gesichtspunkt der Erfindung wird ein Bildverarbeitungsverfahren bereitgestellt zum Verarbeiten eines eine Vielzahl von Pixeln umfassenden Blockbilds, gekennzeichnet durch: einen Berechnungsschritt des Berechnens einer dreidimensionalen Ebenenfunktion P(x, y) basierend auf Koordinaten x und y jedes Pixels des Blockbilds und Werten der Vielzahl von Pixeln, wobei die dreidimensionale Ebenenfunktion P(x, y) durch P(x, y) = ax + by + c repräsentiert wird, worin a, b und c Parameter sind; einen Erzeugungsschritt des Erzeugens einer Differenz zwischen einem durch die dreidimensionale Ebenenfunktion P(x, y) repräsentierten Pixelwert und dem Wert oder den Werten der Vielzahl von Pixeln; und einen Ausgabeschritt des Ausgebens der drei dimensionalen Ebenenfunktion P(x, y) und der erzeugten Differenz als endgültige codierte Daten.
  • In Übereinstimmung mit einem zweiten Gesichtspunkt der Erfindung wird eine Bildverarbeitungsvorrichtung bereitgestellt zum Verarbeiten eines eine Vielzahl von Pixeln umfassenden Blockbilds, gekennzeichnet durch: eine Berechnungseinrichtung zum Berechnen einer dreidimensionalen Ebenenfunktion P(x, y) basierend auf Koordinaten x und y jedes Pixels des Blockbilds und Werten der Vielzahl von Pixeln, wobei die dreidimensionale Ebenenfunktion P(x, y) durch P(x, y) = ax + by + c repräsentiert wird, worin a, b und c Parameter sind; eine Erzeugungseinrichtung zum Erzeugen einer Differenz zwischen einem durch die dreidimensionale Ebenenfunktion repräsentierten Pixelwert und dem Wert oder den Werten der Vielzahl von Pixeln; und eine Ausgabeeinrichtung (207) zum Ausgeben der dreidimensionalen Ebenenfunktion und der erzeugten Differenz als endgültige codierte Daten.
  • Nachstehend werden Ausführungsbeispiele der Erfindung unter Bezugnahme auf die beigefügten Zeichnungen beschrieben. Es zeigen:
  • 1 einen Ablauf eines Prozesses in einer ersten Form der Implementierung eines Ausführungsbeispiels der Erfindung;
  • 2A und 2B Arten eines Codierverfahrens und eine positionelle Beziehung von Pixeln;
  • 3 einen Teil von Bilddaten in den codierten Daten;
  • 4 eine Huffman-Tabelle zum Codieren von c0';
  • 5 ein Verfahren zur Lauflängenabtastung in einem Codierverfahren #8;
  • 6 eine Art und Weise des Unterteilens eines zu verarbeitenden Blocks in Unterblöcke;
  • 7 einen Ablauf eines Prozesses S3;
  • 8, welche aus den 8A bis 8C besteht, einen Ablauf von Prozessen S21, S25 und S32;
  • 9 ein Maximalblock-Unterteilungsverfahren und ein Format codierter Daten;
  • 10 eine Art und Weise des Umwandelns eines Differenzwerts in einen korrigierten Differenzwert;
  • 11 einen Ablauf eines Codierprozesses S10;
  • 12 eine Schaltungskonfiguration zum Implementieren eines Ausführungsbeispiels der Erfindung;
  • 13 eine Schaltungskonfiguration zum Implementieren der ersten Form der Implementierung;
  • 14 ein Blockdiagramm einer Codiervorrichtung eines ersten Ausführungsbeispiels der Erfindung;
  • 15 die Position von umgebenden Pixeln a, b und c für ein betrachtetes Pixel;
  • 16 die Blockerzeugung; und
  • 17 ein Blockdiagramm einer Ebenencodierschaltung.
  • [Erstes Ausführungsbeispiel]
  • 1 zeigt einen Ablauf eines Prozesses eines ersten Ausführungsbeispiels der Erfindung. In 1 bezeichnet SO einen Schritt zum Festlegen einer noch zu beschreibenden Referenz-Huffman-Tabelle, bezeichnet S1 einen Schritt zum Lesen von Blockdaten aus den Bilddaten bei einer maximalen Blockgröße (16 × 16 Pixel in dem vorliegenden Ausführungsbeispiel), bezeichnet S3 einen Schritt zum Bestimmen eines Blockunterteilungsverfahrens und eines Codierverfahrens, bezeichnet S4 einen Schritt zum Speichern des Blockunterteilungsverfahrens und des Codierverfahrens, die in dem Schritt S3 bestimmt wurden, als Referenzinformationen, bezeichnet S5 einen Schritt zum Berechnen von Statistiken der Häufigkeit des Auftretens eines noch zu beschreibenden Differenzwerts (Vorhersagefehlers), welcher auf der Grundlage der Referenzinformationen ausgegeben wird, bezeichnet S6 einen Schritt zum Aktualisieren der in dem Schritt S2 gelesenen Blockdaten auf noch zu beschreibende virtuelle Blockdaten, bezeichnet S7 einen Schritt zum Ermitteln eines Endpunkts eines Bilds, bezeichnet S8 einen Schritt zum Erzeugen eine optimalen Huffman-Tabelle auf der Grundlage der in dem Schritt S5 berechneten Differenzwertstatistiken, bezeichnet S9 einen Schritt zum Ermitteln eines Schleifenendes, und bezeichnet S10 einen Schritt zum Codieren des gesamten Bilds auf der Grundlage der Referenzinformationen.
  • Nachstehend wird das vorliegende Ausführungsbeispiel kurz erklärt. Die Codierung in dem vorliegenden Ausführungsbeispiel ist keine nichtreversible Codierung, sondern ein Codierverfahren, in welchem ein Fehler zwischen einem Pixelwert eines tatsächlichen Bilds und einem Pixelwert eines codierten Bilds innerhalb einem Bereich von maximal ±e zugelassen wird. Dies wird als eine nahezu verlustlose Codierung bezeichnet.
  • Es wird hier angenommen, daß die maximale Größe des zu codierenden Blocks 16 × 16 Pixel beträgt und die Codierung mit 16 × 16 Pixeln, 8 × 8 Pixeln oder 4 × 4 Pixeln durchgeführt wird. Was das Codierverfahren für jeden Block anbelangt, können sechs Arten von Vorhersage-Codierverfahren (#0 bis #5), zwei Arten von Ebenen-Codierverfahren (#6 und #7) und ein Lauflängen-Codierverfahren (#8), welches nur dann verwendet werden kann, wenn der Block in binärer Form dargestellt ist, ausgewählt werden (vgl. 2A und 2B).
  • Die neun Arten von Codierverfahren, die zum Codieren des Blocks verwendet werden, werden kurz erklärt. 3 zeigt Formate von Codedaten anhand der jeweiligen Codierverfahren.
  • Die Nummern #0 bis #5 sind für das Vorhersage-Codierverfahren, in welchem der vorhergesagte Wert unter Verwendung der umgebenden Pixel A, B und C, die in 2A gezeigt sind, durch die Formeln A + B – C, B, A, B + (A – C)/2, (A + B + C)/3 berechnet und eine Differenz zwischen dem betrachteten Pixel und dem vorhergesagten Wert Huffman-codiert wird. Die Huffman-Tabelle wird für jede Blockgröße erstellt und unter Verwendung einer separaten Huffman-Tabelle für jede Blockgröße codiert.
  • Die Vorhersage-Codierverfahren Nr. #0 bis #4 sind in IEICE TRANSACTIONS OF FUNDAMENTALS OF ELECTRONICS, COMMUNICATIONS AND COMPUTER SCIENCES, INSTITUTE OF ELECTRONICS INFORMATION AND COMM. ENG. TOKYO, JP, Band E75 – A, Nr. 7, Seiten 882–889, veröffentlicht 1992-07-01, offenbart.
  • Die Nummern #6 und #7 sind für das Ebenen-Codierverfahren. Bei der Nr. #6 ist eine Ebene, welche einen Pixelwert des Blocks annähert, durch P(x, y) = ax + by + c0 festgelegt, worin c0 ein Wert eines linken oberen Eckpixels in dem Block ist und die Werte von a, b und c0 und eine Differenz zwischen der Näherungsebene und dem Pixelwert in dem Block Huffman-codiert werden.
  • Falls a und b unterhalb eines vorbestimmten Niveaus liegen, wird eine Differenz c0' zu dem vorangehend aufgetretenen c0 für c0 Huffman-codiert, und falls die oberhalb des vorbestimmten Niveaus liegen, wird der Wert c0 selbst codiert. Ein Flag wird nach a, b und c0 eingefügt, so daß die Differenzdaten nicht addiert bzw. hinzugefügt werden, wenn alle der Referenzdaten in dem Block Null sind.
  • Die Nr. #7 wird verwendet, wenn alle Pixelwerte in dem Block gleich sind, d. h. wenn es sich um eine Ebene mit a = b = c handelt, und das vorstehend beschriebene c0' wird Huffman-codiert. 4 zeigt eine Huffman-Tabelle, welche verwendet wird, wenn das c0' bei den Nummern #6 und #7 codiert wird. In 4 bezeichnet S ein Vorzeichenbit, welches in Abhängigkeit von dem Vorzeichen des Differenzwerts c0 0 oder 1 ist. Wenn das c0 nicht kleiner als 14 oder nicht größer als –14 ist, wird der Differenzwert nicht verwendet, und wird der Wert von c0 nach dem ESC (Escape)-Code hinzugefügt.
  • Die Nr. #8 ist für das Lauflängen-Codierverfahren und wird nur dann verwendet, wenn es nur zwei Pixelwerte in dem Block gibt. Unter der Annahme, daß ein Pixel höherer Helligkeit Weiß repräsentiert und ein Pixel niedrigerer Helligkeit Schwarz repräsentiert, werden zum Beispiel die Pixel in dem Block in der in 5 gezeigten Reihenfolge abgetastet und in einen Lauflängencode umgewandelt, und dieser wird codiert. Für die Codierung werden vorbestimmte Weiß (hohe Helligkeit)-Lauf- und Schwarz (niedrige Helligkeit)-Lauf-Huffman-Tabellen verwendet, und wird der letzte Lauf in dem Block durch den EOB (End of Block)-Code ersetzt.
  • Bezugnehmend auf 1 wird nachstehend ein Prozeßablauf in dem vorliegenden Ausführungsbeispiel im Einzelnen erklärt.
  • In dem Schritt SO wird die bei dem Codieren des Blocks zu verwendende Referenz-Huffman-Tabelle festgelegt. Eine Huffman-Tabelle, die auf der Grundlage von statistischen Informationen über vorhergesagte Fehler erstellt wurde, welche durch eine für eine Vielzahl von Bildern bestimmte Vorhersage-Codierung oder durch ein anderes Verfahren erzeugt wurden, wird gelesen, und eine 16 × 16 Pixel-Vorhersagecodierungs-Huffman-Tabelle, eine 4 × 4 Pixel-Vorhersagecodierungs-Huffman-Tabelle und eine Ebenencodierungs-Huffman-Tabelle werden festgelegt.
  • Vier Zähler, die zu verwenden sind, wenn diese Huffman-Tabellen in dem Schritt S8 neu erstellt werden, d. h. ein 16 × 16 Pixel-Vorhersagecodierungszähler, ein 8 × 8 Pixel-Vorhersagecodierungszähler, ein 4 × 4 Pixel-Vorhersagecodierungszähler und ein Ebenencodierungszähler, werden alle auf Null initialisiert.
  • Eine Huffman-Tabelle zum Huffman-Codieren der das Codierverfahren (#1 bis #8) angebenden Informationen wird für jede Blockgröße erstellt, ein Codierzähler, der bei dem Neuerstellen der Huffman-Tabellen zu verwenden ist, wird bereitgestellt, und dieser wird ebenfalls auf Null initialisiert.
  • In dem Schritt S1 werden die zu codierenden Bilddaten in einen Codierspeicher eingelesen.
  • In dem Schritt S2 werden die Blockdaten (maximale Blockgröße 16 × 16 Pixel) sequentiell aus dem zu codierenden Bild gelesen. Die obere und die linke Zeile des gelesenen Blocks werden darüber hinaus als Referenzbereiche für die Vorhersagecodierung gelesen.
  • In dem Schritt S3 werden für den in Schritt S1 gelesenen Block maximaler Größe (16 × 16 Pixel) das Blockunterteilungsverfahren zum weiteren Unterteilen des Blocks in Unterblöcke (zu codierende Blöcke), die für die Codierung geeignet sind, und das Codierverfahren #0 bis #8), das für jeden der zu codierenden Blöcke geeignet ist, bestimmt, und die Pixelwerte in dem Maximalblock werden innerhalb einem Fehler von ±e ausgehend von den tatsächlichen Pixelwerten aktualisiert. Auf diese Art und Weise kann die Codierung mit einem kleinen Differenzwert (Vorhersagefehler) durchgeführt werden. Durch Aktualisieren des Pixelwerts innerhalb des Bereichs von ±e so, daß die Differenzwerte nur einige Werte haben, kann die Menge der Informationen über die Differenzwerte reduziert werden. Der Prozeß von Schritt S3 wird nachstehend im Einzelnen beschrieben.
  • Die Routine des Schritts S3 hat eine reversible Struktur und eine Gesamtmenge von Codes dann, wenn der Maximalblock oder ein kubischer Block, der durch mehrfaches Unterteilen des Maximalblocks abgeleitet wurde (und welcher als der zu verarbeitende Block bezeichnet wird, dessen Größe in Abhängigkeit von dem Ablauf des Prozesses unterschiedlich ist), unterteilt wird (in vier Blöcke), wird mit einer Menge von Codes dann, wenn eine solche Unterteilung nicht erfolgt, verglichen, um zu ermitteln, ob der Block zu unterteilen ist oder nicht (vgl. 6), und die Referenzinformationen, die die Blockunterteilungsinformationen und das Codierverfahren sowie die Menge von Codes dann, wenn der durch die Referenzinformationen ausgewählte Block codiert wird, beinhalten, werden ausgegeben.
  • 7 zeigt einen detaillierten Ablauf des iterativen Prozesses, der verwendet wird, wenn das Codierverfahren des Maximalblocks (des zu verarbeitenden Blocks) und das Unterteilungsverfahren in dem Schritt S3 ausgewählt sind.
  • In 7 bezeichnet S30 einen Schritt zum Ermitteln der Größe des zu verarbeitenden Blocks. Falls der zu verarbeitende Block die minimale Blockgröße (4 × 4 Pixel) ist, schreitet der Prozeß zu S33 fort, andernfalls schreite der Prozeß zu S20 und S23 fort.
  • S20 bezeichnet einen Schritt zum Kopieren des zu verarbeitenden Blocks, um einen Block A zu erzeugen. Der zu verarbeitende Block wird in den Block A in dem Speicherbereich für den iterativen Prozeß kopiert. S21 bezeichnet einen Schritt zum Auswählen des optimalen Codierverfahrens, um die Menge von Codes LA zu minimieren, wenn der Block A codiert wird. Einzelheiten des Auswahlverfahrens werden später beschrieben.
  • S22 bezeichnet einen Schritt zum Ausgeben der Menge von Codes LA, die erzeugt werden, wenn das in S21 ausgewählte Codierverfahren verwendet wird.
  • S23 bezeichnet einen Schritt zum Kopieren des zu verarbeitenden Blocks, um einen Block B zu erzeugen. S24 bezeichnet einen Schritt zum Unterteilen des Blocks B in vier Unterblöcke, und S25 bezeichnet einen Schritt zum Auswählen eines optimalen Codierverfahrens für jeden Unterblock, wie dies in dem Schritt S21 erfolgt.
  • S26 bezeichnet einen Schritt zum Ausgeben der Gesamtmenge von Codes, welche eine Summe von Mengen von Codes dann ist, wenn die vier Unterblöcke unter Verwendung der in dem Schritt S25 ausgewählten Codierverfahren codiert werden.
  • In Schritt S27 wird die in dem Schritt S22 ausgegebene Menge LA mit der in dem Schritt S29 ausgegebenen Menge LB verglichen, und falls LA < LB, schreitet der Prozeß zu S28 fort, und falls LA ≥ B, schreitet der Prozeß zu S29 fort.
  • S28 bezeichnet einen Schritt zum Ermitteln der Größe des zu verarbeitenden Blocks in dem Block A als die Größe des zu verarbeitenden Blocks, und der iterative Prozeß zum Ermitteln des Blockunterteilungsverfahrens für den Bereich des zu verarbeitenden Blocks wird beendet. In S28 des iterativen Prozesses wird der Block A, d. h. der zu codierende Block, auf die Pixelwerte eines noch zu beschreibenden virtuellen Blocks, der bei dem Auswählen des Codierverfahrens in dem Schritt S21 erzeugt wurde, (innerhalb des Fehlerbereichs ±e) aktualisiert. Der Prozeß schreitet zu S31 fort, um die Blockunterteilungsinformationen und das in dem Schritt S21 ausgewählte Codierverfahren sowie die Menge von Codes LA als die Referenzinformationen zu erzeugen.
  • S29 bezeichnet einen Schritt zum Kopieren des vier Unterblökke umfassenden Blocks B in den Bereich des zu verarbeitenden Blocks, der zu Beginn des iterativen Prozesses verwendet wurde. Die vier Unterblöcke werden durch die zu verarbeitenden Blöcke ersetzt, und der iterative Prozeß zum Ermitteln des Blockunterteilungsverfahrens wird von Beginn an wiederholt.
  • In S32 wird ein optimales Codierverfahren des zu verarbeitenden Blocks mit der minimalen Blockgröße ausgewählt. In S33 wird die Menge von Codes L ausgegeben. In S34 wird der zu verarbeitende Block durch die Pixelwerte des später zu erzeugenden bzw. zu beschreibenden virtuellen Blocks, welcher in dem Schritt S32 erzeugt wird, aktualisiert. In S35 werden das optimale Codierverfahren und die Menge von Codes L für den Block generiert.
  • Insoweit wurde der Ablauf des iterativen Prozesses beschrieben, der verwendet wird, wenn das Codierverfahren des Maximalblocks (oder des zu verarbeitenden Blocks) und das Blockunterteilungsverfahren in dem Schritt S3 ausgewählt werden.
  • Nachstehend wird die Auswahl des optimalen Codierverfahrens in den Schritten S21, S25 und S32 im Einzelnen erklärt.
  • Die 8A bis 8C zeigen einen Ablauf zum Auswählen des optimalen Codierverfahrens. Die Mengen von Codes aller auswählbaren Codierverfahren werden abgeschätzt, um die Auswahl des optimalen Codierverfahrens durchzuführen.
  • Vor der Abschätzung der Mengen von Codes werden die Blockdaten auf eine für jedes Verfahren geeignete Form aktualisiert. In 8A bezeichnet S40 einen Schritt zum Initialisieren der Menge von Codes Ln(0), die durch das Codierverfahren #0 generiert wird, bezeichnet S42 einen Schritt zum Ermitteln eines vorhergesagten Werts A + B – C, bezeichnet S42 einen Schritt zum Aktualisieren der Pixelwerte in dem Block innerhalb des Fehlerbereichs von ±e, bezeichnet S43 einen Schritt zum Hinzufügen eines Pixels der Huffman-Code-Länge für den Differenzwert zu Ln(0), und bezeichnet S44 einen Schritt zum Ermitteln eines Endpunkts des Blocks. Wenn die Menge von Co des bei dem Codieren des Blocks erzeugt ist, schreitet der Prozeß zu Schritt S61 fort.
  • Der vorstehende Prozeß wird als Modus 0 bezeichnet, und Modus 1 bis Modus 5 entsprechen dem Prozeß für die Codierverfahren #1 bis #5, welche zu dem vorstehenden Prozeß identisch sind.
  • S45 bezeichnet einen Schritt zum Initialisieren der Codierverfahren #6 und #7. Ein Flag (FLAG), das angibt, ob die näherungsweise Ebene und die Pixelwerte in dem Block vollständig übereinstimmen oder nicht, wird vorbereitet und anfänglich auf 1 gesetzt (vollständige Übereinstimmung). Der Parameter Ln(6), der eine Codelänge für #6 angibt, wird auf 0 gesetzt, und ein Parameter Ln(7), der eine Codelänge für #7 angibt, wird auf einen Wert gesetzt, der nicht das Minimum der Parameter Ln(0) bis Ln(8) ist. S46 bezeichnet einen Schritt zum Ermitteln, ob der gesamte Block auf denselben Pixelwert gerendert ist oder nicht, durch Ändern der Pixelwerte in dem Block innerhalb dem Fehlerbereich ±e, S47 bezeichnet einen Schritt zum Ermitteln der Blocknäherungsebene P(x, y) = ax + by + c0 der vorstehend beschriebenen Nr. #6, S48 bezeichnet einen Schritt für jedes Pixel zum Aktualisieren des Pixelwerts innerhalb dem Fehlerbereich ±e, um einen Pixelwert zum Bilden des virtuellen Blocks zu erzeugen, und S49 bezeichnet einen Schritt zum Hinzufügen der Huffman-Codelänge für den Differenzwert zwischen dem erzeugten Pixelwert und der näherungsweisen Ebene P(x, y) zu dem Parameter Ln(6). S50 bezeichnet einen Schritt zum Ermitteln, ob der Differenzwert (Vorhersagefehler) 0 ist oder nicht. Wenn es auch nur einen Pixelwert gibt, welcher sich von dem der näherungsweisen Ebene unterscheidet, wird das FLAG in S51 auf 0 gesetzt. In S52 wird der Endpunkt des Blocks ermittelt.
  • S53 bezeichnet einen Schritt zum Ermitteln des Werts von FLAG. Falls FLAG = 0, werden die Menge von Codes des Differenzwerts für jedes Pixel, erzeugt in S49, und die Mengen von Codes-Parameter a, b und c0 (c0'), die die näherungsweise Ebene P(x, y) angeben, hinzugefügt, um Ln(6) zu produzieren (S54), und der Prozeß schreitet zu S61 fort.
  • Falls FLAG = 1 (die näherungsweise Ebene und die Pixelwerte des Blocks stimmen vollständig überein), brauchen nur die Informationen über die näherungsweise Ebene codiert zu werden, und die Mengen von Codes der Parameter a, b, c0 (c0') werden durch Ln(6) ersetzt (S55), und der Prozeß schreitet zu Schritt S61 fort.
  • Wenn der Wert von Ln(6) ermittelt ist, wird Ln(7) auf einen Wert gesetzt, welcher nicht das Minimum von Ln(0) bis Ln(8) ist.
  • In S56 wird die Menge von Codes von c0 (c0') auf den Wert von Ln(7) gesetzt, und wird Ln(6) auf einen Wert festgelegt, der nicht das Minimum von Ln(0) bis Ln(8) ist. In S64 werden die Blockdaten innerhalb dem Bereich von ±e derart aktualisiert (um den virtuellen Block zu erzeugen), daß alle Pixelwerte in dem Block auf c0 gerendert werden, und der Prozeß schreitet zu S61 fort.
  • S57 bezeichnet einen Schritt zum Ermitteln, ob der Block durch zwei Pixelwerte repräsentiert wird oder nicht. Falls er durch zwei Pixelwerte repräsentiert wird, schreitet der Prozeß zu S58 fort, andernfalls wird Ln(8) auf einen Wert festgelegt, der nicht das Minimum von Ln(0) bis Ln(8) ist, und der Prozeß schreitet zu S61 fort.
  • S58 bezeichnet einen Schritt zum Umwandeln der Pixelwerte in eine Lauflänge. Die Menge von Codes Ln(8), die erzeugt wird, wenn eine Lauflänge codiert wird, wird ermittelt, und der Prozeß schreitet zu S61 fort.
  • S61 bezeichnet einen Schritt zum Vergleichen der Werte von Ln(0) bis Ln(8), um einen Minimalwert und das entsprechende optimale Codierverfahren auszuwählen. S62 bezeichnet einen Schritt zum Speichern des dem in S61 ausgewählten Codierverfahren entsprechenden virtuellen Blocks aus den durch Aktualisieren der Pixelwerte innerhalb dem Bereich von ±e in den jeweiligen Modi (Modus 0 bis Modus 8) erzeugten virtuellen Blocks, und S63 bezeichnet einen Schritt zum Ausgeben des optimalen Codierverfahrens und der Menge von Codes.
  • Der Prozeß vor dem Schritt S61 ermittelt die Mengen von Codes für die jeweiligen Verfahren. Dieser Prozeß wird ausgeführt, nachdem der zu verarbeitende Block (oder der Unterblock) in den separaten Speicherbereich kopiert ist. Demgemäß wirkt sich das Aktualisieren der Blockdaten dann, wenn das optimale Codierverfahren ausgewählt ist, auf den zu verarbeitenden Originalblock nicht aus.
  • Nachstehend werden die Schritte S40 bis S44 im Einzelnen erklärt. Die Schritte S40 bis S44 ermitteln die die durch die Nr. #0 erzeugte Menge von Codes Ln(0).
  • S41 bis S44 bezeichnen eine Schleife zum Rasterverarbeiten der Pixel in dem Block sequentiell von dem linken oberen Pixel ausgehend, und die verarbeiteten Pixel (die in S42 aktualisierten Pixel) werden durch den ursprünglichen Pixelwert als die Referenzpixel der betrachteten Pixel ersetzt. Wenn die Referenzpixel (A, B, C) außerhalb des Bereichs des in S2 gelesenen 16 × 16 Pixel-Blocks liegen, werden die Pixelwerte der in S6 vor dem Schleifenprozeß (S2 bis S7) aktualisierten Blockdaten des vorangehenden Maximalblocks verwendet.
  • In dem Schritt S40 wird Ln(0) auf 0 gesetzt. In dem Schritt S41 wird der vorhergesagte Wert P = A + B – C auf der Grundlage des betrachteten Pixelwerts X und der umgebenden Pixelwerte A, B und C erzeugt, und wird der Differenzwert D = X – P berechnet. In dem Schritt S42 wird ein korrigierter Differenzwert D' mittels einer Formel (1) ermittelt, und wird das betrachtete Pixel auf D' + P aktualisiert. In der Formel (1) repräsentiert ↓ × ↓ die Weglassung von Stellen nach dem Dezimalpunkt. D' = ↓(D + α)/(2e + 1)↓ × (2e + 1) ... (1) α = (D/|D|) × e ... (2)
  • 11 veranschaulicht einen korrigierten Differenzwert D', wenn e = 3 und der Differenzwert D = 4. Wie in 11 gezeigt ist werden, da die Anzahl der Differenzwerte D'(–7, 0, 7) kleiner ist als die Anzahl von Differenzwerten D(–10 bis 10), die die Differenzwerte anzeigenden Informationen signifikant reduziert. Ferner ist die Möglichkeit bzw. die Wahrschein- lichkeit der vollständigen Übereinstimmung der Differenzwerte und der vorhergesagten Werte hoch.
  • In dem vorliegenden Ausführungsbeispiel ist der zu korrigierende Pixelwert (der korrigierte Pixelwert) X' = X + 3. In dem Schritt S43 wird die Differenz zwischen dem aktualisieren korrigierten Pixelwert X' und dem vorhergesagten Wert P, d. h. der korrigierte Differenzwert D', mittels der Huffman-Tabelle für die Größe des zu verarbeitenden Blocks (oder des Unterblocks) Huffman-codiert, und wird die erzeugte Codelänge zu Ln(0) hinzugefügt. In dem Schritt S44 wird ermittelt, ob der Prozeß bis zu dem Endpunkt des Blocks abgeschlossen worden ist oder nicht; falls er abgeschlossen ist, schreitet der Prozeß zu Schritt S61 fort, und falls er nicht abgeschlossen ist, wird das nächste Pixel berücksichtigt und der in dem Schritt S41 beginnende Prozeß wiederholt. Auf diese Art und Weise wird die Menge von Codes Ln(0), die erzeugt wird, wenn das Codierverfahren Nr. #0 verwendet wird, ermittelt. Für die Codierverfahren Nr. #1 bis #5 sind nur die Vorhersageverfahren unterschiedlich, während die Verfahren zum Ermitteln der Menge von erzeugten Codes Ln(1 bis 5) dieselben sind wie dasjenige für die Nr. #0, so daß die detaillierte Beschreibung derselben weggelassen wird.
  • Nachstehend werden die Schritte S45 bis S56 und S64 im Einzelnen erklärt. S45 bezeichnet einen Schritt zum Initialisieren der Variablen für die Nr. #6 und #7. Die durch die Nr. #6 erzeugte Menge von Codes Ln(6) wird auf 0 gesetzt, und die durch die Nr. #7 erzeugte Menge von Codes wird auf einen ausreichend großen Wert festgelegt. Eine Variable FLAG, die verwendet wird, um zu ermitteln, ob in der Nr. #6 alle Differenzwerte 0 sind oder nicht, wird auf 1 gesetzt. In einem Schritt S46 werden ein Maximalwert (max) und ein Minimalwert (min) der Pixelwerte in dem Block ermittelt, und falls max–min kleiner ist als 2e + 1, verzweigt der Prozeß zu einem Prozeß für das Codierverfahren für die Nr. #7 (Schritte S56 und folgende), während andernfalls der Prozeß zu einem Prozeß für das Codierverfahren Nr. #6 verzweigt (Schritte S47 und folgende).
  • In einem Schritt S47 wird eine näherungsweise Ebene aus den Pixelwerten in dem Block ermittelt. Die Schritte S48 bis S52 verarbeiten die Pixelwerte in dem Block sequentiell. In einem Schritt S48 wird der Differenzwert D = X – P aus den betrachteten Pixelwerten X in dem Block und dem der Position des betrachteten Pixels auf der in dem Schritt S47 ermittelten näherungsweisen Ebene entsprechenden Wert P ermittelt, wird der korrigierte Differenzwert D' auf dieselbe Art und Weise wie derjenige in dem Schritt S42 berechnet, und wird das betrachtete Pixel auf D' + P aktualisiert. In einem Schritt S49 wird der Differenzwert zwischen dem aktualisierten korrigierten Pixelwert X' und dem vorhergesagten Wert P mittels der Huffman-Tabelle für die Ebenencodierung Huffman-codiert, und wird die Codelänge desselben zu Ln(6) hinzugefügt.
  • In einem Schritt S50 wird geprüft, ob der Differenzwert zwischen korrigierten Pixelwert X' und dem vorhergesagten Wert P 0 ist oder nicht, und falls er nicht 0 ist, wird FLAG in einem Schritt S51 auf 0 gesetzt. In einem Schritt S52 wird der Endpunkt des Blocks ermittelt, und falls dieser nicht der Endpunkt ist, wird der in Schritt S48 beginnende Prozeß für das nächste Pixel in dem Block fortgesetzt. S53 bezeichnet einen Schritt zum Ermitteln des Werts von FLAG. Falls dieser 0 ist, schreitet der Prozeß zu S54 fort, andernfalls schreitet der Prozeß zu S55 fort. In dem Schritt S54 wird die Menge von Codes von a, b und c0 plus einem Bit für FLAG zu Ln(6) hinzugefügt. In dem Schritt S55 wird die Menge von Codes von a, b und c0 plus einem Bit für FLAG durch einen neuen Parameter Ln(6) ersetzt.
  • Falls in dem Schritt S46 ermittelt wird, daß das Codierverfahren #7 verfügbar ist, wird in einem Schritt S56 ein Quotient von (max–min)/2 auf c0 festgelegt, und wird die Menge von Codes dann, wenn c0 codiert wird, für Ln(7) substituiert und wird ein ausreichend großer Wert für Ln(6) festgelegt.
  • In einem Schritt S64 werden alle Pixelwerte in dem Block aktualisiert. Durch diesen Prozeß werden die Mengen von Codes Ln(6) und Ln(7) dann, wenn die Codierverfahren #6 und #7 verwendet werden, bestimmt.
  • Nachstehend werden die Schritte S57 bis S60 im Einzelnen erklärt. S57 bezeichnet einen Schritt zum Ermitteln, ob das Codierverfahren #8 verfügbar ist oder nicht. Die Pixelwerte in dem Block werden untersucht, und falls zwei Pixelwerte erscheinen, schreitet der Prozeß zu S58 fort, während andernfalls der Prozeß zu S50 fortschreitet.
  • In S50 wird ein ausreichend großer Wert für Ln(8) festgelegt. In einem Schritt S58 wird der Block in der in 5 gezeigten Reihenfolge abgetastet, während ein höherer Helligkeitswert der beiden Pixelwerte des Blocks auf Weiß festgelegt wird und ein niedrigerer Pixelwert auf Schwarz festgelegt wird, um diesen in Weiß-und-Schwarz-Lauflängendaten umzuwandeln. In einem Schritt S59 werden die Menge von Codes zum Repräsentieren der beiden erscheinenden Pixelwerte und die Menge von Codes dann, wenn die Lauflängendaten unter Verwendung der exklusiv für die Nr. #8 erstellten Huffman-Tabelle Huffman-codiert ist, hinzugefügt, um die Menge von erzeugten Codes Ln(8) für die Nr. #8 zu bestimmen.
  • Auf diese Art und Weise werden die Mengen von erzeugten Codes Ln(0) bis Ln(8) für die Codierverfahren #0 bis #8 bestimmt, und in einem Schritt S61 wird eine minimale Menge von Codes, welche das Minimum der vorstehenden ist, ermittelt und wird eine Summe der minimalen Menge von Codes und der das Codierverfahren angebenden Menge von Codes als die Menge von Codes I des Blocks (eine der vier Mengen von Codes, die die Codemenge LA oder die Gesamtcodemenge LB in 7 oder die Codemenge L umfassen) gespeichert; darüber hinaus werden die die Nummer (i) des Codierverfahrens repräsentierenden Informationen ebenfalls gespeichert.
  • In einem Schritt S62 wird der bei Verwendung des Codierverfahrens #i erzeugte virtuelle Block gespeichert. Der virtuelle Block wird zum Ermitteln des in den Schritten S28 und S34 zu codierenden (Aktualisieren der ursprünglichen Bildwerte) Blocks verwendet und wird schließlich dazu verwendet, die Blockdaten in dem Schritt S6 zu aktualisieren.
  • In einem Schritt S63 werden die Nummer i und die Menge von Codes I ausgegeben, und der Prozeß zur Auswahl des optimalen Codierverfahrens (entsprechend S21, S25 und S32 von 7) wird beendet. Die Beschreibung der Auswahl des optimalen Codierverfahrens in den Schritten S21, S25 und S32 ist somit abgeschlossen.
  • Auf diese Art und Weise wurden die Blockunterteilungsinformationen und das optimale Codierverfahren in dem Schritt S3 ermittelt.
  • 9 zeigt ein Beispiel des Codierverfahrens für jeden der zu codierenden unterteilten Blöcke. Die auf 5 basierenden Referenzinformationen sind in 10 gezeigt. Dies vervollständigt die detaillierte Beschreibung des Schrittes S3.
  • In einem Schritt S4 werden die in S3 erzeugten Referenzinformationen in dem Speicher gespeichert.
  • In einem Schritt S5 werden für das Codierverfahren Nummer i, das für jeden der zu codierenden Blocks ausgewählt wurde, die Häufigkeiten des Auftretens der Codierverfahren #0 bis #8 durch Codiernummernzähler, von denen einer für jede Blockgröße bereitgestellt ist, gezählt, und falls es sich um eines der Nr. #0 bis #6 handelt, wird die Häufigkeit des Auftretens des korrigierten Differenzwerts D', wenn durch dieses Verfahren codiert wurde, zu dem dem Codierverfahren entsprechenden Zähler (dem Vorhersagecodierzähler für die Nr. #0 bis #5 und der Ebenencodierzähler für die Nr. #6) hinzugefügt bzw. addiert.
  • In einem Schritt S6 werden die Pixelwerte des in dem Schritt S2 gelesenen Blocks unter Verwendung der Daten des zu codierenden Blocks, welche in dem virtuellen Block in dem Schritt S3 (basierend auf S28 und S34) aktualisiert wurden, aktualisiert.
  • In dem Schritt S7 wird der Endpunkt des Bilds ermittelt, und falls es sich nicht um den Endpunkt des Bild handelt, wird der in Schritt S2 beginnende Prozeß in den nächsten Block weitergeführt, während dann, wenn es sich um den Endpunkt handelt, der Prozeß zu einem Schritt S8 fortschreitet.
  • Der Schleifenprozeß von S2 bis S7 ist der Prozeß zum Aktualisieren der Blockdaten (des virtuellen Blocks) für jeden Block, um die Bilddaten zu erzeugen. Wenn die Referenzpixel (A, B, C oder c0), die in dem Auswahlprozeß des Codierverfahrens in dem Schritt S3 verwendet wurden, außerhalb des Bereichs des in dem Schritt S2 gelesenen 16 × 16 Pixel-Blocks liegen, werden die Pixelwerte der Blockdaten verwendet, die in dem Schritt S6 vor der vorangehenden Schleife aktualisiert wurden.
  • In einem Schritt S8 werden basierend auf den Werten des 16 × 16 Pixel-Vorhersagecodierzählers der 8 × 8 Pixel-Vorhersagecodierzähler, der 4 × 4 Pixel-Vorhersagecodierzähler und der Ebenenvorhersagezähler, die 16 × 16 Pixel-Vorhersagecodierungs-Huffman-Tabelle, die 8 × 8 Pixel-Vorhersagecodierungs-Huffman-Tabelle, die 4 × 4 Pixel-Vorhersagecodierungs-Huffman-Tabelle und die Ebenencodierungs-Huffman-Tabelle rekonstruiert. Ferner wird die Häufigkeit des Auftretens der optimalen Codierverfahren #0 bis #8 durch die für die jeweiligen Blockgrößen bereitgestellten Codierverfahrennummernzähler gezählt, und wird die Huffman-Tabelle zum Codieren der Verfahrenzahlen in Übereinstimmung mit den Statistiken der Zählwerte rekonstruiert.
  • In einem Schritt S9 wird das Ende der Optimierungsverarbeitungsschleife (SO bis S8) ermittelt, und wenn eine vorbestimmte Anzahl von Schleifen abgeschlossen ist, schreitet der Prozeß zu dem Schritt S9 fort, während der Prozeß andernfalls zu Schritt SO fortschreitet. In diesem Fall sind der Schritt SO in der anfänglichen Optimierungsverarbeitungsschleife und der Schritt SO in dem zweiten und den nachfolgenden Optimierungsschritten verschieden. In dem Schritt SO der zweiten und der nachfolgenden Schleifen wird die in dem vorangehenden Schritt S8 vorbereitete optimale Huffman-Tabelle für die Referenz-Huffman-Tabelle substituiert.
  • In einem Schritt S10 werden die in dem Schritt S6 aktualisierten Bilddaten durch Bezugnehmen auf die gespeicherten Referenzinformationen tatsächlich codiert. 12 zeigt einen Ablauf des Codierprozesses in dem Schritt S10. In 12 bezeichnet S80 einen Schritt zum Codieren der Huffman-Tabelle, bezeichnet S81 einen Schritt zum Lesen von Blockdaten der maximalen Größe (16 × 16 Pixel) aus dem Bild, bezeichnet S82 einen Schritt zum Lesen der Referenzdaten entsprechend den Blockdaten, bezeichnet S83 einen Schritt zum Codieren der Blockdaten in Übereinstimmung mit den Referenzinformationen, und bezeichnet S84 einen Schritt zum Ermitteln des Endpunkts des Blocks. Eine detaillierte Beschreibung folgt.
  • In dem Schritt S80 werden für die 16 × 16 Pixel-Codiernummer-Huffman-Tabelle die 8 × 8 Pixel-Codiernummer-Huffmann-Tabelle, die 4 × 4 Pixel-Codiernummer-Huffman-Tabelle, die 16 × 16 Pixel-Vohersagecodierungs-Huffman-Tabelle, die 8 × 8 Pixel-Vorhersagecodierungs-Huffman-Tabelle, die 4 × 4 Pixel-Vorhersagecodierungs-Huffman-Tabelle, und die die Strukturen der jeweiligen Huffman-Tabellen angebenden Informationen als die Huffman-Tabellen-Informationen ausgegeben.
  • In dem Schritt S81 werden die Blockdaten mit der maximalen Blockgröße sequentiell aus den Bilddaten gelesen. In dem Schritt S82 werden die Referenzinformationen für die Blockdaten aus dem Speicher gelesen.
  • In dem Schritt S83 werden die Referenzinformationen und die durch Codieren der Blockdaten der maximalen Blockgröße in Übereinstimmung mit den Referenzinformationen abgeleiteten Daten als die codierte Datensequenz ausgegeben.
  • In dem Schritt S84 wird der Endpunkt des Bilds ermittelt, und falls ein nicht verarbeiteter Block vorhanden ist, wird der bei Schritt S81 beginnende Prozeß für den nächsten Prozeß durchgeführt.
  • Auf diese Art und Weise wird die codierte Datensequenz für die Bilddaten generiert und ausgegeben.
  • Dies vervollständigt die Beschreibung des ersten Ausführungsbeispiels.
  • [Modifikation des ersten Ausführungsbeispiels]
  • Die Erfindung ist nicht auf das vorstehende Ausführungsbeispiel beschränkt. Zum Beispiel kann, während der Block in dem vorstehenden Ausführungsbeispiel mit der maximalen Blockgröße von 16 × 16 Pixeln unterteilt ist, die Blockgröße auf 128 × 128 oder mehr Pixel festgelegt werden.
  • Ferner kann, während der Block in dem vorstehenden Ausführungsbeispiel in vier Unterblöcke gleicher Größe unterteilt ist, die Blockgröße variabel sein.
  • In dem ersten Ausführungsbeispiel wird der Block auf der Grundlage der Menge von Codes des zu verarbeitenden Blocks und der Menge von Codes der Unterblöcke, die durch Unterteilen des Blocks abgeleitet wurde, unterteilt, um den zu codierenden Block zu bestimmen. Alternativ kann die Menge von Codes aller Blöcke von dem Maximalblock (16 × 16 Pixel) bis zu dem Minimalblock (4 × 4 Pixel) bestimmt werden, und kann dann der Block auf der Grundlage der Menge aller Codes unterteilt werden.
  • Ferner kann die Menge von Codes des Minimalblocks zuerst bestimmt werden, wird dieser Block als der Unterblock betrachtet, werden ein temporäres Blockunterteilungsverfahren und die Menge von Codes auf der Grundlage der Gesamtmenge von Codes der vier Unterblöcke (4 × 4 Pixel) wie in 6 gezeigt sowie der Menge von Codes des Blocks (8 × 8) Pixel des kombinierten Bereichs bestimmt, wird ein neues temporäres Blockunterteilungsverfahren auf der Grundlage der Gesamtmenge von Codes der vier bestimmten Bereiche (8 × 8 Pixel) und der Menge von Codes eines den bestimmten Bereich (8 × 8 Pixel) umfassenden größeren Blocks (16 × 16 Pixel) bestimmt, und wird dieses wiederholt, bis die Maximalblockgröße erreicht ist, um den zu codierenden Block zu bestimmen.
  • Ferner kann, während in dem vorstehenden Ausführungsbeispiel das Vohersagecodierverfahren, das Ebenencodierverfahren und das Lauflängencodierverfahren als das wählbare Blockcodierverfahren verwendet werden, das Anwendungsverfahren durch Ändern des Vorhersageverfahrens geändert werden, oder kann ein anderes Codierverfahren, wie beispielsweise das Markoff-Modell-Codierverfahren verwendet werden. Während in dem vorstehenden Ausführungsbeispiel die Huffman-Codierung als das Entropiecodierverfahren verwendet wird, kann e in anderes En tropiecodierverfahren, wie beispielsweise ein arithmetisches Codierverfahren, verwendet werden.
  • In Schritt S6 brauchen die Blockdaten nicht aktualisiert zu werden, sondern es kann der Wert des Vorhersagefehlers (erzeugt in S3) dann, wenn das Bild anhand der aktualisierten Blockdaten codiert wird, gespeichert werden. In diesem Fall kann in Schritt S10 anstelle des Neucodierens unter Verwendung des aktualisierten Blockbereichs die Codierung unter Verwendung des Vorhersagefehlers (des korrigierten Differenzwerts), der in Schritt S3 bestimmt wird, erfolgen. Wenn jedoch die Differenzwerte für die jeweiligen Pixel gespeichert werden, sind die Schaltungskonfiguration und der Prozeß zum Erzeugen der Referenzpixelwerte komplex im Vergleich zu dem Prozeß, in welchem die Vorhersagecodierung durch Bezugnehmen auf die Pixelwerte (A, B und C) in S41 von 8 durchgeführt wird. Demgemäß wird in dem ersten Ausführungsbeispiel das Verfahren des Speicherns des korrigierten Pixelwerts anstelle des Verfahrens zum Speichern des korrigierten Differenzwerts verwendet.
  • 13 zeigt ein Beispiel der Vorrichtung zum Durchführen des Codierprozesses des ersten Ausführungsbeispiels. Das Bezugszeichen 1 bezeichnet eine CPU-Steuereinheit, welche das Codieren und Decodieren der Bilddaten durch Software-Verarbeitung durchführen kann, das Bezugszeichen 2 bezeichnet eine Bildeingabeeinheit zum Lesen der Bilddaten, das Bezugszeichen 3 bezeichnet eine Druckereinheit zum Drucken der Bilddaten, das Bezugszeichen 5 bezeichnet eine Kommunikationssteuereinheit zum Übertragen der durch die CPU-Steuereinheit 1 codierten Daten oder der von einem externen Gerät übertragenen codierten Daten, und das Bezugszeichen 6 bezeichnet einen Bildspeicher zum Speichern der Bildinformationen.
  • [Zweites Ausführungsbeispiel]
  • 14 zeigt ein Blockdiagramm eines zweiten Ausführungsbeispiels der Erfindung. In 14 bezeichnet das Bezugszeichen 100 eine Bildeingabeeinheit zum Erzeugen von Bilddaten, wie beispielsweise einen Bildleser, eine Fernsehkamera oder einen Host-Computer, bezeichnet das Bezugszeichen 101 eine Blocker zeugungsschaltung zum Blocken von Bilddaten für jedes Pixel, bezeichnet das Bezugszeichen 103 eine Ebenencodierschaltung, bezeichnet das Bezugszeichen 104 einen Puffer zum Einstellen des Zeitverhaltens, bezeichnet das Bezugszeichen 105 eine Unterblock-Erzeugungsschaltung zum Unterteilen des Blocks in der Blockerzeugungsschaltung in Unterblöcke, bezeichnen die Bezugszeichen 106, 107, 108 und 109 Vorhersage-Codierschaltungen zum Durchführen der Vorhersagecodierung in unterschiedlichen Verfahren, bezeichnet das Bezugszeichen 110 einen Wähler, bezeichnet das Bezugszeichen 111 eine Informationshinzufügeschaltung, bezeichnet das Bezugszeichen 112 einen Puffer zum Einstellen des Zeitverhaltens, bezeichnet das Bezugszeichen 113 einen Wähler, bezeichnet das Bezugszeichen 114 eine Informationshinzufügeschaltung, bezeichnen die Bezugszeichen 115, 116, 117 und 118 Signalleitungen, und bezeichnet das Bezugszeichen 119 eine Ausgabeeinheit zum Ausgeben der codierten Daten an einen externen Speicher und ein externes Gerät.
  • 15 zeigt Positionen von umgebenden Pixeln a, b und c, die von den Vorhersage-Codierschaltungen 106, 107, 108 und 109 verwendet werden. In 15 repräsentiert x ein betrachtetes Pixel, und werden a, b und c durch die zu x relativen Positionen definiert.
  • Zunächst werden die zu codierenden Bilddaten in dem Speicher 101 der Bildeingabeeinheit 100 gespeichert. Die Blockerzeugungsschaltung 102 liest sequentiell die Bilddaten pro 16 × 16 Pixel-Block und speichert diese. Wie in 3 gezeigt ist, werden auch die Daten der linken und oberen Pixel des 16 × 16 Pixel-Blocks gelesen, wie in 3 gezeigt ist, und gespeichert. Die Ebenencodierschaltung 103 berechnet eine Ebene αx + βy + γ (x, y = 0, ..., 15), welche den in der Blockerzeugungsschaltung 102 gespeicherten 16 × 16 Pixel-Block annähert und Huffman-codiert die Werte der Parameter α, β und γ sowie den Differenzwert zwischen der Näherungsebene und den Pixelwerten in dem Block, und speichert diese in dem Puffer 104. Einzelheiten der Ebenencodierschaltung werden später beschrieben.
  • Andererseits liest die Unterblock-Erzeugungsschaltung 105 sequentiell die 8 × 8 Pixel-Blöcke aus dem in der Blockerzeugungsschaltung 102 gespeicherten 16 × 16 Pixel-Block und speichert diese. Die Daten der linken und oberen Pixel des 8 × 8 Pixel-Blocks werden ebenfalls gelesen und gespeichert. Die Vorhersage-Codierschaltung 106 berechnet x – a für jedes Pixel in dem in der Unterblock-Erzeugungsschaltung 105 gespeicherten 8 × 8 Pixel-Unterblock und Huffman-codiert dieses. Auf ähnliche Art und Weise Huffman-codiert die Vorhersage-Codierschaltung 107 x – b, Huffman-codiert die Vorhersage-Codierschaltung 108 x – c, und Huffman-codiert die Vorhersage-Codierschaltung 109 x – a – b + c. Der Wähler 110 wählt die codierten Daten mit der kleinsten Menge von Codes der von den Vorhersage-Codierschaltungen 106, 107, 108 und 109 ausgegebenen codierten Daten, gibt die Codesequenz derselben auf die Signalleitung 116 aus, und gibt 2 Bit-Identifikationsdaten I auf die Signalleitung 115 aus, um die ausgewählte Vorhersage-Codierschaltung zu identifizieren. Die Informationshinzufügeschaltung 111 fügt die Identifikationsdaten I von der Signalleitung 115 zu dem Kopf der Codesequenz der Signalleitung 116 hinzu und speichert diese in dem Puffer 112. Dieser Prozeß wird für die vier Pixel-Unterblöcke durchgeführt, so daß ein Block von Codes der 16 × 16 Pixel in dem Puffer 112 gespeichert wird.
  • Der Wähler 113 vergleicht die Menge von Codes des Puffers 104 und des Puffers 112, wählt die kleinere aus und gibt diese auf die Signalleitung 118 aus. Er gibt darüber hinaus 1 Bit-Identifikationsdaten II zum Identifizieren des ausgewählten Puffers 104 oder 112 auf die Signalleitung 117 aus.
  • Die Informationshinzufügeschaltung 114 fügt die Identifikationsdaten II von der Signalleitung 117 zu dem Kopf der Codesequenz hinzu und gibt diese an die Ausgabeeinheit 119 aus.
  • Der vorstehende Prozeß wird wiederholt, bis der letzte in dem Speicher 101 gespeicherte Block erreicht ist, um den Code zu generieren.
  • 17 zeigt eine Konfiguration der Ebenencodierschaltung 103.
  • In 17 bezeichnet das Bezugszeichen 201 eine Ebenenberechnungsschaltung, bezeichnet das Bezugszeichen 202 eine Ebenendaten-Erzeugungsschaltung, bezeichnet das Bezugszeichen 203 einen Puffer, bezeichnet das Bezugszeichen 204 eine Differenzierungsschaltung, bezeichnet das Bezugszeichen 205 eine Parametercodierschaltung, bezeichnet das Bezugszeichen 206 eine Huffman-Codierschaltung, und bezeichnet das Bezugszeichen 207 einen Multiplexer.
  • In dem vorliegenden Ausführungsbeispiel sind die zu codierenden Bilddaten ein 8 Bit/Pixel-Farbtonbild.
  • Die Codierung wird blockweise durchgeführt. Die 16 × 16 Pixel-Blockdaten aus der Blockerzeugungsschaltung 201 werden über die Signalleitungen 208 und 209 an die Ebenenberechnungsschaltung 201 und den Puffer 203 gesendet.
  • Die Ebenenberechnungsschaltung 201 berechnet die Parameter a, b, cθ und m, die die Ebene in einer noch zu beschreibenden Art und Weise definieren, und sendet diese über 210, 211 und 212 an die Ebenenerzeugungsschaltung 202 und die Parametercodierschaltung 205. Die Ebenenerzeugungsschaltung 202 erzeugt die Ebenendaten in Übereinstimmung mit den empfangenen Parametern und gibt diese an 214 aus. Eine Differenz zwischen diesen und den Eingangsblockbilddaten von 213 wird durch die Differenzierungsschaltung 204 für jedes Pixel in dem Block berechnet, und der Ebenen-Vorhersagefehlerwert wird für jedes Pixel an die Huffman-Codierschaltung 206 gesendet. Die Huffman-Codierschaltung 206 allokiert den Huffman-Code in Übereinstimmung mit der eingebauten Huffman-Tabelle und gibt die Codedaten an 217 aus.
  • Andererseits wird der der Parametercodierschaltung 205 von der Signalleitung 211 zugeführte Parameter durch eine geeignete Anzahl von Bits codiert und von 216 an den Multiplexer 207 gesendet. Der Multiplexer 207 ordnet den von 216 gesendeten Parametercode und den von 217 gesendeten Differenzcode in einer vorbestimmten Sequenz neu an, um eine Reihe von Bitströmen zu erzeugen, welche an den Puffer 104 ausgegeben werden.
  • Nachstehend wird ein Betriebsablauf der Ebenenberechnungsschaltung 201 erklärt. Es wird angenommen, daß der Pixelwert des linken oberen Pixels der zugeführten N × N Pixel (N = 16 in dem vorliegenden Ausführungsbeispiel) cθ ist. Wenn der Pixelwert in der Pixelkoordinate (x, y) in dem Block dxy ist, werden die folgenden Statistiken erstellt:
    Figure 00260001
  • Unter Verwendung dieser Formeln werden a = (BD – 2AC)/(4A2 – B2) b = (BC – 2AD)/(4A2 – B2)berechnet und eine Ganzzahl m = min(⌈max(|a|, |b|)⌉, 16) ermittelt, worin | | einen Absolutwert angibt und ⌈ ⌉ ein Aufrunden angibt, max( ) ein Größeres angibt und min( ) ein Kleineres angibt. Folglich nimmt m 1 bis 16 an. Ferner werden a und b normalisiert und quantisiert, unter Verwendung von m. a = ⌊(a/m + 1)128⌋ b = ⌊(b/m + 1)128⌋worin ⌊ ⌋ eine Weglassung angibt.
  • Folglich werden a und b auf Werte von 0 bis 255 quantisiert.
  • Wenn das anfänglich berechnete m 16 ist, können a und/oder b einen Wert kleiner als 0 oder größer als 255 annehmen, so daß es bzw. sie abgeschnitten werden, um den Bereich von 0 bis 255 einzuhalten.
  • Nachdem a und b auf 8 Bit-Werte gerendert sind, wird 1 von m subtrahiert, so daß m auf einen 4 Bit-Wert von 0 bis 15 gerendert wird.
  • Das Ergebnis des vorstehenden Betriebsablaufs ist ein Parameter, welcher eine am besten passende Ebene auf der Grundlage eines kleinsten quadratischen Fehlers definiert, wenn die durch das linke obere Pixel des Blocks verlaufende Ebene durch Z = ax + by + Cθ gegeben ist und die Position des linken oberen Pixels (0, 0, Cθ) ist.
  • Wenn alle Parameter berechnet worden sind, gibt der Ebenenberechner 201 8 Bit-Werte für a, b und Cθ und einen 4 Bit-Wert für m aus.
  • Nachstehend wird ein Betriebsablauf der Ebenenerzeugungsschaltung 202 erklärt.
  • Die Ebenenerzeugungsschaltung 202 empfängt die vorstehend erklärten Ebenenparameter a, b, Cθ und m von 106, um den Vorhersageblock zu erzeugen. Das heißt, a' und b' werden durch a' = (m + 1)(a – 128)256 b' = (m + 1)(b – 128)256berechnet, und der Pixelwert dij der Koordinate (i, j) (worin i und j Ganzzahlen zwischen 0 und N-1 sind) wird durch dij = ⌊(Cθ + a' i + b' j + 0,5)⌋generiert.
  • Die auf diese Art und Weise erzeugten Blockdaten werden an 214 ausgegeben.
  • Während in dem vorstehenden Ausführungsbeispiel alle Pixel in dem Block codiert werden, (1) kann der Block in Unterblöcke unterteilt werden und kann der Code, der angibt, ob es sich um den zu codierenden Unterblock handelt oder nicht, für jeden Unterblock hinzugefügt werden, oder (2) kann eine einem 1 Bit-Block entsprechende Ebene bereitgestellt werden, um zu bestimmen, ob es sich um den zu codierenden Unterblock handelt oder nicht. Das in dieser Ergänzung kurz beschriebene Verfahren ist besonders wirkungsvoll für einen relativ komplexen Abschnitt in dem Bild.
  • In Übereinstimmung mit der vorstehend beschriebenen Ebenencodierung wird das Vorhersageverfahren, welches am wenigsten die Verringerung der Codiereffizienz verursacht, für den einfachen Helligkeitsgradientenabschnitt erhalten, welcher Rauschen trägt, welches einen großen Teil des tatsächlichen Bilds belegt, und wird gegenüber dem Stand der Technik die Codiereffizienz für das gesamte Bild signifikant verbessert.
  • [Modifikation des zweiten Ausführungsbeispiels]
  • Während in dem vorstehenden Ausführungsbeispiel die Huffman-Codierung zusammen mit der Ebenencodierung und der Vorhersagecodierung verwendet wird, kann ein anderes Entropiecodiersystem, wie beispielsweise eine arithmetische Codierung, verwendet werden. Die Ebenencodierung ist nicht auf das Ausführungsbeispiel beschränkt, in welchem α, β und γ der Näherungsebene αx + βy + γ als die die Ebene definierenden Informationen codiert werden, sondern es können beliebige Werte, welche die Ebene spezifizieren können, verwendet werden.
  • Die Bildcodiervorrichtung des zweiten Ausführungsbeispiels umfaßt eine Blockunterteilungseinrichtung zum Unterteilen der Bilddaten in Blöcke, eine Ebenencodiereinrichtung zum Bestimmen der Näherungsebene für jeden unterteilten Block und Codieren der die Näherungsebene spezifizierenden Informationen und des Differenzwerts zwischen der Näherungsebene und dem Block, eine Einrichtung zum Unterteilen des Blocks in Unterblöcke, eine Vorhersage-Codiereinrichtung zum Auswählen des optimalen Vorhersagesystems für jeden Unterblock und Codieren der das ausgewählte Vorhersagesystem spezifizierenden Informationen und des Fehlers durch das ausgewählte Vorhersagesystem, eine Einrichtung zum Auswählen einer der Ebenencodiereinrichtung und der Vorhersage-Codiereinrichtung für jeden Block, und eine Einrichtung zum Hinzufügen der Informationen zum Spezifizieren des ausgewählten Codiersystems. Demgemäß kann die Ebenencodierung für den Block mit der ebenen Natur und die Vorhersagecodierung für jeden Unterblock für einen anderen Block selektiv verwendet werden. Folglich kann die Menge von erzeugten Codes verringert werden.
  • Dadurch, daß die Blockgröße der Ebenencodierung größer als die Blockgröße der Vorhersagecodierung gemacht wird, wird eine effiziente Codierung durch Nutzen der Charakteristik der Ebenencodierung erreicht.
  • Durch Extrahieren der die Näherungsebene spezifizierenden Informationen als die Koeffizienten der Operationsformel wird die Effizienz der blockweisen Codierung erhöht.
  • Durch Umwandeln der Pixelwerte in dem Bild oder dem Block können die Bilddaten mit einer relativ hohen Effizienz codiert werden, während der Fehler der Pixelwerte unter Verwendung der relativ einfachen Schaltungskonfiguration und des relativ einfachen Prozesses gesteuert wird.
  • Ferner können die Mehrwertdaten mit der hohen Effizienz codiert werden, während der Fehler der Pixelwerte gesteuert wird.
  • Ferner kann, da die zu codierenden Bilddaten vor der Codierung innerhalb dem Bereich von ±e aktualisiert werden, die Codiereinheit das decodierte Bild überprüfen. In diesem Fall kann, falls dies nach S6 geschieht, das aktualisierte Bild gelesen und auf der Anzeige überwacht werden, um das decodierte Bild zu überprüfen.
  • Das Bild wird in Blöcke unterteilt, die Formel der Näherungsebene, welche den Block annähert, wird für jeden Block berechnet, und der Fehler aus der Näherungsebene wird codiert. Somit kann dann, wenn das von tatsächlichem Rauschen freie Originalbild durch die Ebene ausreichend angenähert wird, die Verteilung des auf den Vorhersagewert einwirkenden Rauschens auf denselben Grad wie derjenige des ursprünglich in dem Originalbild enthaltenen Rauschens gedrückt werden, und wird die Verringerung der Codiereffizienz verhindert.
  • Die Codierung unter Verwendung der Näherungsebene für jeden Block und die Codierung durch das aus der Vielzahl von Vorhersageverfahren ausgewählte Vorhersageverfahren werden so bereitgestellt, daß die hoch effiziente Codierung auch dann erzielt wird, wenn die Mehrwertdaten reversibel codiert werden.

Claims (7)

  1. Bildverarbeitungsverfahren zum Verarbeiten eines eine Vielzahl von Pixeln umfassenden Blockbilds, gekennzeichnet durch: einen Berechnungsschritt (S47) des Berechnens einer dreidimensionalen Ebenenfunktion P(x, y) basierend auf Koordinaten x und y jedes Pixels des Blockbilds und Werten der Vielzahl von Pixeln, wobei die dreidimensionale Ebenenfunktion P(x, y) durch P(x, y) = ax + by + crepräsentiert wird, worin a, b und c Parameter sind; einen Erzeugungsschritt (S48, S49) des Erzeugens einer Differenz zwischen einem durch die dreidimensionale Ebenenfunktion P(x, y) repräsentierten Pixelwert und dem Wert oder den Werten der Vielzahl von Pixeln; und einen Ausgabeschritt des Ausgebens der dreidimensionalen Ebenenfunktion P(x, y) und der erzeugten Differenz als endgültige codierte Daten.
  2. Verfahren nach Anspruch 1, bei dem das Blockbild durch N × N Pixel gebildet wird.
  3. Verfahren nach Anspruch 1, bei dem in dem Erzeugungsschritt die Differenz Huffman-codiert wird.
  4. Bildverarbeitungsvorrichtung zum Verarbeiten eines eine Vielzahl von Pixeln umfassenden Blockbilds, gekennzeichnet durch: eine Berechnungseinrichtung (103; 201) zum Berechnen einer dreidimensionalen Ebenenfunktion P(x, y) basierend auf Koordinaten x und y jedes Pixels des Blockbilds und Werten der Vielzahl von Pixeln, wobei die dreidimensionale Ebenenfunktion P(x, y) durch P(x, y) = ax + by + crepräsentiert wird, worin a, b und c Parameter sind; eine Erzeugungseinrichtung (105; 202, 204, 206) zum Erzeugen einer Differenz zwischen einem durch die dreidimensionale Ebenenfunktion repräsentierten Pixelwert und dem Wert oder den Werten der Vielzahl von Pixeln; und eine Ausgabeeinrichtung (207) zum Ausgeben der dreidimensionalen Ebenenfunktion und der erzeugten Differenz als endgültige codierte Daten.
  5. Vorrichtung nach Anspruch 4, bei der das Blockbild durch N × N Pixel gebildet wird.
  6. Vorrichtung nach Anspruch 4, bei der die Erzeugungseinrichtung (206) die Differenz Huffman-codiert.
  7. Computerprogramm mit Prozessor-implementierbaren Anweisungen, das dazu ausgelegt ist, alle Schritte des Verfahrens nach einem der Ansprüche 1 bis 3 durchzuführen.
DE69631999T 1995-06-22 1996-06-21 Bildverarbeitungsgerät und Verfahren Expired - Lifetime DE69631999T2 (de)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
JP15614795A JPH099266A (ja) 1995-06-22 1995-06-22 画像符号化装置及び方法
JP15614695A JP3689454B2 (ja) 1995-06-22 1995-06-22 画像符号化装置及び方法
JP15614695 1995-06-22
JP15614795 1995-06-22
JP7178708A JPH0937262A (ja) 1995-07-14 1995-07-14 画像処理装置及び方法
JP17870895 1995-07-14

Publications (2)

Publication Number Publication Date
DE69631999D1 DE69631999D1 (de) 2004-05-06
DE69631999T2 true DE69631999T2 (de) 2004-09-02

Family

ID=27320960

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69631999T Expired - Lifetime DE69631999T2 (de) 1995-06-22 1996-06-21 Bildverarbeitungsgerät und Verfahren

Country Status (3)

Country Link
US (1) US6061474A (de)
EP (1) EP0750428B1 (de)
DE (1) DE69631999T2 (de)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5767911A (en) 1994-12-20 1998-06-16 Matsushita Electric Industrial Co., Ltd. Object-based digital image predictive coding transfer method and apparatus, and decoding apparatus
JP3087835B2 (ja) * 1997-04-22 2000-09-11 富士ゼロックス株式会社 画像符号化方法および装置ならびに画像復号方法および装置
US6185325B1 (en) * 1997-07-02 2001-02-06 Fuji Photo Film Co., Ltd. Image transforming method and apparatus
US7050639B1 (en) * 1999-11-24 2006-05-23 General Electric Company Image data compression employing multiple compression code tables
US7085424B2 (en) 2000-06-06 2006-08-01 Kobushiki Kaisha Office Noa Method and system for compressing motion image information
TW515192B (en) 2000-06-06 2002-12-21 Noa Kk Off Compression method of motion picture image data and system there for
US6765964B1 (en) * 2000-12-06 2004-07-20 Realnetworks, Inc. System and method for intracoding video data
JP3857534B2 (ja) 2001-03-21 2006-12-13 株式会社リコー 画像圧縮処理装置
WO2004075556A1 (ja) * 2003-02-19 2004-09-02 Ishikawajima-Harima Heavy Industries Co., Ltd. 画像圧縮装置、画像圧縮方法、画像圧縮プログラム、及び圧縮符号化方法、圧縮符号化装置、圧縮符号化プログラム、並びに復合化方法、復合化装置、復合化プログラム
US6919825B2 (en) * 2003-09-25 2005-07-19 Peerless Systems Corporation Split runlength encoding method and apparatus
US7587086B2 (en) * 2004-06-04 2009-09-08 Microsoft Corporation Identifying selected pixels in a digital image
JP4501675B2 (ja) * 2004-12-22 2010-07-14 日本電気株式会社 動画像圧縮符号化方法と動画像圧縮符号化装置並びにプログラム
JP4533273B2 (ja) * 2005-08-09 2010-09-01 キヤノン株式会社 画像処理装置及び画像処理方法、プログラム
JP4781198B2 (ja) * 2006-08-08 2011-09-28 キヤノン株式会社 画像処理装置及び方法、並びに、コンピュータプログラム及びコンピュータ可読記憶媒体
JP4869149B2 (ja) * 2007-05-16 2012-02-08 オリンパスイメージング株式会社 画像データ圧縮装置、画像データ圧縮方法およびプログラム
US8396122B1 (en) * 2009-10-14 2013-03-12 Otoy, Inc. Video codec facilitating writing an output stream in parallel
KR101487687B1 (ko) * 2010-01-14 2015-01-29 삼성전자주식회사 큰 크기의 변환 단위를 이용한 영상 부호화, 복호화 방법 및 장치
JP2011166327A (ja) * 2010-02-05 2011-08-25 Sony Corp 画像処理装置および方法
JP2011166326A (ja) * 2010-02-05 2011-08-25 Sony Corp 画像処理装置および方法
US20110292247A1 (en) * 2010-05-27 2011-12-01 Sony Corporation Image compression method with random access capability
PT3373581T (pt) * 2010-12-21 2020-01-27 Ntt Docomo Inc Codificação com intra-predição melhorada utilizando representações planares
CA3128548C (en) 2011-06-24 2023-10-17 Mitsubishi Electric Corporation Intra prediction of a processing block using a predicted value which is proportional to the amount of change in the horizontal direction of the signal value of a pixel adjacent to the left of the processing block
EP2735154A1 (de) * 2011-07-22 2014-05-28 Motorola Mobility LLC Vorrichtung und verfahren zum scannen rechteckiger transformationen in einer videokodierung
WO2013096671A1 (en) 2011-12-20 2013-06-27 General Instrument Corporation Method and apparatus for efficient transform unit encoding
JP6021498B2 (ja) 2012-08-01 2016-11-09 任天堂株式会社 データ圧縮装置、データ圧縮プログラム、データ圧縮システム、データ圧縮方法、データ伸張装置、データ圧縮伸張システム、および圧縮データのデータ構造
CN107925771B (zh) * 2015-05-29 2022-01-11 深圳市大疆创新科技有限公司 视频处理的方法、***、存储介质和成像装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4369463A (en) * 1981-06-04 1983-01-18 International Business Machines Corporation Gray scale image data compression with code words a function of image history
JPS5937774A (ja) * 1982-08-26 1984-03-01 Nec Corp 画像信号の符号化方法および装置
DE3854846T2 (de) * 1987-06-25 1996-11-14 Nippon Electric Co Kodierung eines Bildsignals mit Berücksichtigung des Kontrasts in jedem Bild und Dekodierung analog zur Kodierung
DE3877105D1 (de) * 1987-09-30 1993-02-11 Siemens Ag, 8000 Muenchen, De
US5122873A (en) * 1987-10-05 1992-06-16 Intel Corporation Method and apparatus for selectively encoding and decoding a digital motion video signal at multiple resolution levels
US5020121A (en) * 1990-08-16 1991-05-28 Hewlett-Packard Company Neighborhood block prediction bit compression
DE69227217T2 (de) * 1991-07-15 1999-03-25 Canon Kk Bildkodierung
EP0547826A1 (de) * 1991-12-18 1993-06-23 Raytheon Company ADPCM-Komprimierer mit adaptiver Bit-Anzahl für Bilddaten

Also Published As

Publication number Publication date
DE69631999D1 (de) 2004-05-06
EP0750428A3 (de) 1998-01-21
EP0750428A2 (de) 1996-12-27
US6061474A (en) 2000-05-09
EP0750428B1 (de) 2004-03-31

Similar Documents

Publication Publication Date Title
DE69631999T2 (de) Bildverarbeitungsgerät und Verfahren
DE69020564T2 (de) Verfahren und vorrichtung zur behandlung von numerischen daten.
DE68927082T2 (de) Verfahren und Vorrichtung für die Bilddatenkomprimierung
DE69434862T2 (de) Segmentierungs-basiertes entfernen von artefakten aus einem jpeg-bild
DE3636675C2 (de)
DE69434018T2 (de) Bildkodierungsverfahren und -vorrichtung
DE3686754T2 (de) Bilddatenkodierverfahren.
DE69735679T2 (de) Verfahren zur Bilddecodierung
DE69116869T2 (de) Digitale bildkodierung mit einer zufallsabtastung der bilder
DE69829783T2 (de) Quantisierungsmatrix für die Codierung von Stand- und Bewegtbildern
DE69634962T2 (de) Extrapolation von Pixelwerten eines in einem Block enthaltenen Videoobjektes
DE3850627T2 (de) Vorrichtung zum Codieren von digitalen Videosignalen und eine entsprechende Decodiervorrichtung.
DE69736852T2 (de) Codierung- und Decodierungssystem für bewegte Bilder mit beliebig geformten Objekten
DE69936755T2 (de) Verfahren und Vorrichtung zur Analyse von Bilddaten um mehrere Umwandlungen für verbesserte Bilddatenübertragung durchzuführen
DE19739266B4 (de) Verfahren und Vorrichtung zum Kodieren binärer Formen
DE60211171T2 (de) Verarbeitung von einem komprimierten mediensignal
DE19623318C2 (de) Teilpixelcodierungs- und Decodierungsverfahren
DE3815586C2 (de) Kompressionsverfahren für Bildsignale
DE60015755T2 (de) Verlustfreie adaptive codierung von daten eines endlichen alphabets
DE3882980T2 (de) Bildkodierungssystem.
DE3688919T2 (de) Verfahren und Vorrichtung zur Bilddatenkompression.
EP1374559B1 (de) Verfahren zur komprimierung und dekomprimierung von bilddaten
DE19738917A1 (de) Apparat und Verfahren für bidirektionales Abtasten von Videokoeffizienten
DE69128054T2 (de) Bilddatenverarbeitungsverfahren und -gerät
DE3917362C2 (de) Verfahren zum Vermindern visueller Artefakte aufgrund von Kompression über eine Transformierte in medizinischen Bildern

Legal Events

Date Code Title Description
8364 No opposition during term of opposition