JPH0537794A - 符号化および復号化方法 - Google Patents

符号化および復号化方法

Info

Publication number
JPH0537794A
JPH0537794A JP3192919A JP19291991A JPH0537794A JP H0537794 A JPH0537794 A JP H0537794A JP 3192919 A JP3192919 A JP 3192919A JP 19291991 A JP19291991 A JP 19291991A JP H0537794 A JPH0537794 A JP H0537794A
Authority
JP
Japan
Prior art keywords
code
run length
line
integrated
change point
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.)
Granted
Application number
JP3192919A
Other languages
English (en)
Other versions
JP2912736B2 (ja
Inventor
Kazuo Kurita
和夫 栗田
Mikio Mizutani
幹男 水谷
Nobuhiko Noma
伸彦 野間
Tsukasa Sakai
司 坂井
Osamu Noguchi
修 野口
Hiroyuki Nemoto
博幸 根本
Keiichi Tomita
桂一 冨田
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.)
Panasonic System Solutions Japan Co Ltd
Original Assignee
Matsushita Graphic Communication Systems 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 Matsushita Graphic Communication Systems Inc filed Critical Matsushita Graphic Communication Systems Inc
Priority to JP3192919A priority Critical patent/JP2912736B2/ja
Priority to DE69222711T priority patent/DE69222711T2/de
Priority to EP92307027A priority patent/EP0526249B1/en
Publication of JPH0537794A publication Critical patent/JPH0537794A/ja
Priority to US08/556,571 priority patent/US5587798A/en
Application granted granted Critical
Publication of JP2912736B2 publication Critical patent/JP2912736B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/005Statistical coding, e.g. Huffman, run length coding
    • 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
    • H04N1/411Bandwidth or redundancy reduction for the transmission or storage or reproduction of two-tone pictures, e.g. black and white pictures
    • H04N1/413Systems or arrangements allowing the picture to be reproduced without loss or modification of picture-information
    • H04N1/419Systems or arrangements allowing the picture to be reproduced without loss or modification of picture-information in which encoding of the length of a succession of picture-elements of the same value along a scanning line is the only encoding step

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Image Processing (AREA)

Abstract

(57)【要約】 【目的】 符号化、復号化をソフトウェアで行う。 【構成】 生データ、MHコード、MRコードの相互変
換を中間コードとしての積算ランレングスを用いて行
う。また原稿サイズの縮小、拡大を積算ランレングスに
倍率を乗じて行う。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、ファクシミリにおける
符号化および復号化方法に関する。
【0002】
【従来の技術】従来のファクシミリ装置では、スキャナ
で読み取られた生データ(NCデータ,Non −Coded Fo
rmat)を圧縮する場合、および受信したMH(Modified
Huffman Format )データあるいはMR(Modified Rea
d Format)データを伸張する場合には、NCデータを一
括してMHデータあるいはMRデータに変換、または、
MHデータあるいはMRデータからNCデータに復元す
るようにしていた。このような符号化・復号化は、専用
の符号・復号化LSIを用いて行ったり、またはファク
シミリ装置のCPUを用いて汎用の算術演算/論理演算
により行われていた。
【0003】また、ファクシミリ装置のスキャナで読み
取られた原稿の画情報は、画素が1ビットに対応するビ
ット列として1ライン単位でメモリ上に書き込まれる。
これらの画情報の解像度変換(例えば、B4サイズの原
稿をA4サイズに縮小)を行う場合には、1ライン毎の
ビット列から予め定められた間隔(6,7,7,6ビッ
ト毎)で間引く(縮小の場合)などの処理を行ってい
た。
【0004】
【発明が解決しようとする課題】専用の符号・復号化L
SIを用いる場合、そのLSI自身が必要になるのみな
らず、その外付けLSIを制御しなければならず、デー
タの受け渡しに際して、割り込み/DMA(Direct Mem
ory Access)/ポーリングなどの手段を必要とし、ファ
クシミリ装置のCPUの負担が増大していた。また汎用
の算術演算/論理演算による場合には、ファクシミリ装
置のCPUの負担が軽いものしかデータの圧縮/伸張を
行うことができなかった。
【0005】また、解像度変換を行う場合、1ラインの
ビット列に対する間引き処理等の操作が発生し、解像度
変換に係わる処理が煩雑となっていた。ファクシミリ装
置が受信電文を記憶することのできるメモリ機の場合、
メモリに蓄えられているMRコードを再度NCデータに
戻してこの解像度変換処理を行う必要があった。
【0006】本発明は、上述の問題点に鑑みてなされた
もので、NCデータ、MHデータ、MRデータの相互変
換を中間コードとしての積算ランレングスを用いて行
い、専用の符号・復号化ハードウェアを用いない符号化
および復号化方法を提供することを目的とする。
【0007】
【課題を解決するための手段】上記目的を達成するた
め、本発明は、1ラインの生データを1ラインの始から
白黒の変化点ごとに変化点の直前の画素の色と変化点直
前の画素までの積算値で定義する積算ランレングスを求
め、この積算ランレングスよりMHコードに変換するも
のである。
【0008】また、1ラインの生データを1ラインの始
から白黒の変化点ごとに変化点の直前の画素の色と変化
点直前までの画素の積算値で定義する積算ランレングス
を求め、この積算ランレングスよりMRコードに変換す
ることを特徴とするものである。
【0009】また、MHコードを1ラインの生データを
1ラインの始から白黒の変化点ごとに変化点直前の画素
の色と変化点直前の画素までの積算値で定義する積算ラ
ンレングスに変換し、この積算ランレングスを生データ
に変換するものである。
【0010】また、MRコードを1ラインの生データを
1ラインの始から白黒の変化点ごとに変化点直前の画素
の色と変化点直前の画素までの積算値で定義する積算ラ
ンレングスに変換し、この積算ランレングスを生データ
に変換するものである。
【0011】また、MHコードを1ラインの生データを
1ラインの始から白黒の変化点ごとに変化点直前の画素
の色と変化点直前の画素までの積算値で定義する積算ラ
ンレングスに変換し、この積算ランレングスをMRコー
ドに変換するものである。
【0012】また、MRコードを1ラインの生データを
1ラインの始から白黒の変化点ごとに変化点直前の画素
の色と変化点直前の画素までの積算値で定義する積算ラ
ンレングスに変換し、この積算ランレングスをMHコー
ドに変換するものである。
【0013】また、前記積算ランレングスに倍率を乗じ
拡大・縮小を行うものである。
【0014】また、前記MHコードよりEOLを検出
後、前記積算ランレングスに変換するものである。
【0015】また、前記MRコードよりEOLを検出
後、前記積算ランレングスに変換するものである。
【0016】また、前記MHコードを前記積算ランレン
グスに変換する際、1ラインの画素数を超えた場合は、
そのラインはエラーとし、次のラインは前のデータを3
画素戻した画素を次のラインのスタート画素として変換
を行うものである。
【0017】また、前記MRコードを前記積算ランレン
グスに変換する際、1ラインの画素数を超えた場合は、
そのラインはエラーとし、次のラインは前のデータを3
画素戻した画素を次のラインのスタート画素として変換
を行うものである。
【0018】また、前記積算ランレングスをMRコード
に変換する場合、変化点モードとして水平モードが選択
された後、a0 となる積算ランレングスの値に対し参照
ラインの変化点b1 を前の変化点b1 の次の積算ランレ
ングスの位置より順次所定数の積算ランレングスの位置
をサーチし、見つからない時はバイナリーサーチにより
検出するものである。
【0019】また、前記積算ランレングスをMHコード
またはMRコードに変換するに際し、または、MHコー
ドまたはMRコードを前記積算ランレングスに変換する
に際し、または、前記積算ランレングスに倍数を乗じ拡
大・縮小するに際し、または、MHコードまたはMRコ
ードよりEOLを検出後、前記積算ランレングスに変換
するに際し、所定ステップで割り込みに対応できるよう
にしたものである。
【0020】
【作用】NCデータ、MHデータ、MRデータの相互の
変換を中間コードとして積算ランレングスを用いて行
う。このためMHコードより積算ランレングスへの変
換、積算ランレングスよりMHコードへの変換、MRコ
ードより積算ランレングスへの変換、積算ランレングス
よりMRコードへの変換、NCコードより積算ランレン
グスへの変換、積算ランレングスよりNCコードへの変
換を行う6種類の専用命令を作成することにより、符号
化・復号化処理をソフトウエアで実行できる。この専用
命令をマイクロプログラムで実行することにより符号・
復号化の処理を高速に実施でき、専用の符号・復号化L
SIを省略することが可能となる。
【0021】また、積算ランレングスに倍率を乗ずるこ
とにより、画像の縮小や拡大が容易にできる。
【0022】また、MHコードやMRコードからEOL
を検出後、積算ランレングスに変換することにより、E
OLの検出を効果的に行うことができる。
【0023】また、MHコード、MRコードを積算ラン
レングスに変換する際、1ラインの画素数を超えた場
合、そのラインはエラーとし、次のラインは前のデータ
を3画素戻した画素を次のラインのスタート画素として
変換を行うと、エラーが次のラインまで波及しない。こ
れはCCITTの勧告T.4のターミネイティング符号
表によると×××000の形式をしており下3桁を見る
と0が3桁以上続く、白ランレングス又は黒ランレング
スはないので、3画素分戻すことにより、次のラインの
EOLから正しい変換が行えるようになる。
【0024】また、積算ランレングスをMRコードに変
換する場合、変化点モードとして水平モードが選択され
た後、a0 となる積算ランレングスの値に対し参照ライ
ンの変化点b1 を前の変化点b1 の次の積算ランレング
スの位置より順次所定数の積算ランレングスの位置をサ
ーチし、見つからないときはバイナリーサーチを行うこ
とにより、多くの場合、最初の順次に行う所定数の積算
ランレングスの位置より検出でき、これで見つからない
場合、バイナリーサーチを行うことにより、効果的なサ
ーチを行うことができる。
【0025】また、積算ランレングスとMHコード、M
Rコード、NCコードとの変換、積算ランレングスに倍
数を乗ずる処理、EOLの検出処理の所定ステップで割
り込みに対応できるようにすることにより、割り込みに
迅速に対応できる。
【0026】
【実施例】以下、本発明の実施例を図面を参照して説明
する。図1は符号・復号化命令の関係を示す図である。
NCはNon −Formatでスキャナより読み込まれた画像デ
ータ、いわゆる生データを表す。RLは積算ランレング
スを示し、Run −Length Format である。MH,MRは
それぞれCCITTのT.4勧告のMHコード,MRコ
ードである。NC2RLはNCコードよりRLへの変換
を示し、MH2RLも同様にMHコードよりRLへの変
換を示す。RESCNVはRLに倍率を乗じて解像度を
変換することを示し、B4よりA4への矢印はB4サイ
ズの原稿よりA4サイズの原稿への変換を示す。またメ
モリ付きファクシミリ装置の場合、メモリにはMRコー
ドで格納されることを示す。このように中間コードRL
を介してNCコード,MHコード,MRコード間の変換
が行われる。
【0027】図2は積算ランレングスRLを生データN
Cより生成する場合の説明図である。生データは白画素
列、黒画素列が交互に並んだデータである。RLは生デ
ータの1ラインの最初に白画素がないときはこれを0と
して必ず最初は白画素より始め、生データの3黒画素を
黒3とし、次の2白画素は積算して白5と表す。1ライ
ンの最後は終了コードとして8000を記入する。
【0028】図3は符号化系命令のメモリ構成を示す。
各CODEC(符号・復号化)命令のパラメータテーブ
ルはマイクロRAMにセットされ、各CODEC命令実
行時に参照されるCODEC用変換テーブルはユーザR
OMに配置される。ランレングステーブルはユーザRA
Mに配置される。これにより、1ライン分の生データを
読み込んでNC2RLを行い、RL2MHまたはRL2
MRを行いMH/MRデータバッファに格納する操作を
繰り返して符号化を行う。
【0029】図4は復号化命令系統のメモリ構成を示
す。ユーザRAMのMH/MRデータバッファに格納さ
れたデータを1ライン分の生データに変換する操作を繰
り返して復号化を行う。
【0030】図5は符号化時のフロー図である。 ステップ(1)で生データからランレングステーブルを
作成する。ランレングステーブルとは図2で示すよう
に、積算ランレングスの集まりである。 ステップ(2)でB4サイズからA4サイズへ変換した
ランレングステーブルを作成し、 ステップ(3)でKパラメータによりMH/MRに分岐
する。KパラメータはT.4勧告の値である。 ステップ(4)でEOL+タグビットをアプリケーショ
ンプログラムでセットし、 ステップ(5)でランレングステーブルからMHコード
を作成し、又は、 ステップ(6)でランレングステーブルからMRコード
を作成し、 ステップ(7)で0−Fi11をアプリケーションプログ
ラムで付加する。 ステップ(8)でRTC(制御復帰符号)をアプリケー
ションプログラムで付加する。
【0031】図6は復号化時のフロー図である。 ステップ(1)で受信した圧縮データからEOLをサー
チする。 ステップ(2)でタグビットをチェックする。タグビッ
トが1のときは次のラインはMHコード、0のときはM
Rコードである。 ステップ(3)でMHコードをランレングステーブルに
変換する。 ステップ(4)でMRコードをランレングステーブルに
変換する。 ステップ(5)でランレングステーブルを生データに変
換する。
【0032】次に原稿送信について説明する。図7〜図
9は原稿送信時のフロー図である。図7〜図9は図5の
詳細説明図である。
【0033】図7において、オペレータによって送信が
指示されると、相手機に発呼し、制御信号の送信を行う
(S1,S2,S3)。
【0034】図10はメモリに格納されるデータの形式を
示す。(a)はスキャナーによって読み込まれた生デー
タが各アドレスNC ADRに1バイトで格納される状
態を表し、TOTALは1ラインのビット数を示す。
(b)は積算ランレングスRLが各アドレスRL AD
Rに2バイトで格納されている状態を示す。(c)はR
Lを作成するためのワークエリアCHKBITで2バイ
トよりなり、図15に示すRLの格納形式と同じである。
【0035】図7に戻り生データの先頭アドレスをセッ
トし(S4a)、積算ランレングスの先頭アドレスをセ
ットし(S4b)、1ラインのビット数をセットし(S
4c)、CHKBITを00にセット(S4d)する。
RLの先頭は必ず白ビットとするので図10(c)のCO
LORは0である。次にNC2RLの変換を行うが(S
5)、詳細は後述する。
【0036】図8において、受信側のKパラメータをチ
ェックし(S6,S7)、1次元(MH)である場合に
は、符号化ラインの積算ランレングスの先頭アドレスを
セットし(S8a)、又RL2MHにより変換されて生
成されるMHコードの符号化データの先頭アドレスをセ
ットし(S8b)、RL2MHの変換のワークエリアC
HKBITEをS4dと同様に00にセットする。次に
EOLとタグビット1を付加し(S9)、後述するRL
2MH変換をする(S10) 。
【0037】Kパラメータが2次元(MR)の場合(S
7)、参照ラインの積算ランレングスの先頭アドレスを
セットし(S11a)、符号化ラインの積算ランレングスの
先頭アドレスをセット(S11b)する。また、MRコー
ドを生成する格納エリアの符号化データの先頭アドレス
をセットし(S11c)、CHKBITEをS4dと同様
に00にセットする(S11d)。また、MRコードに符
号化するときのa0 ,a2 ,b0 のワークエリアA0,
A2,B0をそれぞれ00にセットする(S11e)。次
にEOLとタグビット0を付加し(S12) 、後述するR
L2MR変換を行い(S13) 、0フィル(Fill) の付加
を行う(S14) 。
【0038】このようにして図9に示すように1ライン
づつ符号化を行い1頁が終了すると(S15) 、制御復帰
符号RTCを付加し(S16) 、制御信号送受信を行い
(S17) 、回線を断とする(S18) 。
【0039】次に受信動作について図11〜図13を用いて
説明する。図11〜図13は図6の詳細を示す。図11におい
て、着信があり (S20) 、回線が接続されると(S21)
、制御信号の送・受信が行われる(S22) 。受信した
データの先頭アドレスをセットし (S23a)、1ライン
の最初のデータであるか否かを示す1バイトワークエリ
アfirst を00にセットする(S23b)。次にEOLを
サーチする後述するEOLSRCを行う(S24) 。
【0040】図12において、タグビットが0であれば2
次元(MR)とし(S25) 、MR2RL変換を行うた
め、参照ラインの積算ランレングスの先頭アドレスをセ
ットし(S26a)、復号化ラインの積算ランレングスの
先頭アドレスをセットし(S26b)、復号化するライン
の受信データの先頭アドレスをセットする(S26c)。
各ワークエリアfirst ,CHKBITD,A0,B0を
00にセットし(S26d)、後述するMR2RL変換を
行う。またタグビットが1であれば1次元(MH)とし
(S25) 、復号化ラインの積算ランレングスの先頭アド
レスをセットし(S28a)、復号化するラインの受信デ
ータ先頭アドレスをセットし(S28b)、ワークエリア
first ,CHKBITDに00を代入(S28c)して初
期化し、後述するMH2RL変換をする(S29) 。
【0041】MR2RL,MH2RL変換でエラーが発
生したかチェックし(S30)、発生していればエラー復
旧処理を行う(S31)。
【0042】図14はエラーが発生した場合の処理の一例
を示す図である。1ラインが1728ビットよりなる場合、
最後のデータ0111(T.4ターミネイティング符号
で白2)が0011に化けた場合、ラインの終わりにつ
くEOLの先頭000と合わさると、0011000は
ターミネイティング符号で白28を表す。この場合、白2
であれば1728ビットになるが白28となると1754ビットと
なり1ラインのビット数を超える。そこでエラーと判断
される。この場合、次のラインのEOLの先頭3つの0
が取られた後から、つまり000000001から変換
作業を行うと、EOLが検出できず、このラインもエラ
ーが波及してしまう。そこでこのようなときは3ビット
戻して、つまりEOLの先頭から次のラインの処理をす
ればよい。この3ビットというのは、ターミネイティン
グ表をみると後半に0が続くコードは、000と3つ続
く場合が最も多く0が続く場合なので、これに基づき決
めたものである。
【0043】エラーの発生がなければ(S30) 、データ
の先頭に2つ目のEOLが検知されたか判断し(S32)
、検知されれば連続ページがあるか判断し、あればS2
2に戻り(S33) 、なければ終了する。先頭で2つ目の
EOLが検出されなければ次の処理に移行する。
【0044】次に図13に示すように、後述するRL2N
Cの準備として、積算ランレングスの先頭アドレスをセ
ットし(S34a)、生データの先頭アドレスをセットし
(S34b)、ワークエリアCHKBITDを00とし
(S34c)、RL2NC変換を行い(S35)、終了後次
のラインの処理に移る。
【0045】次に上述した送信、受信操作において発生
した変換処理の詳細を説明する。まず、生データNCを
積算ランレングスRLに変換するNC2RLについて説
明する。図15はランレングステーブルコードを示す。
(a)で示すように積算ランレングスコードRLは2バ
イトで構成され、Lengthは図2で説明したように積算の
形式を採用している。MSBは(b)で示す終了コード
以外は0、LSBは白画素が0、黒画素が1であり、L
SBの左隣のビットは常に0とする。中間の13ビットで
Lengthを表し、0〜8191の範囲を表示できる。(c)は
具体例を示し、黒が864 ビット次に白が864 ビットで1
ラインを構成している生データのランレングステーブル
を示す。
【0046】NC2RLの概要を説明すると、1ライン
分の生データを1Byteづつリードし、変化点を検出しな
がら、1ライン分のランレングステーブル(RL)を生
成する。
【0047】ランレングステーブルの最終ワードには、
1ライン分の終了コードとして8000を格納する。
【0048】1ライン総ビット数分の生データを読み込
むと終了する。割り込みは、生データ1Byte読み込む毎
にサンプルする。
【0049】図16〜図18はNC2RLのフロー図を示
す。図16において生データの積算ランレングスへの変換
処理が指示されると、本処理が終了したときに次のプロ
グラムに移るようプログラムカウンタをインクリメント
し(S40)、スキャナーで読み取られ図10(a)に示す
ようにバッファメモリに記憶されている先頭NC AD
Rから1バイトの生データをリードし(S41) 、次のリ
ードに備えNC ADRをインクリメントする(S4
2)。
【0050】図19は生データを積算ランレングスに変換
するテーブルを示す。(a)はリードされる生データ8
ビットが表す256 の状態をアドレス付けしたもので、
(b)はこのアドレスに対応する白ビット列、黒ビット
列の組み合わせを示す。(b)において右側は(a)に
示す8ビットの白ビット列、黒ビット列の構成を示し、
中央欄の数字は白ビット列、黒ビット列がいくつ含まれ
ているかを示す。例えば、アドレス1の場合、8ビット
のうち黒ビットが1個の黒ビット列が1個、白ビットが
7個の白ビット列1個からなり、合計2個のビット列か
ら構成されていることを示す。この白ビット列、黒ビッ
ト列を仮ランレングスと称する。生データ1バイトに対
応する仮ランレングスのコード列をこの表により得る
(S43)。
【0051】図17において、図19の表より作成した仮ラ
ンレングスコード列の先頭仮ランレングスコードをリー
ドし(S44)、図7のステップS4dのCHKBITに
格納されているデータと同色かチェックする。これは同
色であれば前の生データの8ビット目を構成要素として
いる仮ランレングスと先頭の仮ランレングスは同じもの
の続きであることを意味し、色が異なれば、前の生デー
タの8ビット目が積算ランレングスRLの終わりである
ことを示す。故に色が異なった時は既に格納されている
CHKBITのデータを積算ランレングスとしてRL
ADRに書き込み(S46) 、次の積算ランレングスを書
き込めるようRL ADRをインクリメントしておく
(S47)。
【0052】同色であればCHKBITに格納されてい
るデータと図19表より作成した仮ランレングスコードは
続いたものなのでこの仮ランレングスコードを加算する
(S48)。
【0053】図20はCHKBITに格納されているデー
タaと仮ランレングスコードbとの加算、減算を示す。
加算した場合は、加算値はn1 +n2 になり0ビット目
に示される色はb、つまり仮ランレングスコードの色と
なる。また減算した場合減算値はn1 −n2 になり、色
はaつまりCHKBITに格納されているデータの色と
なる。仮ランレングスコード列が図19のアドレス85のよ
うに多くある場合は、仮ランレングスコード列1つごと
に積算ランレングスRLが作成されてゆく。このため、
仮ランレングスコード列の最後のランレングスコードを
リードしたかチェックし(S49)、まだ最後に達しなけ
ればCHKBITに格納されているS48で得られた積算
ランレングスをRL ADRに書き込み(S50)、次の
RL ADRを用意し(S51)、次の仮ランレングスコ
ード列を読み出し(S52)、S48でCHKBITのデー
タと加算して積算ランレングスRLを作成してゆく。
【0054】図18において、積算ランレングスRLを格
納したCHKBITの値が図7のS4cで設定した1ラ
インのビット数に達したかチェックし(S53)、達して
いればこの1ライン最後のRLが格納されたCHKBI
Tの内容をRL ADRに書き込み(S54)、次のRL
の書き込みに備えRL ADRをインクリメント(S5
5)、終了コードを書き込む(S56)。
【0055】S53で1ラインのビット数に達していなけ
れば、次の生データ1バイトを読みに行く前に、割り込
みがかかってないかチェックし(S57)、割り込みがか
かっていれば、まだ1ラインの処理が終わっていないた
め次のプログラムに進めないので、図16のS40でインク
リメントしたプログラムカウンタを元に戻す(S58)。
【0056】次に図8に示すRL2MH(S10)につい
て説明する。RL2MH変換は、1ライン分の積算ラン
レングスコードRLを変換テーブルを参照してMHコー
ドに変換する。1ラインの総ビット数分のRLを読み込
むと終了する。割り込みは、1変化点の積算ランレング
スを処理する毎にサンプルする。
【0057】図21〜図28はRLよりMHコードへの変換
フロー図を示す。積算ランレングスRLをMHコードに
変換する指示がなされると、次のプログラムが実施でき
るようプログラムカウンタをインクリメントし(S6
0)、図8のS8aでセットしたRL ADRから積算ラ
ンレングスコードRLをリードしてワークエリアNOW
RLにセットし(S61)、次のアドレスRL ADR
にインクリメントしておく(S62)。図19で説明した仮
ランレングスコード、つまり図2に示す生データの黒
3,白2などをカレントRLコードと称しCUR RL
で表す。このCUR RLはあるRLとその1つ前のR
Lの差として求まる。つまりNOW RLより1つ前の
RLが入っている図8のS8cで定義したCHKBIT
Eを差し引いた値として求まる(S63)。そしてCHK
BITEをNOW RLで更新しておく(S64)。
【0058】図22において、求めたCUR RLが白で
あるか判断し(S65)、白のときは、T.4のターミネ
イティング符号のみで表せるか(64未満) 、それ以上で
メークアップ符号も必要となるか判断する(S66)。64
以上の場合、メークアップ符号を求めるため、64の何倍
となっているかをiの値としてカウントする(S67〜S
70)。
【0059】図23において、S69で0以下となった場合
は、CUR RLに64を加え、ターミネイティングテー
ブルが読めるようにする(S71)。
【0060】図29は白ターミネイティングテーブルと白
メイクアップテーブルを示す。MHコードはLSBfirs
t になっているのでT.4に示す表の値と逆順の数値と
なっている。有効ビット数はMHコードを16ビットで表
した場合、有効なビット数を示す。(b)に示す白メイ
クアップテーブルから図22のS70のi番目のMHコード
をリードして、図8のS8bでセットしたMH ADR
の位置に書き込む。本実施例はMHCODを8ビット単
位でアドレス付けして取り扱うことにしたので、8ビッ
トごとにMHCODを区切る。このため、MHコードが
8ビット以上となったかチェックし(S73)、8以上の
ときは8ビット分のMHCODをMH ADRに書き込み
(S74)、次のアドレスにインクリメントする(S7
5)。
【0061】図24において、図22のS66で63以下とされ
た場合、または、図23の処理が終了した場合CUR
Lから図29の(a)に示す白ターミネイティングテーブ
ルよりMHコードを読みMHCODにセットする(S7
6)。MHコードが8ビット以上になっていれば(S7
7)、8ビット分をMH ADRに書き込み(S78)、
MH ADRをインクリメントする(S79)。
【0062】図25〜図27は、図22のS65においてCUR
RLが黒だった場合で、内容は図22〜図24とほぼ同じ
であり、図30は黒ターミネイティングテーブル(a)、
黒ターミネイティングテーブル(b)を示す。
【0063】図28において、図7のS4Cで設定した1
ラインのビット数に達したか否かチェックし(S80)、
達した場合は、残っているMHCODをMH ADRに
書き込んで(S81)、1ラインの処理を終了する。また
S80で1ラインに達していないときは、割り込みがある
かチェックし(S82)、あればプログラムカウンタを戻
す(S83)。
【0064】次に図8のS13のRL2MR変換の説明を
する。RL2MR変換は、1ライン分の符号化ライン
(RL)と参照ラインの積算ランレングスコード(R
L)を比較して、MRコードに変換する。1ライン総ビ
ット数分のランレングスコードを読み込むと終了する。
割り込みは、各モード(垂直モード,水平モード,パス
モード)単位の符号化処理終了ごとにサンプルする。
【0065】図31〜図40はRL2MR変換のフロー図で
ある。図31において、RL2MR変換指示が出ると、終
了後、次のプログラムに進めるようにプログラムカウン
タをインクリメントし(S90)、MRコードへの符号化
を行うに必要なa0 ,a1 ,b1 ,b2 をセットする
(S91〜S94)。なお、これらのセットの詳細は後述す
る。
【0066】図32において、パスモードか否かを調べる
ためa1 >b2 をチェックし(S95) 、パスモードであ
ればパスモード符号化をしMRCODにセットし(S9
6)、次にa0 をb2 の直下に置く(S97)。MRコー
ドが8ビット以上となれば(S98)、MRCODを図8
のS11cでセットしたMR ADRに書き込み(S99)、
MR ADRをインクリメントする(S100 )。
【0067】図33において、図32のS95でパスモードで
ない場合は、垂直モードか否かチェックし(S101 )、
垂直モードであれば垂直モードにより符号化してMRC
ODにセットし(S102 )、この後a0 をa1 の上に置
く(S103 )。また、垂直モードでなければ、水平モー
ドなのでa2 をセットし(S104 )、水平モードで符号
化してMRCODにセットする(S105 )。この後a2
が新しい起点画素a0となるため、a0 をa2 の上に置
く(S106 )。MRコードが8ビット以上であれば(S
107 ) 、8ビット分をMR ADRに書き込み(S108
) 、MR ADRをインクリメントする(S109 )。
【0068】図34において、図7のS4cでセットした
1ラインのビット数に達したかチェックし(S110 ) 、
達したら残りのMRCODをMR ADRに書き込み
(S111 )、終了する。また、1ラインのビット数に達
しない時は、割り込みがかかっているか否かチェックし
(S112 )、かかっていれば、図31のS90でインクリメ
ントしたプログラムカウンタを元に戻す(S113 ) 。
【0069】図35は図31のa0 とa1 のセット方法を示
す。まず、図8のS11bでセットした符号化ラインのR
L2 ADRからRLコードを読み出し(S114 ) 、この
RLコードをa0 とし(S115 ) 、RL2 ADRをイ
ンクリメントする(S116) 。
【0070】a1 のセットはa0 のセットの次に符号化
ラインのRL2 ADRからRLコードを読み出し(S
117 ) 、これをa1 とし(S118 ) 、RL2 ADRを
インクリメントする(S119 ) 。
【0071】図36〜図40はb1 のセットを示すフロー図
である。なおb1 が決まればb2 は図35に示すa0 とa
1 の関係と同様にして容易にセットできる。
【0072】図36において、前回が水平モードであるか
チェックし(S120 ) 、水平モードでなければ、図8の
S11aでセットした参照ラインのアドレスRL1 AD
RからRLコードを読み出し(S121 ) 、RL1 AD
Rをインクリメントし(S122 ) 、この読み出したRL
コードがa0 より大きく(S123 )、かつa0 と異なる
色であれば(S124 )、このRLコードをb1 とする
(S125 ) 。
【0073】図37において、図36のS120 で前回も水平
モードである場合は、前回の参照ラインのRLコードか
ら順次4つのRLコードまでを取り出し、これがb1
なるか調べる。この4回のトライでb1 を検索できる可
能性は大きいが、見つからない時はバイナリサーチを行
う。
【0074】まずiを4にセットし(S126 ) 、参照ラ
インのRL1 ADRからRLコードをリードし(S12
7 ) 、このRLコードがa0 より大きいかチェックし
(S128 )、小さい場合は、次のRLコードを読み出し
すためRL1 ADRをインクリメントし(S129 ) 、
iを1回減少させる(S130 , S131 )。4回繰り返し
てもa0 <RLコードが成立しなければバイナリサーチ
を行うためiを8にセットする(S132 ) 。8とする理
由は、1ラインのビット数を2048=8×28 とすると8
回バイナリサーチすることにより最大8個の変化点に対
象を絞り込むことができ、この8個の変化点を順次チェ
ックすれば必ずb1 が検出できるからである。
【0075】図38において、図37のS127 のRL1
DRと積算ランレングステーブル(図10(b)に示すテ
ーブル)の最終アドレスRL1 ENDとの間の半分の
位置のアドレスをとりこれをRL1B ADRとおく
(S133 ) 。次にこのアドレスRL1B ADRのRL
コードを読み出し(S134 ) 、このRLコードがa0
り大きいか調べ(S135 ) 、大きければ、RL1B
DRとRL1 ADRの差は8以内か調べ(S136 ) 、
8より大きければ、iを1つ減じ(S137 ) 、S135 ,
S136 , S138 から出られるようになるまでバイナリサ
ーチを繰り返す(S134 〜S139 ) 。
【0076】図39は、図38のS135 において、RLコー
ドがa0 より大きくない場合を示し、RL1 ENDと
RL1B ADRとの差が8より大きい場合は、バイナリ
サーチの回数iを減じ(S141 )、S140 で出られるか
iが0となるまでバイナリサーチを続ける(S140 〜S
144 )。
【0077】図40は、図38, 図39からの出力よりb1
決定するフローである。S145 は対象範囲が8個の変化
点以内に絞られた場合でRL1B ADRを参照ライン
アドレスRL1 ADRにおきかえ、このアドレスのR
Lコードを読み出し(S146)、a0 <RLコードが成
立しなければ(S147 ) 、RL1 ADRをインクリメ
ントし(S148 ) 、S147 がYESとなるまで繰り返
す。a0 <RLコードが成立した時(S128 , S147 )
、a0 とRLコードが異なる色か調べ(S149)、同じ
であればS148 へ行き、異なればb1 が確定するのでR
Lコードをb1 とし(S150 ) 、RL1 ADRをイン
クリメントする(S151 ) 。
【0078】次に図11〜図13の受信における変換等の詳
細の説明を行う。図11のS24のEOLSRCはEOL符
号を検索する操作である。
【0079】EOLSRCは受信した符号化データ(圧
縮データ)からEOLを捜し、タグビットを通知する。
EOLを検出すると終了する。割り込みは、データバッ
ファから8ビットリードする毎にサンプルする。
【0080】図41〜図43はEOL検出フロー図である。
受信された符号化データにおけるEOL信号の検知が指
示されると、プログラムカウンタをインクリメントし
(S160 ) 、図11のS23bでセットした1 ラインの先頭
ビットであるか否かを示すfirst が0か否かチェックし
(S161 ) 、0であれば先頭ビットであるので、受信デ
ータの0ビットをカウントするカウンタBITCNTを
0に設定し、EOLの0を11ビット検出したかを示すフ
ラグW11DETをoff にし(S162 ) 、first を1に
セットする(S163 ) 。次に図11のS23aでセットした
DT ADRから受信データ1バイトをリードし(S16
4 )、DT ADRをインクリメントする(S165 ) 。
【0081】図42において、S164 でリードしたデータ
を1ビットづつ右シフトして(S166 ) 、ビットを1つ
づつ取り出し0か否か調べ(S167 ) 、0であればフラ
グW11DETが11ビットの0を検出したかをチェッ
クし(S168 ) 、検出していなければBITCNTカウ
ンタを1つインクリメントし(S169 ) 、BITCNT
=11であるかを調べ(S170 ) 、カウンタが11となっ
たらフラグW11DETをonする(S171 ) 。そして受
信データ1バイト分シフトしたか調べ(S172) 、達し
ていなければS166 へ戻る(S172 ) 。
【0082】また、S167 で0でない場合は、フラグW
11DETがonであるか調べ(S173 )、onしてなけれ
ば、EOLでないとしてカウンタBITCNTを0にす
る(S174 )。S172 で8回シフトしたなら割り込みが
あるか調べ(S175 ) 、あれば、プログラムカウンタを
デクリメントする(S176 ) 。
【0083】図43は図42のS145 でフラグW11DET
がonしEOLを検出した後のフローで、次にMRモード
であるかMHモードか調べ(S177 ) 、MRモードであ
れば8回シフトしたか確認し(S178 ) 、シフトしてい
れば、次の受信データをDT ADRから1バイトリード
し(S179 ) 、DT ADRをインクリメントし(S18
0 ) 、次にデータを1ビットシフトする(S181 ) 。こ
れはEOLの後に続く1ビットによって、このビットが
1であれば1次元符号(MH)、0であれば2次元符号
(MR)を判断する操作である。S182 でシフトして取
り出したビットが0であればタグビットは2次元を示し
(S183 ) 、1であればタグビットは1次元を示す(S
184 ) 。
【0084】次に図12のS29に示すMH2RL変換を説
明する。MH2RL変換は受信したMHコードを変換テ
ーブルを参照して1ライン分の積算ランレングスコード
RLに変換する。1ライン総ビット数分のMHコードを
読み込むと終了する。割り込みは1変化点の積算ランレ
ングスを出力するたびにサンプルする。
【0085】図44〜図46はMH2RLの変換フロー図で
ある。図44において、MHコードをRLに変換する命令
が出されるとこのプログラム終了後、次のプログラムが
実行できるようプログラムカウンタをインクリメントし
(S190 ) 、図12のS28bでセットしたMH ADRか
ら1バイトリードし(S191 ) 、このデータが白か黒か
判定する(S192 ) 。
【0086】図47は白データのMHコードを仮ランレン
グスコード(仮RLコード)へ変換するテーブルの1例
である。MHコードは最大12ビットで表現することがで
きる。(a)において8ビット以内で表されるMHコー
ドには、それに対応する仮RLコードが記載される。有
効ビット数は8ビットのうちMHコードとしての有効な
ビット数を表す。有効ビット数00のものは(b)のテ
ーブルに接続している。(b)のテーブルはMHコード
が4ビットであり、(b)に示すテーブルは全部で10種
類ある。この(a),(b)のテーブルにより白MHコ
ードは仮RLコードに変換可能である。なお、MHコー
ドはLBS First で記載してある。なお、有効ビット
数80は未定義符号である。
【0087】図48は黒データのMHコードを仮RLコー
ドへ変換するテーブルである。黒MHコードは最大13ビ
ットで表現することができる。テーブル(a),(b)
共MHコードは8ビットである。(a)で有効ビット数
00には(b)のテーブルが接続する。(b)で有効ビ
ット数80は未定義符号である。図47, 図48の仮RLコ
ードは図2に示す生データの黒3,白2などである。
【0088】図44に戻り、読み込んだデータが白である
場合、図47に示す白MH→RL変換テーブルでMHコー
ドが8ビット以上連続しているか調べ(S193 ) 、連続
していれば、MHコードを8ビット捨てて、MH AD
Rから次の4ビットをリードする(S194 ) 。
【0089】図45において、リードしたデータが黒であ
れば、図48の黒MH→RL変換テーブルでMHコードが
5ビット以上連続しているか調べ(S195 ) 、連続して
いればMHコードを5ビット捨てて、MH ADRから
次の5ビットをリードして8ビットにする(S196 ) 。
次に未定義符号となっているか調べ(S197 ) 、未定義
符号でなければ、変換テーブルの有効ビット数分のMH
コードを捨て(S198) 、変換テーブルから仮RLコー
ドを読み出し(S199 ) 、図12のS28cでセットしたワ
ークエリアのCH1KBITDに仮RLコードを加算し
てCH1KBITDを更新する(S200 ) 。
【0090】図46において、CHKBITDの内容を図
12のS28aでセットしたRL ADRに書き込み(S20
1 ) 、RL ADRをインクリメントする(S201 ) 。
次のRLコードは当然色が変わるのでカラーチェンジを
行い(S203 ) 、次に1ラインのビット数に達したかを
調べ(S203 ) 、達すれば終了する。達しなければCH
KBITDが1ラインのビット数を超えたか調べ(S20
4 )、超えていればエラーとしてエラーコードをセット
する(S207 ) 。
【0091】また、1ラインのビット数を超えていなけ
れば割り込みがあるか調べ(S205) 、あればプログラ
ムカウンタをデクリメントする(S206 ) 。
【0092】次に図12のS27に示すMR2RL変換につ
いて説明する。MR2RL変換は、1ライン分の復号化
ライン(MR)と参照ラインの積算ランレングスコード
RLを比較して、1ライン分の積算ランレングスコード
RLに変換する。1ライン総ビット数分のMRコードを
読み込むと終了する。割り込みは、各モード(垂直モー
ド,水平モード,パスモード)単位の復号化処理終了ご
とにサンプルする。
【0093】図49〜図54はMR2RL変換のフロー図で
ある。図49において、MR2RL変換命令が出される
と、プログラムカウンタをインクリメントし(S210 )
、図12のS26cでセットしたMR ADRから受信デ
ータのMRコードをリードし(S211 ) 、RL2MR変
換時と同じ方法でb1 をセットする(S212 ) 。次にM
Rコードが未定義符号かチェックし(S213 ) 、未定義
符号ならエラーとなる。
【0094】図50において、パスモードか判断し(S21
4 ) 、パスモードであれば、b2 をセットし(S215 )
、b2 とa0 との差を求めてこれをKRLコードとお
き(S216 ) 、図12のS26dで設けたワークエリアCH
KBITDとKRLコードを加算してCHKBITDを
更新し(S217 ) 、次にa0 にb2 をセットする(S21
8 ) 。
【0095】図51において、図50のS214 でパスモード
でなければ、垂直モードであるか否か調べ(S219 ) 、
垂直モードであればS212 でセットしたb1 を基点にR
Lコードを作成する(S220 ) 。このRLコードをCH
KBITDにセットし(S221 ) 、このCHKBITD
を図12のS26cでセットしたRL ADRに書き込み
(S222 ) 、RL ADRをインクリメントし(S223
) 、カラーを変更する(S224 ) 。
【0096】図52において、図51のS219 で水平モード
と判別されると、a0 とa1 の仮RLコードを作成する
(S225 ) 。水平モードはMH2RL変換と同じなので
図47、図48に示す変換テーブルを使用して仮RLコード
を作成する。次にこの仮RLをCHKBITDに加算し
てCHKBITDを更新し(S226 ) 、CHKBITD
の内容をRL ADRに書き込み(S227 ) 、RL
DRをインクリメントする(S228 ) 。
【0097】図53において、a1 とa2 もS225 と同様
に仮RLコードを作成し、この仮RLコードをCHKB
ITDに加算してCHKBITDを更新し(S230 ) 、
CHKBITDの内容をRL ADRに書き込んで(S
231 ) 、RL ADRをインクリメントする。次にa0
にCHKBITDをセットする(S233 ) 。垂直モード
ならCHKBITDはa1 に、水平モードならa2 にな
っている。
【0098】図54において、1ラインのビット数に達し
たか調べ(S234 ) 、達していれば終了し、達していな
ければCHKBITDが1ラインのビット数を超えたか
調べ(S235 ) 、超えていればエラーコードをセットし
(S238 ) 、超えていなければ割り込みがあるか調べ
(S236 ) 、あればプログラムカウンタをデクリメント
する(S237) 。
【0099】次に図13のS35におけるRL2NC変換に
ついて説明する。RL2NC変換は1ライン分の積算ラ
ンレングスコードRLを生データNCに変換する。図2
に示すようにランレングステーブルから終了コード(80
00)を読み込むと終了する。割り込みは、ランレングス
テーブルから生データ16ビット分以上の積算ランレング
スを読み込むたびにサンプルする。
【0100】図55において、RL2NC命令が出力され
ると、この命令終了後、次のプログラムを実行できるよ
うプログラムカウンタをインクリメントし(S240 ) 、
1ラインの最初のデータであることを示すフラグfirst
が0か否かチェックし(S241 )、0であれば先頭ビッ
トであるので、積算ランレングスを格納するワークエリ
アPRESUMを00にし(S242 ) 、変換する生デー
タNCDATを16ビットづつアドレス付けして取り出す
が、16ビットになるか否かをカウントするカウンタPC
OUNTを00とし(S243 ) 、次にfirst を01に設
定する(S244) 。図13のS34aでセットしたRL
DRから積算ランレングスデータをリードし(S245 )
、RL ADRを次のリードに備えてインクリメント
し(S246) 、終了コードか確認し(S247 ) 、1ライ
ンが黒ビットから始まる場合、その前に、1ラインは必
ず白ランレングスから始めるという形式にするため白ビ
ット0として入れた白0ランレングスか否かをチェック
し、そうであれば、その次のデータから実質的な処理を
行う(S248 ) 。
【0101】図56に移り、S245 でリードした積算ラン
レングスから、その前にリードした積算ランレングスを
引き、これをカウンタCCOUNTで計数する(S249
) 。このCCOUNT値は仮ランレングスであり、図
2の生データの黒3,白2等を表す。S245 でリードし
た積算ランレングスをPRESUMに格納して次回の処
理の準備をしておく(S250) 。次にPCOUNTとC
COUNTの合計値が16ビット以上となっているか調べ
(S251 ) 、16ビット未満のときは、S245でリードし
た積算ランレングスが白か黒かを調べ(S252 ) 、白の
場合はCARRYに0を入れ(S253 ) 、黒の場合はC
ARRYに1を入れる(S254 ) 。
【0102】図59はRL2NC変換の具体例を示した図
である。積算ランレングスRL, CCOUNT, PCO
UNT,CARRY,NCDATを示す。CAARYと
は、NCDATの前に設けられた1ビットの領域でRL
が白ならば0、黒ならば1を入れ、PCOUNT+CC
OUNTの値が16ビット未満の時は、CCOUNTの数
だけNCDATにビットをシフトする働きをする。の
場合、RLは白なのでCARRYは0、CCOUNTは
1なので0を1ビットシフトする。の場合はCCOU
NTが3なので3ビット0をシフトする。図56に戻り上
述のようにNCDATをCCOUNT分シフトし(S25
5 ) 、PCOUNTをPCOUNT+CCOUNTで更
新する(S256 ) 。
【0103】PCOUNT+CCOUNTが16以上のと
きは(S251) 、図57において、S245 でリードしたR
Lが白か黒か調べ(S257 ) 、白の時はCARRYに0
を(S258 ) 、黒の場合はCARRYに1を入れ(S25
9 ) 、(16−PCOUNT)分CARRYの値をNCD
ATへシフトし(S260 ) 、NC ADRにこのNCDA
Tの値を書き込み、NC ADRをインクリメントする
(S262 ) 。図59において、の場合、PCOUNT+
CCOUNT=3+14=17>16となる。それ故16−3=
13ビット分CARRYに入った黒ビット1をシフトす
る。
【0104】図58において、16ビット単位を1として計
数するカウンタiに0を設定し(S263 ) 、(PCOU
NT+CCOUNT−16)をワークエリアWORKに格
納し(S264 ) 、WORKが0か調べ(S265 ) 、0で
ないなら16以上かを調べ(S267 ) 、WORKが16の単
位をいくつ有するかをカウンタiで計数する(S267,
S268 )。これによりWORKの値は16未満になったの
で、この値でPCOUNTを更新し(S269 ) 、S257
で行った白か黒かの判定を繰り返し(S270 )、白であ
ればNCDAT16ビット全て0、黒であれば16ビットを
全て1とする。カウンタiが0であればNCDATの値
をこのままにしておき、iが1以上であれば、その数だ
けNCDATに全ビット0又は1としたものをNC
DRをインクリメントしながら作成する(S274 ) 。
【0105】以上を図59ので説明する。の場合PC
OUNT+CCOUNTは3+14=17>16となってい
る。このためS272 の場合に相当し、16ビット1である
NCDATが作成されている。そしてPCOUNTはS
269 で1に更新されている。この場合、16ビット1のデ
ータのうち左端の1ビットのみ有効で、これより右側の
15ビットの1はDON’T CAREとする。このよう
な状態でに示す白RL20が入ってくるとCCOUNT
は白3となりCARRYは0で3ビットシフトされ、先
のPCOUNTにある1ビットの左側からの4ビットが
有効となり、これより右側の12ビットの1はDON’T
CAREとすることにより、NCDATの中は正しい
生データに変換されてゆく。
【0106】図58に戻り、1ライン終了したかチェック
し(S275 ) 、終了すれば終わりとし、終了してなけれ
ば割り込みがあるか調べ(S276 ) 、あればプログラム
カウンタをデクリメントし(S277 )、なければS245
へ戻り次のデータを読み込む。
【0107】次にメモリ送信動作について説明する。B
4原稿がメモリにMRコードで蓄積され、A4でMHコ
ードの通信能力を有する相手機に送信する場合につき説
明する。
【0108】図60〜図63はメモリ送信動作のフロー図を
示す。図60において、オペレータによって送信が指示さ
れると、スキャナーで原稿が読み取られ、DRAM上に
符号化して記憶される。メモリへの蓄積が終了し、発呼
され(S300 ) 、相手機との間で回線が接続されると
(S301) 、制御信号が送受信され通信モードが決定さ
れる(S302 ) 。次にメモリに蓄積された送信データの
先頭アドレスがセットされ(S303 ) 、同時に1ライン
の先頭ビットであるか否かを示すフラグfirst が00に
セットされる(S304 ) 。次に図41〜図43で説明したE
OLSRCによりEOLを検出する(S305 ) 。
【0109】次に図61において、EOLに続くタグビッ
トが1のときは1次元(MH)データと判断され(S30
6 ) 、MHである場合は、RAM上に復号化する復号化
ラインの積算ランレングスRLの先頭アドレスをセット
し(S307 a) 、復号化するラインの送信データ先頭ア
ドレスをセットし(S307 b) 、first 、ワークエリア
であるCHKBITDを00にセット(S307 c) す
る。
【0110】次に図44〜図46で説明したMH2RL変換
により積算ランレングスRLに変換する(S308 ) 。ま
たS306 でタグビットが0の場合、2次元(MR)なの
で、参照ラインの積算ランレングスの先頭アドレスをセ
ットし(S309 a) 、復号化ラインの積算ランレングス
の先頭アドレスの先頭アドレスをセットし(S309 b)
、復号化するラインの送信データの先頭アドレスをセ
ットし(S309 c) 、first 、CHKBITDおよびa
0 ,b0 を00にセットする(S309 d) 。次に図49〜
図54で説明したMR2RL変換を行いRLを得る(S31
0 ) 。MH2RLまたはMR2RLの変換は1ライン単
位で行われる。1ラインの復号化処理が終了すると、復
号化処理を行ったデータの先頭に2つ目のEOLが検知
されたか否か判断し(S311 ) 、検知されれば終了信号
であるのでRTCを送り出し(S312 ) 、制御信号送信
(S313 ) 、回線断(S314 ) を行う。
【0111】EOLが先頭で検出されない場合(S311
) 、図62に示すRESCNV処理に入る。RESCN
V処理は線密度変換を行う処理で詳細は後述する。この
処理を行う準備として変換前の積算ランレングスの先頭
アドレスをセットし(S315 ) 、変換後の積算ランレン
グスの先頭アドレスをセットし(S316 ) 、変換倍率n
(例えば、1728ビット/2048ビット) をセットし(S31
7 ) 、first フラグを00にセットし(S318 ) 、変換
後の1ラインのビット数をセットし(S319 ) 、RES
CNV変換をする(S320 ) 。
【0112】変換された送信データはさらにMHコード
に変換されるための処理が行われ、線密度変換された積
算ランレングスの先頭アドレスをセットし(S321 ) 、
MH符号化データの先頭アドレスをセットし(S322
)、CH1KBITEを00にセットし(S323 ) 、E
OLを付加して(S324 ) 、図21〜図28で説明したRL
2MH変換を行い(S325 ) 、0フィル付加して(S32
6 ) 送信する。
【0113】次にRESCNV変換の説明をする。RE
SCNV変換は積算ランレングスコードRLの拡大・縮
小(例えば、A3→A4,B4→A4など)を行う。入
力RLの終了コードを読み込むか、または出力RLが1
ライン総ビット数に達すると終了する。割り込みは、1
変化点あたりの積算ランレングスコードRLを出力する
ごとにサンプルする。
【0114】図64において、積算ランレングスの線密度
変換処理が指示されると、プログラムカウンタをインク
リメントする(S330 ) 。1ラインの先頭ビットか否か
を示すフラグfirst が0となっているか調べ(S331 )
、先頭ビットであれば、乗算処理したビット数の最新
のものを格納するワークエリアPRESUMを0にセッ
トし(S332 ) 、図15(a)に示すLSBのカラービッ
トを0(白)にセットし(S333 ) 、first を01にセ
ット(S334 ) する。図62のS315 でセットされたRL
ADRから積算ランレングスコードをリードし(S
335 ) 、RL1 ADRをインクリメントし(S336 ) 、
読み出したRLビット数に図62のS317で設定した変換
倍率nをかける乗算処理を行う(S337 ) 。乗算した結
果の少数点以下の数は切り捨てられる。この結果、前の
RLの乗算結果と現在のRLの乗算結果が同じ値になる
ことがあるのでこれをチェックし(S338) 、同じであ
ればS335 に戻る。
【0115】次に図65において、読み出した積算ランレ
ングスの色はS333 のCOLORと同じ色か調べる(S
339 ) 。色が同じ場合とは、例えば、白RL10と黒RL
11がS338 で小数点以下を省略すると同じ値となり、次
の白RL20を読み出してきたとき、白RL10と白RL20
が同じ色となるときである。この場合、黒RL11のデー
タは省略されることになるので、白RL10にnを乗じた
値を書き込む予定だったアドレスに白RL20にnを乗じ
た値を書き込むようにする。このためRL2 ADRのア
ドレスデクリメントを行う(S340 ) 。次に乗算結果を
PRESUMにセットし(S341 ) 、S335でリードし
たRLの色をCOLORにセットし(S342 ) 、図62の
S316 でセットしたRL2 ADRに乗算結果の積算ラ
ンレングスコードを書き込み(S343 ) 、RL2 AD
Rをインクリメントする(S344 ) 。次にPRESUM
に現在セットされているビット数と図62のS319 でセッ
トした1ラインのビット数とが同じになったか比較し
(S345 ) 、同じとなれば終了コードを書き込み(S34
6 ) 、同じでなければ、割り込みがかかっているか調べ
(S347 ) 、かかっていればプログラムカウンタをデク
リメント処理する(S348 ) 。割り込みがかかってなけ
れば図64のS335 に戻る。
【0116】図66はRESCNV処理によりB4サイズ
の原稿をA4サイズに変換した場合の積算ランレングス
テーブルを示した図である。
【0117】
【発明の効果】以上の説明から明らかなように、本発明
は、中間コードとしての積算ランレングスを用いること
により、生データ、MHコード、MRコード間の変換を
行うことにより、ソフトウェアで符号化・復号化を高速
に実施することができる。さらにこの中間コードに倍率
を乗ずることにより原稿サイズの変換を容易に行うこと
もできる。また、変換処理ステップの適当位置に割り込
みが入るようにしたので、割り込み要求に適切に対応す
ることができる。
【図面の簡単な説明】
【図1】本発明のコード変換体系を説明する図
【図2】本発明の積算ランレングスのテーブルを説明す
る図
【図3】符号化系命令のメモリ構成図
【図4】復号化系命令のメモリ構成図
【図5】生データのMR符号化のフロー図
【図6】MR復号化のフロー図
【図7】原稿送信のフロー図 その1
【図8】原稿送信のフロー図 その2
【図9】原稿送信のフロー図 その3
【図10】生データ、積算ランレングスの格納ホーマット
およびCHKBITDのホーマット図
【図11】原稿受信のフロー図 その1
【図12】原稿受信のフロー図 その2
【図13】原稿受信のフロー図 その3
【図14】エラー発生の1例を説明する図
【図15】積算ランレングスのホーマットを示す図
【図16】生データNCの積算ランレングスRLへの変換
フロー図 その1
【図17】生データNCの積算ランレングスRLへの変換
フロー図 その2
【図18】生データNCの積算ランレングスRLへの変換
フロー図 その3
【図19】生データを積算ランレングスに変換するテーブ
【図20】CHKBITにおける加算、減算の説明図
【図21】積算ランレングスをMHコードに変換するフロ
ー図 その1
【図22】積算ランレングスをMHコードに変換するフロ
ー図 その2
【図23】積算ランレングスをMHコードに変換するフロ
ー図 その3
【図24】積算ランレングスをMHコードに変換するフロ
ー図 その4
【図25】積算ランレングスをMHコードに変換するフロ
ー図 その5
【図26】積算ランレングスをMHコードに変換するフロ
ー図 その6
【図27】積算ランレングスをMHコードに変換するフロ
ー図 その7
【図28】積算ランレングスをMHコードに変換するフロ
ー図 その8
【図29】白RLをMHコードに変換するテーブル
【図30】黒RLをMHコードに変換するテーブル
【図31】積算ランレングスをMRコードに変換するフロ
ー図 その1
【図32】積算ランレングスをMRコードに変換するフロ
ー図 その2
【図33】積算ランレングスをMRコードに変換するフロ
ー図 その3
【図34】積算ランレングスをMRコードに変換するフロ
ー図 その4
【図35】積算ランレングスをMRコードに変換するフロ
ー図 その5
【図36】積算ランレングスをMRコードに変換するフロ
ー図 その6
【図37】積算ランレングスをMRコードに変換するフロ
ー図 その7
【図38】積算ランレングスをMRコードに変換するフロ
ー図 その8
【図39】積算ランレングスをMRコードに変換するフロ
ー図 その9
【図40】積算ランレングスをMRコードに変換するフロ
ー図 その10
【図41】EOL検索フロー図 その1
【図42】EOL検索フロー図 その2
【図43】EOL検索フロー図 その3
【図44】MHコードを積算ランレングスに変換するフロ
ー図 その1
【図45】MHコードを積算ランレングスに変換するフロ
ー図 その2
【図46】MHコードを積算ランレングスに変換するフロ
ー図 その3
【図47】MHコードを白積算ランレングスに変換するテ
ーブル
【図48】MHコードを黒積算ランレングスに変換するテ
ーブル
【図49】MRコードを積算ランレングスに変換するフロ
ー図 その1
【図50】MRコードを積算ランレングスに変換するフロ
ー図 その2
【図51】MRコードを積算ランレングスに変換するフロ
ー図 その3
【図52】MRコードを積算ランレングスに変換するフロ
ー図 その4
【図53】MRコードを積算ランレングスに変換するフロ
ー図 その5
【図54】MRコードを積算ランレングスに変換するフロ
ー図 その6
【図55】積算ランレングスを生データに変換するフロー
図 その1
【図56】積算ランレングスを生データに変換するフロー
図 その2
【図57】積算ランレングスを生データに変換するフロー
図 その3
【図58】積算ランレングスを生データに変換するフロー
図 その4
【図59】積算ランレングスを生データに変換する具体例
を示す図
【図60】メモリ送信フロー図 その1
【図61】メモリ送信フロー図 その2
【図62】メモリ送信フロー図 その3
【図63】メモリ送信フロー図 その4
【図64】積算ランレングスの線密度変換フロー図 その
【図65】積算ランレングスの線密度変換フロー図 その
【図66】B4原稿サイズをA4サイズに変換した例を示
す図
───────────────────────────────────────────────────── フロントページの続き (72)発明者 坂井 司 東京都目黒区下目黒2丁目3番8号 松下 電送株式会社内 (72)発明者 野口 修 東京都目黒区下目黒2丁目3番8号 松下 電送株式会社内 (72)発明者 根本 博幸 東京都目黒区下目黒2丁目3番8号 松下 電送株式会社内 (72)発明者 冨田 桂一 東京都目黒区下目黒2丁目3番8号 松下 電送株式会社内

Claims (13)

    【特許請求の範囲】
  1. 【請求項1】 1ラインの生データを1ラインの始から
    白黒の変化点ごとに変化点の直前の画素の色と変化点直
    前の画素までの積算値で定義する積算ランレングスを求
    め、この積算ランレングスよりMHコードに変換するこ
    とを特徴とする符号化方法。
  2. 【請求項2】 1ラインの生データを1ラインの始から
    白黒の変化点ごとに変化点の直前の画素の色と変化点直
    前までの画素の積算値で定義する積算ランレングスを求
    め、この積算ランレングスよりMRコードに変換するこ
    とを特徴とする符号化方法。
  3. 【請求項3】 MHコードを1ラインの生データを1ラ
    インの始から白黒の変化点ごとに変化点直前の画素の色
    と変化点直前の画素までの積算値で定義する積算ランレ
    ングスに変換し、この積算ランレングスを生データに変
    換することを特徴とする復号化方法。
  4. 【請求項4】 MRコードを1ラインの生データを1ラ
    インの始から白黒の変化点ごとに変化点直前の画素の色
    と変化点直前の画素までの積算値で定義する積算ランレ
    ングスに変換し、この積算ランレングスを生データに変
    換することを特徴とする復号化方法。
  5. 【請求項5】 MHコードを1ラインの生データを1ラ
    インの始から白黒の変化点ごとに変化点直前の画素の色
    と変化点直前の画素までの積算値で定義する積算ランレ
    ングスに変換し、この積算ランレングスをMRコードに
    変換することを特徴とする符号化または復号化方法。
  6. 【請求項6】 MRコードを1ラインの生データを1ラ
    インの始から白黒の変化点ごとに変化点直前の画素の色
    と変化点直前の画素までの積算値で定義する積算ランレ
    ングスに変換し、この積算ランレングスをMHコードに
    変換することを特徴とする符号化または復号化方法。
  7. 【請求項7】 前記積算ランレングスに倍率を乗じ拡大
    ・縮小を行うことを特徴とする請求項1〜6いずれかに
    記載の符号化または復号化方法。
  8. 【請求項8】 前記MHコードよりEOLを検出後、前
    記積算ランレングスに変換することを特徴とする請求項
    3記載の復号化方法。
  9. 【請求項9】 前記MRコードよりEOLを検出後、前
    記積算ランレングスに変換することを特徴とする請求項
    4記載の復号化方法。
  10. 【請求項10】 前記MHコードを前記積算ランレングス
    に変換する際、1ラインの画素数を超えた場合は、その
    ラインはエラーとし、次のラインは前のデータを3画素
    戻した画素を次のラインのスタート画素として変換を行
    うことを特徴とする請求項3記載の復号化方法。
  11. 【請求項11】 前記MRコードを前記積算ランレングス
    に変換する際、1ラインの画素数を超えた場合は、その
    ラインはエラーとし、次のラインは前のデータを3画素
    戻した画素を次のラインのスタート画素として変換を行
    うことを特徴とする請求項4記載の復号化方法。
  12. 【請求項12】 前記積算ランレングスをMRコードに変
    換する場合、変化点モードとして水平モードが選択され
    た後、a0 となる積算ランレングスの値に対し参照ライ
    ンの変化点b1 を前の変化点b1 の次の積算ランレング
    スの位置より順次所定数の積算ランレングスの位置をサ
    ーチし、見つからない時はバイナリーサーチにより検出
    することを特徴とする請求項2記載の符号化方法。
  13. 【請求項13】 前記積算ランレングスをMHコードまた
    はMRコードに変換するに際し、または、MHコードま
    たはMRコードを前記積算ランレングスに変換するに際
    し、または、前記積算ランレングスに倍数を乗じ拡大・
    縮小するに際し、または、MHコードまたはMRコード
    よりEOLを検出後、前記積算ランレングスに変換する
    に際し、所定ステップで割り込みに対応できるようにし
    たことを特徴とする請求項1〜9のいずれかに記載の符
    号化または復号化方法。
JP3192919A 1991-08-01 1991-08-01 符号化および復号化方法 Expired - Fee Related JP2912736B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP3192919A JP2912736B2 (ja) 1991-08-01 1991-08-01 符号化および復号化方法
DE69222711T DE69222711T2 (de) 1991-08-01 1992-07-31 Kodier- und Dekodierverfahren zur Verwendung in Faksimilegeräten
EP92307027A EP0526249B1 (en) 1991-08-01 1992-07-31 Encoding and decoding methods for use in facsimile machines
US08/556,571 US5587798A (en) 1991-08-01 1995-11-13 Encoding and decoding methods for use in facsimile

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3192919A JP2912736B2 (ja) 1991-08-01 1991-08-01 符号化および復号化方法

Publications (2)

Publication Number Publication Date
JPH0537794A true JPH0537794A (ja) 1993-02-12
JP2912736B2 JP2912736B2 (ja) 1999-06-28

Family

ID=16299164

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3192919A Expired - Fee Related JP2912736B2 (ja) 1991-08-01 1991-08-01 符号化および復号化方法

Country Status (4)

Country Link
US (1) US5587798A (ja)
EP (1) EP0526249B1 (ja)
JP (1) JP2912736B2 (ja)
DE (1) DE69222711T2 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3083001B2 (ja) * 1992-07-31 2000-09-04 キヤノン株式会社 画像通信装置
US5926576A (en) * 1994-03-30 1999-07-20 Newton; Dale C. Imaging method and system concatenating image data values to form an integer, partition the integer, and arithmetically encode bit position counts of the integer
JP3619025B2 (ja) * 1998-09-18 2005-02-09 キヤノン株式会社 符号化方法及び符号化装置
US7203373B2 (en) * 2001-10-30 2007-04-10 Texas Instruments Incorporated Image and video coding with redundant run-length-level-last codewords removed
US20050185852A1 (en) * 2004-02-20 2005-08-25 Jiliang Song Method and apparatus to generate complex borders
JP5190458B2 (ja) * 2007-09-26 2013-04-24 パナソニック株式会社 データ処理装置及び方法

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS56116367A (en) * 1980-02-18 1981-09-12 Nippon Telegr & Teleph Corp <Ntt> Code conversion system for facsimile signal
JPS56116369A (en) * 1980-02-18 1981-09-12 Nippon Telegr & Teleph Corp <Ntt> Code conversion system for facsimile signal
JPS6051370A (ja) * 1983-08-31 1985-03-22 Oki Electric Ind Co Ltd 画像情報符号化処理装置
JPS60251763A (ja) * 1984-05-28 1985-12-12 Nec Corp フアクシミリ情報の拡大縮小回路
JPS6214578A (ja) * 1985-07-11 1987-01-23 Nec Corp フアクシミリ信号の符号変換方式
JPS62195979A (ja) * 1986-02-24 1987-08-29 Mitsubishi Electric Corp フアクシミリ符号変換装置
JPS63250278A (ja) * 1987-04-06 1988-10-18 Matsushita Graphic Commun Syst Inc 画像情報符号化方法
JPH01248874A (ja) * 1988-03-30 1989-10-04 Matsushita Graphic Commun Syst Inc 画像情報処理方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4688100A (en) * 1984-10-08 1987-08-18 Canon Kabushiki Kaisha Video data encoding/decoding apparatus
DE3585939D1 (de) * 1984-10-24 1992-06-04 Ibm Verfahren zur bildvergroesserung von in laufdarstellungsform gespeicherten bildern.
GB2172464B (en) * 1985-01-31 1989-02-01 Canon Kk Image transmission apparatus

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS56116367A (en) * 1980-02-18 1981-09-12 Nippon Telegr & Teleph Corp <Ntt> Code conversion system for facsimile signal
JPS56116369A (en) * 1980-02-18 1981-09-12 Nippon Telegr & Teleph Corp <Ntt> Code conversion system for facsimile signal
JPS6051370A (ja) * 1983-08-31 1985-03-22 Oki Electric Ind Co Ltd 画像情報符号化処理装置
JPS60251763A (ja) * 1984-05-28 1985-12-12 Nec Corp フアクシミリ情報の拡大縮小回路
JPS6214578A (ja) * 1985-07-11 1987-01-23 Nec Corp フアクシミリ信号の符号変換方式
JPS62195979A (ja) * 1986-02-24 1987-08-29 Mitsubishi Electric Corp フアクシミリ符号変換装置
JPS63250278A (ja) * 1987-04-06 1988-10-18 Matsushita Graphic Commun Syst Inc 画像情報符号化方法
JPH01248874A (ja) * 1988-03-30 1989-10-04 Matsushita Graphic Commun Syst Inc 画像情報処理方法

Also Published As

Publication number Publication date
US5587798A (en) 1996-12-24
EP0526249B1 (en) 1997-10-15
DE69222711T2 (de) 1998-03-26
EP0526249A3 (ja) 1994-03-02
EP0526249A2 (en) 1993-02-03
JP2912736B2 (ja) 1999-06-28
DE69222711D1 (de) 1997-11-20

Similar Documents

Publication Publication Date Title
US4800441A (en) Binary data compression and expansion processing apparatus
EP0558313B1 (en) Image processing apparatus
JP2000031832A (ja) デ―タ圧縮方法、圧縮デ―タ解凍方法、圧縮デ―タ伝送方法及びその装置
JP2912736B2 (ja) 符号化および復号化方法
EP0559376B1 (en) Image processing apparatus
JPH07184059A (ja) ファクシミリデータ符号化装置及び方法
CN112287638B (zh) 一种数字展示方法及装置
JP3123792B2 (ja) 算術符号を用いる符号化装置および復号化装置
KR100739110B1 (ko) 이진영상 고속 압축방법
EP0506405A2 (en) Image transmission method, and apparatus therefor
JPS62195979A (ja) フアクシミリ符号変換装置
JPH06217110A (ja) 画像変換方法
JP3408472B2 (ja) ランレングス符号化方法及びランレングス符号化装置
JP3123795B2 (ja) 算術符号を用いる符号化装置および復号化装置
JP2003143416A (ja) データ伸長処理方法およびデータ伸長処理装置
JP3123791B2 (ja) 算術符号を用いる符号化装置および復号化装置
JPH0834433B2 (ja) 符号化装置及び符号化方法
JPH0537785A (ja) 限定ビツト画像の符号化方法
KR900007566B1 (ko) 화상데이터 변환장치 및 방법
JP2965084B2 (ja) イメージデータ圧縮方法
JPH09121286A (ja) 画像データの圧縮方法及び装置
JP3146092B2 (ja) 符号化装置及び復号化装置
US20040130733A1 (en) Image formation apparatus, image formation method, and program
JPH0812691B2 (ja) 圧縮されたイメージを圧縮解除されたグレイ・レベルの縮小イメージに変換する方法
JPH01248874A (ja) 画像情報処理方法

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080409

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090409

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090409

Year of fee payment: 10

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090409

Year of fee payment: 10

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees