JPH0884260A - 2次元画像データの圧縮方式および伸長方式 - Google Patents

2次元画像データの圧縮方式および伸長方式

Info

Publication number
JPH0884260A
JPH0884260A JP6244741A JP24474194A JPH0884260A JP H0884260 A JPH0884260 A JP H0884260A JP 6244741 A JP6244741 A JP 6244741A JP 24474194 A JP24474194 A JP 24474194A JP H0884260 A JPH0884260 A JP H0884260A
Authority
JP
Japan
Prior art keywords
data
pixel
length
line
code
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.)
Pending
Application number
JP6244741A
Other languages
English (en)
Inventor
Yoshinori Narita
喜則 成田
Kazunori Matsuura
一教 松浦
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.)
Nippon Steel Corp
Original Assignee
Nippon Steel Corp
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
Application filed by Nippon Steel Corp filed Critical Nippon Steel Corp
Priority to JP6244741A priority Critical patent/JPH0884260A/ja
Priority to US08/526,663 priority patent/US5883975A/en
Publication of JPH0884260A publication Critical patent/JPH0884260A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Image Processing (AREA)

Abstract

(57)【要約】 【目的】 画像データのデータ圧縮率を高め且つ高速に
圧縮、伸長するデータ圧縮方式、伸長方式を提供する。 【構成】 直前ラインのデータを保持する辞書バッファ
6と、最大検出列長Nの範囲内で現ラインから圧縮対象
部分列を抽出するバッファ16と、辞書バッファ6から
圧縮対象部分列と同じデータ列を検出する比較器7と、
同じデータ列を検出した場合に、1ラインの画素数を
H、注目画素の現ライン上の位置をx、x=0のときは
T=0、1≦x≦H−NのときはT=1、H−N+1≦
x≦H−1のときはT=x−H+N+1とし、Tの各値
に応じたテーブルをテーブル群70の中から選択・参照
し、直前ライン上でのデータ列の位置と長さに応じたコ
ードを出力する符号生成器8を備える。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、2次元画像データにお
けるデータ圧縮方式及び伸長方式に関するものである。
【0002】
【従来の技術】従来の画像圧縮方式としては、非可逆性
のデータ圧縮方式と可逆性のデータ圧縮方式がある。前
者の例として挙げることのできる離散コサイン変換(DC
T )を用いたJPEGやMPEGなどの非可逆性のデータ圧縮方
式では、カラーコード(カラーパレットの呼び出し符
号)を使用した画像データを圧縮する場合に情報落ちが
生じるため使用することができない。後者の可逆性のデ
ータ圧縮方式の代表的な方式が、情報のランレングス
(run length)を用いてデータ圧縮を行う方式(ランレ
ングス圧縮)、頻繁に現れる情報を辞書に登録しデータ
圧縮を行う方式(辞書圧縮)である。後者の方式は、IE
EE Transactions on Information Theory IT-24 、pp.5
30〜536 に掲載されたZiv 及びLempelによる論文"Compr
ession of Individual Sequenes via Variable Rate Co
ding" に開示されている。
【0003】
【発明が解決しようとする課題】上記圧縮方式には、そ
れぞれ下記のような問題点がある。ランレングス圧縮
は、連続した同じ情報が多く含まれる画像データには効
果を発揮するが、そうでない画像データに対しては効果
が無く、圧縮の効果が全く現れない場合もある。
【0004】辞書圧縮は、辞書に対するヒット率が高い
画像データには効果を発揮するが、そうでない画像デー
タに対しては効果が無い。また、ヒット率は辞書を記憶
するための記憶容量に依存するため、高いヒット率を得
たいならば容量の大きな格納場所が必要となる。更に、
容量の大きな辞書を持つことで辞書参照回数が増大し、
圧縮速度が低下する。そこで、本発明は、上記圧縮方式
の問題点を補い、画像データのデータ圧縮率を高め情報
量を低減し且つ高速に圧縮することができるデータ圧縮
方式及びその圧縮されたデータを高速に伸長することが
できる伸長方式を提供することを目的とする。
【0005】
【課題を解決するための手段】上記目的を達成するため
に本発明のデータ圧縮方式では、順次スキャンされる2
次元画像データに対して直前ラインのデータを参照し、
現ラインに直前ラインと少なくとも1画素分以上同じ部
分データ列を検出した場合に圧縮処理を行う2次元画像
データの圧縮方式において、前記2次元画像データの1
ラインの画素数をH、前記部分データ列の最大検出列長
をN(1≦N≦H)、注目画素の現ライン上での先頭画
素からの位置をx(0≦x≦H−1)とすると共に、x
=0のときはT=0、1≦x≦H−NのときはT=1、
H−N+1≦x≦H−1のときはT=x−H+N+1、
とし、前記Tの各値毎に、直前ライン上での前記部分デ
ータ列の先頭画素と前記注目画素との相対位置と、前記
部分データ列の長さとに応じて異なるコードが割り当て
られたテーブルを用意し、現ラインに直前ラインと少な
くとも1画素分以上同じ部分データ列を検出した場合
に、前記注目画素の現ライン上での先頭画素からの位置
xに基づいて前記Tの値を求め、このTの値に基づき対
応する前記テーブルを選択し、直前ライン上での部分デ
ータ列の先頭位置と長さとに応じたコードを出力する。
【0006】また本発明のデータ伸長方式では、順次ス
キャンされる2次元画像データに対して直前ラインのデ
ータを参照し、現ラインに直前ラインと少なくとも1画
素分以上同じ部分データ列を検出した場合に、重複する
部分の圧縮データとして、前記2次元画像データの1ラ
インの画素数をH、前記部分データ列の最大検出列長を
N(1≦N≦H)、注目画素の現ライン上での先頭画素
からの位置をx(0≦x≦H−1)とすると共に、x=
0のときはT=0、1≦x≦H−NのときはT=1、H
−N+1≦x≦H−1のときはT=x−H+N+1と
し、前記Tの各値毎に、直前ライン上での前記部分デー
タ列の先頭画素と前記注目画素との相対位置と、長さと
に応じて異なるコードが割り当てられて順次入力される
2次元画像圧縮データの伸長方式であって、少なくとも
直前ラインの伸長されたデータをバッファに保持し、伸
長しようとする前記注目画素の現ライン上での位置xに
基づいて前記Tの値を求め、このTの値に基づき、前記
Tの各値毎に用意された、前記相対位置と前記長さとに
応じて異なるコードが割り当てられたテーブルから対応
するテーブルを選択し、入力された圧縮データから前記
コードを抽出し、このコードに基づいて選択されたテー
ブルを参照し、入力された現ラインのデータに対して、
前記バッファから前記部分データ列の先頭位置に対応す
るビットに続く前記部分データ列の長さ分のデータを抽
出し、伸長データとして出力する。
【0007】また、上記データ圧縮方式を実現するデー
タ圧縮装置は、順次入力される2次元画像データに対し
て1ライン前のデータを保持する参照メモリ手段と、入
力された現ラインの信号から、所定の長さの範囲内で連
続する複数のデータ列を抽出し圧縮対象部分データ列と
して記憶するバッファ手段と、前記参照メモリ手段に記
憶されたデータに、前記圧縮対象部分データ列の注目画
素に続く部分データ列と同じ部分データ列が存在するか
否かを検出する走査比較手段と、前記走査比較手段が同
じ部分データ列を検出した場合に、前記参照メモリ手段
に記憶された1ライン前のデータ上での前記部分データ
列の先頭画素と前記注目画素との相対位置と、前記部分
データ列の長さとを求め、前記2次元画像データの1ラ
インの画素数をH、前記部分データ列の最大検出列長を
N(1≦N≦H)、注目画素の現ライン上での先頭画素
からの位置をx(0≦x≦H−1)とすると共に、x=
0のときはT=0、1≦x≦H−NのときはT=1、H
−N+1≦x≦H−1のときはT=x−H+N+1、と
し、前記Tの値毎に用意された、前記相対位置と前記部
分データ列の長さとに応じて異なるコードが割り当てら
れたテーブルを参照し、対応するコードを現ラインのそ
の部分データ列の圧縮データとして出力する符号生成手
段と、を備える。
【0008】さらに、上記データ伸長方式を実現するデ
ータ伸長装置は、順次入力される2次元画像データに対
して直前データを参照し、現ラインに直前ラインと少な
くとも1画素分以上同じ部分データ列を検出した場合
に、重複する部分の圧縮データとして、前記2次元画像
データの1ラインの画素数をH、前記部分データ列の最
大検出列長をN(1≦N≦H)、注目画素の現ライン上
での先頭画素からの位置をx(0≦x≦H−1)とする
と共に、x=0のときはT=0、1≦x≦H−Nのとき
はT=1、H−N+1≦x≦H−1のときはT=x−H
+N+1とし、前記Tの各値毎に、直前ライン上での前
記部分データ列の先頭画素と前記注目画素との相対位置
と、長さとに応じて異なるコードが順次入力される2次
元画像圧縮データの伸長装置であって、1ライン前の伸
長されたデータを保持するバッファメモリ手段と、前記
Tの各値毎に用意された、前記コードに応じて直前ライ
ン上での前記部分データ列の先頭画素と前記注目画素と
の相対位置と、前記部分データ列の長さとが割り当てら
れた逆変換テーブルと、伸長しようとする圧縮データの
注目画素の現ライン上における先頭画素からの位置xに
基づいて前記Tの値を求め、このTの値に対応する前記
逆変換テーブルを選択し、入力されたデータから前記コ
ードを抽出し、前記コードに基づいて選択された前記逆
変換テーブルを参照し、前記逆変換テーブルから直前ラ
イン上での前記部分データ列の先頭位置と長さとのデー
タを取り出し、前記バッファメモリ手段から前記部分デ
ータ列の先頭位置に対応するビットに続く前記部分デー
タ列の長さ分のデータを抽出し、伸長データとして出力
する復号手段と、を備える。
【0009】
【作用】本発明の理解を容易にするため、本発明の原理
を図面を用いて説明する。本発明では画像データのある
画素は近傍の画素群に類似するという性質を利用し、順
次スキャンされる2次元画像データ(図1に示す)にお
いて、直前ラインのデータを参照データ(これを記憶す
るバッファを「辞書」1と言う事にする。)として保持
する。そして、直前ラインの辞書1を参照し、辞書1に
圧縮対象とするラインデータ上の部分列2と少なくとも
1画素分以上同じ部分列があるか否かを検出する。
【0010】辞書1に圧縮対象部分列2と一致する部分
列を検出した場合、予め設定された最大検出列長N(こ
こではN=8とする)の範囲内でできるだけ長く圧縮対
象部分列2と一致する部分列3を検出する。次に、2次
元画像データの1ラインの画素数をH、注目画素(圧縮
対象部分列の先頭画素)の現ライン上での位置をx(0
≦x≦H−1)とすると共に、x=0のときはT=0、
1≦x≦H−NのときはT=1、H−N+1≦x≦H−
1のときはT=x−H+N+1、とし、Tの値毎に用意
された、直前ライン上での部分列の先頭画素と注目画素
との相対位置と、直前ライン上での部分列の長さに応じ
て異なるコードが割り当てられたテーブルから、注目画
素5の現ライン上での先頭画素からの位置x(ここでは
x=0である)に基づいて求めたTの値(ここではT=
0である)に対応するテーブルを選択して参照する。そ
して、辞書1上の部分列3の先頭位置4と、部分列3の
長さ(ここでは5ドット)に応じたコードを出力するこ
とによりデータ圧縮を行う。この際、辞書1に対する参
照範囲は、圧縮対象部分列2と辞書1上の部分列との類
似度が高い範囲内に限定するのが望ましい。また、最大
検出列長Nは、圧縮・伸長速度を向上させるため、2次
元画像データにおいて隣接するライン上に存在する同じ
部分列が比較的長い場合は大きめに、また、短いときは
小さめに設定するのが望ましい。但し、Nを極端に大き
めに設定すると、テーブルの数が増加し、却って圧縮・
伸長速度が低下する。一方、Nを極端に小さめに設定す
ると、テーブルの数は減少するが、参照する部分列の長
さが短いので、圧縮率が低下する。尚、図1では1ライ
ンの画素数Hが16ドットの2次元画像データを示した
が、 最大検出列長N<1ラインの画素数H であれば、Tの採りうる値の範囲は1ラインの画素数H
の値にかかわらず一定である。すなわち、Tの採りうる
値は0≦T≦x−H+N+1であるが、注目画素の現ラ
イン上での位置xの採りうる最大値はH−1であるの
で、結局、0≦T≦Nとなる。したがって、2次元画像
データの1ラインの画素数Hを増加したときでも、テー
ブルの数は常にN+1(ここではN=8としたので、テ
ーブルの数は常に9)となる。
【0011】辞書1に圧縮対象部分列2と一致する部分
列を検出できなかった場合、圧縮対象部分列2にランレ
ングス圧縮などを適用する。尚、ランレングス圧縮を適
用する場合は、前述したTの各値毎に用意された、連続
する同一データの長さに応じて異なるコードが割り当て
られたランレングステーブルから、注目画素の現ライン
上での先頭画素からの位置xに基づいて求めたTの値に
対応するランレングステーブルを選択して参照し、対応
するコードを出力することによりデータ圧縮を行うのが
望ましい。この際、ランレングステーブルに記憶された
コードは、前述のテーブルに記憶されたコードと異なる
ものでなければならない。また、テーブル及びランレン
グステーブルに記憶されたコードは、固定長符号とはせ
ず生起確立の高いデータに短い符号を割当て圧縮率を上
げるために可変長符号とする事が望ましい。
【0012】本発明は、上記のように、辞書の容量は直
前ラインのみを格納すれば良いので非常に小さい。ま
た、類似度の高い範囲内で辞書を参照すると共に、最大
検出列長Nの範囲内でできるだけ長い部分列を参照する
ので、圧縮率が高く且つ圧縮及び伸長を高速に処理する
ことが可能である。さらに、用意するテーブルは2次元
画像データの1ラインの画素数にかかわらず常に最大検
出列長N+1個なので、2次元画像データの1ラインの
画素数を増加した際、テーブルの容量の増大に伴う処理
速度の低下を防止できる。また、画像データの1ライン
目や辞書参照が不可能な部分列にランレングス圧縮など
を適用することで、更に、高い圧縮率が得られる。
【0013】
【実施例】以下に、本発明の実施例を図2乃至図14に
したがって詳述する。図2は本発明のデータ圧縮回路の
構成例である。図3は本発明のデータ圧縮アルゴリズム
のフローチャートである。図2において、5はラインバ
ッファ、6は1ライン前のデータを保持する辞書バッフ
ァ、7は比較器、8は符号生成器、9は加算器、10は
ポインタ、11は相対位置カウンタ、12はポインタバ
ッファ、13は長さカウンタ、14は相対位置・長さバ
ッファ、15はセレクタ、16は部分列バッファ、70
は図6乃至図14に示すテーブルが用意されたテーブル
群、17はラインバッファへの入力信号線、18は辞書
バッファへの入力信号線、19は符号出力線を示す。図
6乃至図14に示すテーブルは、注目画素(圧縮対象部
分列の先頭画素をこう定義する)の現ライン上での先頭
画素からの位置に基づいて決定されるT(Tの値につい
ては後述する)の各値毎に用意されている。各テーブル
には、ラインバッファへの入力信号線17を通して順次
入力される2次元画像データにおいて、直前ライン上で
の圧縮対象部分列と同じ部分データ列の先頭画素と注目
画素との相対位置と、圧縮対象部分列の長さとに応じて
異なるコードが割り当てられ、記憶されている。
【0014】次に、図3のフローに基づいて上記のよう
に構成されたデータ圧縮回路の動作の概要を示す。先
ず、処理20で符号生成器8に2次元画像データの1ラ
インの画素数Hを入力する。次に、処理21でポインタ
10を初期化し、辞書バッファ入力信号線18を通して
ラインバッファ5から押し出されるデータを辞書バッフ
ァ6に格納した後、順次入力される2次元画像データを
ラインバッファ入力信号線17を通してラインバッファ
5へ格納する(処理22)。
【0015】次に、予め設定された最大検出列長N(1
≦N≦H)の範囲内で検索対象部分列(ラインバッファ
5に格納された現ラインのデータから選択された連続す
る画素のデータをこう定義する)にできるだけ長く一致
する辞書上の最長部分列の検索を行う(処理23)。
尚、最大検出列長Nは、圧縮・伸長速度を向上させるた
め、ラインバッファ入力信号線17を通して順次入力さ
れる2次元画像データにおいて、隣接するライン上に存
在する同じ部分列が比較的長い場合は大きめに、また、
短いときは小さめに設定するのが望ましい。但し、Nを
極端に大きめに設定すると、テーブルの数が増加し、却
って圧縮・伸長速度が低下する。一方、Nを極端に小さ
めに設定すると、テーブルの数は減少するが、参照する
部分列の長さが短くなるので、圧縮率が低下する。本実
施例では、N=8とした。この最長部分列の検索は図3
には処理23として1つのフローで示して有るが、以下
の手順で行われる。最長部分列の検索の概念を16×8
の画像データを示す図4を例として説明する。本実施例
では、検索対象部分列に対して1ライン前のラインにそ
の検索対象部分列と同じ部分列が存在するか否かを、検
索対象部分列の先頭画素位置から−1戻った位置(相対
位置−1と定義する)から+1進んだ位置(相対位置+
1と定義する)において、検索対象部分列の先頭画素と
同じ画素が存在するか否かを検索する事によって判定し
ている。そして、1ライン前に左右1画素分ずれた範囲
内に同じ画素列が存在する場合に処理23の圧縮が行わ
れる。
【0016】図4(a)で言えば、(1)相対位置−1
の例としては、3行1列目の「5」に続く部分列「55
4」がある。この部分列「554」は2行の0列目の
「5」に続く部分列「554」と同じデータ列であるの
で左に1画素ずれた位置に同一部分列が存在すると判定
される。(2)相対位置0の例としては、1行4列目の
「3」に続く部分列「34」がある。この部分列「3
4」は0行の4列目の「3」に続く部分列「34」と同
じデータ列であるので0画素ずれた位置に同一部分列が
存在すると判定される。(3)相対位置+1の例として
は、2行0列目の「5」に続く部分列「55434」が
ある。この部分列「55434」は1行1列目の「5」
に続く部分列「55434」と同じデータ列であるので
右に1画素ずれた位置に同一部分列が存在すると判定さ
れる。
【0017】処理23では先ず、ポインタ10のデータ
をポインタバッファ12に格納し、相対位置カウンタ1
1を初期化する。次に、ポインタ10の指すラインバッ
ファ5から1画素分のデータが部分列バッファ16に取
り込まれる。ラインバッファ5から部分列バッファ16
に取り込まれた現ラインの1画素のデータについて辞書
バッファに記憶された1ライン前の相対位置−1の画
素、相対位置0の画素、相対位置+1の画素について一
致する画素が有るか無いかを検索し、無い場合は、相対
位置・長さバッファ14にそれぞれの相対位置毎に長さ
「0」を書き込んで処理24に進む。図4(a)では1
行3列の「4」は、0行2列、0行3列は「2」であ
り、0行4列は「3」であるので、相対位置・長さバッ
ファ14にポイント(1、3)の長さデータとして相対
位置−1、0、+1ともに「0」が書き込まれる。一致
する画素が存在する場合は、ポインタ10と長さカウン
タ15をインクリメントし、隣の画素のデータを部分列
バッファ16に取り込む。このときポインタバッファ1
2には今回の検索で検索中の検索対象部分列の先頭番地
が残されている。
【0018】検索対象部分列の先頭画素が相対位置−1
に一致を発見した場合は、隣の画素については1ライン
前のデータの相対位置−1の画素のデータと部分列バッ
ファ16に取り込まれた画素との比較が行われ、相対位
置0に一致を発見した場合は、隣の画素については1ラ
イン前のデータの相対位置0の画素のデータと部分列バ
ッファ16に取り込まれた画素との比較が行われ、相対
位置+1に一致を発見した場合は、隣の画素については
1ライン前のデータの相対位置+1の画素のデータと部
分列バッファ16に取り込まれた画素との比較が行われ
る。上記それぞれの比較結果が一致を示す場合には、更
に隣の画素ポインタ10をインクリメントし、隣の画素
のデータを部分列バッファ16に取り込み、長さカウン
タ15をインクリメントし、上記それぞれの比較結果が
一致しなくなるか、または、長さカウンタ15のカウン
ト値が最大検出列長N(本実施例ではN=8)になるま
で繰り返す。これにより、比較結果が一致しなくなった
場合は、一致しなくなった時点で長さカウンタ15に計
数されている値が1ライン前のデータに同じデータ列を
持つ部分データ列の長さLとして計測され、また、長さ
カウンタ15のカウント値が最大検出列長Nになった場
合は、最大検出列長Nの値が1ライン前のデータに同じ
データ列を持つ部分データ列の長さLとして計測され
る。この長さ情報は相対位置−1、相対位置0、相対位
置+1のそれぞれについて計数される。即ち、相対位置
−1について上記のようにして長さLを計数した後、そ
の長さLを相対位置−1についての長さ情報として相対
位置・長さバッファ14の相対位置−1の欄に記憶す
る。次に、相対位置0についての検索を行う為、ポイン
タバッファ12に一時保存しておいた検索対象部分列の
先頭番地を画素ポインタ10に戻し、相対位置カウンタ
11をインクリメントし、検索対象部分列の先頭番地の
右隣のデータについて同様に相対位置0のデータが一致
しなくなるか、または、長さカウンタ15のカウント値
が最大検出列長Nになるまでポインタ10をインクリメ
ントしながら比較を行い、長さ情報Lを求める。続いて
相対位置+1について同様の検索を行う。
【0019】図4(a)の2行0列の「5」を先頭画素
とする部分列を考えると、この画素はライン先頭なので
前のラインの相対位置−1にデータが存在しない。した
がって相対位置−1については、長さLは0となる。相
対位置0については、1行0列に「5」が存在するの
で、長さカウンタ13をインクリメントして2行0列の
「5」に隣接する2行1列のデータ「5」が部分列バッ
ファ16に取り込まれ1行1列の「5」と比較される。
これも一致するので、長さカウンタ13をインクリメン
トするとともに2行1列の「5」に隣接する2行2列の
データ「4」が部分列バッファ16に取り込まれ1行2
列の「5」と比較される。これは一致しない。このとき
の長さカウンタ13の値は「2」であり、最大部分列長
N=8に達していない。したがって、2行0列の「5」
を先頭画素とする部分列の相対位置0についての長さL
は2となる。
【0020】2行0列の「5」を先頭画素とする部分列
については、1行1列に「5」が存在し先頭画素と一致
するので相対位置+1についても隣接画素の比較を行
う。2行0列の「5」の隣接する2行1列のデータ
「5」が部分列バッファ16に取り込まれ、相対位置+
1の1行2列の「5」と比較される。一致するので順次
右側の画素を取り込み比較を続けると、2行5列の
「3」と1行6列の「1」の比較を行った時に不一致に
なる。このときの長さカウンタ13の値は「5」であ
り、最大部分列長N=8に達していない。したがって、
2行0列の「5」を先頭画素とする部分列の相対位置1
についての長さLは5となる。
【0021】以上により、2行0列の「5」を先頭画素
とする部分列の長さLとしては、L(相対位置−1)=
0,L(相対位置0)=2,L(相対位置+1)=5の
3つが相対位置・長さバッファ14に記憶されることに
なる。この中で最長の5を長さLとする部分列を選択す
る。図4(a)の場合、同図(b)に示すように部分列
a(55)は相対位置0の同一部分列を示し、部分列b
(55434)は相対位置+1の同一部分列を示す。部
分列aは長さ2、部分列bは長さ5であるので圧縮効率
の高い部分列bを選択する。
【0022】すなわち、処理24を介して処理25に移
行し、ポインタバッファ12の中に格納されている注目
画素の現ライン上での位置をx、相対位置・長さバッフ
ァ14の中に格納されているデータの中で最長データの
長さをy、最長データの相対位置に2を加えた値をzと
し、このx、y、zを符号生成器8に入力する。
【0023】処理28では、符号生成器8は注目画素の
現ライン上での位置xからTの値を求める。Tの値は、
x=0のときはT=0、1≦x≦H−NのときはT=
1、H−N+1≦x≦H−1のときはT=x−H+N+
1である。ここで、Hは処理20で符号生成器8に入力
された2次元画像データの1ラインの画素数、Nは予め
設定された最大検出列長である。前述したように、本実
施例ではH=16であり、また、予めN=8に設定した
ので、Tの値は、x=0のときはT=0(処理29)、
1≦x≦8のときはT=1(処理30)、9≦x≦15
のときはT=x−7(処理31)となる。
【0024】処理32では、符号生成器8は、注目画素
の現ライン上での位置xから求めたTの値に基づき、テ
ーブル群70の中から対応したテーブルを選択して参照
し、データの長さyとそれに対する相対位置に2を加え
た値zに応じたコードを、符号出力線19を通して出力
する。
【0025】また、処理24で、相対位置・長さバッフ
ァ14に格納されている長さが全て0の場合、つまり辞
書の中に一致する部分列が見つからなかった場合は、処
理24を介して処理26に移行し、ランレングス圧縮を
行う。すなわち、現ライン上に同一画素が前述した最大
検出列長N(本実施例ではN=8)の範囲内でできるだ
け長く連続する部分列を検索する。先ず、ポインタ10
の指すラインバッファ5のデータを部分列バッファ16
に格納し、ポインタ10を1つ進め、ラインバッファ5
のデータをセレクタ15を通して、比較器7に入力し、
部分列バッファ16のデータと比較する。比較の結果一
致するならば、長さカウンタ13をインクリメントし、
次のポインタ10の指すデータをセレクタ15を通して
比較器7に入力し部分列バッファ16のデータと比較す
る。そして、比較の結果が一致しなくなるか、または、
長さカウンタ15のカウント値が最大検出列長Nになる
までポインタ10を1つずつ進め部分列バッファ16の
データとの比較を繰り返す。これにより、比較結果が一
致しなくなった場合は、一致しなくなった時点で長さカ
ウンタ15に計数されている値が現ライン上の同一画素
が連続した部分データ列の長さLとして計測され、ま
た、長さカウンタ15のカウント値が最大検出列長Nに
なった場合は、最大検出列長Nの値が現ライン上の同一
画素が連続した部分データ列の長さLとして計測され
る。
【0026】次に、処理27で、ポインタバッファ12
の中に格納されている注目画素の現ライン上での位置を
x、長さカウンタ13に計数されている同一画素が連続
した部分データ列の長さをy、zを0とし、このx、
y、zの値と共に、部分列バッファ16に格納されてい
るデータを符号生成器8に入力する。
【0027】次に、注目画素の現ライン上での位置xか
ら求めたTの値に基づき、テーブル群70の中から対応
するテーブルを選択して参照し、データの長さyとz=
0とに応じたコードと、その繰り返すべき生データを、
符号出力線19を通して出力する(処理32)。
【0028】処理33及び処理34を介して上記操作を
2次元画像データの最終ラインまで繰り返し、データ圧
縮を行い符号化する。
【0029】次に、図4に示す16×8の画像データの
データ圧縮過程を説明する。各データは4ビットで表現
されるものとする。以下では、便宜的に、画像データの
座標を(列,行)、符号化されたコードを、{T,相対
位置,長さ}あるいは[T,データの種類,長さ]で表
すことにする。即ち、中括弧{ }で囲まれている部分
は本発明による圧縮がおこなわれている部分であり、鍵
括弧[ ]で囲まれている部分はランレングス圧縮が行
われている部分を示す。ここで、Tは処理28で注目画
素の現ライン上での位置xから求めた値である。すなわ
ち、本実施例では、注目画素が0列に位置する場合はT
=0、1列〜8列に位置する場合はT=1、9列に位置
する場合はT=2,A列に位置する場合はT=3,B列
に位置する場合はT=4,C列に位置する場合はT=
5,D列に位置する場合はT=6,E列に位置する場合
はT=7,F列に位置する場合はT=8となる。
【0030】たとえば、注目画素の列が0、相対位置が
1、長さが3の符号コードは{0,1,3}、注目画素
の列が1、データの種類が5、長さが2の符号コードは
[1,5,2]となる。また、注目画素の座標を(x, y)
とすると、辞書参照範囲を相対位置で(x-1, y-1)、(x,
y-1)、(x+1, y-1)とする。先ず、図4(a)の場合、0
行目は参照する辞書が存在しないのでランレングス圧縮
を行う。画像データ(0,0)から(3,0)のデータ
は2で同じなので、符号は[0,2,4]となる。
(4,0)の3は1つだけなので符号は[1,3,1]
となる。(5,0)から(7,0)のデータは4で同じ
なので符号は[1,4,3]となる。(8,0)の6は
1つだけなので符号は[1,6,1]となる。(9,
0)及び(A,0)のデータはCで同じなので符号は
[2,C,2]となる。(B,0)及び(C,0)のデ
ータは6で同じなので符号は[4,6,2]となる。
(D,0)から(F,0)のデータは3で同じなので符
号は[6,3,3]となる。したがって、0行目の符号
は、図5の0行目に示すように、[0,2,4][1,
3,1][1,4,3][1,6,1][2,C,2]
[4,6,2][6,3,3]となる。
【0031】図4(a)の1行目の処理は、0行目を辞
書として扱う。(0,1)と(0,0)を比較し一致し
ないので、次に(0,1)と(1,0)と比較し、これ
も一致しないので、辞書には一致する部分列がないと判
断し、ランレングス圧縮を適用する。(0,1)から
(2,1) のデータは5で同じであるので符号は[0,
5,3]となる。(3,1)の4は(2,0)、(3,
0)、(4,0)のいずれとも一致しないので、ランレ
ングス圧縮を適用し、符号は[1,4,1]となる。
(4,1)の3は(3,0)、(4,0)、(5,0)
の中の(4,0)と一致し、(4,1)から(5,1)
と辞書の(4,0)から(5,0)が一致するので、符
号は{1,0,2}となる。(6,1)と(7,1)は
それぞれ辞書のデータと一致しないので符号は、それぞ
れ[1,1,1]、[1,3,1]となる。(8,1)
のCは(7,0)、(8,0)、(9,0)の中の
(9,0)と一致し、(8,1)から(9,1)と辞書
の(9,0)から(A,0)が一致するので、符号は
{1,1,2}となる。(A,1)のCは(9,0)、
(A,0)、(B,0)の中の(9,0)及び(A,
0)と一致する。ここで、(B,1)と(A,0)は一
致しないが、(A,1)から(C,1)と辞書の(A,
0)から(C,0)は一致するので、符号は{3,0,
3}となる。(D,1)の6は(C,0)、(D,
0)、(E,0)の中の(C,0)と一致し、(D,
1)から(F,1)と辞書の(C,0)から(E,0)
は一致するので、符号は{6,−1,3}となる。した
がって、1行目の符号は、図5の1行目に示すように、
[0,5,3][3,4,1]{4,0,2}[6,
1,1][7,3,1]となる。
【0032】図4(a)の2行目の処理は、1行目を辞
書として扱う。(0,2)は相対位置0の辞書(0,
1)と相対位置1の辞書(1,1)と一致するが、相対
位置0の場合は一致する辞書の部分列の長さが(0,
1)から(1,1)と2であるが、相対位置1の場合は
一致する辞書の部分列の長さが(1,1)から(5,
1)と5であり、相対位置1の辞書の部分列の方が長い
ので、符号は{0,1,5}となり、上記の処理を最終
行まで繰り返すと図4の画像データに対して図5の符号
列が得られる。
【0033】次に、図5の符号列を図6乃至図14に示
すテーブルを用いて実際のコードに割り当ててみる。図
6乃至図14は、Tの値毎に用意された、yの値及びz
の値に応じて異なるコードが割り当てられたテーブルを
示す。ここで、Tは処理28で注目画素の現ライン上で
の位置xから求めた値、y及びzは処理25又は処理2
7で符号生成器8に入力された値であり、yは圧縮対象
部分列の長さ、zは、符号列が鍵括弧[ ]で囲まれて
いる場合、すなわちランレングス圧縮の場合は0、符号
列が中括弧{ }で囲まれている場合、すなわち本発明
による辞書圧縮の場合は、相対位置に2を加えた値であ
る。
【0034】各テーブルに記憶されたコードは、生起確
立の高いデータに短い符号を割当てて圧縮率を上げるた
め、固定長符号とはせずに可変長符号としている。尚、
テーブルをTの値毎に用意したのは以下の理由による。
原理的には用意するテーブルは1つでもよい。しかし、
テーブルを1つにまとめると、y及びzが採りうる全て
の値に応じて異なる符号を割り当てなければならない。
ところで、y及びzが採りうる値は、注目画素の現ライ
ン上での先頭画素からの位置xによって異なる。たとえ
ば、各テーブルにおけるyの最大値は、注目画素から現
ラインの最終端に位置する画素までのビット列長とな
る。また、x=0ではz=1(相対位置が−1の場合)
に符号を割り当てる必要はない。したがって、テーブル
を1つにまとめると、符号の冗長性が大きくなる。一
方、注目画素の現ライン上での先頭画素からの位置x毎
にテーブルを用意した場合、各テーブルにおけるyの最
大値を、注目画素から現ラインの最終端に位置する画素
までのビット列長に制限することにより、符号の冗長性
を改善することができる。しかし、2次元画像データの
1ラインの画素数Hを増やした場合、新たにテーブルを
追加しなければならず、テーブルの容量が増大し、この
ため、圧縮・伸長速度が低下する。そこで、本実施例で
は、予め圧縮対象部分列の最大検出列長Nを設定した。
そして、x=0ではz=1に符号を割り当てる必要がな
いので専用のテーブルを用意し、1≦x≦H−Nではy
の採りうる最大値は全てNとなり、また、zの採りうる
値は全て0〜3となるのでまとめて1つのテーブルを用
意し、H−N+1≦x≦H−1ではzの採りうる値は全
て0〜3であるが、yの採りうる最大値は注目画素から
現ラインの最終端に位置する画素までのビット列長とな
るので、xの各値毎に専用のテーブルを用意した。すな
わち、x=0のときはT=0、1≦x≦H−Nのときは
T=1、H−N+1≦x≦H−1のときはT=x−H+
N+1、とし、Tの各値毎にテーブルを用意した。この
ようにTの値を設定することにより、Tの採りうる値の
範囲は、 最大検出列長N<1ラインの画素数H であれば1ラインの画素数Hの値にかかわらず一定とな
る。すなわち、Tの採りうる値は0≦T≦x−H+N+
1であるが、注目画素の現ライン上での位置xの採りう
る最大値はH−1であるので、結局、0≦T≦Nとな
る。したがって、2次元画像データの1ラインの画素数
Hを増加したときでも、テーブルの数は常にN+1とな
るので、テーブルの容量が増大して、圧縮・伸長速度が
低下するのを防止することができる。
【0035】また、本実施例では、画像データの圧縮を
対象としているので、辞書圧縮の場合において、注目画
素のあるラインの直前ラインであって注目画素に隣接す
るデータ(相対位置が−1,0,+1のデータ)のみに
ついて辞書圧縮を行うことにより、テーブルのサイズを
小さくしている。これにより、高い圧縮率を期待でき
る。テーブル群70に用意されているテーブルは、予め
圧縮伸長するデータに合わせて構成されたハフマン符号
のテーブル、あるいは、圧縮伸長に伴い、冗長性が少な
くなるように最適化されていくテーブルであることが望
ましい。尚、図6乃至図14において、ハイフン「─」
で示すものは可変長符号が割り当てられていないことを
示す。
【0036】先ず、Tの値に基づき、図6乃至図14に
示すテーブルの中からいずれかのテーブルを選択する。
たとえば、[0,2,4]を符号化する場合は図6に示
すT=0のテーブルを選択し、{1,−1,1}を符号
化する場合は図7に示すT=1のテーブルを選択する。
次に、選択したテーブルの中からy及びzの値に応じた
コードを選択する。たとえば、[0,2,4]を符号化
する場合は図6に示すT=0のテーブルからy=4、z
=0に応じたコード0110110111を選択し、{1,−1,
1}を符号化する場合は図7に示すT=1のテーブルか
らy=1、z=1に応じたコード0111を選択する。尚、
z=0の場合、すなわちランレングス圧縮が行われてい
る場合は、テーブルから選択されたコードの後に繰り返
すべき生データ(本実施例では4ビット固定のカラーコ
ード情報である。画像によっては各色毎の輝度データの
場合もあり得る。)が加えられる。たとえば、[0,
2,4]を符号化する場合は図6に示すT=0のテーブ
ルから選択されたy=4、z=0に応じたコード011011
0111の後に、0010が加えられる。したがって、[0,
2,4]のコードは01101101110010となる。
【0037】図5の符号列を実際の符号に変換した結果
が図15になり、図4の画像データの容量が512ビッ
トであるのに対し、図15のデータ容量は、404ビッ
トであり、本発明のアルゴリズムを用いてもとの画像デ
ータの78.9%に圧縮できたことになる。
【0038】次に、図16乃至図18を用いて上記の手
法で圧縮した符号を伸長する手順を示す。図16は伸長
回路の構成例、図17及び図18はデータ伸長アルゴリ
ズムのフローチャートである。図16において、29は
入力バッファ、30はデコーダ、32はモードレジス
タ、33はデータレジスタ、34は相対位置レジスタ、
35は辞書アドレス計算部、36はセレクタ、37は長
さカウンタ、38は伸長するデータの2次元空間上の位
置を特定するX,Yカウンタ、39は辞書コピーの際に
参照すべきデータが記憶された辞書バッファ、71はT
の各値毎に用意されたテーブル群、43は入力バッファ
29への入力信号線、44は出力信号線を示す。尚、テ
ーブル群71におけるTの値は、X,Yカウンタ38に
よって特定される注目画素(伸長しようとしている部分
列の先頭画素)のX座標上の位置をxとしたときに、図
3に示すフローの処理28と同じ手法によって求められ
る。各テーブルには、注目画素のX座標上の位置xに基
づいて求めたTの各値毎に、図6乃至図14に示すテー
ブルと同じ情報が記憶されている。また、X,Yカウン
タ38が採りうるY座標上の値に制限はないが、X座標
上の値は伸長しようとする2次元画像データの1ライン
の画素数をHとした場合、0〜H−1に制限される。本
実施例では、2次元画像データの1ラインの画素数Hを
16としたので、X,Yカウンタ38が採りうるX座標
上の値は0〜15となる。
【0039】次に、上記のように構成された伸長回路の
動作の概要を示す。先ず、処理44で伸長しようとする
2次元画像データの1ラインの画素数HをX,Yカウン
タ38及びデコーダ30に入力する。次に、処理45で
X,Yカウンタ38を初期化した後、入力信号線43を
通して、入力バッファ29に圧縮されたデータを取り込
む(処理46)。尚、2回目以降の伸長処理において
は、入力バッファ29に貯えられたデータのうち未処理
のビット列の後に圧縮されたデータが取り込まれる。入
力バッファ29は、FIFO、シフトレジスタ等で構成
される。処理47では、入力バッファ29に貯えられた
ビット列長が15ビット以上であるか否かを判断する。
これは、入力バッファ29からデコーダ11に渡される
ビット列長が、データ圧縮回路で圧縮されたデータの最
長ビット列長以上でなければならないからである。本実
施例による圧縮方式では、ランレングス圧縮を行った場
合において、図6乃至図14に示すテーブルから選択さ
れたコードが11ビットのときに、これに生データ(4
ビット固定)が加えられることにより、ビット列長が最
長の15ビットとなる。入力バッファ29に貯えられた
ビット列長が15ビット以上のときは処理48に移行
し、15ビット未満のときは処理46に戻る。
【0040】処理48では、入力バッファ29に貯えら
れたビット列の先頭から15ビット部分をデコーダ30
に渡す。デコーダ30は、X,Yカウンタ38によって
特定される注目画素のX座標上での位置x、処理44で
入力された伸長しようとする2次元画像データの1ライ
ンの画素数H(本実施例ではH=16)、および、圧縮
回路で用いた最大検出列長N(本実施例ではN=8)に
基づき、図3に示すフローの処理28と同じ手法によっ
てTの値を求め、その後、テーブル群71の中からTの
値に応じたテーブルを選択する。そして、選択したテー
ブルの中から受け取ったビット列と先頭位置からのビッ
ト列長が最も長く一致する可変長符号を検索する。たと
えば、図15に示す符号列の0行目において、先頭位置
から15ビットまでのデータ011011011100101 が入力バ
ッフア29からデコーダ30に渡された場合、X,Yカ
ウンタ38によって特定される注目画素のX座標上での
位置xから求めたTの値(この場合x=0なので、T=
0である)に基づき、テーブル群71の中から図6に示
すテーブルと同じ情報が記憶されたテーブルを選択す
る。そして、選択したテーブルに保持された全ての可変
長符号と入力データ011011011100101 を先頭ビットから
1ビットずつ比較していき、どの可変長符号も一致しな
くなる直前まで一致していた可変長符号をこの15ビッ
トの入力データに隠された求める可変長符号とする。す
なわち、入力データの先頭位置からのビット列長が最も
長く一致する可変長符号をテーブル内から検索する。こ
の場合、図6から推測できるように、伸長モードがラン
レングスモード、長さが4の可変長符号0110110111が検
索される。また、図15に示す符号列の2行目におい
て、先頭位置から15ビットまでのデータ011011100111
100 が、入力バッフア29からデコーダ30に渡された
場合、X,Yカウンタ38によって特定される注目画素
のX座標上での位置xから求めたTの値(この場合x=
0なので、T=0である)に基づき、テーブル群71の
中から図6に示すテーブルと同じ情報が記憶されたテー
ブルを選択する。そして、選択したテーブルの中からデ
ータ011011100111100 と先頭位置からのビット列長が最
も長く一致する可変長符号を検索する。この場合、図6
から推測できるように、伸長モードが辞書コピーモー
ド、相対位置1、長さが5の可変長符号01101110が検索
される。
【0041】処理49では、デコーダ30は、選択され
たテーブルの中から検索された可変長符号に基づき、ラ
ンレングスモードであるか又は辞書コピーモードである
かを識別するモードフラグをモードレジスタ32に、長
さデータを長さカウンタ37に、そして、モードフラグ
が辞書コピーモードの場合は相対位置データを相対位置
レジスタ34に出力する。また、デコーダ30は、デコ
ードしたビット列長を入力バッファ29に、そして、モ
ードフラグがランレングスモードの場合は生データをデ
ータレジスタ33に出力する。たとえば、図15に示す
符号列の0行目において、先頭位置から15ビットまで
のデータ011011011100101 が、入力バッフア29からデ
コーダ30に渡された場合、処理48で検索された可変
長符号0110110111のパラメータは、伸長モードがランレ
ングスモード、長さが4である。したがって、デコーダ
30は、ランレングスモードのモードフラグをモードレ
ジスタ32に、長さデータの値4を長さカウンタ37
に、処理48で検索された可変長符号0110110111に続く
4ビット部分0010(生データ)をデータレジスタ33
に、そして、検索された可変長符号のビット列長(10
ビット)に生データのビット列長(4ビット固定)を加
えた14ビット(デコードしたビット列長)を入力バッ
ファ29に出力する。また、図15に示す符号列の2行
目において、先頭位置から15ビットまでのデータ0110
11100111100 が、入力バッフア29からデコーダ30に
渡された場合、処理48で検索された可変長符号011011
10の各パラメータは、伸長モードが辞書コピーモード、
相対位置が1、長さが5である。したがって、デコーダ
30は、辞書コピーモードのモードフラグをモードレジ
スタ32に、長さデータの値5を長さカウンタ37に、
相対位置データの値1を相対位置レジスタ34に、そし
て、検索された可変長符号01101110のビット列長である
8ビット(デコードしたビット列長)を入力バッファ2
9に出力する。尚、デコードしたビット列長を入力バッ
ファ29に出力するのは、入力バッファ29に貯えられ
たデータのうち未処理のビット列の後に、デコーダ30
でデコードされたビット列長と同じビット列長のデータ
を追加するためである。
【0042】デコーダ30から出力されたモードフラグ
がランレングスモードの場合は処理50を介して処理5
1に移行し、辞書コピーモードの場合は処理50を介し
て処理53に移行する。尚、デコーダ30から出力され
たモードフラグは、1つの伸長動作が完了するまでモー
ドレジスタ32に保持される。そして、1つの伸長動作
が完了したときに、デコーダ30から出力された新たな
モードフラグがモードレジスタ32に保持されて、次の
伸長動作が開始される。
【0043】処理51では、ランレングスモードの伸長
処理を行う。尚、ランレングスモードの伸長処理では、
図20に示すように、相対位置レジスタ34及び辞書ア
ドレス計算部35は作動しない。先ず、データレジスタ
33がデコーダ30から出力された生データを保持する
と共に、長さカウンタ37がデコーダ30から出力され
た長さデータを初期値としてロードする。次に、モード
レジスタ32に保持されたランレングスのモードフラグ
に基づき、データレジスタ33に保持された生データを
セレクタ36を介して出力信号線44に出力する(動作
1)。次に、次のラインデータの伸長処理を行う際に参
照すべき辞書を作成するため、出力したデータと同じも
のを、辞書バッファ39のX,Yカウンタ38が特定す
るX,Y座標値に相当するアドレスに登録し(動作
2)、長さカウンタ37をディクリメントし(動作
3)、X,Yカウンタ38のX座標値を1つ更新する
(動作4)。尚、本実施例の場合、上述したように、
X,Yカウンタ38のX座標値の採りうる範囲は0〜1
5である。したがって、X,Yカウンタ38のX座標値
が15の場合、X座標値を1つ更新するとX座標値は0
になり、Y座標値が1つ更新される。処理52では、上
記の動作1〜動作4を、長さカウンタ37の値が0にな
るまで繰り返す。これにより、デコーダ30から出力さ
れた生データがデコーダ30から出力された長さデータ
分連続した伸長データが生成される。
【0044】処理53では、辞書コピーモードの伸長処
理を行う。尚、辞書コピーモードの伸長処理では、図2
0に示すように、データレジスタ33は作動しない。先
ず、相対位置レジスタ53がデコーダ30から出力され
た相対位置データを保持すると共に、長さカウンタ37
がデコーダ30から出力された長さデータを初期値とし
てロードする。次に、辞書アドレス計算部35により、
X,Yカウンタ38が特定するX座標値と相対位置レジ
スタ53に保持された相対位置データに基づき、辞書バ
ッファ39に記憶されたデータのうち参照すべきデータ
のアドレスを求める(動作5)。そして、モードレジス
タ32に保持された辞書コピーのモードフラグに基づ
き、辞書バッファ39に記憶されたデータのうち辞書ア
ドレス計算部35により特定されたアドレスのデータを
セレクタ36を介して出力信号線44に出力する(動作
6)。次に、次のラインデータの伸長処理を行う際に参
照すべき辞書を作成するため、出力したデータと同じも
のを、辞書バッファ39のX,Yカウンタ38が特定す
るX,Y座標値に相当するアドレスに登録し(動作
7)、長さカウンタ37をディクリメントし(動作
8)、X,Yカウンタ38のX座標値を1つ更新する
(動作9)。処理54では、上記の動作5〜動作9を、
長さカウンタ37の値が0になるまで繰り返す。これに
より、辞書バッファ39からコピーされたデータがデコ
ーダ30から出力された長さデータ分連続した伸長デー
タが生成される。
【0045】処理55では、入力バッファ29に貯えら
れたビット列の先頭からデコーダ30でデコードされた
ビット列を捨てる。そして、伸長すべきデータが未だあ
る場合は処理47に戻り、ない場合はこのフローを終了
する(処理56)。
【0046】上記圧縮の実施例では、最大検出列長Nの
範囲内で辞書上に存在する最長部分列を辞書参照範囲内
から検索し、符号化しているが、その他にも、辞書上に
存在する最長部分列を複数の部分列に分割した後、他の
部分列と合成することにより、最大検出列長Nの範囲内
で部分列を作成し、これを圧縮する場合や、最長ではな
い部分列を組み合わせることにより、最大検出列長Nの
範囲内で部分列を作成し、これを圧縮する場合などが考
えられる。
【0047】前者の場合、例えば、図4(b)の部分列
bを図4(c)の2つの部分列c「5543」と部分列
d「4」に分割し、部分列d「4」と2行5列の「3」
を合成し部分列e「43」とする。部分列cの符号は
{0,1,4}、部分列e「43」は1ライン前の1行
4列に続く「43」と一致しているので、符号は{1,
−1,2}となる。従って、2行目の符号は{0,1,
4}{1,−1,2}[1,5,1][1,4,1]
{1,0,3}[4,5,2][6,A,3](この符
号を符号aとする)となる。後者の場合は、例えば、2
行0列では相対位置0の部分列「55」を選択し、2行
2列では相対位置+1の部分列「434」を選択する。
これにより、2行目の符号は、{0,0,2}{1,
1,3}{1,−1,1}[1,5,1][1,4,
1]{1,0,3}[4,5,2][6,A,3](こ
の符号を符号bとする)となる。
【0048】ここで、上記圧縮の実施例で示した図4
(a)の2行目に対する符号が実施例を含め3パターン
できたことになる。図5の2行目の符号を符号cとす
る。これらの符号a、b、cを図6乃至図14に示した
実際の符号に割り当ててみると、符号aが49ビット、
符号bが50ビット、符号cが48ビットとなり、符号
cの効率が良い。しかし、図6乃至図14のテーブルに
示した以外の符号を符号a、b、cに割り当てた場合
は、また違った結果になり、符号aや符号bが最短の符
号になる場合も考えられる。従って、最大検出列長Nの
範囲内で最長部分列を検索し、符号化することが必ずし
も最良ではなく、実際の符号を割り当てた時に最短にな
る辞書上の部分列の組み合わせを最大検出列長Nの範囲
内で作成し、選択したほうが好ましい。
【0049】上記のように符号が最短になるように辞書
上の部分列の組み合わせ方を変更しても、符号化のルー
ル(注目画素の現ライン上での位置xから求めたTの値
と、直前ラインでの同一部分列の先頭位置と、長さとを
用いる)が変わらないのであれば、データ伸長方式に影
響を及ぼすことはない。
【0050】
【発明の効果】以上詳細に説明したように、本発明によ
れば、辞書の容量は直前ラインのみを格納すれば良いの
で非常に小さく、類似度の高い範囲内で辞書を参照し、
最大検出列長の範囲内でできるだけ長い部分列を参照す
るので、圧縮率が高く且つ圧縮及び伸長を高速に処理す
ることが可能である。また、2次元画像データの1ライ
ンの画素数をH、最大検出列長をN(1≦N≦H)、注
目画素の現ライン上での先頭画素からの位置をx(0≦
x≦H−1)とすると共に、x=0のときはT=0、1
≦x≦H−NのときはT=1、H−N+1≦x≦H−1
のときはT=x−H+N+1、とし、Tの各値毎に、直
前ライン上での部分列の先頭画素と注目画素との相対位
置と、直前ライン上での部分列の長さとに応じて異なる
コードが割り当てられたテーブルを用意し、注目画素の
現ライン上での先頭画素からの位置xに基づいてTの値
を求め、このTの値に応じて選択したテーブルから、相
対位置と部分列の長さに応じたコードを出力することに
よりデータ圧縮を行うので、各テーブルを予め圧縮伸長
するデータに合わせて構成されたハフマン符号のテーブ
ル、あるいは、圧縮伸長に伴い、冗長性が少なくなるよ
うに最適化されていくテーブルとすることにより、更
に、高い圧縮率が得られる。さらに、画像データの1ラ
イン目や辞書参照が不可能な部分列にランレングス圧縮
などを適用することで、更に、より高い圧縮率が得られ
る。加えて、Tの採りうる値は常に0≦T≦最大検出列
長Nとなるので、2次元画像データの1ラインの画素数
Hを増加したときに、テーブルの容量が増大して圧縮・
伸長速度が低下するのを防止することができる。
【図面の簡単な説明】
【図1】2次元画像データ示す説明図である。
【図2】データ圧縮回路の構成例を示す図である。
【図3】データ圧縮の動作の流れを説明するための図で
ある。
【図4】圧縮前の画像データを示す説明図である。
【図5】圧縮後の画像データを示す説明図である。
【図6】T=0のテーブルを表した図である。
【図7】T=1のテーブルを表した図である。
【図8】T=2のテーブルを表した図である。
【図9】T=3のテーブルを表した図である。
【図10】T=4のテーブルを表した図である。
【図11】T=5のテーブルを表した図である。
【図12】T=6のテーブルを表した図である。
【図13】T=7のテーブルを表した図である。
【図14】T=8のテーブルを表した図である。
【図15】実際の符号を割り当てた圧縮後の画像データ
示す説明図である。
【図16】データ伸長回路の構成例を示す図である。
【図17】データ伸長の動作の流れを説明するための図
である。
【図18】データ伸長の動作の流れを説明するための図
である。
【図19】ランレングスモードにおけるデータ伸長回路
の動作を説明するための図である。
【図20】辞書コピーモードにおけるデータ伸長回路の
動作を説明するための図である。
【符号の説明】
1 辞書 2 圧縮対象部分列 3 辞書上の部分列 4 先頭位置 5 注目画素 17 ラインバッファ入力信号線 18 辞書バッファ入力信号線 19 符号出力信号線 43 入力信号線 44 出力信号線
─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成6年11月25日
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】0031
【補正方法】変更
【補正内容】
【0031】図4(a)の1行目の処理は、0行目を辞
書として扱う。(0,1)と(0,0)を比較し一致し
ないので、次に(0,1)と(1,0)と比較し、これ
も一致しないので、辞書には一致する部分列がないと判
断し、ランレングス圧縮を適用する。(0,1)から
(2,1) のデータは5で同じであるので符号は[0,
5,3]となる。(3,1)の4は(2,0)、(3,
0)、(4,0)のいずれとも一致しないので、ランレ
ングス圧縮を適用し、符号は[1,4,1]となる。
(4,1)の3は(3,0)、(4,0)、(5,0)
の中の(4,0)と一致し、(4,1)から(5,1)
と辞書の(4,0)から(5,0)が一致するので、符
号は{1,0,2}となる。(6,1)と(7,1)は
それぞれ辞書のデータと一致しないので符号は、それぞ
れ[1,1,1]、[1,3,1]となる。(8,1)
のCは(7,0)、(8,0)、(9,0)の中の
(9,0)と一致し、(8,1)から(9,1)と辞書
の(9,0)から(A,0)が一致するので、符号は
{1,1,2}となる。(A,1)のCは(9,0)、
(A,0)、(B,0)の中の(9,0)及び(A,
0)と一致する。ここで、(B,1)と(A,0)は一
致しないが、(A,1)から(C,1)と辞書の(A,
0)から(C,0)は一致するので、符号は{3,0,
3}となる。(D,1)の6は(C,0)、(D,
0)、(E,0)の中の(C,0)と一致し、(D,
1)から(F,1)と辞書の(C,0)から(E,0)
は一致するので、符号は{6,−1,3}となる。した
がって、1行目の符号は、図5の1行目に示すように、
[0,5,3][1,4,1]{1,0,2}[1,
1,1][1,3,1]{1,1,2}{3,0,3}
{6,−1,3}となる。

Claims (14)

    【特許請求の範囲】
  1. 【請求項1】 順次スキャンされる2次元画像データに
    対して直前ラインのデータを参照し、現ラインに直前ラ
    インと少なくとも1画素分以上同じ部分データ列を検出
    した場合に圧縮処理を行う2次元画像データの圧縮方式
    において、 前記2次元画像データの1ラインの画素数をH、前記部
    分データ列の最大検出列長をN(1≦N≦H)、注目画
    素の現ライン上での先頭画素からの位置をx(0≦x≦
    H−1)とすると共に、x=0のときはT=0、1≦x
    ≦H−NのときはT=1、H−N+1≦x≦H−1のと
    きはT=x−H+N+1、とし、 前記Tの各値毎に、直前ライン上での前記部分データ列
    の先頭画素と前記注目画素との相対位置と、前記部分デ
    ータ列の長さとに応じて異なるコードが割り当てられた
    テーブルを用意し、 現ラインに直前ラインと少なくとも1画素分以上同じ部
    分データ列を検出した場合に、前記注目画素の現ライン
    上での位置xに基づいて前記Tの値を求め、このTの値
    に基づき対応する前記テーブルを選択し、直前ライン上
    での部分データ列の先頭位置と長さとに応じたコードを
    出力することを特徴とするデータ圧縮方式。
  2. 【請求項2】 請求項1記載の発明において、前記テー
    ブルは、現ラインの入力データの注目画素と1ライン前
    の同一部分データ列の先頭画素との相対位置として、少
    なくとも同一画素位置の場合、一画素左にずれた場合、
    および一画素右にずれた場合の異なる3つの場合のコー
    ドが可変長符号で記憶されていることを特徴とするデー
    タ圧縮方式。
  3. 【請求項3】 請求項1又は2記載の発明において、現
    ラインに直前ラインと同じ部分データ列を検出できなか
    った場合に、前記Tの各値毎に用意された、連続する同
    一データの長さに応じて異なるコードが割り当てられた
    ランレングステーブルを参照し、対応するコードを出力
    することを特徴とするデータ圧縮方式。
  4. 【請求項4】 請求項3記載の発明において、前記ラン
    レングステーブルに記憶されたコードは、前記テーブル
    に記憶されたコードと異なるコードが割り当てられてい
    ることを特徴とするデータ圧縮方式。
  5. 【請求項5】 請求項4記載の発明において、前記テー
    ブルと前記ランレングステーブルとを一体とし、相対位
    置として同一画素位置の場合、一画素左にずれた場合、
    一画素右にずれた場合の異なる3つの場合の同一部分デ
    ータ列の長さのコードと、ランレングスの場合の連続す
    る同一データの長さのコードとが互いに異なる可変長符
    号で記憶されていることを特徴とするデータ圧縮方式。
  6. 【請求項6】 順次スキャンされる2次元画像データに
    対して直前ラインのデータを参照し、現ラインに直前ラ
    インと少なくとも1画素分以上同じ部分データ列を検出
    した場合に、重複する部分の圧縮データとして、前記2
    次元画像データの1ラインの画素数をH、前記部分デー
    タ列の最大検出列長をN(1≦N≦H)、注目画素の現
    ライン上での先頭画素からの位置をx(0≦x≦H−
    1)とすると共に、x=0のときはT=0、1≦x≦H
    −NのときはT=1、H−N+1≦x≦H−1のときは
    T=x−H+N+1とし、前記Tの各値毎に、直前ライ
    ン上での前記部分データ列の先頭画素と前記注目画素と
    の相対位置と、長さとに応じて異なるコードが順次入力
    される2次元画像圧縮データの伸長方式であって、 少なくとも直前ラインの伸長されたデータをバッファに
    保持し、 伸長しようとする前記注目画素の現ライン上での位置x
    に基づいて前記Tの値を求め、このTの値に基づき、前
    記Tの各値毎に用意された、前記相対位置と前記長さと
    に応じて異なるコードが割り当てられたテーブルから対
    応するテーブルを選択し、 入力された圧縮データから前記コードを抽出し、このコ
    ードに基づいて選択されたテーブルを参照し、入力され
    た現ラインのデータに対して、前記バッファから前記部
    分データ列の先頭位置に対応するビットに続く前記部分
    データ列の長さ分のデータを抽出し、伸長データとして
    出力することを特徴とするデータ伸長方式。
  7. 【請求項7】 送信側において、順次スキャンされる2
    次元画像データに対して直前ラインのデータを参照し、
    現ラインに直前ラインと少なくとも1画素分以上同じ部
    分データ列を検出した場合に、直前ライン上にある前記
    部分データ列の先頭画素と現ライン上にある注目画素と
    の相対位置と、前記部分データ列の長さとを求め、前記
    2次元画像データの1ラインの画素数をH、前記部分デ
    ータ列の最大検出列長をN(1≦N≦H)、注目画素の
    現ライン上での位置をx(0≦x≦H−1)とすると共
    に、x=0のときはT=0、1≦x≦H−NのときはT
    =1、H−N+1≦x≦H−1のときはT=x−H+N
    +1とし、前記Tの各値毎に用意された、前記相対位置
    と前記長さとに応じて異なるコードが割り当てられたテ
    ーブルを参照し、対応するコードを圧縮データとして出
    力し、 受信側において、少なくとも直前ラインの伸長されたデ
    ータをバッファに保持し、 伸長しようとする圧縮データの注目画素の現ライン上で
    の先頭画素からの位置xに基づいて前記Tの値を求め、
    このTの値に対応する前記テーブルを選択し、 入力された圧縮データから前記コードを抽出し、このコ
    ードに基づいて選択されたテーブルを参照し、入力され
    た現ラインのデータに対して、前記バッファから前記部
    分データ列の先頭位置に対応するビットに続く前記部分
    データ列の長さ分のデータを抽出し、伸長データとして
    出力することを特徴とするデータ圧縮・伸長方式。
  8. 【請求項8】 請求項7において、前記テーブルは、現
    ラインの入力データの注目画素と1ライン前の同一部分
    データ列の先頭画素のと相対位置として、少なくとも同
    一画素位置の場合、一画素左にずれた場合、および一画
    素右にずれた場合の異なる3つの場合のコードが記憶さ
    れていることを特徴とするデータ圧縮・伸長方式。
  9. 【請求項9】 順次入力される2次元画像データに対し
    て1ライン前のデータを保持する参照メモリ手段と、 入力された現ラインの信号から、所定の長さの範囲内で
    連続する複数のデータ列を抽出し圧縮対象部分データ列
    として記憶するバッファ手段と、 前記参照メモリ手段に記憶されたデータに、前記圧縮対
    象部分データ列の注目画素に続く部分データ列と同じ部
    分データ列が存在するか否かを検出する走査比較手段
    と、 前記走査比較手段が同じ部分データ列を検出した場合
    に、前記参照メモリ手段に記憶された1ライン前のデー
    タ上での前記部分データ列の先頭画素と前記注目画素と
    の相対位置と、前記部分データ列の長さとを求め、前記
    2次元画像データの1ラインの画素数をH、前記部分デ
    ータ列の最大検出列長をN(1≦N≦H)、注目画素の
    現ライン上での先頭画素からの位置をx(0≦x≦H−
    1)とすると共に、x=0のときはT=0、1≦x≦H
    −NのときはT=1、H−N+1≦x≦H−1のときは
    T=x−H+N+1、とし、前記Tの各値毎に用意され
    た、前記相対位置と前記部分データ列の長さとに応じて
    異なるコードが割り当てられたテーブルを参照し、対応
    するコードを現ラインのその部分データ列の圧縮データ
    として出力する符号生成手段と、 を備えたことを特徴とするデータ圧縮装置。
  10. 【請求項10】 請求項9において、前記テーブルは、
    現ラインの入力データの注目画素と1ライン前の同一部
    分データ列の先頭画素との相対位置として、少なくとも
    同一画素位置の場合、一画素左にずれた場合、一画素右
    にずれた場合の異なる3つの場合の可変長符号コードが
    記憶されていることを特徴とするデータ圧縮装置。
  11. 【請求項11】 請求項9又は10において、現ライン
    に直前ラインと同じ部分データ列を検出できなかった場
    合に、前記Tの各値毎に用意された、連続する同一デー
    タの長さに応じて異なる可変長符号コードが割り当てら
    れたランレングステーブルを参照し、対応するコードを
    出力することを特徴とするデータ圧縮装置。
  12. 【請求項12】 請求項11において、前記ランレング
    ステーブルに記憶された可変長符号コードは前記テーブ
    ルの記憶された可変長符号コードとは異なる可変長符号
    コードが割り当てられていることを特徴とするデータ圧
    縮装置。
  13. 【請求項13】 順次入力される2次元画像データに対
    して直前データを参照し、現ラインに直前ラインと少な
    くとも1画素分以上同じ部分データ列を検出した場合
    に、重複する部分の圧縮データとして、前記2次元画像
    データの1ラインの画素数をH、前記部分データ列の最
    大検出列長をN(1≦N≦H)、注目画素の現ライン上
    での先頭画素からの位置をx(0≦x≦H−1)とする
    と共に、x=0のときはT=0、1≦x≦H−Nのとき
    はT=1、H−N+1≦x≦H−1のときはT=x−H
    +N+1とし、前記Tの各値毎に、直前ライン上での前
    記部分データ列の先頭画素と前記注目画素との相対位置
    と、長さとに応じて異なるコードが順次入力される2次
    元画像圧縮データの伸長装置であって、 1ライン前の伸長されたデータを保持するバッファメモ
    リ手段と、 前記Tの各値毎に用意された、前記コードに応じて直前
    ライン上での前記部分データ列の先頭画素と前記注目画
    素との相対位置と、前記部分データ列の長さとが割り当
    てられた逆変換テーブルと、 伸長しようとする圧縮データの注目画素の現ライン上に
    おける先頭画素からの位置xに基づいて前記Tの値を求
    め、このTの値に対応する前記逆変換テーブルを選択
    し、入力されたデータから前記コードを抽出し、前記コ
    ードに基づいて選択された前記逆変換テーブルを参照
    し、前記逆変換テーブルから直前ライン上での前記部分
    データ列の先頭位置と長さとのデータを取り出し、前記
    バッファメモリ手段から前記部分データ列の先頭位置に
    対応するビットに続く前記部分データ列の長さ分のデー
    タを抽出し、伸長データとして出力する復号手段と、 を備えたことを特徴とするデータ伸長装置。
  14. 【請求項14】 順次入力される2次元画像データに対
    して直前ラインのデータを参照し、現ラインに直前ライ
    ンと少なくとも1画素分以上同じ部分データ列を検出し
    た場合には、重複する部分の圧縮データとして、前記2
    次元画像データの1ラインの画素数をH、前記部分デー
    タ列の最大検出列長をN(1≦N≦H)、注目画素の現
    ライン上での先頭画素からの位置をx(0≦x≦H−
    1)とすると共に、x=0のときはT=0、1≦x≦H
    −NのときはT=1、H−N+1≦x≦H−1のときは
    T=x−H+N+1とし、前記Tの各値毎に、直前ライ
    ン上での前記部分データ列の先頭画素と前記注目画素と
    の相対位置と、長さとに応じて異なるコードが順次入力
    され、また、現ラインに直前ラインと同じ部分データ列
    を検出できなかった場合には、ランレングスの圧縮デー
    タとして、前記Tの各値毎に、連続する同一データの長
    さに応じて異なるコードとその同一データが順次入力さ
    れる2次元画像圧縮データの伸長装置であって、 伸長しようとする圧縮データの注目画素の現ライン上に
    おける先頭画素からの位置xを計数するカウンタと、 1ライン前の伸長されたデータを保持するバッファメモ
    リ手段と、 前記Tの値毎に用意された、入力されるコードに応じ
    て、直前ライン上での前記部分データ列の先頭画素と前
    記注目画素との相対位置と、前記部分データ列の長さと
    のデータ、またはランレングス長が割り当てられた逆変
    換テーブルと、 前記カウンタの計数値によって計数された前記注目画素
    の現ライン上での先頭画素からの位置xに基づいて前記
    Tの値を求め、このTの値に対応する前記逆変換テーブ
    ルを選択し、入力されたデータから前記コードを抽出
    し、前記コードに基づいて選択された前記逆変換テーブ
    ルを参照し、現ラインに直前ラインと同じ部分データ列
    を検出したか否かを識別するモードフラグを出力すると
    共に、前記逆変換テーブルから前記相対位置及び長さの
    データ、又は連続する同一データの長さのデータを取り
    出すデコーダと、 現ラインに直前ラインと同じ部分データ列を検出した場
    合に、前記バッファメモリ手段から前記相対位置に対応
    するビットに続く前記部分データ列の長さ分のデータを
    抽出し、伸長データとして出力する第1の復号手段と、 現ラインに直前ラインと同じ部分データ列を検出できな
    かった場合に、前記コードに続くデータを連続する同一
    データの長さ分だけ連続して出力する第2の復号手段
    と、 を備えたことを特徴とするデータ伸長装置。
JP6244741A 1994-09-12 1994-09-12 2次元画像データの圧縮方式および伸長方式 Pending JPH0884260A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP6244741A JPH0884260A (ja) 1994-09-12 1994-09-12 2次元画像データの圧縮方式および伸長方式
US08/526,663 US5883975A (en) 1994-09-12 1995-09-11 Compression and decompression methods on two-dimensional image data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP6244741A JPH0884260A (ja) 1994-09-12 1994-09-12 2次元画像データの圧縮方式および伸長方式

Publications (1)

Publication Number Publication Date
JPH0884260A true JPH0884260A (ja) 1996-03-26

Family

ID=17123208

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6244741A Pending JPH0884260A (ja) 1994-09-12 1994-09-12 2次元画像データの圧縮方式および伸長方式

Country Status (1)

Country Link
JP (1) JPH0884260A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11168389A (ja) * 1997-12-05 1999-06-22 Toshiba Corp データ圧縮装置
DE19803277C2 (de) * 1997-01-31 2000-01-20 Kioritz Corp Schalldämpfer für Verbrennungsmotoren
US9853566B2 (en) 2015-06-01 2017-12-26 Lsis Co., Ltd. System for driving inverters in parallel
CN117221414A (zh) * 2023-11-09 2023-12-12 东莞中杰艾克森电子有限公司 一种调制解调器数据智能传输方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19803277C2 (de) * 1997-01-31 2000-01-20 Kioritz Corp Schalldämpfer für Verbrennungsmotoren
JPH11168389A (ja) * 1997-12-05 1999-06-22 Toshiba Corp データ圧縮装置
US9853566B2 (en) 2015-06-01 2017-12-26 Lsis Co., Ltd. System for driving inverters in parallel
CN117221414A (zh) * 2023-11-09 2023-12-12 东莞中杰艾克森电子有限公司 一种调制解调器数据智能传输方法
CN117221414B (zh) * 2023-11-09 2024-01-16 东莞中杰艾克森电子有限公司 一种调制解调器数据智能传输方法

Similar Documents

Publication Publication Date Title
JP4000266B2 (ja) データ符号化装置、データ符号化方法、及びそのプログラム
JPH0884260A (ja) 2次元画像データの圧縮方式および伸長方式
JPH08130652A (ja) 2次元画像データの圧縮方式および伸長方式
JPH07336696A (ja) 2次元画像データの圧縮方式および伸長方式
JPH0846793A (ja) 2次元画像データの圧縮方式および伸長方式
JPH08130651A (ja) 2次元画像データの圧縮方式および伸長方式
JP3199292B2 (ja) ハフマン符号の符号化でのランレングス抽出方法、ハフマン符号変換方法およびmh符号化処理方法
JPH0723238A (ja) 画像データ圧縮及び復元装置
JP3260925B2 (ja) 画像処理装置
JPS6118387B2 (ja)
JP2812064B2 (ja) 画像処理装置
JPH10215366A (ja) 圧縮画像データの抽出方法およびその装置
JP2002016501A (ja) 可変長復号化装置
JPH06152988A (ja) 可変長符号の復号化装置
JPH0644038A (ja) データ圧縮方法、データ復元方法、データ圧縮/復元方法
JP3105330B2 (ja) 画像データの圧縮復元方式
JP3100206B2 (ja) データ圧縮方法
JPH03209923A (ja) データ圧縮方式
JP3321226B2 (ja) 符号化復号化方法
US20030086125A1 (en) Data decompressing method, data decompressing unit, and computer-readable storage medium storing data decompressing program
JPH10210273A (ja) 圧縮画像データの比較方法およびその装置
JP2615215B2 (ja) 画像データ圧縮方式
JP6821184B2 (ja) 画像復号化装置
JP2003087573A (ja) 画像圧縮装置及び画像伸張装置
JP2594767B2 (ja) 圧縮データの伸長方法