JPH0584698B2 - - Google Patents

Info

Publication number
JPH0584698B2
JPH0584698B2 JP11483184A JP11483184A JPH0584698B2 JP H0584698 B2 JPH0584698 B2 JP H0584698B2 JP 11483184 A JP11483184 A JP 11483184A JP 11483184 A JP11483184 A JP 11483184A JP H0584698 B2 JPH0584698 B2 JP H0584698B2
Authority
JP
Japan
Prior art keywords
code
signal
compressed
decoding
image
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP11483184A
Other languages
Japanese (ja)
Other versions
JPS60257663A (en
Inventor
Kazutoshi Hisada
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 JP11483184A priority Critical patent/JPS60257663A/en
Priority to US06/739,069 priority patent/US4837634A/en
Priority to DE19853520051 priority patent/DE3520051A1/en
Priority to FR8508474A priority patent/FR2569068B1/en
Publication of JPS60257663A publication Critical patent/JPS60257663A/en
Publication of JPH0584698B2 publication Critical patent/JPH0584698B2/ja
Granted legal-status Critical Current

Links

Description

【発明の詳細な説明】[Detailed description of the invention]

本発明はフアクシミリや画像電子フイルム等に
用いられる帯域圧縮符号化による圧縮コードの復
号装置に関するものである。 従来のフアクシミリ等の画像伝送装置や近年の
光デイスクや磁気デイスク等を用いた画像フアイ
ル装置等においては、画像データを圧縮して取扱
うことにより、データ量を減少せしめ伝送或いは
蓄積動作の高速化、効率化を計つている。 かかる画像圧縮とは、いわゆるコード変換操作
の一種であり、代表的な圧縮方法であるモデイフ
アイド・ホフマン(MH)符号化について言え
ば、画像中の連続した白又は黒画素のビツトブロ
ツクを別の圧縮コードに対応させて表現するもの
である。この際、発生頻度の高い画素ビツトブロ
ツクに対しては短いコード長の圧縮コードを対応
させ、一方、発生頻度の低い画素ビツトブロツク
には対しては長いコード長の圧縮コードを対応さ
せることにより、画素の組合せの発生頻度の偏り
を利用し画像全体をより少ないビツト数の別のコ
ード列で表現するものである。 ところで、この画素ビツトブロツクに対する圧
縮コードの対応は経験則に基づいて決められたも
のであり、また、その圧縮コードのコード長は不
揃いなものである。従つて複数の圧縮コードが連
続して入力された場合、この圧縮コードを復号す
るためにコード長の不揃いな個々の圧縮コードを
正確に分離して復号動作することが必要となる。 従来より一般に用いられていたフアクシミリ装
置では、伝送線の伝送速度が高速ではなく、又、
それほどの高品位画像が要求されていなかつたの
で、復号処理を余り高速に行なう必要がなかつ
た。従つて、この様なフアクシミリ装置において
は安価なマイクロコンピユータ等のソフトウエア
処理により連続して入力する圧縮コードに対する
復号処理を遂次実行していた。 近年、例えば電子写真プロセスを用いたレー
ザ・ビーム・プリンタ等の高品位画像の形成が可
能で、且つ、高速なプリンタが開発され、このよ
うなプリンタにより圧縮画像のリアルタイムな再
生を行なうことが望まれる様になつている。しか
しながら、このようなプリンタの処理速度は十数
メガビツトにも達するもので、この速度はマイク
ロコンピユータ等によるソフトウエア処理が不可
能な領域にあり、半導体メモリ等のページメモリ
を設ける等の対策なしには従来のソフトウエア処
理による復号処理を適用することができない。 また、前述のMH符号化による圧縮コードの中
には、コード長よりもラン長の方が短い圧縮コー
ドがいくつか存在し、この様な圧縮コードを復号
した場合には、速度プリンタによるラン長に対応
した画像再生の終了前に次に復号すべき圧縮コー
ドの用意が整わず、この様なときには、高速プリ
ンタの画像再生に圧縮コードの復号動作が間に合
わないという不都合を生じる可能性がある。 本発明は以上の点に鑑みてなされたもので、コ
ード長よりもラン長の方が短い特定の圧縮コード
を含む不定長の圧縮コードを高速に復号し、且
つ、後段の装置に対して復号画像データを途切れ
なしに供給可能な圧縮コードの復号装置を提供す
ることを目的とし、詳しくは、不定長の圧縮コー
ドを順次復号する圧縮コードの復号装置におい
て、連続して入力する圧縮コードを複数連続して
記憶する記憶手段と、前記記憶手段に記憶されて
いる複数の圧縮コードをシフトすることにより次
に復号すべき圧縮コードを前記記憶手段の所定位
置にセットするシフト手段と、前記記憶手段の所
定位置にセツトされた圧縮コードを復号すること
によりラン長データ及び圧縮コードのコード長デ
ータを出力する復号手段と、前記復号手段で復号
された圧縮コードがコード長よりもラン長の方が
短い特定の圧縮コードであるか否かを判別する判
別手段と、前記判別手段により前記特定の圧縮コ
ードではないと判別された場合には前記シフト手
段により前記コード長データに従つたシフトを順
次実行せしめ、前記特定の圧縮コードであると判
別された場合には前記シフト手段により前記コー
ド長データに従つたシフトを一度に実行せしめる
シフト制御手段とを有する圧縮コードの復号装置
を提供するものである。 本発明の詳細な説明を以下に述べる。 まず、本発明の実施例の概要を第1図に示す回
路ブロツク図を用いて説明する。 第1図において101は記憶回路であり、例え
ば画像を光電的に読取るリーダや画像をフアイル
する電子フアイル、或いは電話線等の伝送路を介
して画像情報を受信する受信機等から入力された
既に別途手段を用いて画像信号を圧縮符号化する
ことにより得た、謂るMH(モデイフアイド・ホ
フマン)コードを、16ビツト(1ワード)単位で
順次読出し可能な形で記憶している回路で、例え
ばRAM(ランダム・アクセス・メモリ)又はラ
ツチ回路等により実現できる回路である。又、記
憶回路101に於けるMHコードの記憶形式は、
第2図aに一例を示す如くである。即ち、MHコ
ード本来の性質として、そのコード長は不揃い
(最小2ビツト〜最大13ビツト)であるが、コー
ド長に拘らず、1ビツトの空もなく、第2図bの
如くシリアルに連ねたビツト列を16ビツト毎に並
列に変換して並べた形式である。第2図bにおい
て、WB及びBBは夫々白及び黒画素を示すMH
コードで、WB及びBBの後の数字はそのコード
の示すランレングスを表わしており、例えば、
WB8はランレングス8の白を示すMHコードで
ある。この形式に於て、MHコードの区切りとワ
ード(16ビツト)の区切りとは必ずしも一致して
いない。又、記憶回路101は外部コントロール
に依り、後続のワードを順次パラレル出力できる
機能を有するものである。 第1図において102は謂ゆるマルチプレクサ
(データセレクタ)である。また、103は28ビ
ツト並列入力及び出力を有するレジスタであり、
記憶回路101からマルチプレクサ102を経
て、レジスタ103の入力側に与えられるMHコ
ードを一時記憶する機能及び既にレジスタ103
に記憶しているMHコードを出力として後述する
MHコード・デコード・ロジツク104及びMH
コード・デコード・テーブルROM(リード・オ
ンリ・メモリ)105等に与える役割りを有す
る。 マルチプレクサ102及びレジスタ103とで
データのシリアル・シフト及びnビツトのジヤン
プ・シフトが可能な謂ゆるビツト・シフタを形成
する。このビツト・シフタは後述するMHコー
ド・デコード・ロジツク104及びMHコード・
デコードRM105の出力等によりコントロー
ルされ、前述の方法によりMHコードの境目に拘
りなく記憶回路101からレジスタ103内に記
憶されたMHコードを必要なビツト数だけシフト
し、記憶する機能を果すものである。第3図(詳
細は後述する)はこのビツトシフタの詳細な構成
を示す図であり、レジスタ103内に例示された
MHコード列は第1図示の記憶回路101内に例
示したMHコードが適切なコントロールを経て白
のランレングス8を示すMHコードWB1
(10011)がデコード可能な位置に来た状態を図示
している。即ち第3図示のレジスタ103の出力
CO、即ち、LSB出力にMHコードの先頭ビツト
が出力されている状態をデコード可能な位置と
し、今后「頭出し完了」と称する。従つて第3図
レジスタ103内のコードの配列は白のランレン
グス8を示すMHコードWB8が「頭出し完了」
の状態にある事を示している。 第1図において104はMHコード・デコー
ド・ロジツク(以下ロジツク104と称する)で
あり、MHコードのコード長よりMHコードの示
すランレングスの方が短い以下の4種のコード即
ち、白のランレングス1(MHコードで000111、
コード長=6>ランレングス=1)、白のランレ
ングス2(MHコードで0111、コード長=4>ラ
ンレングス=2)、白のランレングス3(MHコ
ードて1000、コード長=4>ランレングス=3)
及び黒のランレングス1(MHコードで010、コ
ード長=3>ランレングス=1)をデコードする
回路である。 尚、以下の説明中、白のランレングス1、白の
ランレングス2、白のランレングス3及び黒のラ
ンレングス1を夫々示す上述の4種のMHコード
をまとめてHSCコードと呼ぶことにする。 第1図において105はMHコード・デコー
ド・RM(以下RM105と称する。)であ
り、前述のロジツク104がデコードを受持つ4
種のMHコードを含む全てのMHコードを主とし
てデコードする回路である。 ロジツク104及びROM105はMHコード
の処理スピード及び方法の違いにより、デコード
を受け持つMHコードを区分しているのである
が、これら2つのデコーダによりレジスタ103
においてMHコードが「頭出し完了」する毎に、
該MHコードのランレングス、コード長及び黒又
は白の画像の色の別、そしてメイク・アツプ・コ
ード又はターミネイト・コードの別、あるかない
か等の出力をするものである。 112はEOL検出回路で、レジスタ103に
ビツトシリアルに格納されたMHコード中にライ
ン同期のためのコード、即ち、エンド・オブ・ラ
イン(EOL)コードが存在するか否か及びその
格納位置を検出する。 第1図において108はランレングス・カウン
タでカウント数“0”から最大のメイク・アツプ
コードのランレングス、即ち“2560”以上のカウ
ントが可能なバイナリ・カウンタである。このラ
ンレングス・カウンタ108はロジツク104又
はROM105から出力されるMHコードのラン
レングスをカウントし終える毎にカウント終了信
号(本例ではカウンタのリツプル・キヤリCR)
を出力する。 109はフリツプ・フロツプであり、前述のラ
ンレングス・カウンタ108からのカウント終了
信号(リツプル・キヤリCR)を受けて、その度
毎に出力を反転させる。但し後述するようにメイ
ク・アツプ・コードのカウント終了信号では該出
力は反転しないように制御される。このフリツ
プ・フロツプ109の出力が記憶回路101から
読出したMHコードをデコードして得られた画像
信号である。 107はコード・レングス・カウンタでMHコ
ードのは最大コード長である“13”以上をカウン
トできる、バイナリ・カウンタでレジスタ103
内において「頭出し完了」していたMHコードを
シリアルシフト或いはジヤンプ・シフトする事に
よつて、デコード済コードとして103レジスタ
から掃出してしまい、後続するMHコードを「頭
出し完了」の位置へシフトする際に、そのシフト
量をカウントし制御するものである。 106は4ビツトのアキユミレータである。上
述したように、レジスタ103内に記憶回路10
1から取込まれたMHコードはデコード済となる
と順次レジスタ103から掃出され、これにより
レジスタ103内に空ビツトができる。そこでア
キユミレータ106がレジスタ103内の空ビツ
トの数をカウントし、16ビツトの空ビツトができ
る毎に新たなMHコードを記憶回路101から1
ワード(16ビツト)パラレルにレジスタ103内
の空ビツトへ補充する。これによりレジスタ10
3からロジツク104又はRM105へ与える
MHコードの列が途切れないように制御し、高速
なデコード動作を可能とする。 尚、110は第1図示のブロツク101〜10
9間の入出力信号を制御する制御回路を図示した
ものである。 以上の如くしてMHコードを画像信号へ変換、
即ち、MHコードの復号がなされる。復号された
画像信号はプリンタ111に供給され、被記憶材
上に画像記憶がなされる。尚、プリンタ111か
らは1走査毎の同期信号である水平同期信号
HSYNCが出力され、このHSYNCは復号動作の
タイミングに用いられる。 次に本発明の実施例を更に具体的に説明する。
本実施例は、画像圧縮符号であるMHコードを復
号した結果である画像信号を何らの画像メモリを
設けることなくレーザ・ビーム・プリンタ等の高
速プリンタに直接出力するのに使用する謂ゆる
“高速・リアルタイム・MHデコーダ”を提供す
るものである。従つて、MHデコーダの処理速度
の高速性及びMHデコーダの画像出力(本例は画
像周波数=十数MHZを想定)とレーザ・ビー
ム・プリンタ等の高速プリンタとの同期の問題が
解決されねばならない。そこで、これらの問題点
を解決する為に、以下に述べる処理方法に基き、
所望の“高速リアル・タイム・MHデコーダ”を
実現する。 (1) MHデコーダとプリンタの同期はMHコード
のELとプリンタの1ライン毎の同期信号で
ある水平同期信号とで行なう。 (2) 第1図レジスタ103内において「頭出し完
了」してデコーダ済となつたMHコードを掃出
し、後続のMHコードを「頭出し完了」の位置
までシフトする方法として、掃出すべきコード
によつてジヤンプ・シフト及びシリアル・シフ
トの2種類の方法のうちのどちらかを使用する
ようにする。 この2点を達成するための具体的な構成を図面
を用いて説明する。 第8図は第1図に出力部の例として示したレー
ザ・ビーム・プリンタの一実施例の構成を示す斜
視図である。 このプリンタはレーザ光を用いた電子写真方式
によるものであり、201はハウジングHa内に
可回動に支持された感光ドラムである。202は
レーザ光Laを出射する半導体レーザであり、出
射されたレーザ光Laはビームエキスパンダ20
3に入射せしめられ、所定のビーム径をもつたレ
ーザ光となる。更にレーザ光は鏡面を複数個有す
る多面体ミラー204に入射される。多面体ミラ
ー204は定速回転モータ205により所定速度
で回転される。多面体ミラー204によつてビー
ムエキスパンダ203より出射したレーザ光は実
質的に水平に走査される。そしてf−θ特性を有
する結像レンズ206により、帯電器213によ
り所定の極性に帯電されている感光ドラム201
上にスポツト光として結像される。 207は反射ミラー208によつて反射された
レーザ光を検知するビーム検出器で、この検出信
号により感光ドラム201上に所望の光情報を与
えるため半導体レーザ202の変調動作のタイミ
ングを決定する。 感光ドラム201上に結像走査されたレーザ光
により感光ドラム201上に高解像度の静電潜像
が形成される。この潜像は現像器209により顕
画化された後、カセツト210、211のいずれ
かに収納されている記録材に転写され、更に定着
器212を記録材が通ることにより像は記録材に
定着されハードコピーとして不図示の排出部に排
出される。 第9図に第8図の半導体レーザを所定の画像信
号により変調するためのプリンタ回路の一実施例
を示す。 復号処理されて入力端子INから入力された画
像信号VIDEOは1走査分の画像信号群毎に少な
くとも1走査分の画素数に等しい数のビツト数を
持つシフトレジスタ等からなる第1ラインバツフ
ア301及び第2ラインバツフア302に、バツ
フアスイツチ制御回路303の制御により交互に
入力される。 更に、第1ラインバツフア301及び第2ライ
ンバツフア302に入力された画像信号はビーム
検出器304からのビーム検出信号をトリガ信号
として1走査分毎に交互に読出され、レーザドラ
イバ305に加えられる。 レーザドライバ305はレーザ光の発光を制御
すべく入力した画像信号に基づき半導体レーザ3
06を変調制御する。 ラインバツフアを2個有することにより次々に
入力される画像信号をいずれかのラインバツフア
に入力している間に他方のラインバツフアに既に
格納されている画像信号をレーザドライバ305
に出力するので高速な画像信号の入力に反応可能
である。 又、ビーム検出器304からのビーム検出信号
は水平同期信号HSYNCとして復号処理回路にも
伝達され、後述の如く、復号処理とプリンタ動作
との同期合せに用いられる。 尚、本プリンタにおいて復号化された画像信号
は2つのラインバツフア、即ち、第1ラインバツ
フア301及び第2ラインバツフア302による
ダブルバツフア構成のバツフアを介して入力され
る。このダブルバツフア構成を用いて復号動作に
誤まりがあつた場合の補正動作を行なう。つま
り、復号回路により復号された画像信号を一方の
ラインバツフアに格納中、復号動作に誤まりを生
じた場合、誤まりのあつた現ラインの画像信号に
よるプリント動作を禁止し、他方のラインバツフ
アに既に格納されている前ラインの画像信号によ
りプリント動作する。 これにより、復号誤まりのあつた画像信号によ
るプリントがなされないので、再生画像への影響
を除去できる。尚、この補正動作により同一画像
信号による画像が少なくとも2ライン重複してし
まうことになるが、本例に用いた高解像度(例え
ば16pel/mm)の記録動作においては再生画像に
それほど影響を与えるものではない。 第4図において105は第1図示のMHコー
ド・テーブルROMであり、実際には複数個のR
Oド・オンリ・メモリ)により構成されるもので
ある。以下にRの内容を模式的に説明すると、
AD0〜AD13はRのアドレス端子である、
又O0〜O11はRの出力端子である。ROM
105の記憶内容のフオーマツトは、レジスタ1
03から供給されるデコードすべきMHコードの
LSBビツトをRのアドレス端子ADOにそろえ
以下各MHコードの各ビツトをMSB方向へ順次
RM105のアドレス端子のAD1からAD1
1までに与える。アドレス端子AD13にはMH
コードの色別を示す信号B/−ROM(黒=1、
白=0)を与えるものとする。尚、MHコードが
12ビツトより短い場合はその不足分のビツトは無
視(DON′T CARE)する。又ELコードはメ
イク・アツプ・コードとして扱う。又ランレング
ス1972以上のメイク・アツプ・コードの色別
ビツト(AD13)は無視(DON′T CARE)と
する。 ROM105には、以上によつて決めたアドレ
スの記憶データとして各アドレスを与えたMHコ
ードの内容を書き込んでおき、各MHコードに対
応した出力を出力端子O0〜O11に出力する。
即ち出力端子0はデコードしたMHコードがメ
イク・アツプ・コードのときに「1」、ターミネ
イトコードのときに「0」となる信号M/を出
力する。出力端子はデコーダしたMHコードが
ランレングス0の白コード(00110101(又はラン
レングス0の黒コード(0000110111)のときに
「0」を出力し、その他の時「1」となる信号
TOを出力する。 出力端子2〜5は各MHコード長(ビツト
数)を2の補数表現した形式の4ビツト出力CL0
〜CL3を出力する。但し、出力端子5は該コー
ド長のLSBである。出力端子6〜11は各
MHコードのランレングスを2の補数表現した形
式の6ビツト出力RL0〜RL5を出力する。但し、
出力端子11は該ランレングスのLSBである。
尚、メイク・アツプ・コードに対してはランレン
グスの2進数表現の上位6ビツトのみを出力端子
O11に割当てる。これはMHコードにおけるメ
イク・アツプ・コードは上位6ビツトのみでもそ
のランレングスを表現できるからである。第4図
の402にランレングス8の白を示すMHコード
WB8(10011)をデコーダした場合のROM10
5の出力0〜O11を例示する(本実施例に用
いるMHコード表はCCITT YELLOW BK
Fascicle .2Rec.T.4TABLE1/T.4及び
TABLE2/T.4による)。 第4図において104は第1図示のMHコード
デコート・ロジツクであり、本実施例ではアンド
ゲート及びオアゲートにより構成した検出ロジツ
クである。ロジツク104の出力である信
号はHSCコード、即ち、ランレングス1,2及
び3の白を示すMHコード及びランレングス1の
黒を示すMHコードを検出した時「0」となる。
また出力1〜2は上述の4種のMHコード
(HSCコード)の各々のコード長を2進数で表現
し、インバートして出力したものである。第4図
404にランレングス1の白を示すMHコード白
1WB1(000111)をデコードした場合の出力を
例示する。 尚、HSCコードのデコード用にロジツク回路
を用いたのは高速処理のために現在のROMアド
レス方式では時間的に充分対応できないからであ
る。 第3図示のビツト・シフタの動作を表1及び表
2を参照して説明する。 第3図102は第1図示のマルチプレクサであ
り、2個のトライステートのマルチプレクサ10
21及び1022からなる。マルチプレクサ10
2へのアキユミユレータ106からの制御線、
が「0」のときはマルチプレクサ1022側から
レジスタ103への出力A7〜A27はすべてト
ライステートのフローテイングとなることにより
無効となり、レジスタ103にはマルチプレクサ
1021側からの出力A0〜A27が有効とな
り、レジスタ103の出力C0〜C27となる。
その時マルチプレクサ1021は入力線S0〜S
2によりレジスタ103からの入力信号C0〜C
27の選択動作をする。その選択のされ方を表1
に示す。例えばS0=S1=1、S2=0の場合はレジ
スタ103の出力C3〜C27を取込み、夫々出力A0
〜A24として選択出力する。 次にマルチプレクサ102への制御線が
「1」の時は、マルチプレクサ102の出力A0
〜A6は制御線が「0」の時と同じにマルチプ
レクサ1021から入力線S0〜S2により選択
的に与えられる。マルチプレクサ102からの出
力A7〜A27のうち表2でYで示す以外はマル
チプレクサ1022側が有効となり隣、マルチプ
レクサ1021側の出力A7〜A27のうち表2
でYで示す以外はフローテイングとなり無効とな
る。又マルチプレクサ1022からレジスタ10
3に与えられる出力A7〜A27は表2に示す如
く、マルチプレクサ1022への入力線Σ0〜Σ
2により選択されるが、但し、表2においてYで
示すビツトはマルチプレクサ1021側から選択
される。このYの数はマルチプレクサ1022へ
の入力線Σ0〜Σ2に対応して出力される入力線
ST7〜ST11によりマルチプレクサ1021の
トライステート状態をコントロールすることによ
り設定される。なお第3図のマルチプレクサ10
21及び1022の回路は市販のマルチプレクサ
(例えば米国フエアチヤイルド社製IC、F215等)
及びゲート回路等により容易に実現できる。又、
マルチプレクサ102においてレジスタ103へ
の出力としてA0〜A27に選択された出力はク
ロツクCKによりレジスタ103にラツチされる。 以上の様にビツト・シフタを構成し、記憶回路
101より16ビツトパラレルに入力するMHコー
ド信号に対する任意のビツト数分のシフトを可能
とする。これにより、コード長の不揃いなMHコ
ードを前述の「頭出し完了」状態にすることがで
きる。
The present invention relates to a decoding apparatus for compressed codes using band compression encoding used for facsimiles, image electronic films, and the like. In conventional image transmission devices such as facsimiles and recent image file devices using optical disks and magnetic disks, image data is compressed and handled to reduce the amount of data and speed up transmission or storage operations. We are trying to improve efficiency. Such image compression is a type of so-called code conversion operation, and in the case of Modified Hoffman (MH) encoding, which is a typical compression method, bit blocks of continuous white or black pixels in an image are converted to a different compression code. It is expressed in correspondence with . At this time, pixel bit blocks with a high occurrence frequency are associated with compressed codes with a short code length, while pixel bit blocks with a low occurrence frequency are associated with compressed codes with a long code length. This method utilizes the bias in the frequency of occurrence of combinations to express the entire image using a different code string with a smaller number of bits. Incidentally, the correspondence of compressed codes to pixel bit blocks is determined based on empirical rules, and the code lengths of the compressed codes are irregular. Therefore, when a plurality of compressed codes are input in succession, in order to decode the compressed codes, it is necessary to accurately separate and decode the individual compressed codes having uneven code lengths. In conventional facsimile devices, the transmission speed of the transmission line is not high, and
Since such a high-quality image was not required, there was no need to perform decoding processing at high speed. Therefore, in such facsimile apparatuses, the decoding process for the compressed codes that are input continuously is executed one after another by software processing using an inexpensive microcomputer or the like. In recent years, high-speed printers capable of forming high-quality images have been developed, such as laser beam printers using an electrophotographic process, and it is desirable to reproduce compressed images in real time using such printers. I'm getting used to it. However, the processing speed of such printers reaches over 10 megabits, which is beyond the reach of software processing by microcomputers, and without countermeasures such as providing page memory such as semiconductor memory. It is not possible to apply decoding processing using conventional software processing. Also, among the compressed codes by MH encoding mentioned above, there are some compressed codes whose run length is shorter than the code length, and when such compressed codes are decoded, the run length by the speed printer is The next compressed code to be decoded is not ready before the image reproduction corresponding to the image is completed, and in such a case, there is a possibility that the decoding operation of the compressed code is not in time for the image reproduction of the high-speed printer. The present invention has been made in view of the above points, and is capable of rapidly decoding an undefined length compressed code including a specific compressed code whose run length is shorter than the code length, and at the same time decoding it to a subsequent device. The purpose is to provide a compressed code decoding device that can supply image data without interruption, and more specifically, in a compressed code decoding device that sequentially decodes compressed codes of undefined length, a plurality of compressed codes input in succession are provided. a storage means for sequentially storing; a shifting means for shifting a plurality of compressed codes stored in the storage means to set a compressed code to be decoded next at a predetermined position in the storage means; and the storage means a decoding means for outputting run length data and code length data of the compressed code by decoding a compressed code set at a predetermined position of the compressed code; and a compressed code decoded by the decoding means has a run length longer than the code length. a determining means for determining whether or not the code is a short specific compressed code; and when the determining unit determines that the code is not the specific compressed code, the shifting unit sequentially executes a shift according to the code length data. Furthermore, the present invention provides a compressed code decoding device having a shift control means for causing the shift means to execute a shift according to the code length data at once when the compressed code is determined to be the specific compressed code. . A detailed description of the invention follows. First, an outline of an embodiment of the present invention will be explained using the circuit block diagram shown in FIG. In FIG. 1, numeral 101 is a storage circuit that stores information input from, for example, a reader that photoelectrically reads images, an electronic file that files images, or a receiver that receives image information via a transmission path such as a telephone line. A circuit that stores a so-called MH (Modified Hoffman) code obtained by compressing and encoding an image signal using a separate means in a form that can be read out sequentially in units of 16 bits (1 word), for example. This is a circuit that can be implemented using RAM (random access memory) or a latch circuit. Furthermore, the storage format of the MH code in the storage circuit 101 is as follows:
An example is shown in FIG. 2a. In other words, the inherent nature of MH codes is that their code lengths are uneven (minimum 2 bits to maximum 13 bits), but regardless of the code length, there is no blank bit, and the MH codes are serially connected as shown in Figure 2b. This is a format in which a bit string is converted and arranged in parallel every 16 bits. In Figure 2b, WB and BB indicate white and black pixels, respectively.
In the code, the numbers after WB and BB represent the run length of the code, for example:
WB8 is an MH code indicating white with a run length of 8. In this format, the MH code delimiter and the word (16 bit) delimiter do not necessarily match. Furthermore, the memory circuit 101 has a function of outputting subsequent words in parallel in sequence under external control. In FIG. 1, 102 is a so-called multiplexer (data selector). Further, 103 is a register having 28-bit parallel input and output,
A function to temporarily store the MH code applied from the storage circuit 101 to the input side of the register 103 via the multiplexer 102 and
The MH code stored in is described later as the output.
MH code decode logic 104 and MH
It has the role of providing a code decode table ROM (read only memory) 105 and the like. Multiplexer 102 and register 103 form a so-called bit shifter capable of serial shifting of data and n-bit jump shifting. This bit shifter is connected to the MH code decode logic 104 and the MH code decode logic 104, which will be described later.
It is controlled by the output of the decoding RM 105, etc., and functions to shift and store the MH code stored in the register 103 from the storage circuit 101 by the necessary number of bits, regardless of the boundary between the MH codes, using the method described above. . FIG. 3 (details will be described later) is a diagram showing the detailed configuration of this bit shifter, and is illustrated in the register 103.
The MH code string is an MH code WB1 indicating a white run length of 8 after the MH code exemplified in the storage circuit 101 shown in the first diagram passes through appropriate control.
(10011) is shown in a position where it can be decoded. That is, the output of the register 103 shown in FIG.
The state in which the first bit of the MH code is output to the CO, that is, the LSB output, is defined as a decodable position, and is hereinafter referred to as ``completion of cueing''. Therefore, the code arrangement in the register 103 in FIG. 3 is such that the MH code WB8, which indicates a white run length of 8, is "cue completion".
It shows that it is in the state of In FIG. 1, 104 is an MH code decoding logic (hereinafter referred to as logic 104), and the following four types of codes have run lengths shorter than the code length of the MH code, namely, the white run length. 1 (MH code 000111,
code length = 6 > run length = 1), white run length 2 (0111 in MH code, code length = 4 > run length = 2), white run length 3 (1000 in MH code, code length = 4 > run length = 3)
This is a circuit that decodes black run length 1 (010 in MH code, code length = 3> run length = 1). In the following explanation, the above four types of MH codes that indicate white run length 1, white run length 2, white run length 3, and black run length 1 will be collectively referred to as the HSC code. . In FIG. 1, 105 is an MH code decode RM (hereinafter referred to as RM 105), and the logic 104 described above is responsible for decoding.
This is a circuit that mainly decodes all MH codes, including the MH codes of various types. The logic 104 and the ROM 105 are responsible for decoding the MH codes, which are divided according to the processing speed and method of the MH codes.
Every time the MH code completes cueing,
It outputs the run length of the MH code, the code length, whether the image is black or white, whether it is a make-up code or a termination code, and whether it is present or not. 112 is an EOL detection circuit that detects whether or not a code for line synchronization, that is, an end-of-line (EOL) code exists in the MH code stored bit-serial in the register 103, and its storage position. do. In FIG. 1, reference numeral 108 is a run length counter, which is a binary counter capable of counting from a count number "0" to the maximum make-up code run length, that is, "2560" or more. Each time the run length counter 108 finishes counting the run length of the MH code output from the logic 104 or ROM 105, a count end signal (in this example, the counter ripple/carry CR) is sent.
Output. A flip-flop 109 inverts its output each time it receives a count end signal (ripple/carry CR) from the run-length counter 108 mentioned above. However, as will be described later, the output is controlled so as not to be inverted by the count end signal of the make-up code. The output of flip-flop 109 is an image signal obtained by decoding the MH code read from memory circuit 101. 107 is a code length counter, and the MH code is a binary counter that can count the maximum code length of "13" or more.Register 103
By performing a serial shift or jump shift on the MH code that was "cueing completed" in the code, it is swept out of the 103 register as a decoded code, and the subsequent MH code is shifted to the "cueing complete" position. When shifting, the amount of shift is counted and controlled. 106 is a 4-bit accumulator. As mentioned above, the memory circuit 10 is stored in the register 103.
When the MH code taken in from 1 is decoded, it is sequentially flushed out from the register 103, thereby creating an empty bit in the register 103. Therefore, the accumulator 106 counts the number of empty bits in the register 103, and every time there are 16 empty bits, a new MH code is transferred from the storage circuit 101 to 1.
Empty bits in register 103 are filled in words (16 bits) in parallel. This causes register 10
3 to logic 104 or RM105
Controls the MH code string so that it is not interrupted, enabling high-speed decoding. In addition, 110 is the blocks 101 to 10 shown in the first diagram.
9 is a diagram illustrating a control circuit that controls input/output signals between 9 and 9. Convert the MH code to an image signal as described above,
That is, the MH code is decoded. The decoded image signal is supplied to the printer 111, and the image is stored on the storage material. Note that the printer 111 outputs a horizontal synchronization signal, which is a synchronization signal for each scan.
HSYNC is output, and this HSYNC is used for timing of decoding operations. Next, embodiments of the present invention will be described in more detail.
This embodiment uses a so-called "high-speed printer" that is used to directly output an image signal that is the result of decoding an MH code, which is an image compression code, to a high-speed printer such as a laser beam printer without providing any image memory.・Real-time MH decoder”. Therefore, the problems of high processing speed of the MH decoder and synchronization of the image output of the MH decoder (in this example, image frequency = 10-odd MHz ) with a high-speed printer such as a laser beam printer must be solved. It won't happen. Therefore, in order to solve these problems, based on the processing method described below,
Realize the desired “high-speed real-time MH decoder”. (1) Synchronization between the MH decoder and the printer is performed using the EL of the MH code and the horizontal synchronization signal, which is a synchronization signal for each line of the printer. (2) In the register 103 in FIG. 1, the MH code that has been decoded with "cueing complete" is swept out, and the subsequent MH code is shifted to the "cueing complete" position. Therefore, one of two methods is used: jump shift and serial shift. A specific configuration for achieving these two points will be explained using the drawings. FIG. 8 is a perspective view showing the structure of an embodiment of the laser beam printer shown as an example of the output section in FIG. 1. This printer uses an electrophotographic method using laser light, and 201 is a photosensitive drum rotatably supported within a housing Ha. 202 is a semiconductor laser that emits laser light La, and the emitted laser light La is transmitted to the beam expander 20.
3 and becomes a laser beam with a predetermined beam diameter. Further, the laser beam is incident on a polyhedral mirror 204 having a plurality of mirror surfaces. The polyhedral mirror 204 is rotated at a predetermined speed by a constant speed rotation motor 205. The laser light emitted from the beam expander 203 is scanned substantially horizontally by the polyhedral mirror 204. The photosensitive drum 201 is charged to a predetermined polarity by a charger 213 using an imaging lens 206 having f-θ characteristics.
An image is formed above as a spot light. A beam detector 207 detects the laser beam reflected by the reflecting mirror 208, and uses this detection signal to determine the timing of the modulation operation of the semiconductor laser 202 in order to provide desired optical information onto the photosensitive drum 201. A high-resolution electrostatic latent image is formed on the photosensitive drum 201 by the laser light that is imaged and scanned on the photosensitive drum 201 . After this latent image is developed by a developing device 209, it is transferred to a recording material stored in either cassette 210 or 211, and then the image is fixed on the recording material by passing through a fixing device 212. The hard copy is ejected to an ejecting unit (not shown). FIG. 9 shows an embodiment of a printer circuit for modulating the semiconductor laser shown in FIG. 8 with a predetermined image signal. The image signal VIDEO that has been decoded and input from the input terminal IN is transferred to a first line buffer 301 and a second line buffer 301, each consisting of a shift register or the like, having a number of bits equal to the number of pixels for at least one scan for each group of image signals for one scan. The signals are alternately input to the two-line buffer 302 under the control of the buffer switch control circuit 303. Further, the image signals inputted to the first line buffer 301 and the second line buffer 302 are read out alternately for each scan using the beam detection signal from the beam detector 304 as a trigger signal, and are applied to the laser driver 305. The laser driver 305 controls the semiconductor laser 3 based on the input image signal to control the emission of laser light.
06 is modulated and controlled. By having two line buffers, while inputting image signals that are input one after another to one of the line buffers, the laser driver 305 transfers the image signals already stored in the other line buffer.
It can respond to high-speed image signal input. The beam detection signal from the beam detector 304 is also transmitted to the decoding processing circuit as a horizontal synchronizing signal HSYNC, and is used for synchronizing the decoding processing and the printer operation, as will be described later. Incidentally, the image signal decoded in this printer is inputted through two line buffers, that is, a buffer having a double buffer configuration including a first line buffer 301 and a second line buffer 302. This double buffer configuration is used to perform a correction operation when an error occurs in the decoding operation. In other words, if an error occurs in the decoding operation while the image signal decoded by the decoding circuit is being stored in one line buffer, printing operation using the image signal of the current line containing the error is prohibited, and the image signal already stored in the other line buffer is Printing is performed based on the stored image signal of the previous line. As a result, printing is not performed using an image signal with a decoding error, so that the influence on the reproduced image can be eliminated. Note that this correction operation causes at least two lines of images with the same image signal to overlap, but in the high-resolution (for example, 16 pel/mm) recording operation used in this example, it does not affect the reproduced image much. isn't it. In FIG. 4, 105 is the MH code table ROM shown in FIG.
It consists of an O-only memory. The contents of R are schematically explained below.
AD0 to AD13 are R address terminals,
Further, O0 to O11 are output terminals of R. ROM
The format of the memory contents of 105 is register 1.
MH code to be decoded supplied from 03
Align the LSB bit with the address terminal ADO of R, and then set each bit of each MH code sequentially in the MSB direction from AD1 to AD1 of the address terminal of RM105.
Give by 1. Address terminal AD13 has MH
Signal B/-ROM (black = 1,
white = 0). Furthermore, the MH code is
If it is shorter than 12 bits, the missing bits are ignored (DON'T CARE). Also, the EL code is treated as a make-up code. Also, color bits (AD13) of make-up codes with a run length of 1972 or more are ignored (DON'T CARE). The contents of the MH codes given each address are written in the ROM 105 as storage data for the addresses determined above, and outputs corresponding to each MH code are output to the output terminals O0 to O11.
That is, output terminal 0 outputs a signal M/ which becomes "1" when the decoded MH code is a make-up code and "0" when it is a terminate code. The output terminal is a signal that outputs "0" when the decoded MH code is a white code (00110101) with a run length of 0 (or a black code (0000110111) with a run length of 0), and becomes "1" in other cases.
Output TO. Output terminals 2 to 5 are 4-bit outputs CL0 in which each MH code length (number of bits) is expressed as two's complement.
~Output CL3. However, the output terminal 5 is the LSB of the code length. Output terminals 6 to 11 are
Outputs 6-bit outputs RL0 to RL5 in a two's complement format representing the run length of the MH code. however,
Output terminal 11 is the LSB of the run length.
For the make-up code, only the upper 6 bits of the binary representation of the run length are assigned to the output terminal O11. This is because the make-up code in the MH code can express its run length using only the upper 6 bits. MH code indicating white with run length 8 at 402 in Figure 4
ROM10 when decoding WB8 (10011)
(The MH code table used in this example is CCITT YELLOW BK.
Fascicle. 2Rec.T.4TABLE1/T.4 and
According to TABLE2/T.4). In FIG. 4, numeral 104 is the MH code decoding logic shown in FIG. 1, which in this embodiment is a detection logic composed of an AND gate and an OR gate. The signal output from the logic 104 becomes "0" when detecting the HSC code, that is, the MH code indicating white with run lengths 1, 2, and 3, and the MH code indicating black with run length 1.
Outputs 1 and 2 are the code lengths of the four types of MH codes (HSC codes) described above expressed in binary numbers, inverted and output. FIG. 4 404 shows an example of the output when decoding the MH code white 1WB1 (000111) indicating white with a run length of 1. Note that a logic circuit was used to decode the HSC code because the current ROM addressing system cannot adequately handle the time required for high-speed processing. The operation of the bit shifter shown in FIG. 3 will be explained with reference to Tables 1 and 2. FIG. 3 102 is the multiplexer shown in FIG. 1, with two tri-state multiplexers 10
It consists of 21 and 1022. multiplexer 10
a control line from the accumulator 106 to 2;
When is "0", all outputs A7 to A27 from the multiplexer 1022 side to the register 103 become tri-state floating and become invalid, and outputs A0 to A27 from the multiplexer 1021 side become valid to the register 103. The outputs of the register 103 are C0 to C27.
At that time, the multiplexer 1021 inputs the input lines S0 to S.
2, the input signals C0 to C from the register 103
Performs 27 selection operations. Table 1 shows how the selection is made.
Shown below. For example, if S 0 = S 1 = 1 and S 2 = 0, the outputs C 3 to C 27 of the register 103 are taken in, and the outputs A 0
Select and output as ~A 24 . Next, when the control line to the multiplexer 102 is "1", the output A0 of the multiplexer 102
.about.A6 are selectively given from the multiplexer 1021 by the input lines S0 to S2 in the same way as when the control line is "0". Among the outputs A7 to A27 from the multiplexer 102, except those indicated by Y in Table 2, the multiplexer 1022 side is valid, and the outputs A7 to A27 from the multiplexer 1021 side, as shown in Table 2, are valid.
The values other than those indicated by Y are floating and invalid. Also from multiplexer 1022 to register 10
As shown in Table 2, the outputs A7 to A27 given to the multiplexer 1022 are input to the input lines Σ0 to Σ
However, the bit indicated by Y in Table 2 is selected from the multiplexer 1021 side. The number of Y is the input line output corresponding to the input lines Σ0 to Σ2 to the multiplexer 1022.
It is set by controlling the tri-state state of multiplexer 1021 using ST7 to ST11. Note that the multiplexer 10 in FIG.
The circuits 21 and 1022 are commercially available multiplexers (for example, IC manufactured by Fairchild, Inc., F215, etc.)
This can be easily realized using a gate circuit or the like. or,
The output selected by multiplexer 102 as output to register 103 from A0 to A27 is latched into register 103 by clock CK. By configuring the bit shifter as described above, it is possible to shift the 16-bit parallel MH code signal inputted from the memory circuit 101 by an arbitrary number of bits. As a result, MH codes with uneven code lengths can be brought into the above-mentioned "cue completion" state.

【表】【table】

【表】【table】

【表】【table】

【表】【table】

【表】 前述した如くMHコードが何であるかを判別す
るのはレジスタ103内を移動するコード列を監
視する方法をとつているが、その移動方法はビツ
ト・シフト102等により1ビツトずつ移動する
シリアルシフト及びHSCコードとして扱われる
MHコードが検出された場合の最大6ビツトのジ
ヤンプシフトが起る。即ち103レジスタ内のコ
ード列は最大でも6ビツト以下の移動しか1クロ
ツク時間にはできないように制御されている。 従つてEOLコード(000000000001)はレジス
タ103内を移動する際、前からの経過で誤つた
移動量であつてもそのLSBビツトは必ずレジス
タ103のC0〜C5に現われることになるので
ある。 さて、一般にMHコードを復号する際、そのコ
ード体系からして、ELコードの検出が極めて
重要である。以下、第1図示のEOL検出回路1
12を詳細に説明する。 即ち、EOLコードは画像1ライン毎の区切り
のコードであると同時にそれに続く、MHコード
の位置を示す役割を持つているわけであるが、故
にデコードの際EOLコードを検出ミスすると直
ちにそれに続く各MHコードの区切りが不明とな
り1ライン分の画像がデコード不可能となり、
又、続く各画像ラインのEOLもその検出法に依
つては検出できなくなり結局、プリント出力した
画像が乱れて殆んど使用できない程度まで波及す
ることになる。 従つて、MHコード列の中でたとえ送・受信誤
り等によりMHコードを多少誤つていても、EOL
コードの検出に極力誤りを起させないEOL検出
方法が重要となるのである。 EOLコードが確実に検出されればコード誤り
は画像1ライン内で回復できる。 第10図はEOL検出回路112の詳細な構成
を示す図である。第10図に示すように12ビツト
のELコード(000000000001)のLSBがレジ
スタ103のC0〜C5のどこにきても良いよう
に少なくともレジスタの一度にシフト可能なシフ
ト量即ち6に対応する6種の検出ゲート1001
で並列に設ける。これによりレジスタ103内の
格納データを監視することによりELコードの
検出漏れを防止している。そして、EOLコード
を検出した検出ゲート1001からは夫々0
EOL〜5の如く、EOLコードのレジスタ1
03内における位置を示す検出信号が出力され
る。 この方法によりEOLコード自身が誤りビツト
を含んでいない限りEL検出を誤る事がなくな
るのである。 従つて画像コード誤りは必ず1ライン以内で回
復可能である。又EOLコード内に誤りビツトを
含む確率は画像コード内に誤りビツトを含む確率
に比較しそのビツト数の割合等からして極めて低
く実用上無視できる程度である。 第11図にはEOLコード検出のための検出ゲ
ートの詳細を示す。図の如く、12ビツトデータを
バラレルに取込む構成となつており、そのMSB
を除いた11ビツトのデータを反転ゲートINVを
介し、前述のMSBとともに12入力のNANDゲー
ト1002に印加する。これによりEOLコード
のデコードを行い、EOLコードがデコードされ
た場合にはNANDゲート1002の出力がロー
レベルとなる。 第10図のEOL検出回路112の出力0EOL〜
5EOLはコードレングスカウンタ107及びアキ
ユムレータ106に伝えられる。アキユムレータ
106はこの信号により、EOLコードのコード
長分のシフトをレジスタ103になさしめるもの
である。 即ち第10図示のEL検出回路112はその
検出位置からしてレジスタ103にEOLコード
の前にMHコード又はFiLLビツトがまだ残って
いる状態で既にEOLを検出することもある。従
つてEOL検出回路112が検出するEOLコード
のうち信号0以外のEOLコード検出信号即
ち1〜5を検出した場合にはアキユム
レータ106はレジスタ103におけるELコ
ードの前の残りコードがレジスタ103から前述
のシフト動作によつて掃出されたあと、ELコ
ードのコード長分即ち12ビツトのシフトをレジス
タ103に更に行なわせる。 これによりEOLコードを掃出し終え、復号す
べき次ラインの先頭の画像MHコードの「“頭出
し完了”」の状態となる。またこれにより画像情
報ではないEOLコードを他の圧縮コードと同様
に復号動作することによる時間無駄も除去でき
る。 次に第1図に示したブロツク図全体の詳細な説
明を第5図等を用いて行なう。第5図に掲げた回
路の動作は複雑であるので、説明を容易にする為
に、いくつかの条件設定し、更に一般的と思われ
るMHコードの復号動作を例にして、まず、該回
路の基本的動作の説明を行ない、その後、前記設
定条件の成立に関して説明するものとする。 復号されるべき、MHコード列の一例として第
2図bを用いる事とする。そして本回路の動作原
理として、プリンタの水平同期信号HSYNCが来
る前までに、第2図bの先に現われるELコー
ドは第3図示のレジスタ103から前述のビツ
ト・シフト動作により掃出され、ELの次の
MHコード(即ち、これからデコードしようとす
るラインの最初の画像信号のMHコード)である
白のランレングス8を示すMHコードWB8がレ
ジスタ103に前述の如く「頭出し完了」の状態
でプリンタからのHSYNC持ちとなつているとす
る。 第6図は第5図回路の主要部のタイム・チヤー
トである。第6図においてHSYNC601は前述
のプリンタの主走査方向の同期信号であり、主走
査1ライン毎に発生される。これをタイム・チヤ
ートの基準とし、この時刻t0とする。CK600
は基本クロツクであり、その周波数は画像周波数
と同じである。VEN602は主走査線内の有効
画像区間を規定する区間信号である。またiNi6
03は区間信号VENの始まる1クロツク(1ビ
ツト)前のパルス、EOS604は区間信号VEN
の最終クロツク(ビツト)のパルスである。 尚、前述した様に、圧縮コード(MHコード)
を復号した画信号に基ずく記録動作をレーザ・ビ
ーム・プリンタで行なう場合、水平同期信号
HSYNCはレーザ光によるラスタスキヤンのスキ
ヤンラインの所定位置に、レーザ光が達したこと
を検知したビーム検知信号に基ずくものであり、
又、区間信号VENはレーザ光によりスキヤンさ
れて潜像形成のなされる感光体(ドラム)をレー
ザ光がスキヤンしている区間に基ずく。 これらから明らかなように第6図における各信
号600〜604の時間的関係は一般に一定値に
固定されるべきものである。そして本例では
HSYNC601とiNi603の間を64クロツクの
固定長とする。またVEN602の区間は1ライ
ンの画素数となるが本例ではそれを4096ビツト
(画素)とする。 第6図において、時刻t0では第5図の回路は画
像出力の各主走査毎のイニシアル状態に設定され
ている。即ち、前述の如く各ライン毎の先頭画像
のMHコード(本例では白のランレングス8を示
すWB8(10011)がレジスタ103に「頭出し
完了」であり、該レジスタ103の出力・C0
C12(本例ではc10011.0010.0001)はロジツク10
4、ROM105等に与えられている。 又、同じくコードレングスカウンタ107の値
は(−1)=(1111B)となつている。この際(−
1)は「頭出し完了」を意味すると定義されてい
る。又、各フリツプフロツプ510,109,5
15はリセツト状態、フリツプフロツプ509は
セツト状態にある。 フリツプ・フロツプ509がセツトされている
(Q=1)ことはMH・コードのEOLを検出した
后、レジスタ103からEOLコードの掃出しを
完了した状態にある事を示す。また、フリツプ・
フロツプ510がセツトされている(Q=1)の
状態は後述するように、ランレングス・ラツチ5
13がビジー(Busy)であることを示す。フリ
ツプ・フロツプ515はB/−ROM信号を出
力Qとして出力する。このフリツプ・フロツプ5
15の出力は1のときにこれから復号すべき
MH・コードの色が黒であることを示すB−
ROM信号である。同じく出力Qが0のときは白
であることを示す。 又、ランレングス・カウンタ108は停止して
いるとし、その値は0であるとする。SFTEN6
05はコントロール線でこれが1であることはレ
ジスタ103がデータ(MHコード)をシフトさ
せて良い事を示す。又簡単の為、アキユミレータ
106の出力信号Σ0〜Σ2及び信号は0であ
ると仮定する。即ち、この仮定によりレジスタ1
03の28ビツト全てが有効なMHコード列であ
り、空のない状態を示すこととなる。 以上が時刻toの状態である。 さて、時刻t1になると第6図示のHSYNC信号
601の立下がにより第5図示フリツプフロツプ5
09がリセツトされ、第6図に613で示す
EOLF信号が1となりAND・ゲート508を介
してSFTEN信号605が1となる。SFTEN信号
605が1の場合は第6図示のカウンタ107がカ
ウントイネーブルとなる。同時に時刻t1には
ROM105のアドレスにはレジスタ103の保
持する出力C0〜C12が与えられる。(本例で
は10011××××××××)そしてRM105
の出力のうちコード・レングスCL0〜SL3はゲ
ート503及びゲート504を経て、コード・レ
ングス・カウンタ107に与えられている。又同
時に信号607が0であるのでカウンタ1
07はロード・モードとなりt1のクロツクにより
CL0〜CL3の値がカウンタ107にロードされる。
本例ではランレングス8の白を示すMHコード
WB8のコード長5の2の補数である(−5)が
ロードされる 又、RM105の出力RL0〜RL5及びM/
Tはランレングス・ラツチ513の入力として与
えられる。同時にランレングス・ラツチ513に
はフリツプフロツプ515のQ出力もB/−
ROM信号620として608が1によりラツチ
513をラツチ・イネーブルに制御し、t1のクロ
ツクでD0〜D7の値をラツチ513にラツチす
る。 同時に時刻t1ではフリツプ・フロツプ510は
1にセツトされる。又フリツプ・フロツプ515
は反転する。フリツプ・フロツプ510のQ出力
であるBUSY信号609が1であることはラツ
チ513が有効なランレングスをラツチしている
事を示す。又フリツプ・フロツプ515のQ出力
であるB/−RM信号620が1であること
は次にレジスタ103に「頭出し完了」にすべき
MHコードの示す色が黒である事を示す。(又、
B/−RM信号620が0であるならば該色
が白である。) SFTEN信号605はゲート505、ゲート5
06を経て、S信号としてマルチ・プレクサ1
02に与えられレジスタ103のデータが1ビツ
トシフトするようにコントロールする。これによ
りレジスタ103にあつたMHコードから必要な
データの後段への受渡しが終つたので該MHコー
ドは使用済となり、SFTEN信号605によりカ
ウント可能になつたカウンタ107の制御下で第
6図タイムチヤートに示す如くカウンタ107か
らキヤリアウト信号CRO606が発生する迄ビ
ツト・シフトが行なわれて、使用済のMHコード
がレジスタ103から掃出される。即ち本例では
−5の設定されたカウンタ107の値が(−1)
の値になるまでレジスタ103の1ビツト・シフ
トを繰返し続行する。 カウンタ107の値が(−1)になると今、使
用済となつたMHコード(本例ではランレングス
8の白を示すMHコードWB8)の掃出しが終了
し、次のMHコード(ランレングス6の黒を示す
MHコードBB6)がレジスタ103において
「頭出し完了」となるがラツチ513にはまだ、
前のMHコードWB8のランレングスが残つてい
るためフリツプ・フロツプ510はセツトのまま
である。従つて、カウンタ107のCRO信号が
1となることによりゲート511の出力は0にな
り、結局SFTEN信号605が0となることによ
り、カウンタ107が停止する。同様にSFTEN
信号605が0となることによりS0〜S2信号
も全て0となり、レジスタ103がシフト停止し
データがホールドされる。従つて「頭出し完了」
BB6の状態が時刻t2まで続く。 時刻t2に於いてiNi信号603により信号
610が0となり、ラツチ513に保持されてい
たランレングス(本例では白の8ビツト)がマル
チプレクサ514を経て信号610により
カウンタ108へ移される。同様にフリツプ・フ
ロツプ510が信号610によりリセツト
される。これによりラツチ513が空となり、ビ
ジー(BUSY)が解消される。従つて、ゲート
511の出力が1となり前述と同様にSFTEN信
号605が1となり、レジスタ103において
「頭出し完了」となつているMHコードによつて
得られたランレングスがラツチ513へラツチさ
れる。 以下同様にMHコードが順次デコーダされる。 時刻t2でカウンタ108へロードされたランレ
ングス(本例では−5)に基き、時刻t2の次のビ
ツトから発生するVEN信号602によりカウン
タ108はカウントを開始する。そしてカウンタ
108の値が(−1)になつた時(本例では時刻
t3)CR1信号611を出す。又、ラツチ513か
らのB/信号621により指定された画像の色
別にフリツプ・フロツプ109をセツトトする。
これによりとりあえずり第1番目のMHコードが
画像VIDEO(本例では白の8ビツト)に変換でき
たわけである。 尚、VEN信号602の立上り後においては、
iNi信号603は新たなHSYNCが到来する迄、
0のままである。従つてVEN信号602の立上
り後、例えば時刻t3においてはiNi信号603に
代つて、カウンタ108のカウントアツプを示す
CR1信号611によりフリツプ・フロツプ510
をリセツトし、そのビジー状態を解除せしめ、続
くMHコードのデコードにより得たランレングス
のラツチ513への取込みを可能とする。 さてここまでの説明においては、MHコードの
コード長がランレングス長より等しいか、又は短
かい場合であり、MHコードを「頭出し完了」の
時点から、レジスタ103から掃出すべき使用済
のMHコードをマルチプレクサ102に与えられ
る信号S0=1,S1=S2=0とすることによ
りシリアルシフトすれば、MHコードを途切れる
ことなくデコードを続けられるわけである。しか
し、一方、MHコードのランレングス長がコード
長より短かい場合には前述の如くシリアルシフト
させるとレジスタ103からコードを掃出してい
る間(シフト中0に、カウンタ108において、
該MHコードのランレングスのカウントが完了し
てしまう。この時点において画像の途切れをなく
すためには次のランレングスをラツチ513から
カウンタ108へ取る必要がある。しかし、レジ
スタ103では次のMHコードに対する「頭出し
完了」状態となつていないので、ラツチ513に
は取込むべき、ランレングスがROM105より
出力されていないことになる。 結局この場合、プリンタにおいて記録される画
像が途切れる事となり、リアルタイムで画像を出
力することができない事になる。この様な不都合
は前述したHSCコード、即ち、ランレングス1,
2及び3の白を示すMHコードとランレングス1
の黒を示す、MHコードのデコードの際に生じ
る。 そして、この様な場合は、前述の4種のHSC
コードであるMHコードだけはMHコード・デコ
ード・ロジツク104を用いて、ROM105か
らのコード長データCL0〜CL3によりシリア
ル・シフトしたと等価に後段の回路を動作せしめ
る。即ち、カウンタ107に(−1)をロードで
きるようにロジツク104は信号により、
ロード値(−1)をつくりゲート504を介して
カウンタ107にロードする。又、このとき
ROM105からの出力CL0〜CL3は信号
によりゲート503にてインピツトする。又、ロ
ジツク104からの出力SF1とSF2にデコード
したMHコードのコード長に対応したジヤンプ量
を0〜2として出力しS0〜S2を経てマ
ルチプレクサ102を動作する。これにより1ビ
ツトの時間で複数ビツトのシフトを行なうことが
可能となり、換言すれば1ビツトの時間でデコー
ドすべき次のコードのレジスタ103における
「頭出し完了」ができるようになる。またこのジ
ヤンプ量はアキユムレータ106にも入力され、
レジスタ103の空ビツト数に累積加算される。 以上2通りのシフト方法により「頭出し完了」
から「ランレングスラツチ」更に「ランレングス
カウント」の一連の動作を高速に繰返し、プリン
タ部に供給する画像がとぎれることなく、復号を
実行する。112はEOL検出回路でレジスタ1
03の出力C0〜C11にEOLコードが現われ
たことを検出すると信号0EOLを出力する。そし
て1ラインの終了を示すEOLコードがEOL検出
回路112で検出されると、タイミング合せ回路
523を介してEOL検出回路112からの信号
0EOLにより、フリツプ・フロツプ509がセツ
トされ信号613が0となる。これによ
り、結局SFTEN信号605が0となり、次の
HSYNCが来るまでレジスタ103は停止し、
MHコードは「頭出し完了」の状態でHSYNC待
ちとなることとなる。この様に、プリンタと復号
動作との同期合せが良好に得られるものである。 以上のように各ラインごと繰返し走査が進行す
れば、画像が形成されるのである。 次に第7図を用いてデコードエラー検出法につ
いて述べる。第7図示回路は第1図又は第5図の
適当な位置に接続される。第7図において、80
1はインバータであるる。また、802は加算
器、803はラツチ、804はコンパレータ、8
05はラツチ、806及び807はフリツプ・フ
ロツプである。 第7図820は第5図において、ラツチ513
からマルチプレクサ514を介して出力される信
号820と同じ信号であり、前述の如く、MHコ
ードを解読した結果のランレングスが2の補数で
表現されたものである。 さて、加算器802とラツチ803とでアキユ
ミユレータを構成する。加算器802のLSBの
下位からの桁上りは829信号(1)により1に
セツトされており結局加算器802の出力821
はランレングス820の2の補数となる。従つて
出力821は該ランレングスの正整数を2進数表
現したものである。又、ラツチ803への加算は
第6図610のタイミング、即ち第5図示
のカウンタ108へ、カウントすべきランレング
スをロードするタイミングで加算が続けられる。
又、ラツチ803は主走査の各ライン毎に、出力
される第6図HSYNC信号601毎にクリヤされ
る。即ちラツチ803の出力822は各ライン毎
のランレングスの累積値を2進数で表わす。一
方、ラツチ805は毎ラインの一定ランレングス
(本例では1ラインの画素数に対応する4096)
を信号824によりCPU等から知らされて保持
している。コンパレータ804は今ラツチ803
に累積されているランレングス822(Aとす
る)とラツチ805からの正解値823(Bとす
る)とを比較するコンパレータ回路である。 フリツプ・フロツプ806は第6図示のEOS
信号604の出力時、即ち、各ラインの最終ビツ
トに於いて、コンパレータ804よりA=Bであ
ることを示す信号831が出力されていない時
ANDゲート808の出力825によりセツトさ
れる。即ち、フリツプ・フロツプ806のセツト
されることはランレングスの累積値Aが予定され
た正解値B(本例では4096)に等しくなかつ
たことを示し、MHコード又はそのデコードに誤
りがあつたことを示す。 フリツプ・フロツプ807はA>Bの状態にな
つた場合にコンパレータ804から出力される信
号832を入力とするアンドゲート809の出力
826によりランレングスの累積途中でも直ちに
セツトされる。即ち、フリツプ・フロツプのQ出
力828はランレングスの累積値がラインの途中
で予定された正解値(本例では4096、即ち
VEN602の区間の画素数)を越えてしまつた
事を示し、これは1ラインのデコードの途中にお
いて既に大巾なデコード誤まりが生じたことを表
わすものである。 又、フリツプ・フロツプ806及び807は第
6図613が“0”即ちEL(Eud of
line)がEOL検出回路112により検出され
HSYNC601の入力がなされるまでリセツトさ
れず、HSYN信号601の入力によりゲート8
10の出力によりリセツトされる。従つて、各フ
リツプ・フロツプ806,807の出力827又
は出力828を検知し別途のEOL検出回路11
2によりEOL検知に専念させることにより、デ
コード誤り等による同期ズレを最小限に止める事
ができる。 尚、本例ではアキユムレータによりランレング
スを累積加算する例を示したが、これは所定数例
えば4096から順次ランレングス値を減算し減
算カウンタからのボロウを検出する方法等に置き
換えることもできる。 以上の様にデコード誤まりが生じ、フリツプ・
フロツプ806又は807がセツトされると、そ
の出力は第9図示のプリンタ回路のバツフアスイ
ツチ制御回路303に伝達される。 バツフアスイツチ制御回路303は前述した様
にダブルバツフア構成となつているプリンタのラ
インバツフアの入出力を交互に選択するためのバ
ツフア選択動作を行なうものである。そして、フ
リツプ・フロツプ806又は807よりそのセツ
ト信号、即ち、デコード誤まり検出信号を入力す
ると、デコード誤まりの発生した現ラインの画像
信号を無効にし、エラーのあつたラインに代つて
前ラインの画像信号を再利用すべく、前ラインの
画像信号の格納されているラインバツフアの再読
出しを行なう様、ラインバツフアの選択制御を行
なう。即ち、例えば第1ラインバツフア301に
復号中の画像信号を格納している時に、デコード
誤まりが発生した場合、第1ラインバツフア30
1に現在格納中の画像信号を無効にし、現在、画
像信号の読出しがなされている第2ラインバツフ
ア302の読出しの終了後、再び、第2ラインバ
ツフア302から同一の画像信号の読出しを行な
う。 これにより、デコード誤まりの生じたラインの
画像信号によるプリント動作はなされずに、記録
画像への影響を除去できる。尚、プリンタのライ
ンバツフアの数は2本以上でも同様に実行でき
る。又、この誤まり補正用のラインバツフアをデ
コード回路側に設けてもよい。 さて、前述の如く本例では、MHコード化され
た画像をデコードする際には、該MHコードの先
頭ELを検知し、その後に続くコードから該画
像の第1ラインとして、デコードを開始し、実際
の画像を再生する。 なぜなら、MHコード化された画像は、本件で
は図示していないが第1図示の記憶回路101の
前段に存在する、例えば画像メモリ等に蓄積され
ているものである。そこからCPU等により、画
像メモリの読出し開始アドレスを指定し、MHコ
ード化された画像を読出し、記憶回路101を介
しデコーダ回路に与える。 その際、画像メモリから読出されたMHコード
は例えば、画像ページの途中から読出した場合に
は必ずしも、先頭にELコードが来ない。この
場合でも正しくデコードを開始できるように、デ
コード開始前に第1図示記憶回路101をクリア
状態にしておき、次に該メモリから読出したMH
コードを記憶回路101が満杯(第2図の状態)
になるまで読出し、次いで、デコーダ内部へデー
タ(MHコード)を送り始める。そして、第1番
目のELコードが検出できるまでは、画像コー
ドとして扱わず、次々にデータを送り続けEL
コードを検出することに専念する。 そしてELコードが検出できた後には以后の
コードを画像情報として扱い、コード・レングス
等によりシフト量をコントロールしながらデコー
ドしていくわけである。このようにして第1番目
のELコードを前述のEOL検出回路112に
より見つける事により、MHコードの区切りを判
定し、又画像の同期的再生が可能となるのであ
る。 さて、前述のデコード動作開始後、始めて入力
する第1のEOLコードを見つける動作を開始す
ると記憶回路101から順次レジスタ103へデ
ータが送られて来るが、その開始前にレジスタ1
03に全て“0”が存在しているとすると実際に
記憶回路101から来たMHコード又はMHコー
ドの一部(途中)と継がつて、EOLコード
(000000000001)と誤検知されることとなる。そ
れを避ける為レジスタ103の初期状態は全て
“1”にセツトする。即ちレジスタ103のC0
〜C27を全て“1”とする。これにより前述の
ELの誤検知を避けることができる。 レジスタ103を全て“1”にプリセツトする
方法を説明する。第12図にはレジスタ103の
構成の一例を示すもので、即ち、レジスタ103
は28個のフリツプ・フロツプF/Fで構成され
る。従つて、その全てのフリツプ・フロツプF/
Fのプリセツト端子にCPU等からプリセツトパ
ルス901を入力し、全てのフリツプ・フロツプ
のQ出力を1とする。ここではフリツプ・フロツ
プF/Fは例えばアメリカTI社製のSN74S74N
等を使用することができる。 以上、本実施例はMHコードの復号を例に説明
したが、他の圧縮方法によるコードの復号装置に
適用することもできる。また、復号後の画像信号
はレーザ・ビーム・プリンタ等のプリンタで画像
記録される以外に、CRT等のデイスプレイにて
表示したり、ビツトイメージとしてフアイルした
りする等、多様な用途に利用可能である。更に、
本実施例中で用いた多値はそれに限るものではな
く、用途や環境等において適宜選択されるもので
あることは言う迄もない。 以上説明した様に圧縮コードの復号動作を確実
に実行できるものであり、また、高速処理を必要
とする画像処理に対してもリアルタイムな復号動
作を可能とするものである。また、高速で且つ高
品位な画像記録を必要とするプリンタ等の出力部
に対しても効果的に圧縮コードを復号化し、供給
することが可能となるものである。 また、圧縮コードの復号動作或いは伝送に係わ
る異常を確実に検出することができ、また、それ
による影響を最小限にすることができるものであ
る。 又、圧縮コードを復号化して得た画像信号に基
ずき、プリント動作する際、プリンタと復号処理
部との同期が良好に得られるものである。 また、復号動作の基準となるライン同期コード
の検出を確実に行ない、復号動作の同期ずれ等の
不都合を除去できるものである。 また、1ページ或いは1ラインの途中から圧縮
コードが復号回路に供給されたとしても、復号動
作におけるライン同期を確実になさしめ復号誤ま
り等を防止できるものである。 以上説明した様に、本発明によると、記憶手段
に記憶されている複数の圧縮コードをシフトする
ことにより次に復号すべき圧縮コードを記憶手段
の所定位置にセツトし、記憶手段の所定位置にセ
ツトされた圧縮コードを復号することによりラン
長データ及び圧縮コードのコード長データを出力
するとともに、復号された圧縮コードがコード長
よりもラン長の方が短い特定の圧縮コードである
か否かを判別する判別手段を備え、この判別手段
により特定の圧縮コードではないと判別された場
合にはコード長データに従つたシフトを順次実行
せしめ、特定の圧縮コードであると判別された場
合にはコード長データに従つたシフトを一度に実
行せしめるので、コード長よりもラン長の方が短
い特定の圧縮コードの復号が行われた場合でも、
次に復号すべき圧縮コードを即座に記憶手段の所
定位置にセツト可能となり、従つて、特定の圧縮
コードに続く圧縮コードの復号を迅速に実行でき
るので、後段の装置に対して、復号画像データを
途切れなしに供給可能な圧縮コードの復号を実行
することができる。
[Table] As mentioned above, the MH code is determined by monitoring the code string moving within the register 103, and the movement method is to move one bit at a time using bit shift 102 or the like. Treated as serial shift and HSC code
A jump shift of up to 6 bits occurs when an MH code is detected. That is, the code string in register 103 is controlled so that it can only move by 6 bits or less in one clock time. Therefore, when the EOL code (000000000001) moves within the register 103, its LSB bit will always appear in C0 to C5 of the register 103 even if the amount of movement is incorrect due to the previous code. Generally, when decoding an MH code, detection of an EL code is extremely important due to its code system. Below, EOL detection circuit 1 shown in Figure 1
12 will be explained in detail. In other words, the EOL code is a delimiter code for each line of the image, and at the same time has the role of indicating the position of the MH code that follows it. The boundaries of the MH code become unclear, making it impossible to decode one line of the image.
Furthermore, depending on the detection method used, the EOL of each subsequent image line cannot be detected, and as a result, the printed image is distorted to the extent that it is almost unusable. Therefore, even if the MH code in the MH code string is slightly incorrect due to transmission/reception errors, the EOL
It is important to develop an EOL detection method that minimizes code detection errors. If the EOL code is reliably detected, code errors can be recovered within one line of the image. FIG. 10 is a diagram showing a detailed configuration of the EOL detection circuit 112. As shown in FIG. 10, so that the LSB of the 12-bit EL code (000000000001) can be placed anywhere from C0 to C5 of the register 103, at least six types of registers corresponding to the shift amount that can be shifted at one time, that is, 6, are set. Detection gate 1001
are installed in parallel. This prevents failure to detect an EL code by monitoring the data stored in the register 103. Then, each 0 is output from the detection gate 1001 that detected the EOL code.
EOL code register 1, like EOL~5
A detection signal indicating the position within 03 is output. This method prevents errors in EL detection unless the EOL code itself contains error bits. Therefore, image code errors can always be recovered within one line. Furthermore, the probability that an error bit is included in an EOL code is extremely low compared to the probability that an error bit is included in an image code, considering the ratio of the number of bits, and can be ignored in practical terms. FIG. 11 shows details of the detection gate for detecting the EOL code. As shown in the figure, the configuration is such that 12-bit data is imported in parallel, and the MSB
The 11-bit data excluding the above is applied to the 12-input NAND gate 1002 along with the aforementioned MSB via the inverting gate INV. As a result, the EOL code is decoded, and when the EOL code is decoded, the output of the NAND gate 1002 becomes low level. Output 0EOL~ of the EOL detection circuit 112 in Fig. 10
5EOL is transmitted to the code length counter 107 and the accumulator 106. The accumulator 106 uses this signal to cause the register 103 to shift by the code length of the EOL code. That is, the EL detection circuit 112 shown in FIG. 10 may already detect EOL even though the MH code or FiLL bit still remains in the register 103 before the EOL code, considering its detection position. Therefore, when the EOL detection circuit 112 detects an EOL code detection signal other than signal 0, that is, an EOL code detection signal 1 to 5 among the EOL codes detected, the accumulator 106 detects the remaining code before the EL code in the register 103 from the above-mentioned EOL code. After being cleared by the shift operation, the register 103 is caused to further shift by the code length of the EL code, that is, 12 bits. As a result, the EOL code has been swept out, and the state of "cue completion" of the image MH code at the beginning of the next line to be decoded is reached. This also eliminates wasted time caused by decoding an EOL code that is not image information in the same way as other compressed codes. Next, a detailed explanation of the entire block diagram shown in FIG. 1 will be given using FIG. 5 and the like. The operation of the circuit shown in Figure 5 is complex, so in order to make the explanation easier, we will set some conditions and take the decoding operation of the MH code, which is considered to be more common, as an example. The basic operation will be explained, and then the establishment of the setting conditions will be explained. Let us use FIG. 2b as an example of the MH code string to be decoded. The operating principle of this circuit is that, before the printer's horizontal synchronization signal HSYNC arrives, the EL code that appears earlier in FIG. 2b is swept out of the register 103 shown in FIG. next to
The MH code WB8 indicating white run length 8, which is the MH code (that is, the MH code of the first image signal of the line to be decoded), is stored in the register 103 in the state of "starting complete" as described above, and is sent from the printer. Suppose you have HSYNC. FIG. 6 is a time chart of the main parts of the circuit shown in FIG. In FIG. 6, HSYNC 601 is a synchronization signal in the main scanning direction of the printer described above, and is generated for each main scanning line. This is used as the reference for the time chart, and this time is set as t 0 . CK600
is the fundamental clock, whose frequency is the same as the image frequency. VEN 602 is a section signal that defines an effective image section within the main scanning line. Also iNi6
03 is a pulse 1 clock (1 bit) before the start of the section signal VEN, and EOS604 is the section signal VEN.
This is the final clock (bit) pulse of In addition, as mentioned above, the compression code (MH code)
When using a laser beam printer to perform a recording operation based on the image signal decoded, the horizontal synchronization signal
HSYNC is based on a beam detection signal that detects that the laser beam has reached a predetermined position on the scan line of the raster scan using the laser beam.
The section signal VEN is based on the section in which the laser beam scans the photoreceptor (drum) on which a latent image is formed. As is clear from these, the temporal relationships among the signals 600 to 604 in FIG. 6 should generally be fixed at constant values. And in this example
The length between HSYNC601 and iNi603 is a fixed length of 64 clocks. Also, the section of VEN 602 has the number of pixels of one line, and in this example, it is 4096 bits (pixels). In FIG. 6, at time t0 , the circuit of FIG. 5 is set to the initial state for each main scan of image output. That is, as mentioned above, the MH code of the first image of each line (in this example, WB8 (10011) indicating white run length 8) is stored in the register 103 as "starting complete", and the output of the register 103, C 0 ~
C 12 (c10011.0010.0001 in this example) is Logic 10
4. It is given to ROM105 etc. Similarly, the value of the code length counter 107 is (-1)=(1111B). At this time (-
1) is defined to mean "completion of cueing." Also, each flip-flop 510, 109, 5
15 is in a reset state, and flip-flop 509 is in a set state. The flip-flop 509 being set (Q=1) indicates that the EOL code has been completely flushed out from the register 103 after the EOL of the MH code has been detected. Also, flip
When the flop 510 is set (Q=1), the run length latch 5 is set as described below.
13 indicates busy. Flip-flop 515 outputs the B/-ROM signal as output Q. This flip flop 5
The output of 15 should be decoded from now on when it is 1
B- indicates that the MH code color is black
It is a ROM signal. Similarly, when the output Q is 0, it indicates white. It is also assumed that the run-length counter 108 is stopped and its value is zero. SFTEN6
05 is a control line, and the fact that it is 1 indicates that the register 103 can shift data (MH code). For simplicity, it is assumed that the output signals Σ0 to Σ2 and the signal of the accumulator 106 are 0. That is, with this assumption, register 1
All 28 bits of 03 are valid MH code strings, indicating a state with no emptiness. The above is the state at time to. Now, at time t 1 , the HSYNC signal shown in Figure 6
The fall of 601 causes flip-flop 5 shown in the figure.
09 is reset, as shown at 613 in FIG.
The EOLF signal becomes 1, and the SFTEN signal 605 becomes 1 via the AND gate 508. SFTEN signal
When 605 is 1, the counter 107 shown in FIG. 6 is enabled for counting. At the same time at time t 1
Outputs C0 to C12 held by the register 103 are given to addresses in the ROM 105. (10011×××××××× in this example) and RM105
Of the outputs, code lengths CL0 to SL3 are provided to a code length counter 107 via gates 503 and 504. At the same time, since the signal 607 is 0, the counter 1
07 is in load mode and by the clock of t1
The values CL 0 to CL 3 are loaded into the counter 107 .
In this example, the MH code indicating white with run length 8
(-5), which is the two's complement of the code length 5 of WB8, is loaded. Also, the outputs RL0 to RL5 of RM105 and M/
T is provided as an input to runlength latch 513. At the same time, the Q output of the flip-flop 515 is also applied to the run length latch 513.
A ROM signal 620 608 controls the latch 513 to latch enable by setting it to 1, and latches the values D0 to D7 in the latch 513 at the clock of t1 . At the same time, flip-flop 510 is set to 1 at time t1 . Also flip flop 515
is reversed. A 1 on the BUSY signal 609, the Q output of flip-flop 510, indicates that latch 513 is latching a valid run length. Also, the fact that the B/-RM signal 620, which is the Q output of the flip-flop 515, is 1 indicates that the register 103 should indicate that "cueing is complete".
Indicates that the color indicated by the MH code is black. (or,
If the B/-RM signal 620 is 0, the color is white. ) SFTEN signal 605 is gate 505, gate 5
06, multiplexer 1 as the S signal.
02 to control the data in register 103 to be shifted by 1 bit. As a result, the transfer of the necessary data from the MH code in the register 103 to the subsequent stage has been completed, and the MH code is now used.The time chart in FIG. Bit shifting is performed until the carry-out signal CRO 606 is generated from the counter 107 as shown in FIG. That is, in this example, the value of the counter 107 set to -5 is (-1)
The 1-bit shift of register 103 continues repeatedly until the value of . When the value of the counter 107 becomes (-1), the cleaning of the currently used MH code (in this example, the MH code WB8 indicating white with run length 8) is completed, and the next MH code (run length 6) is cleared. show black
The MH code BB6) is "cueing complete" in the register 103, but the latch 513 is still
Since the run length of the previous MH code WB8 remains, the flip-flop 510 remains set. Therefore, when the CRO signal of the counter 107 becomes 1, the output of the gate 511 becomes 0, and when the SFTEN signal 605 becomes 0, the counter 107 stops. Similarly SFTEN
When the signal 605 becomes 0, all the S0 to S2 signals also become 0, the register 103 stops shifting, and the data is held. Therefore, "cueing complete"
The state of BB6 continues until time t2 . At time t2 , the iNi signal 603 causes the signal 610 to become 0, and the run length held in the latch 513 (white 8 bits in this example) is transferred to the counter 108 by the signal 610 via the multiplexer 514. Similarly, flip-flop 510 is reset by signal 610. This empties the latch 513 and eliminates the BUSY state. Therefore, the output of the gate 511 becomes 1, the SFTEN signal 605 becomes 1 in the same manner as described above, and the run length obtained by the MH code whose "cue finding is completed" in the register 103 is latched into the latch 513. . Thereafter, the MH codes are sequentially decoded in the same manner. Based on the run length (-5 in this example) loaded into the counter 108 at time t2 , the counter 108 starts counting by the VEN signal 602 generated from the next bit at time t2 . Then, when the value of the counter 108 becomes (-1) (in this example, the time
t 3 ) Output CR1 signal 611. Further, the flip-flop 109 is set according to the color of the image specified by the B/signal 621 from the latch 513.
As a result, the first MH code can be converted into an image VIDEO (white 8-bit in this example). Furthermore, after the rise of the VEN signal 602,
iNi signal 603 until new HSYNC arrives.
It remains 0. Therefore, after the rise of the VEN signal 602, for example at time t3 , the iNi signal 603 indicates the count up of the counter 108.
CR1 signal 611 causes flip-flop 510
is reset, the busy state is released, and the run length obtained by the subsequent decoding of the MH code can be taken into the latch 513. Now, in the explanation so far, the code length of the MH code is equal to or shorter than the run length length, and from the time when the MH code is "cueing completed", the used MH code to be flushed from the register 103 is If the code is serially shifted by setting the signals S0=1 and S1=S2=0 applied to the multiplexer 102, decoding of the MH code can be continued without interruption. However, on the other hand, if the run length of the MH code is shorter than the code length, if the serial shift is performed as described above, while the code is being flushed out from the register 103 (at 0 during the shift, in the counter 108,
Counting of the run length of the MH code is completed. At this point, it is necessary to take the next run length from latch 513 to counter 108 in order to eliminate image discontinuity. However, since the register 103 is not in the "cue completion" state for the next MH code, the run length that should be taken into the latch 513 has not been output from the ROM 105. Eventually, in this case, the image recorded by the printer will be interrupted, making it impossible to output the image in real time. This inconvenience is caused by the aforementioned HSC code, that is, run length 1,
MH code showing 2 and 3 white and run length 1
occurs when decoding the MH code. In such cases, the four types of HSC mentioned above
Only the MH code, which is a code, is used to operate the subsequent circuit equivalent to serially shifted code length data CL0 to CL3 from the ROM 105 using the MH code decode logic 104. That is, in order to load (-1) into the counter 107, the logic 104 uses a signal to load the counter 107 with (-1).
A load value (-1) is created and loaded into the counter 107 via the gate 504. Also, at this time
Outputs CL0 to CL3 from the ROM 105 are input to the gate 503 by signals. Further, the jump amount corresponding to the code length of the decoded MH code is outputted as outputs SF1 and SF2 from the logic 104 as 0 to 2, and the multiplexer 102 is operated via S0 to S2. This makes it possible to shift a plurality of bits in the time of one bit. In other words, it becomes possible to "complete the cue finding" in the register 103 of the next code to be decoded in the time of one bit. This jump amount is also input to the accumulator 106,
It is cumulatively added to the number of empty bits in register 103. With the above two shift methods, "cueing is completed"
A series of operations from ``run length latch'' to ``run length count'' are repeated at high speed to execute decoding without interrupting the image supplied to the printer section. 112 is the EOL detection circuit and register 1
When it detects that the EOL code appears on the outputs C0 to C11 of 03, it outputs the signal 0EOL. When the EOL code indicating the end of one line is detected by the EOL detection circuit 112, a signal from the EOL detection circuit 112 is sent via the timing alignment circuit 523.
By 0EOL, flip-flop 509 is set and signal 613 becomes 0. As a result, the SFTEN signal 605 becomes 0, and the next
Register 103 is stopped until HSYNC comes,
The MH code will wait for HSYNC in the state of "cueing completed". In this way, good synchronization between the printer and the decoding operation can be achieved. An image is formed by repeatedly scanning each line as described above. Next, a decoding error detection method will be described using FIG. The circuit shown in FIG. 7 is connected to the appropriate location in FIG. 1 or FIG. 5. In Figure 7, 80
1 is an inverter. Further, 802 is an adder, 803 is a latch, 804 is a comparator, and 803 is a latch.
05 is a latch, and 806 and 807 are flip-flops. FIG. 7 820 is the latch 513 in FIG.
This is the same signal as the signal 820 output from the multiplexer 514, and as described above, the run length as a result of decoding the MH code is expressed in two's complement. Now, adder 802 and latch 803 constitute an accumulator. The carry from the lower LSB of the adder 802 is set to 1 by the 829 signal (1), and as a result, the output 821 of the adder 802
is the two's complement of the run length 820. Therefore, the output 821 is a binary representation of the positive integer of the run length. Further, the addition to the latch 803 continues at the timing 610 in FIG. 6, that is, at the timing when the run length to be counted is loaded into the counter 108 shown in FIG.
Furthermore, the latch 803 is cleared for each main scanning line and for each HSYNC signal 601 in FIG. 6 that is output. That is, the output 822 of latch 803 represents the cumulative value of the run length for each line in binary form. On the other hand, the latch 805 has a constant run length for each line (4096, which corresponds to the number of pixels in one line in this example).
is notified from the CPU or the like by a signal 824 and held. Comparator 804 is now latch 803
This is a comparator circuit that compares the run length 822 (denoted as A) accumulated in the latch 805 with the correct value 823 (denoted as B) from the latch 805. The flip-flop 806 is the EOS shown in Figure 6.
When the signal 604 is output, that is, when the signal 831 indicating that A=B is not output from the comparator 804 at the final bit of each line.
Set by output 825 of AND gate 808. That is, the setting of flip-flop 806 indicates that the run length cumulative value A was not equal to the expected correct value B (4096 in this example), and that there was an error in the MH code or its decoding. shows. The flip-flop 807 is immediately set even during the run length accumulation by the output 826 of the AND gate 809 which receives the signal 832 output from the comparator 804 when the condition A>B is reached. That is, the Q output 828 of the flip-flop is such that the cumulative value of the run length is the expected correct value (4096 in this example, i.e., 4096 in this example).
This indicates that a large decoding error has already occurred during the decoding of one line. In addition, the flip-flops 806 and 807 have a value of 613 in FIG.
line) is detected by the EOL detection circuit 112.
It is not reset until HSYNC601 is input, and gate 8 is reset by HSYN signal 601 input.
It is reset by the output of 10. Therefore, the output 827 or 828 of each flip-flop 806, 807 is detected and a separate EOL detection circuit 11 is provided.
By focusing on EOL detection using 2, it is possible to minimize synchronization deviations due to decoding errors, etc. Although this example shows an example in which run lengths are cumulatively added by an accumulator, this may be replaced by a method in which run length values are sequentially subtracted from a predetermined number, for example, 4096, and borrows from the subtraction counter are detected. As described above, decoding errors occur, causing flips and
When flop 806 or 807 is set, its output is transmitted to buffer switch control circuit 303 of the printer circuit shown in FIG. The buffer switch control circuit 303 performs a buffer selection operation for alternately selecting the input and output of the line buffer of the printer having the double buffer configuration as described above. When the set signal, that is, the decoding error detection signal, is input from flip-flop 806 or 807, the image signal of the current line in which the decoding error has occurred is invalidated, and the previous line is used in place of the line in which the error has occurred. In order to reuse the image signal, line buffer selection control is performed so that the line buffer in which the image signal of the previous line is stored is read out again. That is, for example, if a decoding error occurs while storing an image signal being decoded in the first line buffer 301, the first line buffer 30
1, and after reading out the second line buffer 302 from which the image signal is currently being read out, the same image signal is read out again from the second line buffer 302. As a result, a printing operation is not performed based on the image signal of the line in which the decoding error has occurred, and the influence on the recorded image can be removed. Incidentally, the same operation can be performed even if the number of line buffers in the printer is two or more. Further, a line buffer for error correction may be provided on the decoding circuit side. Now, as mentioned above, in this example, when decoding an MH coded image, the first EL of the MH code is detected, and decoding is started from the code that follows as the first line of the image, Play the actual image. This is because the MH-encoded image is stored in, for example, an image memory, which is not shown in the present case, but is present in the previous stage of the storage circuit 101 shown in the first diagram. From there, the CPU or the like specifies the readout start address of the image memory, reads out the MH encoded image, and supplies it to the decoder circuit via the storage circuit 101. At this time, when the MH code read from the image memory is read from the middle of the image page, the EL code does not necessarily come at the beginning. In order to start decoding correctly even in this case, the first illustrated memory circuit 101 is cleared before starting decoding, and then the MH read from the memory is
Code storage circuit 101 is full (state shown in Figure 2)
The data is read until it becomes , and then the data (MH code) starts to be sent inside the decoder. Then, until the first EL code is detected, it is not treated as an image code, and data continues to be sent one after another until the EL code is detected.
Concentrate on detecting code. After the EL code is detected, the subsequent code is treated as image information and decoded while controlling the amount of shift using the code length or the like. In this way, by finding the first EL code by the EOL detection circuit 112 described above, it is possible to determine the delimitation of the MH code and to reproduce the image synchronously. Now, when the operation to find the first EOL code to be input after the start of the decoding operation described above is started, data is sequentially sent from the memory circuit 101 to the register 103.
If all "0"s exist in 03, the MH code or a part (in the middle) of the MH code actually coming from the storage circuit 101 will be continuation, and the EOL code (000000000001) will be erroneously detected. To avoid this, the initial state of the register 103 is all set to "1". That is, C0 of register 103
-C27 are all set to "1". This makes it possible to avoid the aforementioned false detection of EL. A method for presetting all registers 103 to "1" will be explained. FIG. 12 shows an example of the configuration of the register 103.
consists of 28 flip-flop F/Fs. Therefore, all the flip-flops F/
A preset pulse 901 is input from the CPU or the like to the preset terminal of F, and the Q outputs of all flip-flops are set to 1. Here, the flip-flop F/F is, for example, SN74S74N manufactured by TI in the United States.
etc. can be used. Although this embodiment has been described above using the decoding of MH codes as an example, it can also be applied to decoding apparatuses for codes using other compression methods. In addition, the decoded image signal can be used for a variety of purposes, such as being recorded on a printer such as a laser beam printer, or being displayed on a display such as a CRT, or as a file as a bit image. be. Furthermore,
It goes without saying that the multi-values used in this embodiment are not limited to these, and may be appropriately selected depending on the application, environment, etc. As explained above, the decoding operation of the compressed code can be reliably executed, and the decoding operation can also be performed in real time for image processing that requires high-speed processing. Furthermore, it becomes possible to effectively decode and supply compressed codes to output units such as printers that require high-speed, high-quality image recording. Further, it is possible to reliably detect abnormalities related to the decoding operation or transmission of compressed codes, and to minimize the effects thereof. Further, when performing a printing operation based on the image signal obtained by decoding the compressed code, the printer and the decoding processing section can be synchronized well. Furthermore, it is possible to reliably detect the line synchronization code that serves as a reference for decoding operations, thereby eliminating inconveniences such as out-of-synchronization of decoding operations. Further, even if the compressed code is supplied to the decoding circuit from the middle of one page or one line, line synchronization in the decoding operation can be ensured and decoding errors can be prevented. As explained above, according to the present invention, by shifting a plurality of compressed codes stored in the storage means, the compressed code to be decoded next is set at a predetermined position in the storage means, and the compressed code is set at a predetermined position in the storage means. By decoding the set compressed code, run length data and code length data of the compressed code are output, and whether or not the decoded compressed code is a specific compressed code whose run length is shorter than the code length. If the determining means determines that the compressed code is not a specific compressed code, a shift according to the code length data is executed sequentially, and if it is determined that the compressed code is a specific compressed code, the Since the shift according to the code length data is executed at once, even if a specific compressed code whose run length is shorter than the code length is decoded,
The next compressed code to be decoded can be immediately set in a predetermined position in the storage means, and the compressed codes following a specific compressed code can be quickly decoded. It is possible to decode compressed codes that can be supplied without interruption.

【図面の簡単な説明】[Brief explanation of drawings]

第1図は本発明の一実施例の概略構成を示す回
路ブロツク図、第2図aは記憶回路101におけ
るMHコードの記憶型式を示す図、第2図bは複
数のMHコードの連続した状態を示す図、第3図
はビツト・シフタの構成を示す回路ブロツク図、
第4図はMHコードのデコード回路の構成を示す
回路ブロツク図、第5図は第1図示の回路ブロツ
ク図の詳細な回路図、第6図は第5図示回路の各
部動作タイミングを示すタイミングチヤート図、
第7図はデコードエラー検出回路の構成を示す回
路ブロツク図、第8図はプリンタの一構成例を示
す図、第9図は第8図示プリンタの記録動作のた
めの回路構成を示すブロツク図、第10図は
EOL検出回路の構成を示す回路ブロツク図、第
11図は第10図示の検出ゲートの構成を示す回
路図、第12図はレジスタの一構成例を示す回路
図であり、101は記憶回路、102はマルチプ
レクサ、103はレジスタ、104はMHコー
ド・デコード・ロジツク、104はMHコード・
テーブルROMである。
FIG. 1 is a circuit block diagram showing a schematic configuration of an embodiment of the present invention, FIG. 2a is a diagram showing a storage type of MH codes in the memory circuit 101, and FIG. 2b is a diagram showing a continuous state of a plurality of MH codes. Figure 3 is a circuit block diagram showing the configuration of the bit shifter.
Fig. 4 is a circuit block diagram showing the configuration of the MH code decoding circuit, Fig. 5 is a detailed circuit diagram of the circuit block diagram shown in Fig. 1, and Fig. 6 is a timing chart showing the operation timing of each part of the circuit shown in Fig. 5. figure,
FIG. 7 is a circuit block diagram showing the configuration of a decoding error detection circuit, FIG. 8 is a diagram showing an example of the configuration of the printer, and FIG. 9 is a block diagram showing the circuit configuration for recording operation of the printer shown in FIG. Figure 10 is
11 is a circuit diagram showing the configuration of the detection gate shown in FIG. 10, FIG. 12 is a circuit diagram showing an example of the configuration of a register, 101 is a storage circuit, 102 is a multiplexer, 103 is a register, 104 is MH code decode logic, 104 is MH code decode logic,
It is a table ROM.

Claims (1)

【特許請求の範囲】 1 不定長の圧縮コードを順次復号する圧縮コー
ドの復号装置において、 連続して入力する圧縮コードを複数連続して記
憶する記憶手段と、 前記記憶手段に記憶されている複数の圧縮コー
ドをシフトすることにより次に復号すべき圧縮コ
ードを前記記憶手段の所定位置にセツトするシフ
ト手段と、 前記記憶手段の所定位置にセツトされた圧縮コ
ードを復号することによりラン長データ及び圧縮
コードのコード長データを出力する復号手段と、 前記復号手段で復号された圧縮コードがコード
長よりもラン長の方が短い特定の圧縮コードであ
るか否かを判別する判別手段と、 前記判別手段により前記特定の圧縮コードでは
ないと判別された場合には前記シフト手段により
前記コード長データに従つたシフトを順次実行せ
しめ、前記特定の圧縮コードであると判別された
場合には前記シフト手段により前記コード長デー
タに従つたシフトを一度に実行せしめるシフト制
御手段とを有することを特徴とする圧縮コードの
復号装置。
[Scope of Claims] 1. A compressed code decoding device that sequentially decodes compressed codes of undefined length, comprising: storage means for successively storing a plurality of compressed codes input in succession; and a plurality of compressed codes stored in the storage means. a shift means for setting a compressed code to be decoded next in a predetermined position in the storage means by shifting the compressed code in the storage means; a decoding means for outputting code length data of a compressed code; a determining means for determining whether the compressed code decoded by the decoding means is a specific compressed code having a run length shorter than the code length; If the determining means determines that the code is not the specific compressed code, the shifting unit sequentially executes a shift according to the code length data, and if it is determined that the code is the specific compressed code, the shifting A compressed code decoding apparatus comprising: shift control means for causing a shift according to the code length data to be executed at once by the means.
JP11483184A 1984-06-05 1984-06-05 Decoder for compression code Granted JPS60257663A (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP11483184A JPS60257663A (en) 1984-06-05 1984-06-05 Decoder for compression code
US06/739,069 US4837634A (en) 1984-06-05 1985-05-29 Apparatus for decoding image codes obtained by compression process
DE19853520051 DE3520051A1 (en) 1984-06-05 1985-06-04 DEVICE FOR DECODING IMAGE CODE SIGNALS OBTAINED BY A COMPRESSING PROCESS
FR8508474A FR2569068B1 (en) 1984-06-05 1985-06-05 APPARATUS FOR DECODING IMAGE CODES OBTAINED BY A COMPRESSION PROCESS

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11483184A JPS60257663A (en) 1984-06-05 1984-06-05 Decoder for compression code

Publications (2)

Publication Number Publication Date
JPS60257663A JPS60257663A (en) 1985-12-19
JPH0584698B2 true JPH0584698B2 (en) 1993-12-02

Family

ID=14647781

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11483184A Granted JPS60257663A (en) 1984-06-05 1984-06-05 Decoder for compression code

Country Status (1)

Country Link
JP (1) JPS60257663A (en)

Also Published As

Publication number Publication date
JPS60257663A (en) 1985-12-19

Similar Documents

Publication Publication Date Title
US3471639A (en) Shift/count control circuit
US4334246A (en) Data decompressor circuit
US3895184A (en) Facsimile system with buffered transmission and reception
CA1254999A (en) Compression/decompression system and device for two-dimensional binary data from a picture field
US3769453A (en) Finite memory adaptive predictor
JPH0127630B2 (en)
GB2143102A (en) Image processing apparatus which discriminates between different image data
JPH0134500B2 (en)
EP0212905B1 (en) Decoding apparatus for image code
JPS59178077A (en) Method for compressing data of binary picture
US6111665A (en) Image forming apparatus in which a read address may not surpass the write address
US4837634A (en) Apparatus for decoding image codes obtained by compression process
US4918540A (en) System for encoding or decoding analog video signals
US3984833A (en) Apparatus for encoding extended run-length codes
JPH0584698B2 (en)
JPH0586698B2 (en)
JPS6031423B2 (en) Compressed data restoration method
US5280361A (en) Data processing apparatus
JPH0584697B2 (en)
JPH0646777B2 (en) Decompression device for compression code
JPH065890B2 (en) Decompression device for compression code
JPH0685568B2 (en) Decompression device for compression code
JPH0646776B2 (en) Decompression device for compression code
CA1108748A (en) Processor for increasing the run-length of facsimile data
JPS6333350B2 (en)

Legal Events

Date Code Title Description
EXPY Cancellation because of completion of term