JP2001053620A - 符号化方法及び符号化装置、復号化方法及び復号化装置、記憶媒体 - Google Patents

符号化方法及び符号化装置、復号化方法及び復号化装置、記憶媒体

Info

Publication number
JP2001053620A
JP2001053620A JP22928099A JP22928099A JP2001053620A JP 2001053620 A JP2001053620 A JP 2001053620A JP 22928099 A JP22928099 A JP 22928099A JP 22928099 A JP22928099 A JP 22928099A JP 2001053620 A JP2001053620 A JP 2001053620A
Authority
JP
Japan
Prior art keywords
data
code
repetition
encoding
raw data
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
JP22928099A
Other languages
English (en)
Inventor
Yoichi Sakamoto
陽一 坂本
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
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP22928099A priority Critical patent/JP2001053620A/ja
Priority to US09/637,626 priority patent/US6785424B1/en
Publication of JP2001053620A publication Critical patent/JP2001053620A/ja
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/41Bandwidth or redundancy reduction

Abstract

(57)【要約】 【課題】 水平及び垂直方向に相関性の高い画像データ
を効率的に符号化する。 【解決手段】 与えられたコマンドコードのビット列に
基づき、該ビット列の繰り返し、複写、生データの置換
とのいずれに該当するかを判定し、その結果に基づき、
繰り返し、複写、生データそれぞれのデータ長さを算出
する。その算出結果に従い、符号化の繰り返し、複写、
生データの置換の結果のうち少なくとも2つを組合わせ
て1バイトのコマンドとして符号化する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、画像データのよう
に2次元またはそれ以上の次元を持つデータ構造を圧縮
するために符号化し、またその符号化されたデータを復
号するための符号化方法、装置および復号化方法、装
置、その方法をコンピュータで実行するためのプログラ
ムを記憶したコンピュータ可読の記憶媒体に関するもの
である。
【0002】
【従来の技術】従来、画像データを圧縮する方法とし
て、ランレングス符号を用いる方法がある。ランレング
ス符号は、同一データが繰り返す場合に繰り返しの長さ
とデータを符号化するものであり、ソフトウェア作法の
効率化によってかなり高速に符号化を行うことができ
る。
【0003】また、別の方法としてデルタロウ符号を用
いる方法がある。デルタロウ符号は、直前のラインと同
じデータが続いている場合に、続いている長さを符号化
するものである。
【0004】また、別の方法としてハフマン符号を用い
る方法がある。ハフマン符号は、データの分布を調べ、
出現頻度の高いデータを短い符号に符号化するものであ
る。
【0005】
【発明が解決しようとしている課題】しかしながら、上
述のランレングス符号を用いる方法では、画像データの
ように水平・垂直の両方向に相関がある場合であって
も、水平方向の相関のみ圧縮に寄与し、垂直方向の相関
がある場合でも圧縮に寄与しないため、全体として高い
圧縮率を得ることが困難である。
【0006】また、デルタロウ符号は、ソフトウェアに
よってかなり高速に符号化を行うことができるが、画像
データのように水平・垂直の両方向に相関がある場合で
も、垂直方向の相関のみ圧縮に寄与し、水平方向の相関
があっても圧縮に寄与しないため、高い圧縮率を得るこ
とが困難である。
【0007】ハフマン符号は画像データのように水平・
垂直の両方向に相関がある場合でも、どちらの方向の相
関も圧縮に寄与しないため、高い圧縮率を得ることが困
難である。
【0008】そのほかにもLZ77符号、LZ78符
号、JBIG符号など様々な符号が考案されているが、
いずれも水平・垂直の相関が最も顕著である直左のデー
タ、および直上のデータ以外のデータを調べる必要があ
るため、符号化における計算量が多く、ソフトウェアで
符号化した場合に、符号化にかなりの時間を要し、ま
た、ハードウェアで復号した場合に復号器の規模も大き
くなるという欠点がある。
【0009】
【課題を解決するための手段】上記の課題を解消するべ
く、本発明は画像データのような2次元以上のデータ構
造を、水平・垂直両方向の相関を利用して符号化するこ
とにより高い圧縮率を得るとともに、水平・垂直の相関
が最も顕著である直左のデータ、および直上のデータの
みを調べることにより計算量を小さくし、ソフトウェア
で符号化した場合に要する時間を短くすることを目的と
するものである。
【0010】また、水平・垂直両方向の相関を利用する
場合に使用される3種類の操作、すなわち繰り替えし、
複写、生データのうちの少なくとも二つを同時(二つの
組合せ)に符号化することにより、より圧縮率を高くす
ることを目的とする。
【0011】上記目的を達成するべく、本発明にかかる
復号化方法、装置及び符号化方法、装置、その方法をコ
ンピュータで実行するための記憶媒体は主として以下の
構成からなることを特徴とする。
【0012】すなわち、復号化方法は、受信した符号列
に基づき、該符号列の繰り返し、複写、生データの置換
のいずれに該当するかを判定する工程と、前記判定に従
い符号列を、繰り返し、複写、生データの置換のうち少
なくとも2つの変換操作の組合わせにより復号する工程
と、前記復号されたそれぞれのデータを所定のアドレス
に格納するアドレスの管理を行なう工程と、前記復号の
結果を前記アドレスの管理に従って所定のアドレス順に
出力する工程とを備える。
【0013】また、前記復号化方法において、前記受信
した符号列は、水平及び垂直方向に相関する2次元以上
の画像データに関するものである。
【0014】また、符号化方法は、与えられたコマンド
コードのビット列に基づき、該ビット列の繰り返し、複
写、生データの置換とのいずれに該当するかを判定する
工程と、前記判定に基づき、繰り返し、複写、生データ
それぞれのデータ長さを算出する工程と、前記算出に従
い、前記符号化の繰り返し、複写、生データの置換の結
果のうち少なくとも2つを組合わせて1バイトのコマン
ドとして符号化する工程とを備える。
【0015】また、水平及び垂直方向に相関する2次元
以上の符号化画像データを復号化するためのプログラム
を格納したコンピュータ可読の記憶媒体であって、該プ
ログラムが、受信した符号列に基づき、該符号列の繰り
返し、複写、生データの置換のいずれに該当するかを判
定する工程のコードと、前記判定に従い符号列を、繰り
返し、複写、生データの置換のうち少なくとも2つの変
換操作の組合わせにより復号する工程のコードと、前記
復号されたそれぞれのデータを所定のアドレスに格納す
るアドレスの管理を行なう工程のコードと、前記復号の
結果を前記アドレスの管理に従って所定のアドレス順に
出力する工程のコードとを備える。
【0016】また、水平及び垂直方向に相関する2次元
以上の画像データを符号化するためのプログラムを格納
したコンピュータ可読の記憶媒体であって、該プログラ
ムが、与えられたコマンドコードのビット列に基づき、
該ビット列の繰り返し、複写、生データの置換とのいず
れに該当するかを判定する工程のコードと、前記判定に
基づき、繰り返し、複写、生データそれぞれのデータ長
さを算出する工程のコードと、前記算出に従い、前記符
号化の繰り返し、複写、生データの置換の結果のうち少
なくとも2つを組合わせて1バイトのコマンドとして符
号化する工程のコードとを備える。
【0017】また、復号化装置は、受信した符号列に基
づき、該符号列の繰り返し、複写、生データの置換のい
ずれに該当するかを判定する手段と、前記判定に従い符
号列を、繰り返し、複写、生データの置換のうち少なく
とも2つの変換操作の組合わせにより復号する手段と、
前記復号されたそれぞれのデータを所定のアドレスに格
納するアドレスの管理を行なう手段と、前記復号の結果
を前記アドレスの管理に従って所定のアドレス順に出力
する手段とを備える。
【0018】また、符号化装置は、与えられたコマンド
コードのビット列に基づき、該ビット列の繰り返し、複
写、生データの置換とのいずれに該当するかを判定する
手段と、前記判定に基づき、繰り返し、複写、生データ
それぞれのデータ長さを算出する手段と、前記算出に従
い、前記符号化の繰り返し、複写、生データの置換の結
果のうち少なくとも2つを組合わせて1バイトのコマン
ドとして符号化する手段とを備える。
【0019】
【発明の実施の形態】(第1の実施形態)図1は本発明
の実施形態にかかる符号化方法及び復号方法を適用する
印刷システムの概略構成を説明するブロック図である。
同図において、1はホストコンピュータであり、CPU
2、メモリ3、ハードディスク4、フロッピードライブ
5およびホストパラレルポート6を備え、ホストパラレ
ルポート6を介してプリンタ7に接続されている。
【0020】2はCPUであり、メモリ3に記憶された
各種の制御プログラム、およびアプリケーションプログ
ラムを実行する。3はメモリであり、ハードディスク4
またはフロッピードライブ5から読み出されたプログラ
ム、およびそのプログラムが必要とするデータを記憶す
る。
【0021】4はハードディスクであり、図2において
後述するオペレーティングシステム10、アプリケーシ
ョンプログラム(アプリケーション)11、プリンタド
ライバプログラム12、通信プログラム15などのプロ
グラムを格納する。
【0022】5はフロッピードライブであり、インスト
ールディスク8などのフロッピーディスクを装着するこ
とができ、装着されたフロッピーディスクに格納された
プログラムを読み取る。6はホストパラレルポートであ
り、プリンタ7にデータを送ることができる。7はプリ
ンタであり、ホストパラレルポート6からデータを受け
取り、印刷を行う。
【0023】8はインストールディスクであり、後述す
る図2に示すプリンタドライバプログラム12およびイ
ンストールプログラムを格納する。
【0024】通常のインストール操作は、操作者がイン
ストールディスク8をフロッピー(登録商標)ドライブ
5(あるいは図示しないCD−ROMドライブ)にセッ
トし、インストールプログラムを起動すると、インスト
ールプログラムはプリンタドライバプログラム12をイ
ンストールディスク8から読み込み、ハードディスク4
に書き込む。
【0025】また、インストールプログラムはオペレー
ティングシステム10が提供する機能を用いて、プリン
タドライバプログラム12がアプリケーション11から
使用可能となるように設定する。
【0026】図2は、本発明に係る符号化方法及び復号
化方法を適用した印刷システムの構成を示すブロック図
である。
【0027】図において、10はオペレーティングシス
テム(OS)であり、CPU2、メモリ3、ハードディ
スク4、フロッピードライブ5、ホストパラレルポート
6などのハードウェア資源の管理、およびアプリケーシ
ョンプログラム11、プリンタドライバプログラム1
2、通信プログラム15などのソフトウェアの管理を行
う。
【0028】11はアプリケーションプログラムであ
り、操作者の指示に従って印刷データを作成するととも
に、オペレーティングシステム10を経由してプリンタ
ドライバプログラム12に印刷指令を発行する。12は
プリンタドライバプログラムであり、アプリケーション
プログラム11から発行された印刷指令に基づき、プリ
ンタ7が印刷を行うためのビットマップデータを作成
し、後述する符号化手順によりビットマップデータを符
号化し、用紙サイズ、ビットマップデータのラインの長
さとライン数などの印刷制御に必要なデータとともに符
号化したビットマップデータを出力する。15は通信プ
ログラムであり、ホストパラレルポート6を制御してプ
リンタ7にデータを送信する。
【0029】6はホストパラレルポートであり、IEE
E規格「IEEE Std 1284−1994」に規
定される、8ビットのデータ信号Data1からDat
a8、プリンタ7を制御する4ビットの制御信号nSt
orobe、nAutoFd、nSelectIn、n
Init、プリンタ7の状態を示す5ビットの状態信号
nAck、Busy、PError、Select、n
Faultによりプリンタパラレルポート16に接続さ
れる。16はプリンタパラレルポートであり、前述の信
号によりホストパラレルポート6に接続される。
【0030】17は制御回路であり、例えば1チップC
PUで構成され、プリンタパラレルポート16、FIF
O19、復号回路20、シフトレジスタ21、およびプ
リンタエンジン22の制御を行う。
【0031】19はFIFO(ファーストインファース
トアウト)メモリであり、プリンタパラレルポート16
が受信したデータを記憶し、記憶したデータを先入れ先
出しの順に復号回路20に出力する。復号回路20は、
FIFOメモリ19に記憶された符号列データを復号
し、シフトレジスタ21に出力する。
【0032】21はシフトレジスタであり、復号回路2
0が出力したパラレルデータをシリアルデータに変換
し、プリンタエンジン22に出力する。
【0033】プリンタエンジン22はレーザビームプリ
ンタエンジンであり、制御回路17との間でシリアル信
号を用いてエンジンコマンドの受信およびエンジンステ
ータスの送信を行い、制御回路17からPRINTコマ
ンドを受信すると1ページの印刷処理を開始し、用紙が
所定の位置に達するとシフトレジスタ21が出力したシ
リアルデータに従って印刷を行う。
【0034】以下、印刷動作について説明する。
【0035】操作者がホストコンピュータ1側でアプリ
ケーションプログラム11を操作して印刷データを生成
し、これを印刷指示すると、アプリケーションプログラ
ム11からオペレーティングシステム10を経由してプ
リンタドライバプログラム12に印刷指令が渡される。
プリンタドライバプログラム12はアプリケーションプ
ログラム11から発行された印刷指令に基づき、ビット
マップデータを作成する。そして、プリンタドライバプ
ログラム12は、後述する符号化手順に基づき、作成し
たビットマップデータから符号化データを生成し、用紙
サイズ、ビットマップデータのラインの長さとライン数
などの印刷制御に必要なデータとともに出力する。通信
プログラム15は、プリンタドライバプログラム12が
作成した、印刷制御に必要なデータおよび符号化データ
を、ホストパラレルポート6を経由して送信する。
【0036】制御回路17はプリンタパラレルポート1
6を経由してこれを受信する。受信したコマンドが印刷
の開始を指示するコマンド「0x01」であった場合、
制御回路17はプリンタエンジン22にPRINTコマ
ンドを送信する。プリンタエンジン22はPRINTコ
マンドを受信すると印刷を開始する。
【0037】復号回路20は、後述する復号手順に基づ
き、FIFOメモリ19に格納された符号化データを復
号してシフトレジスタ21に出力する。シフトレジスタ
21は主走査の長さをカウントするカウンタを持ち、プ
リンタエンジン22から主走査の開始が通知される毎
に、カウンタに所定の値を設定した後、カウンタが
「0」より大である間、所定のタイミングで復号回路2
0が出力したパラレルデータをシリアルデータに変換
し、プリンタエンジン22に出力するとともにカウンタ
を減算する。プリンタエンジン22は用紙が所定の位置
に達すると、主走査開始毎にデータの出力が必要である
ことを通知するとともに、シフトレジスタ21が出力し
たシリアルデータに基づき印刷を行う。
【0038】次に、図3および図4に示すテーブルを参
照し、図2に示したプリンタドライバ12が生成する符
号について説明する。
【0039】図3は、図2に示したプリンタドライバ1
2が生成する符号化テーブルの一例を示す図である。本
実施形態で説明する符号は、同一データバイトの繰り返
しを示すリピート、直前のラインのデータを複写するコ
ピー、およびデータ列を直接指定する生データの3種類
の操作のうち、少なくとも一つを指定する。
【0040】図3に示すように、コマンドコードのビッ
トが「00000000」の場合はEOLコマンドであ
り、行末まで直前のラインをコピーすることを示す。
【0041】また、コマンドコードの上位2ビットが
「00」で残りの何れかのビットが0でない場合は、C
opy then Repeatコマンドであり、直前
のラインのデータを下位3ビットで指定されるSバイト
複写後、コマンドコードの直後の1バイトの繰り返しデ
ータを、中位3ビットで指定されるL回繰り返すことを
示す。
【0042】また、コマンドコードの上位2ビットが
「01」の場合は、Copy then Rawコマン
ドであり、直前のラインのデータを、下位3ビットで指
定されるSバイト複写後、コマンドコードの直後に続
く、中位3ビットで指定されるRバイトをそのままデー
タとすることを示す。
【0043】また、コマンドコードの上位2ビットが
「10」の場合は、Repeat then Rawコ
マンドであり、コマンドコードの直後の1バイトの繰り
返しデータを、中位3ビットで指定されるL回繰り返し
た後に、繰り返しデータの直後に続く、下位3ビットで
指定されるRバイトをそのままデータとすることを示
す。
【0044】また、コマンドコードの上位3ビットが
「110」の場合は、Copy Longコマンドであ
り、直前のラインのデータを、下位5ビットで指定され
るSの8倍のバイトを複写することを示す。
【0045】また、コマンドコードの上位3ビットが
「111」の場合は、Extendコマンドであり、コ
マンドコードに続く第二のコマンドコードと組み合わさ
れて一つのコマンドとなり、下位5ビットで指定される
Eの8倍のカウントを、第二のコマンドコードが示すカ
ウントに加算されることを示す。
【0046】図4は、図3に示したExtendコマン
ドに後続する第二のコマンドコードの一例を示す図であ
る。
【0047】図4に示すように、第二のコマンドコード
の上位2ビットが「00」の場合は、Copy the
n Repeat Longコマンドであり、直前のラ
インのデータを、下位3ビットで指定されるSバイト複
写後、第二のコマンドコードの直後の1バイトの繰り返
しデータを、中位3ビットで指定されるLに、Exte
ndコマンドで指定されたEの8倍を加えた回数繰り返
すことを示す。
【0048】また、第二のコマンドコードの上位2ビッ
トが「01」の場合は、Copythen Raw L
ongコマンドであり、直前のラインのデータを、下位
3ビットで指定されるSバイト複写後、第二のコマンド
コードの直後に続く、中位3ビットで指定されるRに、
Extendコマンドで指定されたEの8倍を加えたバ
イト数のデータをそのままデータとすることを示す。
【0049】また、第二のコマンドコードの上位2ビッ
トが「10」の場合は、Repeat Long th
en Rawコマンドであり、第二のコマンドコードの
直後の1バイトの繰り返しデータを、中位3ビットで指
定されるLに、Extendコマンドで指定されたEの
8倍を加えた回数繰り返した後に、繰り返しデータの直
後に続く、下位3ビットで指定されるRバイトをそのま
まデータとすることを示す。
【0050】また、第二のコマンドコードの上位2ビッ
トが「11」の場合は、Repeat then Ra
w Longコマンドであり、第二のコマンドコードの
直後の1バイトの繰り返しデータを、中位3ビットで指
定されるL回繰り返した後に、繰り返しデータの直後に
続く、下位3ビットで指定されるRに、Extendコ
マンドで指定されたEの8倍を加えたバイト数のデータ
をそのままデータとすることを示す。
【0051】次に図5を参照し、図3および図4に示さ
れる符号の実例を説明する。
【0052】図5に示す「0x4B、0x01、0x1
8、0xFF、0xE1、0x82、0x00、0x0
1、0x80、0x00」は符号列の一部を示し、一つ
のラインを表現している。また、ラインの長さは20バ
イトで、直前のラインは図に示すように、「(1)、(2)、
(3)、・・・、(20)」となっている。
【0053】ここで図示の符号が与えられると、先頭の
コマンド「0x4B」はビット列「01001011」
であるので、Copy then Rawコマンドであ
り、コピー数Sは3、生データサイズRは1である。し
たがって、3バイトのデータ「(1)、(2)、(3)」が直前
のラインからコピーされた後に、コマンドコードに続く
1バイトのデータ「0x01」がそのままデータとな
る。
【0054】次のコマンド「0x18」はビット列「0
0011000」であるので、Copy then R
epeatコマンドであり、コピー数Sは0、リピート
数Lは3である。したがって、コマンドコードに続く繰
り返しデータ「0xFF」が3回繰り返される。
【0055】次のコマンド「0xE1」はビット列「1
1100001」であるので、Extendコマンドで
あり、Eは1である。第二のコマンドコード「0x8
2」はビット列「10000010」であるので、Re
peat Long thenRawコマンドであり、
Lは0、したがってリピート数「L+8×E」は8であ
り、また生データサイズRは2である。したがって第二
のコマンドコードに続く繰り返しデータ「0x00」が
8回繰り返された後に、繰り返しデータに続く2バイト
のデータ「0x01、0x80」がそのままデータとな
る。
【0056】次のコマンド「0x00」はビット列「0
0000000」であるので、EOLコマンドであり、
行末までの3バイト「(18)、(19)、(20)」が直前のライ
ンからコピーされる。
【0057】次に、複数の操作を同時(複数の操作の組
合せ。以下同様)に符号化することによる効果について
説明する。複写・繰り返し・生データの3種類の操作を
用いて符号化を行った場合、複数の操作を同時に符号化
しなければ、複写・繰り返し・生データのそれぞれにつ
いて1バイトのコマンドにしなければならない。複写と
繰り返し、複写と生データ、または繰り返しと生データ
を同時に符号化すれば、二つの操作を1バイトのコマン
ドにすることができ、圧縮率が向上する。
【0058】しかしながら、複数の操作を同時に符号化
することにより、1バイトのコマンドで表現することが
できる長さは短くなる。例えば、複写・繰り返し・生デ
ータのそれぞれについて1バイトのコマンドにした場合
は、2ビットを操作の区別に使ったとして、長さを表現
するのに6ビットを使用することができ、63程度まで
の長さが表現できる。複数の操作を同時に符号化した場
合、上述の例では長さを表現するのに3ビットしか使用
できず、7程度までの長さしか使用できない。
【0059】プリンタで印刷されるビットマップでは、
直前のラインと類似しているが、少しずつ違うのが一般
的である。このため、長さの短い複写と長さの短い繰り
返し、あるいは長さの短い複写と長さの短い生データの
組み合わせが非常に多くなることが多い。特にテキス
ト、すなわち文字フォントを印刷する場合にこの傾向が
顕著である。このため、長さを制限して複数の操作を同
時に符号化したほうが圧縮率が向上することが多い。
【0060】次に、EOLコマンドの効果について説明
する。EOLコマンドは行末まで複写を行うものなの
で、ある長さの複写コマンドに置き換え可能である。
【0061】プリンタが印刷するビットマップは、右側
にある程度の余白があるのが一般的である。例えば右余
白の長さが2.54センチメートルで、プリンタが60
0dpiのレーザービームプリンタである場合、600
ドットの余白となり、75バイトに相当する。長さ75
の複写を表現するためには、長さ72のCopy Lo
ngコマンドと、図3では定義されていない長さ3のC
opyコマンドが必要で合わせて2バイトとなる。EO
Lコマンドは長さを含まないため1バイトで表現可能で
あり、符号の圧縮率が向上するとともに、長さ1から7
までのCopyコマンドが不要になる。
【0062】次に、図6および図7に示すプログラムリ
ストを参照し、プリンタドライバ12の符号化手順の詳
細を説明する。
【0063】図6は、図2に示したプリンタドライバ1
2の符号化手順の詳細を説明する図であり、例えばプロ
グラムはC言語で記述された関数で構成される。
【0064】図において、行1は関数名、引数、および
戻り値の型を定義する。この関数の関数名はencod
eであり、呼び元からビットマップデータの先頭アドレ
スsrc、符号化データを格納するバッファの先頭アド
レスdst、1ラインのバイト数widthおよびライ
ン数heightを受け取り、ビットマップデータを符
号化して符号化データをバッファに格納し、戻り値とし
てバッファに格納したバイト数を返す。
【0065】符号化処理の過程で先頭アドレスsrc、
先頭アドレスdstは各々ビットマップデータの未処理
のラインの先頭アドレス、未処理のバッファの先頭アド
レスを示すように更新される。
【0066】行3および行4は一時変数x、y、le
n、len2、copy、copy2、limit、d
ata、dsttopを定義する。xはビットマップデ
ータの、処理中のラインの先頭からのオフセットを格納
する。yは処理中のライン番号を格納する。lenおよ
びlen2は処理中の生データの長さ、または繰り返し
の長さを格納する。copyおよびcopy2は処理中
の繰り返し数を格納する。limitは生データの長さ
の上限を格納する。dataは繰り返しデータを格納す
る。また、dsttopは関数encodeが呼び出さ
れたときの符号化データを格納するバッファの先頭アド
レスdstを記憶する。
【0067】関数encodeが呼び出されると、行4
でバッファの先頭アドレスdstの値をdsttopに
格納する。
【0068】次に行5から行57までの第一のforル
ープで、yを0に初期化し、yがheightに等しく
なるまでループを繰り返す。各ループの最後では、yに
1が加算され、srcにwidthすなわち1ラインの
長さが加算される。
【0069】第一のforループの中では行6から行5
6までの第二のforループが実行される。第二のfo
rループでは、xを0に初期化し、xがwidthに等
しくなるまでループを繰り返す。
【0070】第二のforループの中では、まず行7に
てcopyに0を設定する。次に行8にてyが0である
か判定し、yが0であれば先頭ラインなので行24に進
む。yが0でない場合は、直前のラインのデータと比較
するため、まず行9から行11までのwhileループ
を実行する。whileループでは、xがwidthよ
り小さく、かつsrc[x]すなわち現在のラインのx
番目のバイト(現在のバイト)と、src[x−wid
th]すなわち直前のラインのx番目のバイト(現在の
バイトの直上のバイト)が等しい間、行10にてxとc
opyに1を加算する。whileループを抜けた時点
で、copyには直前のラインとデータが連続して一致
する長さ、すなわちコピーカウントが格納され、xはそ
の長さに応じて更新される。次に行12にてxとwid
thが等しいか判定する。xとwidthが等しい場合
は、行末まで連続して直前のラインとデータが一致して
おり、EOLコマンドに符号化することができるので、
行13にて出力バッファに0x00すなわちEOLコマ
ンドを格納し、dstを更新し、行14のbreakに
より第二のforループを終了する。
【0071】xとwidthが等しくない場合は、行1
6から行20までのwhileループを実行する。wh
ileループでは、copyが7より大である間、行1
7から行19までの処理を繰り返す。まず、行17にて
copy2にcopy/8と31の大きくないほうを格
納する。ここでminは2つの引数のうち大きくない引
数を返すマクロである。次に、行18にてCopy L
ongコマンドを出力バッファに格納し、dstを更新
する。次に行19にてcopyから、行18で出力した
Copy Longコマンドに応じたコピーカウントを
減算する。このようにしてCopy Longコマンド
が出力され、whileループを抜けた時点では、co
pyは7以下になっている。
【0072】次に行22にて、現在のバイトの次のバイ
トが現在のラインに残されており、かつsrc[x]す
なわち現在のバイトとsrc[x+1]すなわちその次
のバイトが一致するか判定する。現在のバイトの次のバ
イトが現在のラインに残されていない場合、あるいは現
在のバイトとその次のバイトが一致しない場合は繰り返
しがない場合なので行51に進む。現在のバイトの次の
バイトが現在のラインに残されており、かつsrc
[x]すなわち現在のバイトとsrc[x+1]すなわ
ちその次のバイトが一致する場合は繰り返し数を求める
ため、まず行23にてdataにsrc[x]すなわち
繰り返しデータを格納する。次に行24から行26まで
のforループを実行する。forループでは、初期化
処理として一致した2つのデータを飛ばすためにxに2
を加算するとともに、lenに2を格納し、xがwid
thより小さくかつlenが255より小さい間ループ
を実行する。各ループの最後では、xとlenに1を加
算する。ループ中、行25にて、src[x]すなわち
現在のデータがdataすなわち繰り返しデータと等し
くない場合には、breakによりこのforループを
終了する。このようにして、ループを抜けた時点では、
lenに連続する繰り返しデータの数が格納され、xは
lenの値に応じて更新されている。
【0073】次に行27にて、copyが0であるか判
定する。copyが0でない場合は、Repeat t
hen Rawコマンドに符号化できる可能性がないの
で、行46に進む。copyが0である場合は、行28
にて、lenが7より大きい場合は7を、lenが7よ
り大きくない場合には255を、limitに格納す
る。次に行29にて、後述する関数count_raw
を呼び出すことにより、生データとして格納すべき長さ
をlen2に格納する。次に行30にて、len2が7
より大であるか判定する。len2が7より大でない場
合はRepeatthen Raw Longコマンド
に符号化すべき場合ではないので、行37に進む。le
n2が7より大である場合は、行31にてExtend
コマンドを出力バッファに格納してdstを更新し、行
32にてRepeat thenRaw Longコマ
ンドを出力バッファに格納してdstを更新し、行33
にてdataすなわち繰り返しデータを出力バッファに
格納してdstを更新し、行34にてライブラリ関数m
emcpyにより出力バッファに生データをコピーし、
行35にて行34でコピーした生データの長さに応じて
xとdstを更新し、行36のcontinueで第二
のforループに戻る。
【0074】行30にて、len2が7より大でない場
合は、行37にてlen2が0より大であるか判定す
る。len2が0の場合はRepeat then R
awコマンドに符号化すべき場合ではないので、行46
に進む。len2が0より大である場合は、行38にて
lenが7より大である場合にはExtendコマンド
を出力バッファに格納してdstを更新し、行39にて
Repeat thenRawコマンドを出力バッファ
に格納してdstを更新し、行40にてdataすなわ
ち繰り返しデータを出力バッファに格納してdstを更
新し、行41にてライブラリ関数memcpyにより出
力バッファに生データをコピーし、行42にて行41で
コピーした生データの長さに応じてxとdstを更新
し、行42のcontinueで第二のforループに
戻る。
【0075】行27にてcopyが0でない場合、およ
び行37にてlen2が0の場合は行46にてlenが
7より大である場合にはExtendコマンドを出力バ
ッファに格納してdstを更新し、行47にてCopy
then Repeatコマンドを出力バッファに格
納してdstを更新し、行48にてdataすなわち繰
り返しデータを出力バッファに格納してdstを更新
し、行49のcontinueで第二のforループに
戻る。
【0076】行22にて、現在のバイトの次のバイトが
現在のラインに残されていない場合、あるいは現在のバ
イトとその次のバイトが一致しない場合は行51にて、
後述する関数count_rawを呼び出すことによ
り、生データとして格納すべき長さをlenに格納す
る。次に行52にてlenが7より大である場合にはE
xtendコマンドを出力バッファに格納してdstを
更新し、行53にてCopy then Rawコマン
ドを出力バッファに格納してdstを更新し、行54に
てライブラリ関数memcpyにより出力バッファに生
データをコピーし、行55にて行54でコピーした生デ
ータの長さに応じてxとdstを更新し、第二のfor
ループに戻る。
【0077】このようにして現在のラインが全て処理さ
れてxがwidthと等しくなると、第二のforルー
プを終了し、第一のforループに戻る。各ループの最
後では、yに1が加算され、srcにwidthすなわ
ち1ラインの長さが加算されるので、次のラインの処理
が開始される。このようにして全てのラインの処理が終
了してyがheightと等しくなると、第一のfor
ループを終了し、行58にてdst即ちバッファの終了
アドレスからdsttop即ちバッファの先頭アドレス
を引くことによりバッファに格納したバイト数を求め、
それを戻り値として関数を終了する。
【0078】次に、図7に示すプログラムリストを参照
し、関数count_rawの処理手順の詳細を説明す
る。
【0079】図7は、図6に示した関数count_r
awの詳細を説明する図であり、例えばプログラムはC
言語で記述された関数で構成される。
【0080】図において、行1は関数名、引数、および
戻り値の型を定義する。この関数の関数名はcount
_rawであり、呼び元からビットマップデータの現在
のラインの先頭アドレスsrc、現在位置のラインの先
頭からのオフセットx、ライン番号y、1ラインのバイ
ト数width、生データの長さの上限limitを受
け取り、戻り値として生データとして格納すべき長さを
返す。
【0081】処理の過程で現在位置のラインの先頭から
のオフセットxは現在位置を示すように更新されるが、
C言語の規約により引数は値で渡されるため、更新され
た値は呼びもとの引数には反映されない。
【0082】行3は一時変数lenを定義する。len
は生データとして格納すべき長さを格納する。
【0083】関数count_rawが呼び出される
と、行5から行13までのforループで、lenを0
に初期化し、xがwidthより小でありかつlenが
limitより小である間ループを繰り返す。各ループ
の最後では、xとlenに1が加算される。
【0084】ループ中、まず行6にて、lenが0、す
なわち生データの先頭で、かつ現在のデータの次のデー
タが現在のラインに残されており、かつ現在のデータと
その次のデータが等しい場合は、データの先頭で繰り返
し数が2以上であり、繰り返しとして符号化するべきな
ので、breakによりforループを終了する。
【0085】次に行7にて、現在のデータの次の次のデ
ータが現在のラインに残されており、かつ現在のデー
タ、その次のデータおよびさらにその次のデータがみな
等しい場合は、繰り返し数が3以上であり、繰り返しデ
ータとして符号化するべきなので、breakによりf
orループを終了する。
【0086】次に行8にて、yが0でない、すなわち先
頭のラインでなく、かつ現在のデータと直上のデータが
等しい場合は、行9から行11までを実行する。まず、
行9にて、lenが7以下である場合には、コピーとし
て符号化することにより、生データの長さが7を超えて
Extendコマンドが必要になるために符号が1バイ
ト余計に長くなることを避けることができるため、br
eakによりforループを終了する。次に行10に
て、次のデータが現在のラインに残されていて、かつ次
のデータとその直上のデータが等しい場合は、コピー数
が2以上なので、コピーとして符号化するべきなので、
breakによりforループを終了する。次に行11
にて、次の次のデータが現在のラインに残されていて、
かつ次のデータとその次のデータが等しい場合は、コピ
ー数が1で繰り返し数が2以上なので、コピー+繰り返
しとして符号化するべきなので、reakによりfor
ループを終了する。
【0087】forループを終了する条件が成立しなか
った場合は、forループに戻り、xとlenに1が加
算され、ループを続ける。このようにして、生データに
符号化するべきでないデータに遭遇するか、1ラインの
データを全て処理するか、生データの長さの上限lim
itに達するまでループが続けられる。ループが終了し
た時点では、lenに生データとして符号化されるべき
長さが格納されているので、行14にてlenの値を戻
り値として関数を終了する。
【0088】次に、図8を参照し、図2に示した復号回
路20の詳細ついて説明する。
【0089】図8は、図2に示した復号回路20の詳細
を示すブロック図である。
【0090】図において、コマンドデコード回路31
は、コピーカウンタ32、リピートカウンタ33、生デ
ータカウンタ35の全てが0である場合に、FIFO1
9から図3および図4に示した符号によって構成された
符号化データを受け取り、符号化データをデコードして
コピーカウンタ32、リピートカウンタ33、生データ
カウンタ35にそれぞれ複写数、繰り返し数および生デ
ータ数をそれぞれ出力する。コマンドデコード回路31
は、デコードしたコマンドが繰り返し操作を含むもので
あれば、繰り返しデータをFIFO19から受け取り、
リピートデータレジスタ34に設定する。コマンドデコ
ード回路31は、EOLコマンドをデコードした場合に
は、コピーカウンタ32に複写数を出力するかわりに、
減算回路36にEOL信号を出力する。コマンドデコー
ド回路31がExtendコマンドをデコードした場合
は、次のコマンドのカウントに加算すべき値を内部的に
保持した後に、次のコマンドをFIFO19から受け取
り、デコードを行う。
【0091】コピーカウンタ32は、コマンドデコード
回路31または減算回路36が出力した複写数を保持す
る。リピートカウンタ33は、コマンドデコード回路3
1が出力した繰り返し数を保持する。リピートデータレ
ジスタ34は、コマンドデコード回路31が出力した繰
り返し数を保持する。生データカウンタ35は、コマン
ドデコード回路31が出力した生データ数を保持する。
減算回路36は、コマンドデコード回路31がEOL信
号を出力したときに、ラインレングスレジスタ37とア
ドレスカウンタ38の差を計算し、コピーカウンタ32
に出力する。ラインレングスレジスタ37は、制御回路
17があらかじめ出力した、1ラインのバイト数を保持
する。
【0092】アドレスカウンタ38は、ラインバッファ
39の、現在のアドレスを保持し、コピー出力回路4
0、リピート出力回路41、または生データ出力回路4
2がラインバッファをアクセスする毎にカウントアップ
し、またその結果、ラインレングスレジスタ37が保持
している1ラインのバイト数に達した場合は0に復帰す
る。ラインバッファ39は、少なくとも1ラインの復号
データを保持し、アドレスカウンタ38が保持する現在
のアドレスに従って、復号データの入力または出力を行
う。
【0093】コピー出力回路40は、コピーカウンタ3
2が保持する値が0でない場合に、アドレスカウンタ3
8が示し、ラインバッファ39が保持する直前のライン
のデータを復号データとして出力するとともに、1バイ
ト出力する毎にコピーカウンタ32から1を減算する。
【0094】リピート出力回路41は、コピーカウンタ
32が保持する値が0で、かつリピートカウンタ33が
保持する値が0でない場合に、リピートデータレジスタ
34が保持する繰り返しデータを復号データとして出力
するとともに、アドレスカウンタ38が示すラインバッ
ファ39の位置に、出力した復号データを格納し、また
1バイト出力する毎にリピートカウンタ33から1を減
算する。
【0095】生データ出力回路42は、コピーカウンタ
32が保持する値およびリピートカウンタ33が保持す
る値がともに0で、かつ生データカウンタ34が保持す
る値が0でない場合に、FIFO19に格納された生デ
ータを復号データとして出力するとともに、アドレスカ
ウンタ38が示すラインバッファ39の位置に、出力し
た復号データを格納し、また1バイト出力する毎に生デ
ータカウンタ34から1を減算する。
【0096】コマンドデコード回路31が、Copy
Longコマンドをデコードすると、コピーカウンタ3
2には複写数が、リピートカウンタ33および生データ
カウンタ35には0がそれぞれ設定される。コピーカウ
ンタ32に複写数が設定されると、コピー出力回路40
はラインバッファ39のアドレスカウンタ38が示す位
置のデータを読み取り、復号データとして出力する。ア
ドレスカウンタ38には1が加算され、コピーカウンタ
32からは1が減算される。コピーカウンタ32が0に
なるまでこれが繰り返され、0になるとコマンドデコー
ド回路は次のコマンドのデコードを行う。
【0097】コマンドデコード回路31が、EOLコマ
ンドをデコードすると、リピートカウンタ33および生
データカウンタ35には0がそれぞれ設定される。ま
た、EOL信号が出力され、減算回路36はラインレン
グスレジスタ37とアドレスカウンタ38の差を計算
し、コピーカウンタ32に設定する。コピーカウンタ3
2に複写数が設定されると、以下Copy Longコ
マンドの場合と同様に処理が行われる。
【0098】コマンドデコード回路31が、Copy
then RepeatコマンドまたはCopy th
en Repeat Longコマンドをデコードする
と、コピーカウンタ32には複写数が、リピートカウン
タ33には繰り返し数が、リピートデータレジスタ34
には繰り返しデータが、生データカウンタ35には0が
それぞれ設定される。コピーカウンタ32に複写数が設
定されると、まずCopy Longコマンドの場合と
同様に処理が行われてやがてコピーカウンタ32は0と
なる。次に、リピートカウンタ33に繰り返し数が設定
されているので、リピート出力回路41はリピートデー
タレジスタ34に格納されている繰り返しデータを復号
データとして出力するとともに、ラインバッファ39の
アドレスカウンタ38が示す位置に書き込む。アドレス
カウンタ38には1が加算され、リピートカウンタ33
からは1が減算される。リピートカウンタ33が0にな
るまでこれが繰り返され、0になるとコマンドデコード
回路は次のコマンドのデコードを行う。
【0099】コマンドデコード回路31が、Copy
then RawコマンドまたはCopy then
Raw Longコマンドをデコードすると、コピーカ
ウンタ32には複写数が、リピートカウンタ33には0
が、生データカウンタ35には生データ数がそれぞれ設
定される。コピーカウンタ32に複写数が設定される
と、まずCopy Longコマンドの場合と同様に処
理が行われてやがてコピーカウンタ32は0となる。次
に、生データカウンタ35に生データ数が設定されてい
るので、生データ出力回路41はFIFO19に格納さ
れている生データを復号データとして出力するととも
に、ラインバッファ39のアドレスカウンタ38が示す
位置に書き込む。アドレスカウンタ38には1が加算さ
れ、生データカウンタ35からは1が減算される。生デ
ータカウンタ35が0になるまでこれが繰り返され、0
になるとコマンドデコード回路は次のコマンドのデコー
ドを行う。
【0100】コマンドデコード回路31が、Repea
t then Rawコマンド、Repeat Lon
g then RawコマンドまたはRepeat t
hen Raw Longコマンドをデコードすると、
コピーカウンタ32には0が、リピートカウンタ33に
は繰り返し数が、リピートデータレジスタ34には繰り
返しデータが、生データカウンタ35には生データ数が
それぞれ設定される。リピートカウンタ33に繰り返し
数が設定されると、Copy then Repeat
コマンドの場合と同様に繰り返しデータが出力されやが
てリピートカウンタ33は0となる。次に、生データカ
ウンタ35に生データ数が設定されているので、Cop
y then Rawコマンドの場合と同様に生データ
が出力されやがて生データカウンタ35は0となる。
【0101】(第2の実施形態)上述の実施形態では、
復号回路20はハードウェアにより構成されていたが、
これに替えてソフトウェアで復号するようにしてもよ
い。
【0102】また、上述の実施形態では、使用されてい
ない符号コードがあった。例えば、Copy Long
コマンドでは繰り返し数0は使用されないのでビット列
「11000000」は未使用であった。これに替え
て、このコードに別のコマンドを割り当てるか、あるい
は下駄をはかせて0から31までの数で1から32まで
の長さをあらわすように定義してもよい。
【0103】また、上述の実施形態ではRepeat
then Rawコマンドを定義しているが、これに替
えてこのコマンドを定義せず、代わりに他のコマンド、
例えばCopy LongコマンドやExtendコマ
ンドの長さの範囲を増やすように定義してもよい。
【0104】また、上述の実施形態では符号化にあたっ
て行末で処理を区切っているが、これにかえて行末で処
理を区切らず、あるラインの最右のデータに次のライン
の最左のデータが続いているものとして処理を行っても
よい。
【0105】
【他の実施形態】なお、本発明は、複数の機器(例えば
ホストコンピュータ、インタフェイス機器、リーダ、プ
リンタなど)から構成されるシステムに適用しても、一
つの機器からなる装置(例えば、複写機、ファクシミリ
装置など)に適用してもよい。
【0106】また、本発明の目的は、前述した実施形態
の機能を実現するソフトウェアのプログラムコードを記
録した記憶媒体(または記録媒体)を、システムあるい
は装置に供給し、そのシステムあるいは装置のコンピュ
ータ(またはCPUやMPU)が記憶媒体に格納されたプログ
ラムコードを読み出し実行することによっても、達成さ
れることは言うまでもない。この場合、記憶媒体から読
み出されたプログラムコード自体が前述した実施形態の
機能を実現することになり、そのプログラムコードを記
憶した記憶媒体は本発明を構成することになる。また、
コンピュータが読み出したプログラムコードを実行する
ことにより、前述した実施形態の機能が実現されるだけ
でなく、そのプログラムコードの指示に基づき、コンピ
ュータ上で稼働しているオペレーティングシステム(OS)
などが実際の処理の一部または全部を行い、その処理に
よって前述した実施形態の機能が実現される場合も含ま
れることは言うまでもない。
【0107】さらに、記憶媒体から読み出されたプログ
ラムコードが、コンピュータに挿入された機能拡張カー
ドやコンピュータに接続された機能拡張ユニットに備わ
るメモリに書込まれた後、そのプログラムコードの指示
に基づき、その機能拡張カードや機能拡張ユニットに備
わるCPUなどが実際の処理の一部または全部を行い、そ
の処理によって前述した実施形態の機能が実現される場
合も含まれることは言うまでもない。
【0108】本発明を上記記憶媒体に適用する場合、そ
の記憶媒体には、先に説明した(図6または図7に示
す)プログラムコードが格納されることになる。
【0109】
【発明の効果】以上に説明したように、本発明によれ
ば、符号化にあたって直左および直上のデータを参照す
るので、画像データのような水平・垂直両方向に相関が
あるデータを高い圧縮率で符号化することができるとと
もに、直左および直上のデータ以外のデータを参照しな
いため、符号化における計算量が小さく、ソフトウェア
により符号化を行った場合でも高速に符号化を行うこと
ができる。
【0110】また、本発明によれば、複数の操作を同時
に符号化し、あるいは復号するため、画像データを高い
圧縮率で符号化することができる。
【図面の簡単な説明】
【図1】本発明の第1実施形態を示す符号化方法および
復号化方法を適用可能な印刷システムの構成を説明する
ブロック図である。
【図2】本発明に係る符号化方法および復号化方法を適
用可能な印刷システムの構成を説明するブロック図であ
る。
【図3】図2に示した符号化プログラムが生成する符号
化テーブルの一例を示す図である。
【図4】図2に示した符号化プログラムが生成する符号
化テーブルの一例を示す図である。
【図5】図3および図4に示した符号の具体例であり、
図2に示すラッチ回路がラッチするデータ、および演算
して出力する演算結果の一例を示す図である。
【図6】図2に示した符号化プログラムの符号化手順の
詳細を示す図である。
【図7】図2に示した符号化プログラムの符号化手順の
詳細を示す図である。
【図8】図2に示した復号化回路の詳細を示す図であ
る。
【符号の説明】
1 ホストコンピュータ 2 CPU 6 ホストパラレルポート 7 プリンタ 11 アプリケーションプログラム 12 プリンタドライバプログラム 15 通信プログラム 16 プリンタパラレルポート 17 制御回路 19 FIFOメモリ 20 復号回路 21 シフトレジスタ 22 プリンタエンジン

Claims (22)

    【特許請求の範囲】
  1. 【請求項1】 受信した符号列に基づき、該符号列の繰
    り返し、複写、生データの置換のいずれに該当するかを
    判定する工程と、 前記判定に従い符号列を、繰り返し、複写、生データの
    置換のうち少なくとも2つの変換操作の組合わせにより
    復号する工程と、 前記復号されたそれぞれのデータを所定のアドレスに格
    納するアドレスの管理を行なう工程と、 前記復号の結果を前記アドレスの管理に従って所定のア
    ドレス順に出力する工程と、 を備えることを特徴とする復号化方法。
  2. 【請求項2】 前記繰り返しとは、同一データバイトの
    繰返しであることを特徴とする請求項1に記載の復号化
    方法。
  3. 【請求項3】 前記複写とは、直前のラインのデータの
    複写であることを特徴とする請求項1に記載の復号化方
    法。
  4. 【請求項4】 前記生データとは、前記与えられたコマ
    ンドコードのデータ列の直接の指定であることを特徴と
    する請求項1に記載の復号化方法。
  5. 【請求項5】 前記受信した符号列は、水平及び垂直方
    向に相関する2次元以上の画像データに関するものであ
    ることを特徴とする請求項1に記載の復号化方法。
  6. 【請求項6】 与えられたコマンドコードのビット列に
    基づき、該ビット列の繰り返し、複写、生データの置換
    とのいずれに該当するかを判定する工程と、 前記判定に基づき、繰り返し、複写、生データそれぞれ
    のデータ長さを算出する工程と、 前記算出に従い、前記符号化の繰り返し、複写、生デー
    タの置換の結果のうち少なくとも2つを組合わせて1バ
    イトのコマンドとして符号化する工程と、 を備えることを特徴とする符号化方法。
  7. 【請求項7】 前記繰り返しとは、同一データバイトの
    繰返しであることを特徴とする請求項6に記載の符号化
    方法。
  8. 【請求項8】 前記複写とは、直前のラインのデータの
    複写であることを特徴とする請求項6に記載の符号化方
    法。
  9. 【請求項9】 前記生データとは、前記与えられたコマ
    ンドコードのデータ列の直接の指定であることを特徴と
    する請求項6に記載の符号化方法。
  10. 【請求項10】 前記与えられたコマンドコードは、水
    平及び垂直方向に相関する2次元以上の画像データに関
    するものであることを特徴とする請求項6に記載の符号
    化方法。
  11. 【請求項11】 水平及び垂直方向に相関する2次元以
    上の符号化画像データを復号化するためのプログラムを
    格納したコンピュータ可読の記憶媒体であって、該プロ
    グラムが、 受信した符号列に基づき、該符号列の繰り返し、複写、
    生データの置換のいずれに該当するかを判定する工程の
    コードと、 前記判定に従い符号列を、繰り返し、複写、生データの
    置換のうち少なくとも2つの変換操作の組合わせにより
    復号する工程のコードと、 前記復号されたそれぞれのデータを所定のアドレスに格
    納するアドレスの管理を行なう工程のコードと、 前記復号の結果を前記アドレスの管理に従って所定のア
    ドレス順に出力する工程のコードと、 を備えることを特徴とする記憶媒体。
  12. 【請求項12】 水平及び垂直方向に相関する2次元以
    上の画像データを符号化するためのプログラムを格納し
    たコンピュータ可読の記憶媒体であって、該プログラム
    が、 与えられたコマンドコードのビット列に基づき、該ビッ
    ト列の繰り返し、複写、生データの置換とのいずれに該
    当するかを判定する工程のコードと、 前記判定に基づき、繰り返し、複写、生データそれぞれ
    のデータ長さを算出する工程のコードと、 前記算出に従い、前記符号化の繰り返し、複写、生デー
    タの置換の結果のうち少なくとも2つを組合わせて1バ
    イトのコマンドとして符号化する工程のコードと、 を備えることを特徴とする記憶媒体。
  13. 【請求項13】 受信した符号列に基づき、該符号列の
    繰り返し、複写、生データの置換のいずれに該当するか
    を判定する手段と、 前記判定に従い符号列を、繰り返し、複写、生データの
    置換のうち少なくとも2つの変換操作の組合わせにより
    復号する手段と、 前記復号されたそれぞれのデータを所定のアドレスに格
    納するアドレスの管理を行なう手段と、 前記復号の結果を前記アドレスの管理に従って所定のア
    ドレス順に出力する手段と、 を備えることを特徴とする復号化装置。
  14. 【請求項14】 前記繰り返しとは、同一データバイト
    の繰返しであることを特徴とする請求項13に記載の復
    号化装置。
  15. 【請求項15】 前記複写とは、直前のラインのデータ
    の複写であることを特徴とする請求項13に記載の復号
    化装置。
  16. 【請求項16】 前記生データとは、前記与えられたコ
    マンドコードのデータ列の直接の指定であることを特徴
    とする請求項13に記載の復号化装置。
  17. 【請求項17】 前記受信した符号列は、水平及び垂直
    方向に相関する2次元以上の画像データに関するもので
    あることを特徴とする請求項13に記載の復号化装置。
  18. 【請求項18】 与えられたコマンドコードのビット列
    に基づき、該ビット列の繰り返し、複写、生データの置
    換とのいずれに該当するかを判定する手段と、 前記判定に基づき、繰り返し、複写、生データそれぞれ
    のデータ長さを算出する手段と、 前記算出に従い、前記符号化の繰り返し、複写、生デー
    タの置換の結果のうち少なくとも2つを組合わせて1バ
    イトのコマンドとして符号化する手段と、 を備えることを特徴とする符号化装置。
  19. 【請求項19】 前記繰り返しとは、同一データバイト
    の繰返しであることを特徴とする請求項18に記載の符
    号化装置。
  20. 【請求項20】 前記複写とは、直前のラインのデータ
    の複写であることを特徴とする請求項18に記載の符号
    化装置。
  21. 【請求項21】 前記生データとは、前記与えられたコ
    マンドコードのデータ列の直接の指定であることを特徴
    とする請求項18に記載の符号化装置。
  22. 【請求項22】 前記与えられたコマンドコードは、水
    平及び垂直方向に相関する2次元以上の画像データに関
    するものであることを特徴とする請求項18に記載の符
    号化装置。
JP22928099A 1999-08-13 1999-08-13 符号化方法及び符号化装置、復号化方法及び復号化装置、記憶媒体 Pending JP2001053620A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP22928099A JP2001053620A (ja) 1999-08-13 1999-08-13 符号化方法及び符号化装置、復号化方法及び復号化装置、記憶媒体
US09/637,626 US6785424B1 (en) 1999-08-13 2000-08-14 Encoding method and apparatus for compressing a data structure having two or more dimensions, decoding method, and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP22928099A JP2001053620A (ja) 1999-08-13 1999-08-13 符号化方法及び符号化装置、復号化方法及び復号化装置、記憶媒体

Publications (1)

Publication Number Publication Date
JP2001053620A true JP2001053620A (ja) 2001-02-23

Family

ID=16889651

Family Applications (1)

Application Number Title Priority Date Filing Date
JP22928099A Pending JP2001053620A (ja) 1999-08-13 1999-08-13 符号化方法及び符号化装置、復号化方法及び復号化装置、記憶媒体

Country Status (2)

Country Link
US (1) US6785424B1 (ja)
JP (1) JP2001053620A (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005294934A (ja) * 2004-03-31 2005-10-20 Alfa Vision Kk 画像データの圧縮方法
JP2006229363A (ja) * 2005-02-15 2006-08-31 Canon Inc データ復号化装置、データ復号化方法、記録装置、
US7245396B2 (en) 2001-12-06 2007-07-17 Canon Kabushiki Kaisha Image data coding apparatus, image data decoding apparatus, image data coding method and image data decoding method
JP2008504734A (ja) * 2004-06-25 2008-02-14 アボセント コーポレイション デジタル映像圧縮コマンド優先度
US8385429B2 (en) 2002-10-01 2013-02-26 Avocent Corporation Video compression encoder
US8660194B2 (en) 2006-04-28 2014-02-25 Avocent Corporation DVC delta commands
US8805096B2 (en) 2004-06-25 2014-08-12 Avocent Corporation Video compression noise immunity
US9560371B2 (en) 2003-07-30 2017-01-31 Avocent Corporation Video compression system

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4440052B2 (ja) * 2004-09-14 2010-03-24 キヤノン株式会社 画像符号化装置、画像符号化方法
JP2009012245A (ja) * 2007-07-03 2009-01-22 Brother Ind Ltd データ送信装置及びプログラム
US8488894B2 (en) * 2010-11-12 2013-07-16 Dynacomware Taiwan Inc. Method and system for dot-matrix font data compression and decompression
US20160117179A1 (en) * 2014-10-24 2016-04-28 Advanced Micro Devices, Inc. Command replacement for communication at a processor
US11093635B2 (en) * 2016-05-05 2021-08-17 The Johns Hopkins University Apparatus and method for private information retrieval

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0823447A (ja) 1994-07-08 1996-01-23 Fuji Xerox Co Ltd 符号化処理装置及び符号化復号化処理装置
US5617517A (en) * 1994-09-20 1997-04-01 Seiko Epson Corporation Two-dimensional method and system for compressing bi-level images
EP0870277B1 (en) * 1995-07-03 2004-06-02 Electronics for Imaging, Inc. Image rendering for page printers
JPH09289591A (ja) 1996-04-23 1997-11-04 Canon Inc 画像符号化装置、画像復号化装置及びそれらの方法
US5877711A (en) * 1997-09-19 1999-03-02 International Business Machines Corporation Method and apparatus for performing adaptive data compression
JPH11161782A (ja) * 1997-11-27 1999-06-18 Seiko Epson Corp カラー画像の符号化方法およびその符号化装置ならびにカラー画像の復号化方法およびその復号化装置

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7245396B2 (en) 2001-12-06 2007-07-17 Canon Kabushiki Kaisha Image data coding apparatus, image data decoding apparatus, image data coding method and image data decoding method
US8385429B2 (en) 2002-10-01 2013-02-26 Avocent Corporation Video compression encoder
US9743095B2 (en) 2002-10-01 2017-08-22 Avocent Corporation Video compression encoder
US9560371B2 (en) 2003-07-30 2017-01-31 Avocent Corporation Video compression system
JP2005294934A (ja) * 2004-03-31 2005-10-20 Alfa Vision Kk 画像データの圧縮方法
JP4520197B2 (ja) * 2004-03-31 2010-08-04 アルファビジョン株式会社 画像データの圧縮方法
JP2008504734A (ja) * 2004-06-25 2008-02-14 アボセント コーポレイション デジタル映像圧縮コマンド優先度
US8805096B2 (en) 2004-06-25 2014-08-12 Avocent Corporation Video compression noise immunity
JP2006229363A (ja) * 2005-02-15 2006-08-31 Canon Inc データ復号化装置、データ復号化方法、記録装置、
JP4642501B2 (ja) * 2005-02-15 2011-03-02 キヤノン株式会社 データ復号化装置、データ復号化方法、記録装置
US8660194B2 (en) 2006-04-28 2014-02-25 Avocent Corporation DVC delta commands

Also Published As

Publication number Publication date
US6785424B1 (en) 2004-08-31

Similar Documents

Publication Publication Date Title
JP2001053620A (ja) 符号化方法及び符号化装置、復号化方法及び復号化装置、記憶媒体
EP0703549B1 (en) A two dimensional method and system for compressing bi-level images
US7814251B2 (en) DMA transfer control system that performs data decode and data transfer and that generates a no operation (NOP) interrupt signal to end the DMA transfer processing in response to a NOP designation
JP2002043950A (ja) 符号化方法および装置並びに復号化方法および装置
JP3619025B2 (ja) 符号化方法及び符号化装置
JP2003174564A (ja) 画像処理装置、画像処理方法、プログラム、及び記憶媒体
JP2003244448A (ja) 符号化方法及び復号方法
US20150302279A1 (en) Run Length Compression Mechanism
JP2001217722A (ja) 情報符号化装置及び情報符号化方法及びコンピュータ読み取り可能な記憶媒体
JP3260862B2 (ja) パラレルデータ伝送装置
JP3213124B2 (ja) ファクシミリ装置
JP2002223360A (ja) 符号化装置及び方法、復号装置及び方法、及び記憶媒体、並びにプリンタドライバ及びそれを格納する記憶媒体
JP2790755B2 (ja) ファクシミリ装置
JP3683667B2 (ja) プリンタコントローラ
JP2003152549A (ja) 復号方法、復号装置、コンピュータプログラム及び記録媒体
JP3313462B2 (ja) ファクシミリ装置
JPS6022876A (ja) 画像符号化方式
JP3842650B2 (ja) 画像処理装置及び画像処理方法
JPS6233793B2 (ja)
JPH07195757A (ja) ページプリンタ
JP2984053B2 (ja) 画像処理装置
JP2005210488A (ja) データ復号化装置
JP2000333018A (ja) 符号化装置、復号化装置及び符号化方法、復号化方法
JPS62274988A (ja) デ−タ圧縮符号化処理方式
JP2006238318A (ja) データ復号化装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040517

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040524

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040723

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20040809