(57)【特許請求の範囲】
【請求項１】
ストライプモードのＪＢＩＧ符号化方式を適用し、二値画像データを符号化圧縮する二値画像符号化装置において、
ストライプモードのＪＢＩＧ符号化方式により入力二値画像データを対応する符号データに変換する符号化手段と、
複数の出力バッファからなり、上記符号データをデータバスへ、当該データバスのバス幅に相当するデータ長単位に出力する出力手段と、
上記符号化手段が１ストライプ分の符号データを出力完了すると、その時点で前記複数の出力バッファのうち前記出力手段において選択されている出力バッファ、１ストライプデータを終端する所定の終端マーカコードのデータ長、および、上記バス幅に基づいて算出したデータ長の０ビット列を、前記符号データと前記終端マーカコードの間に挿入する符号データ長調整手段を備え、出力バス幅の整数倍のデータ長を持つ１ストライプデータを完成することを特徴とする二値画像符号化装置。
【請求項２】
前記符号データ長調整手段は、前記符号化手段の出力データ、前記終端マーカコードを保持する終端マーカコード保持手段の出力データ、および、所定ビット長の０ビット列を保持する０ビット列保持手段の出力データのいずれかを切り替えて前記出力手段へ出力することを特徴とする請求項１記載の二値画像符号化装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ストライプモードのＪＢＩＧ符号化方式を適用し、二値画像データを符号化圧縮する二値画像符号化装置に関する。
【０００２】
【従来の技術】
従来より、ファクシミリ装置等において二値画像を送受信する際に用いられる圧縮符号化方式として、ＪＢＩＧ方式（Ｊｏｉｎｔ  Ｂｉ−ｌｅｖｅｌ  Ｉｍａｇｅ  ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ：ＩＴＵ−Ｔ勧告Ｔ．８２，ＩＳＯ／ＩＥＣ標準１１５４４，ＪＩＳ標準Ｘ４３１１）が適用されている。
【０００３】
このＪＢＩＧ方式は、算術符号化と呼ばれるエントロピ符号化を用いる符号化方式であり、従来ファクシミリ通信において用いられてきたＭＨ（Ｍｏｄｉｆｉｅｄ  Ｈｕｆｆｍａｎ），ＭＲ（Ｍｏｄｉｆｉｅｄ  ＲＥＡＤ：Ｒｅｌａｔｉｖｅ  Ｅｌｅｍｅｎｔ  Ａｄｄｒｅｓｓ  Ｄｅｓｉｇｎａｔｅ），ＭＭＲ（Ｍｏｄｉｆｉｅｄ  Ｍｏｄｉｆｉｅｄ  ＲＥＡＤ）（ＩＴＵ−Ｔ勧告Ｔ．４，Ｔ．６）方式よりも圧縮率を高くすることができるため、従来の圧縮符号化方式を用いる場合に比較して通信時間を短縮することができる。
【０００４】
ＪＢＩＧ方式による１ページの符号は大きくヘッダ部分と、圧縮符号部分に分けられる。圧縮符号部分は、１ページすべてをまとめて符号とする場合と、複数ライン（デフォルトでは１２８ライン）を１ブロックとし（これをストライプと呼ぶ）、このストライプ（ブロック）単位で符号を構成し、複数のストライプにより１ページの符号を構成する場合がある。後者は、ストライプモードと呼ばれ、各ストライプは、算術符号列によって構成されるとともに、符号列にはマーカコードと呼ばれる制御コードが挿入されている。このマーカコードは、ストライプのライン数を指示したり、あるいはストライプ毎の符号終端を明示するために用いられる。
【０００５】
【発明が解決しようとする課題】
さて、このようなＪＢＩＧの符号列を生成する符号化装置を考えた場合、一般に符号化装置のデータ出力部は、この符号化装置が接続されるホストシステムのデータバスに接続される。通常、ホストシステムにおけるデータバスのバス幅は、そのホストシステムの用途などにより、８，１６，３２，６４ビット等様々ものが採用されている。
【０００６】
ここで、ＪＢＩＧの符号は最小出力単位は８ビットであり、したがって、ストライプ毎の符号列のデータ長は８の倍数となる。このような符号出力を行う符号化装置を、前述のようなデータバスに接続しようとした場合、各ストライプの符号データの終端において、必ずしもバス幅分だけの符号が出るわけではなく、例えばバスの上位８ビットで符号が終了しており、それ以外の下位ビットには意味のないデータが入っている場合がある。
【０００７】
そこで、ストライプモードのＪＢＩＧ符号化を適用する場合、あるストライプの符号列がバス幅分に満たない状態で符号が終了している際には、次ストライプの符号列を、終了した符号のすぐ後に、間をあけずに配置する必要があり、この符号化装置の出力データを使用するホストシステム側で、２つのストライプの符号列が連続するように、ストライプ間の符号列を配置し直す処理が発生してしまう。
【０００８】
本発明は、このような実情に鑑みてなされたものであり、ストライプモードのＪＢＩＧ符号化方式を採用する場合に、符号出力後の処理を簡単化あるいは省略できる符号化装置を提供することを目的とする。
【０００９】
【課題を解決するための手段】
本発明は、ストライプモードのＪＢＩＧ符号化方式を適用し、二値画像データを符号化圧縮する二値画像符号化装置において、ストライプモードのＪＢＩＧ符号化方式により入力二値画像データを対応する符号データに変換する符号化手段と、複数の出力バッファからなり、上記符号データをデータバスへ、当該データバスのバス幅に相当するデータ長単位に出力する出力手段と、上記符号化手段が１ストライプ分の符号データを出力完了すると、その時点で前記複数の出力バッファのうち前記出力手段において選択されている出力バッファ、１ストライプデータを終端する所定の終端マーカコードのデータ長、および、上記バス幅に基づいて算出したデータ長の０ビット列を、前記符号データと前記終端マーカコードの間に挿入する符号データ長調整手段を備え、出力バス幅の整数倍のデータ長を持つ１ストライプデータを完成するようにしたものである。
【００１０】
また、前記符号データ長調整手段は、前記符号化手段の出力データ、前記終端マーカコードを保持する終端マーカコード保持手段の出力データ、および、所定ビット長の０ビット列を保持する０ビット列保持手段の出力データのいずれかを切り替えて前記出力手段へ出力するようにしたものである。
【００１３】
【発明の実施の形態】
以下、添付図面を参照しながら、本発明の実施の形態を詳細に説明する。
【００１４】
図１は、本発明の一実施例にかかるグループ３ファクシミリ装置を示している。
【００１５】
同図において、システム制御部１は、このグループ３ファクシミリ装置の各部の制御処理、および、所定のグループ３ファクシミリ伝送制御手順処理を行うものであり、システムメモリ２は、システム制御部１が実行する制御処理プログラム、および、処理プログラムを実行するときに必要な各種データなどを記憶するとともに、システム制御部１のワークエリアを構成するものであり、パラメータメモリ３は、このグループ３ファクシミリ装置に固有な各種の情報を記憶するためのものであり、時計回路４は、現在時刻情報を出力するためのものである。
【００１６】
スキャナ５は、所定の解像度で原稿画像を読み取るためのものであり、プロッタ６は、所定の解像度で画像を記録出力するためのものであり、操作表示部７は、このファクシミリ装置を操作するためのもので、各種の操作キー、および、各種の表示器からなる。
【００１７】
符号化復号化部８は、画信号を符号化圧縮するとともに、符号化圧縮されている画情報を元の画信号に復号化するためのものであり、ＭＨ符号化方式、ＭＲ符号化方式、および、ＭＭＲ符号化方式の処理能力を備えるとともに、ＪＢＩＧ符号化方式のストライプモードの動作モードも備えている。また、画像蓄積装置９は、符号化圧縮された状態の画情報などの種々のデータを多数記憶するためのものである。
【００１８】
グループ３ファクシミリモデム１０は、グループ３ファクシミリのモデム機能を実現するためのものであり、伝送手順信号をやりとりするための低速モデム機能（Ｖ．２１モデム）、および、おもに画情報をやりとりするための高速モデム機能（Ｖ．１７モデム、Ｖ．３４モデム、Ｖ．２９モデム、Ｖ．２７ｔｅｒモデムなど）を備えている。
【００１９】
網制御装置１１は、このグループ３ファクシミリ装置をアナログ公衆網ＰＳＴＮに接続するためのものであり、自動発着信機能を備えている。
【００２０】
これらの、システム制御部１、システムメモリ２、パラメータメモリ３、時計回路４、スキャナ５、プロッタ６、操作表示部７、符号化復号化部８、画像蓄積装置９、グループ３ファクシミリモデム１０、および、網制御装置１１は、内部バス１２に接続されており、これらの各要素間でのデータのやりとりは、主としてこの内部バス１２を介して行われている。
【００２１】
また、網制御装置１１とグループ３ファクシミリモデム１０との間のデータのやりとりは、直接行なわれている。
【００２２】
図２（ａ）は、符号化復号化部８がストライプモードのＪＢＩＧ符号化方式を適用した場合に作成する符号データの一例を示している。
【００２３】
この符号データは、ヘッダと、１ページ分の符号データを構成する複数のストライプデータからなる。ここで、ヘッダには１ページの符号データについて、主走査サイズ、副走査サイズ、１ストライプ当たりのライン数等の所定の情報が記録されている。
【００２４】
また、１つのストライプデータは、同図（ｂ）に示すように、浮動マーカセグメントとストライプデータ実体から構成される。ここで、浮動マーカセグメントには、そのストライプにおいて適用されるテンプレートの浮動参照画素の位置、任意のコメント、および、副走査のサイズなどの内容が含まれる。また、ストライプデータ実体は、８ビット単位の任意長のデータである。
【００２５】
また、ストライプデータ実体は、同図（ｃ）に示すように、算術符号そのものである符号データと終端マーカから構成される。ここで、終端マーカは、ＪＢＩＧ符号化方式における制御用マーカコードの１つであり、「ＦＦ０２ｈ（ｈは１６進数をあらわす；以下同じ）」という２バイトのデータ列からなる。また、「ＦＦｈ」は、制御用マーカコードの前置符号（プリフィックス）と呼ばれるコードであり、次の１バイトコードにより、制御用マーカコードの内容が規定される。
【００２６】
なお、ＪＢＩＧ符号化方式においては、制御用マーカコードと符号データとを識別できるように、符号データに制御用マーカコードの前置符号である「ＦＦｈ」が現れると、次の１バイトデータに「００ｈ」を配置するようにしている。したがって、復号側では、符号データ中に「ＦＦｈ」というデータが現れたとき、次の１バイトが「００ｈ」であった場合には、その「００ｈ」を削除して復号化処理を継続し、次の１バイトが「００ｈ」以外であった場合には、その２バイトは制御用マーカコードであると認識して、対応した処理を実行する。
【００２７】
さて、連続する２つのストライプデータｍ，（ｍ＋１）について考えた場合、同図（ｄ）に示すように、ストライプデータｍのデータ長が内部バス１２のバス幅（例えば、３２ビット）の整数倍に一致せず、ストライプデータｍとストライプデータ（ｍ＋１）の境界が、内部バス１２への出力単位に一致しないという事態を生じる場合がある。
【００２８】
このような事態に対処できるように、ストライプデータｍの終端位置と出力単位の区切りが一致しなかった場合には、ストライプデータｍの終端位置と出力単位の区切りが一致するように、「００ｈ」の１バイトデータを必要な数だけ、ストライプデータｍの最後の符号データと終端マーカコードとの間に挿入すればよい。
【００２９】
ここで、ＪＢＩＧ符号化方式の復号規則によれば、１つのストライプの復号化が完了した後にあらわれる「００ｈ」のデータ列は、復号側では読み飛ばされるので、復号処理側ではこのようにストライプデータの最後の符号データと終端マーカコードとの間に挿入された「００ｈ」のデータ列を除去するための特別な処理を必要としない。なお、１つのストライプの復号化が完了したか否かは、例えば、ヘッダに含まれているストライプ当たりのライン数のデータを復号化できたか否かで判定することができる。
【００３０】
すなわち、本実施例は、この意味で、本来のＪＢＩＧ符号化方式の符号化規則から外れた符号化方式を提案するものではなく、本来のＪＢＩＧ符号化方式の符号化規則内における工夫である。
【００３１】
図３は、本発明の一実施例にかかる符号化復号化部８におけるＪＢＩＧ符号化部の一例を示している。
【００３２】
同図において、全体制御部８ａは、このＪＢＩＧ符号化部の動作を制御するものであり、データ入力回路８ｂは、内部バス１２を介して、符号化対象である二値画像データＤＩを入力するものであり、その二値画像データＤＩは、ＱＭコーダユニット８ｃに加えられる。
【００３３】
ＱＭコーダユニット８ｃは、所定の算術符号化処理を実行するものであり、８ビット単位（以下、「ワード」という）に符号データが出力され、入力セレクタ８ｄの１つの入力端に加えられる。
【００３４】
レジスタ８ｅは、ストライプデータの終端に挿入する１バイトのデータ「００ｈ」を記憶するものであり、その出力データは、入力セレクタ８ｄの１つの入力端に加えられている。
【００３５】
レジスタ８ｆは、上述した終端マーカコード（「ＦＦ０２ｈ」）を記憶するものであり、その出力データは、入力セレクタ８ｄの１つの入力端に加えられている。
【００３６】
入力セレクタ８ｄは、ＱＭコーダユニット８ｃの出力データ、レジスタ８ｅの出力データ、または、レジスタ８ｆの出力データのいずれかを選択して出力端へ接続するものであり、その出力端のデータは、出力セレクタ８ｇに加えられている。
【００３７】
出力バッファ８ｈは、８ビットの出力バッファを４つ（出力バッファ＃１，＃２，＃３，＃４）備え、３２ビットまでのデータバスに、符号データＣＤをパラレル出力するものである。また、出力セレクタ８ｇは、入力セレクタ８ｄから入力されるデータを、８ビット毎に、出力バッファ８ｈの４つの８ビットバッファに順次切り換えて出力する。
【００３８】
ここで、出力バッファ８ｈの出力データは、内部バス１２へ出力される。また、１回のデータ出力が終了すると、出力バッファ８ｈの内容はクリアされ、次のデータ出力に備えるようにしている。
【００３９】
図４〜図８は、１ページ分の二値画像データＤＩを符号化する際の全体制御部８ａの処理の一例を示している。
【００４０】
まず、ＱＭコーダユニット８ｃに必要な二値画像データＤＩの属性情報（主走査サイズ、副走査サイズ、解像度など）を通知し、データ入力回路８ｂによる二値画像データＤＩの入力動作を開始し（処理１０１）、ＱＭコーダユニット８ｃの符号化処理を開始するとともに（処理１０２）、入力セレクタ８ｄにより、ＱＭコーダユニット８ｃを選択させ（処理１０３）、出力セレクタ８ｇにより、出力バッファ＃１を選択させて（処理１０４）、ＱＭコーダユニット８ｃから、１ワード符号化終了、１ストライプ符号化終了、または、１ページ符号化終了が通知されるまで待つ（判断１０５，１０６，１０７のＮＯループ）。
【００４１】
一方、ＱＭコーダユニット８ｃは、全体制御部８ａより通知された属性情報に対応した符号化処理を開始し、ヘッダに続いて、データ入力回路８ｂを介して入力される二値画像データＤＩを符号化処理し、おのおののストライプデータを、１ワード単位に順次出力する。
【００４２】
ＱＭコーダユニット８ｃから１ワード符号化終了が通知され、判断１０５の結果がＹＥＳになるときには、出力セレクタ８ｇにより、そのときに選択した出力バッファの次の出力バッファへ切り換え（処理１０８）、判断１０５，１０６，１０７のＮＯループへ戻る。なお、処理１０８では、出力バッファ＃１から出力バッファ＃２へ、出力バッファ＃２から出力バッファ＃３へ、出力バッファ＃３から出力バッファ＃４へ、出力バッファ＃４から出力バッファ＃１へと順次切換がなされる。
【００４３】
また、ＱＭコーダユニット８ｃから１ページ符号化終了が通知され、判断１０７の結果がＹＥＳになるときには、データ入力回路８ｂのデータ入力動作を停止し（処理１０９）、所定の終了処理を実行し（処理１１０）、１ページ分の符号化処理を終了する。
【００４４】
また、ＱＭコーダユニット８ｃから１ストライプ符号化終了が通知され、判断１０６の結果がＹＥＳになるときには、ＱＭコーダユニット８ｃの動作を一時停止し（処理１１１）、そのときに出力セレクタ８ｇにより選択している出力バッファが、出力バッファ＃１であるか、出力バッファ＃２であるか、出力バッファ＃３であるかを調べる（判断１１２，１１３，１１４）。
【００４５】
そのときに出力セレクタ８ｇにより選択している出力バッファが、出力バッファ＃１であり、判断１１２の結果がＹＥＳになるときには、入力セレクタ８ｄによりレジスタ８ｅの出力データ（「００ｈ」）を選択し（処理１１５）、出力バイト数を計数するカウンタｎの値を０に初期設定する（処理１１６）。
【００４６】
次いで、出力レジスタ８ｅよりデータ「００ｈ」を出力させてそのときに選択している出力バッファ＃１へ格納させ（処理１１７）、出力セレクタ８ｇにより次の出力バッファ＃２へ切り換える（処理１１８）。
【００４７】
そして、カウンタｎの値を１つ増やし（処理１１９）、カウンタｎの値が２になったかどうかを調べ（判断１２０）、判断１２０の結果がＮＯになるときには、処理１１７へ戻り、データ「００ｈ」を出力バッファ＃２へ格納させる。
【００４８】
カウンタｎの値が２になっている場合で、判断１２０の結果がＹＥＳになるときには、出力バッファ＃１，＃２にデータ「００ｈ」が格納されているとともに、出力バッファ＃３が選択されている状態であり、次に、終端マーカコード「ＦＦ０２ｈ」を出力バッファ＃３，＃４に格納することで、出力バス幅の整数倍のデータ長を持つ１ストライプデータを完成できる。
【００４９】
そこで、入力セレクタ８ｄにより、入力セレクタ８ｄによりレジスタ８ｆの出力データ（終端マーカコード「ＦＦ０２ｈ」）を選択し（処理１２１）、出力バイト数を計数するカウンタｎの値を０に初期設定する（処理１２２）。
【００５０】
次いで、出力レジスタ８ｆより終端マーカコードの最初の１バイトを出力させてそのときに選択している出力バッファ＃３へ格納させ（処理１２３）、出力セレクタ８ｇにより次の出力バッファ＃４へ切り換える（処理１２４）。
【００５１】
そして、カウンタｎの値を１つ増やし（処理１２５）、カウンタｎの値が２になったかどうかを調べ（判断１２６）、判断１２６の結果がＮＯになるときには、処理１２３へ戻り、終端マーカコードの次の１バイトデータ（データ「０２ｈ」）を出力バッファ＃４へ格納させる。
【００５２】
カウンタｎの値が２になっている場合で、判断１２６の結果がＹＥＳになるときには、出力バッファ＃１，＃２にデータ「００ｈ」が格納されるとともに、出力バッファ＃３，＃４に終端マーカコード「ＦＦ０２ｈ」が格納され、出力バス幅の整数倍のデータ長を持つ１ストライプデータを完成された場合なので、ＱＭコーダユニット８ｃの符号化処理を再開し（処理１２７）、処理１０３へ戻って、次のストライプのデータの出力を行う。
【００５３】
また、１ストライプの符号化終了されたことが通知された時点で出力バッファ＃２を選択していた場合で、判断１１３の結果がＹＥＳになるときには、入力セレクタ８ｄによりレジスタ８ｅの出力データ（「００ｈ」）を選択し（処理１３０）、出力レジスタ８ｅよりデータ「００ｈ」を出力させてそのときに選択している出力バッファ＃２へ格納させ（処理１３１）、出力セレクタ８ｇにより次の出力バッファ＃３へ切り換える（処理１３２）。
【００５４】
次いで、入力セレクタ８ｄによりレジスタ８ｆの出力データ（終端マーカコード「ＦＦ０２ｈ」）を選択し（処理１３３）、出力バイト数を計数するカウンタｎの値を０に初期設定する（処理１３４）。
【００５５】
次いで、出力レジスタ８ｆより終端マーカコードの最初の１バイトを出力させてそのときに選択している出力バッファ＃３へ格納させ（処理１３５）、出力セレクタ８ｇにより次の出力バッファ＃４へ切り換える（処理１３６）。
【００５６】
そして、カウンタｎの値を１つ増やし（処理１３７）、カウンタｎの値が２になったかどうかを調べ（判断１３８）、判断１３８の結果がＮＯになるときには、処理１３５へ戻り、終端マーカコードの次の１バイトデータ（データ「０２ｈ」を出力バッファ＃４へ格納させる。
【００５７】
カウンタｎの値が２になっている場合で、判断１３８の結果がＹＥＳになるときには、出力バッファ＃１に当該ストライプデータの最後の１バイトデータが格納され、出力バッファ＃２にデータ「００ｈ」が格納されるとともに、出力バッファ＃３，＃４に終端マーカコード「ＦＦ０２ｈ」が格納され、出力バス幅の整数倍のデータ長を持つ１ストライプデータを完成された場合なので、ＱＭコーダユニット８ｃの符号化処理を再開し（処理１３９）、処理１０３へ戻って、次のストライプのデータの出力を行う。
【００５８】
また、１ストライプの符号化終了されたことが通知された時点で出力バッファ＃３を選択していた場合で、判断１１４の結果がＹＥＳになるときには、入力セレクタ８ｄによりレジスタ８ｆの出力データ（終端マーカコード「ＦＦ０２ｈ」）を選択し（処理１４０）、出力バイト数を計数するカウンタｎの値を０に初期設定する（処理１４１）。
【００５９】
次いで、出力レジスタ８ｆより終端マーカコードの最初の１バイトを出力させてそのときに選択している出力バッファ＃３へ格納させ（処理１４２）、出力セレクタ８ｇにより次の出力バッファ＃４へ切り換える（処理１４３）。
【００６０】
そして、カウンタｎの値を１つ増やし（処理１４４）、カウンタｎの値が２になったかどうかを調べ（判断１４５）、判断１４５の結果がＮＯになるときには、処理１４２へ戻り、終端マーカコードの次の１バイトデータ（データ「０２ｈ」を出力バッファ＃４へ格納させる。
【００６１】
カウンタｎの値が２になっている場合で、判断１４５の結果がＹＥＳになるときには、出力バッファ＃１，＃２に当該ストライプデータの最後の２バイトデータが格納され、出力バッファ＃３，＃４に終端マーカコード「ＦＦ０２ｈ」が格納され、出力バス幅の整数倍のデータ長を持つ１ストライプデータを完成された場合なので、ＱＭコーダユニット８ｃの符号化処理を再開し（処理１４６）、処理１０３へ戻って、次のストライプのデータの出力を行う。
【００６２】
また、１ストライプの符号化終了されたことが通知された時点で出力バッファ＃４を選択していた場合で、判断１１３の結果がＮＯになるときには、入力セレクタ８ｄによりレジスタ８ｅの出力データ（「００ｈ」）を選択し（処理１５０）、出力バイト数を計数するカウンタｎの値を０に初期設定する（処理１５１）。
【００６３】
次いで、出力レジスタ８ｅよりデータ「００ｈ」を出力させてそのときに選択している出力バッファ＃４へ格納させ（処理１５２）、出力セレクタ８ｇにより次の出力バッファ＃１へ切り換える（処理１５３）。
【００６４】
このときには、出力バッファ＃１，＃２，＃３に符号データが、出力バッファ＃４にデータ「００ｈ」が格納された状態であり、この出力バッファ８ｈに格納されたデータは、その後の適宜なバスフェッチタイミングで内部バス１２を介してホストシステムへ転送される。
【００６５】
次に、カウンタｎの値を１つ増やし（処理１５４）、カウンタｎの値が３になったかどうかを調べる（判断１５５）。カウンタｎの値が１であり、判断１５５の結果がＮＯになるときには、処理１５２へ戻り、データ「００ｈ」を出力バッファ＃１へ格納させ、出力セレクタ８ｇにより次の出力バッファ＃２へ切り換える（処理１５３）。
【００６６】
次に、カウンタｎの値を１つ増やし（処理１５４）、カウンタｎの値が３になったかどうかを調べる（判断１５５）。カウンタｎの値が２であり、判断１５５の結果がＮＯになるときには、処理１５２へ戻り、データ「００ｈ」を出力バッファ＃２へ格納させ、出力セレクタ８ｇにより次の出力バッファ＃３へ切り換える（処理１５３）。
【００６７】
そして、カウンタｎの値を１つ増やし（処理１５４）、カウンタｎの値が３になったかどうかを調べる（判断１５５）。カウンタｎの値が３になっている場合で、判断１５５の結果がＹＥＳになるときには、出力バッファ＃１，＃２にデータ「００ｈ」が格納されているとともに、出力バッファ＃３が選択されている状態であり、次に、終端マーカコード「ＦＦ０２ｈ」を出力バッファ＃３，＃４に格納することで、出力バス幅の整数倍のデータ長を持つ１ストライプデータを完成できる。
【００６８】
そこで、入力セレクタ８ｄにより、入力セレクタ８ｄによりレジスタ８ｆの出力データ（終端マーカコード「ＦＦ０２ｈ」）を選択し（処理１５６）、出力バイト数を計数するカウンタｎの値を０に初期設定する（処理１５７）。
【００６９】
次いで、出力レジスタ８ｆより終端マーカコードの最初の１バイトを出力させてそのときに選択している出力バッファ＃３へ格納させ（処理１５８）、出力セレクタ８ｇにより次の出力バッファ＃４へ切り換える（処理１５９）。
【００７０】
そして、カウンタｎの値を１つ増やし（処理１６０）、カウンタｎの値が２になったかどうかを調べ（判断１６１）、判断１６１の結果がＮＯになるときには、処理１２３へ戻り、終端マーカコードの次の１バイトデータ（データ「０２ｈ」）を出力バッファ＃４へ格納させる。
【００７１】
カウンタｎの値が２になっている場合で、判断１６１の結果がＹＥＳになるときには、出力バッファ＃１，＃２にデータ「００ｈ」が格納されるとともに、出力バッファ＃３，＃４に終端マーカコード「ＦＦ０２ｈ」が格納され、出力バス幅の整数倍のデータ長を持つ１ストライプデータを完成された場合なので、ＱＭコーダユニット８ｃの符号化処理を再開し（処理１６２）、処理１０３へ戻って、次のストライプのデータの出力を行う。
【００７２】
このようにして、本実施例では、ストライプデータの終端位置と出力単位の区切りが一致するように、「００ｈ」の１バイトデータを必要な数だけ、ストライプデータの最後の符号データと終端マーカコードとの間に挿入するようにしているので、ホストシステム側で何らの処理をしなくとも、適切にストライプモードのＪＢＩＧ符号化方式の符号データを出力することができる。
【００７３】
ところで、上述した実施例では、内部バス１２のバス幅が３２ビットの場合について説明したが、内部バス１２のバス幅が１６ビットの場合にも、本実施例を同様にして適用することができる。
【００７４】
ただし、その場合、出力バッファ８ｈの出力バッファ＃１，＃２の２本のみが有効に活用され、また、出力バス幅の値は、あらかじめ全体制御部８ａへビットスイッチの設定データなどにより通知される必要がある。
【００７５】
この場合、内部バス１２のバス幅が３２ビットの場合には、全体制御部８ａは、上述した実施例と同様の図４〜図８に示した処理を実行する。また、内部バス１２のバス幅が１６ビットの場合には、全体制御部８ａは、図９および図１０に示した処理を実行する。
【００７６】
まず、ＱＭコーダユニット８ｃに必要な二値画像データＤＩの属性情報（主走査サイズ、副走査サイズ、解像度など）を通知し、データ入力回路８ｂによる二値画像データＤＩの入力動作を開始し（処理２０１）、ＱＭコーダユニット８ｃの符号化処理を開始するとともに（処理２０２）、入力セレクタ８ｄにより、ＱＭコーダユニット８ｃを選択させ（処理２０３）、出力セレクタ８ｇにより、出力バッファ＃１を選択させて（処理２０４）、ＱＭコーダユニット８ｃから、１ワード符号化終了、１ストライプ符号化終了、または、１ページ符号化終了が通知されるまで待つ（判断２０５，２０６，２０７のＮＯループ）。
【００７７】
一方、ＱＭコーダユニット８ｃは、全体制御部８ａより通知された属性情報に対応した符号化処理を開始し、ヘッダに続いて、データ入力回路８ｂを介して入力される二値画像データＤＩを符号化処理し、おのおののストライプデータを、１ワード単位に順次出力する。
【００７８】
ＱＭコーダユニット８ｃから１ワード符号化終了が通知され、判断２０５の結果がＹＥＳになるときには、出力セレクタ８ｇにより、そのときに選択した出力バッファの次の出力バッファへ切り換え（処理２０８）、判断２０５，２０６，２０７のＮＯループへ戻る。なお、処理２０８では、出力バッファ＃１から出力バッファ＃２へ、出力バッファ＃２から出力バッファ＃１へと順次切換がなされる。
【００７９】
また、ＱＭコーダユニット８ｃから１ページ符号化終了が通知され、判断２０７の結果がＹＥＳになるときには、データ入力回路８ｂのデータ入力動作を停止し（処理２０９）、所定の終了処理を実行し（処理２１０）、１ページ分の符号化処理を終了する。
【００８０】
また、ＱＭコーダユニット８ｃから１ストライプ符号化終了が通知され、判断２０６の結果がＹＥＳになるときには、ＱＭコーダユニット８ｃの動作を一時停止し（処理２１１）、そのときに出力セレクタ８ｇにより選択している出力バッファが、出力バッファ＃１であるかどうかを調べる（判断２１２）。
【００８１】
そのときに出力セレクタ８ｇにより選択している出力バッファが、出力バッファ＃２であり、判断２１２の結果がＮＯになるときには、入力セレクタ８ｄによりレジスタ８ｅの出力データ（「００ｈ」）を選択し（処理２１３）、出力レジスタ８ｅよりデータ「００ｈ」を出力させてそのときに選択している出力バッファ＃２へ格納させ（処理２１４）、出力セレクタ８ｇにより次の出力バッファ＃１へ切り換える（処理２１５）。
【００８２】
これにより、出力バッファ＃１には当該ストライプデータの最後の１バイトデータが格納され、出力バッファ＃２にデータ「００ｈ」が格納された状態であり、この出力バッファ＃１，＃２に格納されたデータは、その後の適宜なバスフェッチタイミングで内部バス１２を介してホストシステムへ転送される。
【００８３】
次いで、入力セレクタ８ｄによりレジスタ８ｆの出力データ（終端マーカコード「ＦＦ０２ｈ」）を選択し（処理２１６）、出力バイト数を計数するカウンタｎの値を０に初期設定する（処理２１７）。
【００８４】
次いで、出力レジスタ８ｆより終端マーカコードの最初の１バイトを出力させてそのときに選択している出力バッファ＃１へ格納させ（処理２１８）、出力セレクタ８ｇにより次の出力バッファ＃２へ切り換える（処理２１９）。
【００８５】
そして、カウンタｎの値を１つ増やし（処理２３０）、カウンタｎの値が２になったかどうかを調べ（判断２２１）、判断２２１の結果がＮＯになるときには、処理２１８へ戻り、終端マーカコードの次の１バイトデータ（データ「０２ｈ」）を出力バッファ＃２へ格納させる。
【００８６】
カウンタｎの値が２になっている場合で、判断１３８の結果がＹＥＳになるときには、出力バッファ＃１，＃２に終端マーカコード「ＦＦ０２ｈ」が格納され、出力バス幅の整数倍のデータ長を持つ１ストライプデータを完成された場合なので、ＱＭコーダユニット８ｃの符号化処理を再開し（処理２２２）、処理２０３へ戻って、次のストライプのデータの出力を行う。
【００８７】
また、１ストライプの符号化終了されたことが通知された時点で出力バッファ＃１を選択していた場合で、判断２１２の結果がＹＥＳになるときには、入力セレクタ８ｄによりレジスタ８ｆの出力データ（終端マーカコード「ＦＦ０２ｈ」）を選択し（処理２２５）、出力バイト数を計数するカウンタｎの値を０に初期設定する（処理２２６）。
【００８８】
次いで、出力レジスタ８ｆより終端マーカコードの最初の１バイトを出力させてそのときに選択している出力バッファ＃１へ格納させ（処理２２７）、出力セレクタ８ｇにより次の出力バッファ＃２へ切り換える（処理２２８）。
【００８９】
そして、カウンタｎの値を１つ増やし（処理２２９）、カウンタｎの値が２になったかどうかを調べ（判断２３０）、判断２３０の結果がＮＯになるときには、処理２２７へ戻り、終端マーカコードの次の１バイトデータ（データ「０２ｈ」）を出力バッファ＃２へ格納させる。
【００９０】
カウンタｎの値が２になっている場合で、判断２３０５の結果がＹＥＳになるときには、出力バッファ＃１，＃２に終端マーカコード「ＦＦ０２ｈ」が格納され、出力バス幅の整数倍のデータ長を持つ１ストライプデータを完成された場合なので、ＱＭコーダユニット８ｃの符号化処理を再開し（処理２３１）、処理２０３へ戻って、次のストライプのデータの出力を行う。
【００９１】
図１１は、本発明の他の実施例にかかる符号化復号化部８におけるＪＢＩＧ符号化部の一例を示している。なお、同図において図３と同一部分又は相当する部分には、同一符号を付している。
【００９２】
同図において、全体制御部８ａは、このＪＢＩＧ符号化部の動作を制御するものであり、データ入力回路８ｂは、内部バス１２を介して、符号化対象である二値画像データＤＩを入力するものであり、その二値画像データＤＩは、ＱＭコーダユニット８ｃ、または、データレジスタ８ｉに加えられる。
【００９３】
ＱＭコーダユニット８ｃは、所定の算術符号化処理を実行するものであり、８ビット単位（以下、「ワード」という）に符号データが出力され、入力セレクタ８ｄの１つの入力端に加えられる。
【００９４】
データレジスタ８ｉは、データ入力回路８ｂを介して外部バス（この場合は、内部バス１２）から直前ストライプの最後の部分の符号データを記憶するためのものであり、その出力データは、入力セレクタ８ｄの１つの入力端に加えられている。
【００９５】
レジスタ８ｆは、上述した終端マーカコード（「ＦＦ０２ｈ」）を記憶するものであり、その出力データは、入力セレクタ８ｄの１つの入力端に加えられている。
【００９６】
入力セレクタ８ｄは、ＱＭコーダユニット８ｃの出力データ、データレジスタ８ｉの出力データ、または、レジスタ８ｆの出力データのいずれかを選択して出力端へ接続するものであり、その出力端のデータは、出力セレクタ８ｇに加えられている。
【００９７】
出力バッファ８ｈは、８ビットの出力バッファを４つ（出力バッファ＃１，＃２，＃３，＃４）備え、３２ビットまでのデータバスに、符号データＣＤをパラレル出力するものである。また、出力セレクタ８ｇは、入力セレクタ８ｄから入力されるデータを、８ビット毎に、出力バッファ８ｈの４つの８ビットバッファに順次切り換えて出力する。
【００９８】
ここで、出力バッファ８ｈの出力データは、内部バス１２へ出力される。また、１回のデータ出力が終了すると、出力バッファ８ｈの内容はクリアされ、次のデータ出力に備えるようにしている。
【００９９】
本実施例の場合には、このＪＢＩＧ符号化部を使用する外部のホスト装置（この場合は、システム制御部１）の制御により、直前ストライプの符号データの最後の部分のうち、３２ビットに満たなかった部分の符号データをデータレジスタ８ｉに記憶し、次のストライプの符号化処理に先立って、データレジスタ８ｉに記憶している符号データを出力バッファ８ｈへ記憶し、その後、新たなストライプについて符号化処理を行うことで、２つのストライプ間の符号データが連続するようにしている。
【０１００】
また、この場合には、ホスト装置側で、新たなストライプデータを記憶する際、ＪＢＩＧ符号化部に転送した直前ストライプの符号データを上書きする態様にすることで、２つのストライプの符号データをメモリ上で連続させることができる。
【０１０１】
図１２および図１３は、この場合に、１ページ分の二値画像データＤＩを符号化する際の全体制御部８ａの処理の一例を示している。
【０１０２】
まず、ＱＭコーダユニット８ｃに必要な二値画像データＤＩの属性情報（主走査サイズ、副走査サイズ、解像度など）を通知し、データ入力回路８ｂの出力先をＱＭコーダユニット８ｃに設定した状態で、データ入力回路８ｂによる二値画像データＤＩの入力動作を開始し（処理３０１）、ＱＭコーダユニット８ｃの符号化処理を開始するとともに（処理３０２）、入力セレクタ８ｄにより、ＱＭコーダユニット８ｃを選択させ（処理３０３）、出力セレクタ８ｇにより、出力バッファ＃１を選択させて（処理３０４）、ＱＭコーダユニット８ｃから、１ワード符号化終了、１ストライプ符号化終了、または、１ページ符号化終了が通知されるまで待つ（判断３０５，３０６，３０７のＮＯループ）。
【０１０３】
一方、ＱＭコーダユニット８ｃは、全体制御部８ａより通知された属性情報に対応した符号化処理を開始し、ヘッダに続いて、データ入力回路８ｂを介して入力される二値画像データＤＩを符号化処理し、おのおののストライプデータを、１ワード単位に順次出力する。
【０１０４】
ＱＭコーダユニット８ｃから１ワード符号化終了が通知され、判断３０５の結果がＹＥＳになるときには、出力セレクタ８ｇにより、そのときに選択した出力バッファの次の出力バッファへ切り換え（処理３０８）、判断３０５，３０６，３０７のＮＯループへ戻る。なお、処理３０８では、出力バッファ＃１から出力バッファ＃２へ、出力バッファ＃２から出力バッファ＃３へ、出力バッファ＃３から出力バッファ＃４へ、出力バッファ＃４から出力バッファ＃１へと順次切換がなされる。
【０１０５】
また、ＱＭコーダユニット８ｃから１ページ符号化終了が通知され、判断３０７の結果がＹＥＳになるときには、データ入力回路８ｂのデータ入力動作を停止し（処理３０９）、所定の終了処理を実行し（処理３１０）、１ページ分の符号化処理を終了する。
【０１０６】
また、ＱＭコーダユニット８ｃから１ストライプ符号化終了が通知され、判断３０６の結果がＹＥＳになるときには、ＱＭコーダユニット８ｃの動作を一時停止し（処理３１１）、入力セレクタ８ｄによりレジスタ８ｆの出力データ（終端マーカコード「ＦＦ０２ｈ」）を選択し（処理３１２）、出力バイト数を計数するカウンタｎの値を０に初期設定する（処理３１３）。
【０１０７】
次いで、出力レジスタ８ｆより終端マーカコードの最初の１バイトを出力させてそのときに選択している出力バッファへ格納させ（処理３１４）、出力セレクタ８ｇにより次の出力バッファへ切り換える（処理３１５）。
【０１０８】
そして、カウンタｎの値を１つ増やし（処理３１６）、カウンタｎの値が２になったかどうかを調べ（判断３１７）、判断３１７の結果がＮＯになるときには、処理３１４へ戻り、終端マーカコードの次の１バイトデータ（データ「０２ｈ」）を出力バッファへ格納させる。
【０１０９】
カウンタｎの値が２になっている場合で、判断３１７の結果がＹＥＳになるときには、終端マーカコードの出力を終了して、当該ストライプの符号データの出力を終了した状態となる。
【０１１０】
一方、システム制御部１（ホスト制御部）は、符号化復号化部８より出力される符号データを画像蓄積装置９へ順次蓄積するとともに、１つのストライプの符号データの蓄積が終了した場合には、その蓄積を終了したストライプの符号データの蓄積態様を調べ、最後の部分が３２ビットのどの部分を占めているかを判定し、そのバイト数を符号化復号化部８へ通知するとともに、その部分のデータを符号化復号化部８へ転送する。
【０１１１】
したがって、全体制御部８ａは、ホスト制御部（システム制御部１）より通知されるバイト数を指定バイト数として保存するとともに（処理３１８）、データ入力回路８ｂの出力先をデータレジスタ８ｉへ切り換え、ホスト制御部（システム制御部１）より転送される符号データをデータレジスタ８ｉへ保存する（処理３１９）。
【０１１２】
そして、入力セレクタ８ｄによりデータレジスタ８ｉの出力データを選択し（処理３２０）、出力バイト数を計数するカウンタＣの値に、保存している指定バイト数の値をセットし（処理３２１）、出力セレクタ８ｇにより出力バッファ＃１を選択させる（処理３２２）
【０１１３】
次いで、データレジスタ８ｉより符号データの１バイトを順に出力させてそのときに選択している出力バッファへ格納させ（処理３２３）、出力セレクタ８ｇにより次の出力バッファへ切り換える（処理３２４）。
【０１１４】
そして、カウンタＣの値を１つ減らし（処理３２５）、カウンタＣの値が０になったかどうかを調べ（判断３２６）、判断３２６の結果がＮＯになるときには、処理３２３へ戻り、データレジスタ８ｉに保存している符号データの次の１バイトを出力バッファへ格納させる。
【０１１５】
また、判断３２６の結果がＹＥＳになるときには、直前のストライプデータと現在処理しようとしているストライプデータのつなぎの部分の処理が終了したので、ＱＭコーダユニット８ｃの符号化処理を再開し（処理３２７）、処理３０３へ戻って、次のストライプのデータの出力を行う。
【０１１６】
このようにして、本実施例では、データレジスタに直前のストライプの符号データの最後の部分を格納し、符号データ長の出力バス幅と不整合な部分のつなぎを自動的に行うことができるので、ストライプモードのＪＢＩＧ符号化処理時において、ストライプ間のデータをつなぐ部分のホスト制御部の処理の負担を軽減できる。
【０１１７】
図１４は、本発明のさらに他の実施例にかかる符号化復号化部８におけるＪＢＩＧ符号化部の一例を示している。なお、同図において図３と同一部分又は相当する部分には、同一符号を付している。
【０１１８】
同図において、全体制御部８ａは、このＪＢＩＧ符号化部の動作を制御するものであり、データ入力回路８ｂは、内部バス１２を介して、符号化対象である二値画像データＤＩを入力するものであり、その二値画像データＤＩは、ＱＭコーダユニット８ｃに加えられる。
【０１１９】
ＱＭコーダユニット８ｃは、所定の算術符号化処理を実行するものであり、８ビット単位（以下、「ワード」という）に符号データが出力され、入力セレクタ８ｄの１つの入力端に加えられる。
【０１２０】
レジスタ８ｆは、上述した終端マーカコード（「ＦＦ０２ｈ」）を記憶するものであり、その出力データは、入力セレクタ８ｄの１つの入力端に加えられている。
【０１２１】
入力セレクタ８ｄは、ＱＭコーダユニット８ｃの出力データ、データレジスタ８ｋ（後述）の出力データ、または、レジスタ８ｆの出力データのいずれかを選択して出力端へ接続するものであり、その出力端のデータは、出力セレクタ８ｇに加えられている。
【０１２２】
出力バッファ８ｈは、８ビットの出力バッファを４つ（出力バッファ＃１，＃２，＃３，＃４）備え、３２ビットまでのデータバスに、符号データＣＤをパラレル出力するものである。また、出力セレクタ８ｇは、入力セレクタ８ｄから入力されるデータを、８ビット毎に、出力バッファ８ｈの４つの８ビットバッファに順次切り換えて出力する。
【０１２３】
本実施例では、この出力バッファ８ｈの出力データは、直接外部のデータバス（この場合は、内部バス１２）へ出力されず、出力メモリ８ｊに一旦蓄積された後に、内部バス１２へ出力される。また、出力メモリ８ｊの記憶データは、データレジスタ８ｋへ転送し、データレジスタ８ｋで保持可能にされている。
【０１２４】
ここで、１つのストライプの符号化処理を終了した時点で、出力メモリ８ｊに記憶されるデータのバイト数は、それまでに出力された符号データのデータ長を内部バス１２のバス幅に基づいて算出した剰余バイト数に相当する。
【０１２５】
そこで、その出力メモリ８ｊに記憶されている有効な符号データをデータレジスタ８ｋへ記憶し、次のストライプの符号化処理に先立って、このデータレジスタ８ｋに記憶した符号データを出力バッファ８ｈへ先頭から順に記憶させることで、連続する２つのストライプ間のデータをつなぐことができる。
【０１２６】
したがって、本実施例の場合には、ストライプモードにおいて、連続するストライプの符号データが切れ目なく出力されるので、ホストシステム側で何らの処理をしなくとも、適切にストライプモードのＪＢＩＧ符号化方式の符号データを出力することができる。
【０１２７】
図１５〜図１７は、この場合に、１ページ分の二値画像データＤＩを符号化する際の全体制御部８ａの処理の一例を示している。
【０１２８】
まず、ＱＭコーダユニット８ｃに必要な二値画像データＤＩの属性情報（主走査サイズ、副走査サイズ、解像度など）を通知し、データ入力回路８ｂによる二値画像データＤＩの入力動作を開始し（処理４０１）、ＱＭコーダユニット８ｃの符号化処理を開始するとともに（処理４０２）、入力セレクタ８ｄにより、ＱＭコーダユニット８ｃを選択させ（処理４０３）、出力セレクタ８ｇにより、出力バッファ＃１を選択させて（処理４０４）、ＱＭコーダユニット８ｃから、１ワード符号化終了、１ストライプ符号化終了、または、１ページ符号化終了が通知されるまで待つ（判断４０５，４０６，４０７のＮＯループ）。
【０１２９】
一方、ＱＭコーダユニット８ｃは、全体制御部８ａより通知された属性情報に対応した符号化処理を開始し、ヘッダに続いて、データ入力回路８ｂを介して入力される二値画像データＤＩを符号化処理し、おのおののストライプデータを、１ワード単位に順次出力する。
【０１３０】
ＱＭコーダユニット８ｃから１ワード符号化終了が通知され、判断４０５の結果がＹＥＳになるときには、出力セレクタ８ｇにより、そのときに選択した出力バッファの次の出力バッファへ切り換え（処理４０８）、判断４０５，４０６，４０７のＮＯループへ戻る。なお、処理４０８では、出力バッファ＃１から出力バッファ＃２へ、出力バッファ＃２から出力バッファ＃３へ、出力バッファ＃３から出力バッファ＃４へ、出力バッファ＃４から出力バッファ＃１へと順次切換がなされる。
【０１３１】
また、ＱＭコーダユニット８ｃから１ページ符号化終了が通知され、判断４０７の結果がＹＥＳになるときには、データ入力回路８ｂのデータ入力動作を停止し（処理４０９）、所定の終了処理を実行し（処理３１０）、１ページ分の符号化処理を終了する。
【０１３２】
また、ＱＭコーダユニット８ｃから１ストライプ符号化終了が通知され、判断４０６の結果がＹＥＳになるときには、ＱＭコーダユニット８ｃの動作を一時停止し（処理４１１）、そのストライプについて作成した符号データ長ＣＬを入力する（処理４１２）。
【０１３３】
次に、入力セレクタ８ｄによりレジスタ８ｆの出力データ（終端マーカコード「ＦＦ０２ｈ」）を選択し（処理４１３）、出力バイト数を計数するカウンタｎの値を０に初期設定する（処理４１４）。
【０１３４】
次いで、出力レジスタ８ｆより終端マーカコードの最初の１バイトを出力させてそのときに選択している出力バッファへ格納させ（処理４１５）、出力セレクタ８ｇにより次の出力バッファへ切り換える（処理４１６）。
【０１３５】
そして、カウンタｎの値を１つ増やし（処理４１７）、カウンタｎの値が２になったかどうかを調べ（判断４１８）、判断４１８の結果がＮＯになるときには、処理４１５へ戻り、終端マーカコードの次の１バイトデータ（データ「０２ｈ」）を出力バッファへ格納させる。
【０１３６】
カウンタｎの値が２になっている場合で、判断４１８の結果がＹＥＳになるときには、終端マーカコードの出力を終了して、当該ストライプの符号データの出力を終了した状態となる。
【０１３７】
次いで、符号データ長ＣＬに終端マーカコードのデータ長である「２」を加えて符号データ長ＣＬの値を更新し（処理４１９）、それまでに作成した１ページ分の符号データの総バイト数を算出するとともに、その算出した総バイト数を内部バス１２のバス幅「３２」で剰余計算して、剰余バイト数ＹＢを算出する（処理４２０）。この剰余バイト数ＹＢの値が、出力メモリ８ｊからデータバッファ８ｋへ転送する符号データのバイト数となる。
【０１３８】
したがって、全体制御部８ａは、剰余バイト数ＹＢの値が「０」であるかどうかを調べ（判断４２１）、判断４２１の結果がＹＥＳになるときには、出力メモリ８ｊに保存している剰余バイト数ＹＢ分の符号データをデータレジスタ８ｋに保存する（処理４２２）。
【０１３９】
そして、入力セレクタ８ｄによりデータレジスタ８ｋの出力データを選択し（処理４２３）、出力バイト数を計数するカウンタＣの値に、剰余バイト数ＹＢの値をセットし（処理４２４）、出力セレクタ８ｇにより出力バッファ＃１を選択させる（処理４２５）
【０１４０】
次いで、データレジスタ８ｋより符号データの１バイトを順に出力させてそのときに選択している出力バッファへ格納させ（処理４２６）、出力セレクタ８ｇにより次の出力バッファへ切り換える（処理４２７）。
【０１４１】
そして、カウンタＣの値を１つ減らし（処理４２８）、カウンタＣの値が０になったかどうかを調べ（判断４２９）、判断４２９の結果がＮＯになるときには、処理４２６へ戻り、データレジスタ８ｋに保存している符号データの次の１バイトを出力バッファへ格納させる。
【０１４２】
また、判断４２９の結果がＹＥＳになるときには、直前のストライプデータと現在処理しようとしているストライプデータのつなぎの部分の処理が終了したので、ＱＭコーダユニット８ｃの符号化処理を再開し（処理４３０）、処理４０３へ戻って、次のストライプのデータの出力を行う。
【０１４３】
なお、図１１および図１４に示した実施例では、ホストシステムのデータバスのバス幅が３２ビットに固定した場合について説明したが、１６ビットの場合についても同様に適用することができる。その場合は、出力バッファ８ｈの最初の２つがデータバスに接続されることとなり、全体制御部では、その２つの出力バッファについての制御を行えばよい。
【０１４４】
【発明の効果】
以上説明したように、本発明によれば、ストライプモードのＪＢＩＧ符号化方式を適用し、二値画像データを符号化圧縮する二値画像符号化装置において、ストライプモードのＪＢＩＧ符号化方式により入力二値画像データを対応する符号データに変換する符号化手段と、上記符号データをデータバスへ、当該データバスのバス幅に相当するデータ長単位に出力する出力手段と、上記符号化手段が作成するストライプ毎の上記符号データのデータ長が、上記出力手段が接続されるデータバスのバス幅の整数倍になるように、上記符号データと、１ストライプデータを終端する所定の終端マーカコードの間に、０ビット列を挿入する符号データ長調整手段を備えたので、ストライプデータの終端位置と出力単位の区切りが一致するように、「００ｈ」の１バイトデータを必要な数だけ、ストライプデータの最後の符号データと終端マーカコードとの間に挿入され、その結果、ホストシステム側で何らの処理をしなくとも、適切にストライプモードのＪＢＩＧ符号化方式の符号データを出力することができるという効果を得る。
【０１４５】
また、ストライプモードのＪＢＩＧ符号化方式を適用し、二値画像データを符号化圧縮する二値画像符号化装置において、ストライプモードのＪＢＩＧ符号化方式により入力二値画像データを対応する符号データに変換する符号化手段と、上記符号データをデータバスへ、当該データバスのバス幅に相当するデータ長単位に出力する出力手段と、上記データバスへ出力した符号データの一部を、上記データバスのバス幅に対応するデータ長だけ保存するためのデータレジスタ手段と、上記符号化手段と上記データレジスタの出力データを切り換えて、上記出力手段へ接続する出力データ調整手段を備え、上記出力データ調整手段は、上記データバスのホスト手段より通知されたデータ長だけ、直前ストライプの終端部の上記符号データを上記データレジスタ手段へ保存し、上記符号化手段の出力データに先立って、上記データレジスタ手段を選択して上記出力手段へ出力し、その後、上記符号化手段より出力される現ストライプデータの符号データを上記出力手段へ出力するとともに、上記ホスト手段は、上記直前ストライプの終端部の上記符号データを、現ストライプの符号データの最初に上記データバスへ出力される符号データで上書きする態様に、連続するストライプの符号データを保存するようにしたので、データレジスタに直前のストライプの符号データの最後の部分を格納し、符号データ長の出力バス幅と不整合な部分のつなぎを自動的に行うことができ、その結果、ストライプモードのＪＢＩＧ符号化処理時において、ストライプ間のデータをつなぐ部分のホスト制御部の処理の負担を軽減できるという効果も得る。
【０１４６】
また、ストライプモードのＪＢＩＧ符号化方式を適用し、二値画像データを符号化圧縮する二値画像符号化装置において、ストライプモードのＪＢＩＧ符号化方式により入力二値画像データを対応する符号データに変換する符号化手段と、上記符号データをデータバスへ、当該データバスのバス幅に相当するデータ長単位に出力する出力手段と、上記出力手段が上記データバスへ出力した符号データの一部を保存するためのデータレジスタ手段と、上記符号化手段と上記データレジスタの出力データを切り換えて、上記出力手段へ接続する出力データ調整手段を備え、上記出力データ調整手段は、直前ストライプの上記符号データのデータ長が上記バス幅の整数倍にならかった場合には、その剰余分の上記符号データを上記データレジスタ手段へ保存し、上記符号化手段の出力データに先立って、上記データレジスタ手段を選択して上記出力手段へ出力し、その後、上記符号化手段より出力される現ストライプデータの符号データを上記出力手段へ出力するようにしたので、ストライプモードにおいて、連続するストライプの符号データが切れ目なく出力され、その結果、ホストシステム側で何らの処理をしなくとも、適切にストライプモードのＪＢＩＧ符号化方式の符号データを出力することができるという効果も得る。
【０１４７】
また、前記データバスのバス幅は、複数選択可能にされているので、複数の出力バス幅について対応することができ、その結果、柔軟な符号化装置を実現することができるという効果も得る。
【図面の簡単な説明】
【図１】本発明の一実施例にかかるグループ３ファクシミリ装置の概略構成を示したブロック図。
【図２】符号化復号化部８がストライプモードのＪＢＩＧ符号化方式を適用した場合に作成する符号データの一例等を説明するための概略図。
【図３】本発明の一実施例にかかる符号化復号化部８におけるＪＢＩＧ符号化部の一例を示したブロック図。
【図４】１ページ分の二値画像データＤＩを符号化する際の全体制御部８ａの処理の一例を示したフローチャート。
【図５】１ページ分の二値画像データＤＩを符号化する際の全体制御部８ａの処理の一例を示したフローチャート（続き）。
【図６】１ページ分の二値画像データＤＩを符号化する際の全体制御部８ａの処理の一例を示したフローチャート（続き）。
【図７】１ページ分の二値画像データＤＩを符号化する際の全体制御部８ａの処理の一例を示したフローチャート（続き）。
【図８】１ページ分の二値画像データＤＩを符号化する際の全体制御部８ａの処理の一例を示したフローチャート（続き）。
【図９】１ページ分の二値画像データＤＩを符号化する際の全体制御部８ａの処理の他の例を示したフローチャート。
【図１０】１ページ分の二値画像データＤＩを符号化する際の全体制御部８ａの処理の他の例を示したフローチャート（続き）。
【図１１】本発明の他の実施例にかかる符号化復号化部８におけるＪＢＩＧ符号化部の一例を示したブロック図。
【図１２】１ページ分の二値画像データＤＩを符号化する際の全体制御部８ａの処理のさらに他の例を示したフローチャート。
【図１３】１ページ分の二値画像データＤＩを符号化する際の全体制御部８ａの処理のさらに他の例を示したフローチャート（続き）。
【図１４】本発明のさらに他の実施例にかかる符号化復号化部８におけるＪＢＩＧ符号化部の一例を示したブロック図。
【図１５】１ページ分の二値画像データＤＩを符号化する際の全体制御部８ａの処理のまたさらに他の例を示したフローチャート。
【図１６】１ページ分の二値画像データＤＩを符号化する際の全体制御部８ａの処理のまたさらに他の例を示したフローチャート（続き）。
【図１７】１ページ分の二値画像データＤＩを符号化する際の全体制御部８ａの処理のまたさらに他の例を示したフローチャート（続き）。
【符号の説明】
１  システム制御部
８  符号化復号化部
８ａ  全体制御部
８ｂ  データ入力回路
８ｃ  ＱＭコーダユニット
８ｄ  入力セレクタ
８ｅ，８ｆ  レジスタ
８ｇ  出力セレクタ
８ｈ  出力バッファ
８ｉ，８ｋ  データレジスタ
８ｊ  出力メモリ
【図１】
0003845250.tif 000002
【図２】
0003845250.tif 000003
【図３】
0003845250.tif 000004
【図４】
0003845250.tif 000005
【図５】
0003845250.tif 000006
【図６】
0003845250.tif 000007
【図７】
0003845250.tif 000008
【図８】
0003845250.tif 000009
【図９】
0003845250.tif 000010
【図１０】
0003845250.tif 000011
【図１１】
0003845250.tif 000012
【図１２】
0003845250.tif 000013
【図１３】
0003845250.tif 000014
【図１４】
0003845250.tif 000015
【図１５】
0003845250.tif 000016
【図１６】
0003845250.tif 000017
【図１７】
0003845250.tif 000018