JP5509957B2 - 画像処理装置および画像処理方法、ならびに、画像形成装置 - Google Patents

画像処理装置および画像処理方法、ならびに、画像形成装置 Download PDF

Info

Publication number
JP5509957B2
JP5509957B2 JP2010063353A JP2010063353A JP5509957B2 JP 5509957 B2 JP5509957 B2 JP 5509957B2 JP 2010063353 A JP2010063353 A JP 2010063353A JP 2010063353 A JP2010063353 A JP 2010063353A JP 5509957 B2 JP5509957 B2 JP 5509957B2
Authority
JP
Japan
Prior art keywords
code
line
data
code data
reading
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 - Fee Related
Application number
JP2010063353A
Other languages
English (en)
Other versions
JP2011199532A (ja
Inventor
尚人 白石
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.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
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 Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2010063353A priority Critical patent/JP5509957B2/ja
Priority to US13/043,750 priority patent/US8817346B2/en
Publication of JP2011199532A publication Critical patent/JP2011199532A/ja
Application granted granted Critical
Publication of JP5509957B2 publication Critical patent/JP5509957B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/387Composing, repositioning or otherwise geometrically modifying originals
    • H04N1/3877Image rotation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06KGRAPHICAL DATA READING; PRESENTATION OF DATA; RECORD CARRIERS; HANDLING RECORD CARRIERS
    • G06K15/00Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers
    • G06K15/02Arrangements for producing a permanent visual presentation of the output data, e.g. computer output printers using printers
    • G06K15/18Conditioning data for presenting it to the physical printing elements
    • G06K15/1894Outputting the image data to the printing elements
    • G06K15/1898Outputting the image data to the printing elements while adapting the order of the data to the printing elements' arrangement, e.g. row-to-column conversion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/32Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device
    • H04N1/32358Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device using picture signal storage, e.g. at transmitter
    • H04N1/32459Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device using picture signal storage, e.g. at transmitter for changing the arrangement of the stored data
    • H04N1/3247Changing the arrangement of data in a page, e.g. reversing the order to produce a mirror image
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/41Bandwidth or redundancy reduction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2201/00Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
    • H04N2201/32Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device
    • H04N2201/3285Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device using picture signal storage, e.g. at transmitter
    • H04N2201/329Storage of less than a complete document page or image frame
    • H04N2201/3292Storage of less than a complete document page or image frame of one or two complete lines

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Editing Of Facsimile Originals (AREA)
  • Image Processing (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Description

本発明は、画像データを180度回転させて出力する際に用いて好適な画像処理装置および画像処理方法、ならびに、画像形成装置に関する。
プリンタ装置などの画像形成装置は画像データを一時的にメモリに記憶する。この場合、画像データをそのままメモリに格納しようとすると、大容量のメモリが必要になり価格が上昇してしまう。これに対処するため、画像データを圧縮してメモリに格納するようにしている。
このようなプリンタ装置における印字処理は、例えば次のように行われる。プリンタ装置は、コンピュータなどで作成されネットワークなどを介して受け取ったPDL(Page Description Language)を解析して描画部が実行可能な中間言語を生成し、この中間言語を描画部が解析して、バンドメモリに対して階調処理後の画像を描画する。描画された画像データは、2値画像の圧縮符号化アルゴリズムにより圧縮符号化し、生成された符号データをメモリに格納する。その後、印字動作時に、CMYK各版毎に遅延させてメモリから符号データを読み込んで復号し、CMYK各版に対応するデータのプリンタエンジンに転送し、印字する。
また、用紙の両面に印字可能なプリンタ装置が知られている。このようなプリンタ装置では、用紙の裏面側に対する印刷に際して、元の画像データに対して180度回転させた画像データを用い、表面の印刷地に対して用紙を反転させて裏面に対する印字を行うことができる。
従来、この両面印刷のように、画像データを180度回転させて逆の順番で出力する必要がある場合には、画像データを圧縮符号化した符号データを一旦メモリ上に展開し、展開したデータに対して逆順での読み出しを行なっていた。このため、圧縮符号化した符号データを復号して展開するために、符号データより大きいサイズのメモリ空間が必要であった。また、展開されたデータのメモリへの書き込み動作とメモリからの読み出し動作が必要となり、処理速度が低下してしまう。
これを改善するため、例えば特許文献1に示された画像データ圧縮・伸張装置は、1ページ分の画像データを複数個の矩形ブロックに分割し、分割したブロック単位で圧縮してデータ管理をするようにしている。また、特許文献2においては、画像データをN×Nブロック単位に符号化し、その符号長をブロック毎に管理し、可変長な符号を管理可能にし、ブロック符号毎にメモリアクセスを可能とすることで、90度単位の回転を可能としていた。
また、特許文献3においては、N×Nのブロック単位に圧縮された符号をブロックライン毎に符号長を求め、ブロックライン単位に符号を管理する。これにより、可変長な符号を管理可能にし、ブロック符号毎にメモリアクセスを可能とすることで、90度単位の回転を可能としていた。
さらに、特許文献4では、両面印字の高速化と省メモリ化とを図るために、図50に例示されるように、画像データ800が符号化された符号801に対して0度回転の画像データ802を得る復号と、180度回転の画像データ803を得る復号とをそれぞれ行う技術が開示されている。特許文献4によれば、図51に例示されるように、符号化の際に画像データ800をライン単位に符号化して符号801’を生成する。復号時に、符号801’を最終ラインから復号して上下反転した中間画像804を作成し、さらにその画像を左右反転することにより、180度回転された画像データ803を得る。
また、符号を順方向にも逆方向にも復号可能な符号化方式として、特許文献5が知られている。特許文献5は、特に動画データの圧縮符号化に使用される。テレビジョン放送など電波により符号を受け取る際には符号の損失が多く発生する。例えば画像データの順方向から復号している際に符号の破損損失によるエラーが発生した場合に、符号の後方から破損していない部分まで遡って復号することで、画質の劣化を抑える。
さらに、特許文献6においては、ノンスタック方式で両面印字する方法が記載されている。このノンスタック方式は、表面を印字後に、用紙を反転装置により反転させ、表面を印字した用紙の裏面を印字することにより両面印字を実現している。
さらにまた、特許文献7には、注目画素の値を周辺画素から予測式により、予測する予測符号化方式による圧縮方式が開示されている。
ところで、近年では、プリンタ装置などでも、内部における画像データの転送をバスを介して行う構成が多くなってきている。図52は、内部バスを介して画像データを転送するようにされた、従来技術によるプリンタ装置500の一例の構成を示す。
プリンタ装置500は、メモリコントローラを内蔵したCPU(Central Processing Unit)と、画像処理用のASIC(Application Specific Integrated Circuit)と、パネルコントローラ用のASICと、メインメモリ630と、プログラムが格納されるROM640とを有する。
メモリコントローラ内蔵のCPUは,CPU600、CPU I/F601、メモリアービタ(ARB)602、メモリコントローラ603、DMA(Direct Memory Access)コントローラ604、バスコントローラ605および通信コントローラ606を有する。メモリコントローラ内蔵CPU、画像処理用のASICおよびパネルコントローラ用のASICは、それぞれバス613を介して互いに通信可能とされている。通信コントローラ606は、ネットワークを介して例えばコンピュータ(PC)650と通信を行う。
メモリアービタ602は、メインメモリ630とメモリコントローラ内蔵CPUの各部とのアクセス調停を行う。通信コントローラ606は、ネットワークなどによる通信を制御する。バスコントローラ605は、バス613に接続される各部とのバス調停を行う。メモリコントローラ603は、メインメモリ630に対するアクセス制御を行う。CPU I/F601は、メモリアービタ602とCPU600との間の通信を制御する。
メインメモリ630は、PDL(Page Description Language)データ領域630A、画像データ領域630B、回転後画像データ領域630Cおよびページ符号データ領域630Dを有する。
画像処理用のASICは、バスI/F607、符号化部608、復号部609、エンジンコントローラ610および回転部700を有する。バスI/F607は、バス613と画像処理用のASICとの間の通信を制御する。符号化部608は、メインメモリ630の画像データ領域630Bに格納される画像データを圧縮符号化する。復号部609は、メインメモリ630のページ符号領域630Dに格納されるページ符号を復号する。回転部700は、画像データに対して180度回転処理を施す。エンジンコントローラ610は、プリンタエンジン660を制御する。
パネルコントローラ用のASICは、バスI/F611およびパネルコントローラ612を有する。バスI/F611は、バス613とパネルコントローラ用のASICとの間の通信を制御する。パネルコントローラ612は、オペレーションパネル621を制御する。
図53および図54を用いて、図52に例示したプリンタ装置500における、180度回転処理を行う際のデータの流れについて説明する。図53において、コンピュータ650で作成されたPDLデータが、経路Aに従いメモリアービタ602などを介してメインメモリ630のPDLデータ領域630Aに格納される。CPU600は、経路Bに示されるように、メインメモリ630のPDLデータ領域630Aから、メモリアービタ602などを介してPDLデータを読み出す。CPU600は、このPDLデータを解析して画像データを描画し、描画された画像データを経路Cに従いメインメモリ630の画像データ領域630Bに格納する。
画像データ領域630Bに格納された画像データは、180度の回転処理を行うために画像データ領域630Bから読み出され、経路Dに従い、バス613を介して回転部700に供給される。回転部700で180度の回転処理を施された回転後画像データは、経路Eに従い、再びバス613を介してメインメモリ630に供給され、回転後画像データ領域630Cに格納される。そして、この回転後画像データ領域630Cに格納された回転後画像データが、経路Fに従い、バス613を介して符号化部608に供給される。符号化部608で符号化された回転後画像データは、経路Gに従い再びバス613を介してメインメモリ630に供給され、ページ符号データ領域630Dに格納される。
次いで、図54に例示されるように、経路符号化された回転後画像データがメインメモリ630のページ符号データ領域630Dから読み出され、経路Hに従いバス613を介して復号部609に供給され、復号されてエンジンコントローラ610に供給される。
しかしながら、特許文献1および特許文献2においては、1ページの画像データを細かなブロック単位に管理するために、各ブロック毎のアドレスを記憶する大きなメモリ領域が必要であり、処理が複雑になるという問題点があった。また、元の画像データが細かくブロックに分割されるために、圧縮率が低下するという問題点があった。
また、特許文献3においては、ブロックライン単位にアドレスを記憶する必要があり、かつ回転時にブロックライン符号の内部のアドレスを求める処理が複雑であるという問題点があった。
さらに、特許文献4においては、図55に示されるように、ライン符号データの終端に、ラインTAGとして各ラインの符号長が記述されている。180度回転処理時には、先ずこのラインTAGから符号長を読み込み、そのラインの先端の符号のアドレスを求め、そこから順次1ラインの符号を読み込み復号している。そのため、符号を転送するDMAは、1ライン分の符号はシリアルに読み込む一方で、符号のアドレスを飛び飛びにランダムアクセスすることになる。したがって、符号を転送するDMAの効率が大きく落ち、共通バスやメモリのメモリアクセス性能が劣化してしまうという問題点があった。
さらにまた、特許文献5では、符号の逆方向からの復号が可能である一方で、符号を順方向および逆方向の両方向から復号できるような符号ファーマットにする必要があり、符号サイズが大きくなり、圧縮率が良くないという問題点があった。
また、特許文献7に記載されるような予測符号化方式は、符号化を周辺画素から予測式により予測することで符号化を行うため、基本的に、逆方向から符号を復号することはできないという問題点があった。これは、逆方向から復号を行おうとしても、復号に用いる周辺画素が未だ復号されていないからである。このように、予測符号化方式により符号化した画像データは、符号化した順方向からしか復号できない。
さらに、図52〜図54を用いて説明した従来システムでの両面印字では、図56に例示されるように、偶数ページ目の符号化処理時に回転処理のために大容量のバス転送が発生し、印字速度が低下してしまうという問題点があった。図56の例では、符号化処理における奇数ページ目(1ページ目、3ページ目および5ページ目)では、バス613におけるデータ転送量がそれぞれ192MB、256MBおよび64MBであるのに対して、偶数ページ目(2ページ目および4ページ目)ではデータ転送量が512MBにもなっている。
本発明は、上記に鑑みてなされたものであって、圧縮符号化を行う画像データに対する180度の回転処理を効率的に行うことを目的とする。
上述した課題を解決し、目的を達成するために、本発明は、画像データがライン単位で符号化された符号データの先頭に識別符号が配置された複数のライン符号データを、画像データの先頭ライン側から終端ライン側に向けた順番で記憶する第1の記憶手段と、第1の記憶手段からライン符号データを読み出す第1の読み出し手段と、第1の読み出し手段で読み出されたライン符号データから識別符号を認識し、識別符号に基づきライン符号データをライン単位で記憶する第2の記憶手段と、第2の記憶手段からライン符号データを読み出す第2の読み出し手段と、第2の読み出し手段で読み出されたライン符号データを復号する復号手段と、復号手段でライン符号データが復号された復号画像データをライン単位で記憶する第3の記憶手段と、第3の記憶手段に記憶された復号画像データをライン単位で読み出す第3の読み出し手段とを有し、画像データを180度回転させて出力する場合に、第1の読み出し手段は、第1の記憶手段から、ライン符号データを、終端ライン側から先頭ライン側に向けて読み出すと共に、各ラインを終端側から先頭側に向けて読み出し、第2の読み出し手段は、第2の記憶手段から、ライン符号データを、ライン符号データに含まれる識別符号の位置からライン符号データによるラインの終端側に向けて読み出し、第3の読み出し手段は、第3の記憶手段から、復号画像データを、画素単位でラインの終端側から先頭側に向けて読み出すことを特徴とする。
また、本発明は、第1の読み出し手段が、画像データがライン単位で符号化された符号データの先頭に識別符号が配置された複数のライン符号データを、画像データの先頭ライン側から終端ライン側に向けた順番で記憶する第1の記憶手段からライン符号データを読み出す第1の読み出しステップと、第2の記憶手段が、第1の読み出し手段で読み出されたライン符号データから識別符号を認識し、識別符号に基づきライン符号データをライン単位で記憶する第2の記憶ステップと、第2の読み出し手段が、第2の記憶手段からライン符号データを読み出す第2の読み出しステップと、復号手段が、第2の読み出しステップで読み出されたライン符号データを復号する復号ステップと、第3の記憶手段が、復号ステップでライン符号データが復号された復号画像データをライン単位で記憶する第3の記憶ステップと、第3の読み出し手段が、第3の記憶手段に記憶された復号画像データをライン単位で読み出す第3の読み出しステップとを有し、画像データを180度回転させて出力する場合に、第1の読み出しステップは、第1の記憶手段から、ライン符号データを、終端ライン側から先頭ライン側に向けて読み出すと共に、各ラインを終端側から先頭側に向けて読み出し、第2の読み出しステップは、第2の記憶手段から、ライン符号データを、ライン符号データに含まれる識別符号の位置からライン符号データによるラインの終端側に向けて読み出し、第3の読み出しステップは、第3の記憶手段から、復号画像データを、画素単位でラインの終端側から先頭側に向けて読み出すことを特徴とする。
本発明によれば、圧縮符号化した画像データに対する180度の回転処理を効率的に行うこことができるという効果を奏する。
図1は、本発明の第1の実施形態に適用可能な画像形成装置の一例の構成を示す略線図である。 図2は、電装・制御部の一例の構成を示すブロック図である。 図3は、処理の全体的な流れを示す略線図である。 図4は、符号化の際のデータフローを示す略線図である。 図5は、復号の際のデータフローを示す略線図である。 図6は、本発明の第1の実施形態による全体の処理を示す略線図である。 図7は、符号化部の一例の構成を示すブロック図である。 図8は、復号部の一例の構成を示すブロック図である。 図9は、本発明の第1の実施形態に適用可能な符号フォーマットを示す略線図である。 図10は、180度回転復号時の符号データと符号ラインメモリとの関係を示す略線図である。 図11は、0度回転復号時の符号データと符号ラインメモリとの関係を示す略線図である。 図12は、符号化処理部の一例の構成を示すブロック図である。 図13は、復号処理部の一例の構成を示すブロック図である。 図14は、符号化する画像データの例を示す略線図である。 図15は、本発明の第1の実施形態の符号化方法により符号化された符号データの一例を示す略線図である。 図16は、ライン符号データの例を示す略線図である。 図17は、符号化処理の一例を示すフローチャートである。 図18は、ライン単位の符号化処理の一例を示すフローチャートである。 図19は、辞書の探索を説明するための略線図である。 図20は、辞書更新の例を示す略線図である。 図21は、辞書探索処理の一例のを示すフローチャートである。 図22は、辞書更新処理の一例を示すフローチャートである。 図23は、ESC辞書更新処理の一例を示すフローチャートである。 図24は、インデクス符号化処理の一例を示すフローチャートである。 図25は、インデクス符号テーブルの例を示す略線図である。 図26は、ESC符号化処理の一例を示すフローチャートである。 図27は、符号出力処理の一例を示すフローチャートである。 図28は、復号処理の一例を示すフローチャートである。 図29は、180度回転復号処理の一例を示すフローチャートである。 図30は、180度回転ライン復号処理の一例を示すフローチャートである。 図31は、180度回転符号入力処理の一例を示すフローチャートである。 図32は、ESC復号処理の一例を示すフローチャートである。 図33は、インデクス復号処理の一例を示すフローチャートである。 図34は、インデクス逆符号テーブルの例を示す略線図である。 図35は、インデクス値により辞書をアクセスして画像データを求めることを説明するための略線図である。 図36は、ラインメモリ反転出力処理の一例を示すフローチャートである。 図37は、0度回転復号処理の一例を示すフローチャートである。 図38は、0度回転ライン復号処理の一例を示すフローチャートである。 図39は、0度回転符号入力処理の一例を示すフローチャートである。 図40は、ラインメモリ出力処理の一例を示すフローチャートである。 図41は、本発明の第2の実施形態による符号フォーマットの例を示す略線図である。 図42は、本発明の第2の実施形態によるライン符号データの例を示す略線図である。 図43は、本発明の第2の実施形態による180度回転復号時の符号データと符号ラインメモリとの関係を示す略線図である。 図44は、本発明の第2の実施形態による0度回転復号時の符号データと符号ラインメモリとの関係を示す略線図である。 図45−1は、本発明の第2の実施形態によるライン符号化処理の一例を示すフローチャートである。 図45−2は、本発明の第2の実施形態によるライン符号化処理の一例を示すフローチャートである。 図46は、ランレングス符号化処理の一例を示すフローチャートである。 図47は、本発明の第2の実施形態による180度回転ライン復号処理の例を示すフローチャートである。 図48は、ランレングス復号処理の一例を示すフローチャートである。 図49は、本発明の第2の実施形態による0度回転ライン復号処理の例を示すフローチャートである。 図50は、従来技術を説明するための略線図である。 図51は、従来技術を説明するための略線図である。 図52は、従来技術によるプリンタ装置の一例の構成を示すブロック図である。 図53は、従来技術によりプリンタ装置における180度回転処理を行う際のデータの流れについて説明するための略線図である。 図54は、従来技術によりプリンタ装置における180度回転処理を行う際のデータの流れについて説明するための略線図である。 図55は、従来技術による符号の例を示す略線図である。 図56は、従来技術を説明するための略線図である。
<第1の実施形態>
以下に添付図面を参照して、本発明に係る画像形成装置の第1の実施形態を詳細に説明する。図1は、本発明の第1の実施形態に適用可能な画像形成装置の一例の構成を示す。
画像形成装置本体21は、現像器1〜現像器4、光学ユニット5、帯電器8、感光ベルト18、転写ドラム17、レジストローラ11、転写ローラ12、除電器14、定着器15、クリーナ16、排紙ローラ13、給紙カセット6および7、排紙センサ26、ならびに、切替器35を主たる構成部品としいる。反転送紙装置22は搬送ローラ33、34、37、用紙センサ30、31および32、ソレノイド27、ソレノイド28、ならびに、切替器36を主たる構成部品としている。
画像形成装置本体21および用紙反転装置22の動作について説明する。ここには示していないホストからの印字開始信号により、帯電器8は感光ベルト18を一様に帯電させる。光学ユニット5はホストから送られてくる印字データによって、感光ベルト18の上に潜像を描く。描かれた潜像は、現像器1〜現像器4の何れか一つにより現像され、感光ベルト18の上に現像器の中の着色粒子を塗布する。
感光ベルト18はここには示さない駆動源によって回転し、転写ドラム17の上に感光ベルト18の上に着色粒子を転写する。感光ベルト18はイレーズランプ25によって除電され、感光ベルト18上に残った余剰の着色粒子はクリーナ19によって除去され、再び帯電器8により帯電される。カラー印字の場合には、現像器を切り替えながらこの工程を複数回繰り返す。
転写ドラム17上には、単色、または複数色の着色粒子により可視画像が形成され、所望の転写が終了する時点、あるいは事前に給紙カセット6、あるいは給紙カセット7から、用紙23が給紙ローラ9、あるいは給紙ローラ10により引出され、レジストローラ11のところで待機する。用紙センサ29で用紙を検出した後、所定の時間をおいて給紙ローラ9あるいは給紙ローラ10は停止する。
転写ドラム17上に形成した可視像の位置が用紙上への転写位置と合致するタイミングを見計らって、レジストローラ11の所に待機していた用紙は再び搬送を開始し、転写ローラ12の所で可視像を用紙側に転写する。除電器14により、用紙は転写ドラム17より剥離し、定着器15により、着色粒子が用紙に定着される。片面のみの印字の場合は、切替器35は動作せず、用紙は排紙トレー24側に排出される。
両面印字の場合は、ソレノイド27が動作し、切替器35が図1で言う右側に動き、用紙を用紙反転部20内に誘導し、搬送ローラ33により用紙を反転装置下部の用紙反転部20に搬送する。用紙反転部20では用紙センサ32が用紙を検出したら所定量だけ用紙を図1で言う左方向に送り、ソレノイド28を動作させ、切替器36が図1で言う上側に動き、搬送ローラ34を逆転させて用紙の後端部を本体給紙口付近の搬送ローラ37の手前まで送る。
その後、タイミングを見計らって搬送ローラ34を回転させ、用紙を搬送ローラ37へ送り、搬送ローラ37はレジストローラ11のところまで紙が送られたら待機する。その後は片面印字の場合と同じ手順で転写、剥離、定着を行い、切替器35を動作させず、排紙トレー24側に用紙を排出して両面印字終了となる。なお、電装・制御部50は、画像形成装置21の全体を制御する。
図2は、電装・制御部50の一例の構成を示す。電装・制御部50は、メモリコントローラを内蔵したCPU(Central Processing Unit)部51と、画像処理用のASIC(Application Specific Integrated Circuit)52と、パネルコントローラ用のASIC53と、メインメモリ130と、プログラムが格納されるROM140とを有する。メモリコントローラ内蔵のCPU部51、画像処理用のASIC52およびパネルコントローラ用のASIC53は、それぞれバス113を介して互いに通信可能とされている。
メモリコントローラ内蔵のCPU部51は、CPU100、CPU I/F101、メモリアービタ(ARB)102、メモリコントローラ103、DMA(Direct Memory Access)コントローラ104、バスコントローラ105および通信コントローラ106を有する。CPU100は、ROM140に記憶されるプログラムに従い、画像形成装置21の全体を制御すると共に、例えばコンピュータ(PC)150で作成されネットワークを介して送信されたPDLデータを解析してバンドデータの描画を行う。描画されたバンドデータは、メインメモリ130の画像データ領域130Bに格納される。
メモリアービタ102は、メインメモリ130とメモリコントローラ内蔵CPUの各部とのアクセス調停を行う。通信コントローラ106は、ネットワークなどによる通信を制御する。バスコントローラ105は、バス113に接続される各部とのバス調停を行う。メモリコントローラ103は、メインメモリ130に対するアクセス制御を行う。CPU I/F101は、メモリアービタ102とCPU100との間の通信を制御する。
メインメモリ130は、PDL(Page Description Language)データ領域130A、画像データ領域130Bおよびページ符号領域130Cを有する。
画像処理用のASIC52は、バスI/F107、符号化部108、復号部109およびエンジンコントローラ110を有する。バスI/F107は、バス113と画像処理用のASIC52との間の通信を制御する。符号化部108は、メインメモリ130の画像データ領域130Bに格納される画像データを圧縮符号化する。画像データが圧縮符号化されたページ符号データは、メインメモリ130のページ符号領域130Cに格納される。復号部109は、メインメモリ130のページ符号領域130Cから読み出したページ符号データを復号し、エンジンコントローラ110に供給する。エンジンコントローラ110は、プリンタエンジン160を制御する。
プリンタエンジン160は、図1で示したように、ノンスタック方式の両面印字を行なう。このノンスタック方式は、用紙の表面を印字後に、用紙を反転機構により反転させ、表面を印字した用紙の裏面に印字することにより、両面印字を実現している。したがって、電装・制御部50は、両面印字時には、表面、裏面と交互に画像データを順次、プリンタエンジン160に転送する。そして、裏面の印字時に、用紙の表面に対して180度回転した画像データをプリンタエンジン160に転送する。これは、反転機構により用紙が反転しているためである。
パネルコントローラ用のASIC53は、バスI/F111およびパネルコントローラ112を有する。バスI/F111は、バス113とパネルコントローラ用のASICとの間の通信を制御する。パネルコントローラ112は、オペレーションパネル121を制御する。オペレーションパネル121は、表示部や各種操作子が設けられ、ユーザに対して画像形成装置21の状態を通知したり、ユーザ操作を受け付ける。
図3は、処理の全体的な流れを示す。なお、CPU100は、プログラムにより描画コマンド生成部および描画処理部を構成する。コンピュータ150において印字データ(PDLデータ)が生成され、通信コントローラ106がコンピュータ150から送信されたPDLデータを受け取る。PDLデータは、メインメモリ130のPDLデータ領域130Aに記憶される。CPU100は、描画コマンド生成部で、PDLデータ領域130Aに記憶されるPDLデータを解析し、描画コマンドを生成する。描画コマンドは、例えばメインメモリ130のPDLデータ領域130Aに記憶される。
CPU100の描画処理部は、メインメモリ130のPDLデータ領域130Aから描画コマンドを受け取り、メインメモリ130の画像データ領域130Bに対して画像データ(バンドデータ)を描画する。
メインメモリ130の画像データ領域130Bに記憶されたバンドデータは、符号化部108で符号化され、バンド毎の符号データとされてメインメモリ130のページ符号領域130Cに記憶される。復号部109は、ページ符号領域130Cから各バンド毎の符号データからなる1ページ分の符号データを読み出して復号し、プリンタエンジン160に供給する。プリンタエンジン160は、復号部109から供給されたデータに従い印字を行う。
図4は、符号化の際のデータフローを示す。コンピュータ150で作成されたPDLデータは、ネットワークを介して画像形成装置21に供給され、経路aに従い、メモリアービタ102を介してメインメモリ130のPDLデータ領域130Aに記憶される。CPU100は、経路bに従いPDLデータ領域130AからPDLデータを読み出し、読み出したPDLデータを解析し、経路cに従い、画像データをメインメモリ130の画像データ領域130Bに描画する。
符号化部108は、経路dに従い、バス113を介してメインメモリ130の画像データ領域130Bから画像データを読み込み、符号化する。画像データを符号化した1ページ分のページ符号データは、経路eに従い、バス113を介してメインメモリ130のページ符号領域130Cに格納される。
図5は、復号の際のデータフローを示す。復号部109は、経路fに従い、メインメモリ130のページ符号領域130Cからページ符号データを読み込んで復号し、エンジンコントローラ110に転送する。ここで、復号部109は、0度回転の復号については符号の先頭から符号を読み込み、復号する。また、180度回転の復号については符号の終端から先端へ向かって符号を読み込み、復号する。
エンジンコントローラ110は、復号部109から復号された画像データを受け取り、プリンタエンジン160に転送する。
図6は、本第1の実施形態による全体の処理を示す。図6(a)は符号化処理、図6(b)は復号処理、図6(c)は各処理でのバス113におけるデータ転送量を示す。上述のように、180度の回転処理を、メインメモリ130のページ符号領域130Cからのページ符号の読み出し方向を切り替えることで行っているため、回転処理が必要な偶数ページの符号化処理が小さくなる。具体的には、2ページ目の符号化処理と1ページ目の復号処理とで重なる場合と、4ページ目の符号化処理と3ページ目の復号処理とで重なる場合とにおいて、バス113におけるデータ転送量が増大しない。
図6(c)の例では、符号化処理の奇数ページ目(1ページ目、3ページ目および5ページ目)で、バス113のデータ転送量がそれぞれ192MB、256Mおよび64MBであるのに対して、偶数ページ目(2ページ目および4ページ目)でもそれぞれ256MBとなっている。従来技術において図56(c)を用いて説明した例に比べて、バス113における偶数ページ目のデータ転送量が半分となっている。
図7は、符号化部108の一例の構成を示す。コントローラ202は、この符号化部108を制御する。アービタ200は、バスI/F107と接続され、画像データの読み込みと符号の書き込みの調整を行なう。画像データ読み込み部201は、アービタ200を介してメインメモリ130の画像データ領域130Bからライン単位で画像データを読み込み、符号化処理部203に転送する。符号化処理部203は、画像データを符号化し、符号データを符号書き込み部204に転送する。符号書き込み部204は、符号化処理部203から符号データを受け取り、アービタ200を介してメインメモリ130のページ符号領域130Cに書き込む。
図8は、復号部109の一例の構成を示す。コントローラ302は、復号部109を制御する。アービタ300は、バスI/F107と接続され、符号データの読み込みの調整を行なう。符号アドレス生成部301は、アービタ300を介してメインメモリ130のページ符号領域130Cからページ符号データを読み込むためのページ符号メモリのアドレスを生成する。上述した図5のように、0度回転復号時は、符号のスタートアドレスから終端まで順次アドレスを生成し、180度回転復号時は、符号の終端アドレスから符号のスタートアドレスへ逆方向に順次アドレスを生成する。
ラインマーカ認識部303は、180度回転復号時にアービタ300から符号データを受け取り、図9の符号フォーマットにおける図9(c)のラインマーカを符号データのワードの上位20ビットと比較し、一致しない場合は符号ラインメモリ304に当該ワードを順次書き込む。一方、一致する場合は、当該ワードを符号ラインメモリ304に書き込み、書き込んだ1ライン分の符号数を復号処理部306に通知し、符号ラインメモリ304に記憶される符号データを復号するように、復号処理部306に通知する。図9の符号フォーマットの詳細については、後述する。
図10は、180度回転復号時の符号データと符号ラインメモリ304との関係を示す。符号ラインメモリ304は、複数ライン分の符号データを格納することができる。図10は、符号ラインメモリ304をアクセス単位である1ワード(32ビット)毎に区切って示している。
なお、図10および後述する図11などにおいて、「1ライン目の0」などの表記は、ラインメモリカウンタのカウント値を表す。すなわち、1ラインをワード単位で区切ってラインメモリに記憶した際の、ラインメモリに対する書き込みまたは読み出し順のワード単位での順番を示す。すなわち、「1ライン目の0」は、1ライン目をワード単位で区切ったときに0番目、すなわち最初に書き込みまたは読み出しがなされる順番を示す。
図10(a)は、符号データの構成例を示す。ライン符号データは、1ライン目から順に1ワード毎に並べられる。各ラインの先頭にはラインマーカが配され、ラインの終端にはライン終端符号が配される。1ワードに対してライン終端符号の後が余った場合は、例えばNOPとして所定のビットが詰め込まれる。
1ライン目の復号時の符号ラインメモリ304の内容は、図10(b)における一番下の符号から10ライン目の4ワード目の符号データから順次、10ライン目の0ワード目の符号データまでを格納する。図10(b)〜図10(d)において、左側はメモリのアドレス、右側は格納されるデータ順を示す。このように、逆順に1ライン分の符号データが格納される。復号処理部306は、符号ラインメモリ304の終端の4ワード目から、3ワード目、2ワード目、1ワード目、0ワード目と、逆順に符号データを読み込むことにより、正確に1ラインを復号する。
2ライン目の復号時の符号ラインメモリ304の内容も同様に、図10(c)に例示されるように、9ライン目の5ワード目の符号から順次、9ライン目の0ワード目までの符号を格納する。10ライン目の復号時の符号ラインメモリ304の内容も、図10(d)に例示されるように、同様である。
このように、符号データは、可変長符号であるため、ライン毎にワード数が異なる。この符号ラインメモリ304があることにより、この復号部109は、メインメモリ130のページ符号領域130Cから読み出したページ符号データを、終端から先端に向けて順次符号を受け取ることが可能となる。これにより、メインメモリ130のアクセス効率が上がり、メインメモリ130の転送スピードを上げることができる。また、バス113を介してのDMAの転送効率も向上する。
一方、0度回転復号時は、アービタ300から符号データを受け取り、符号ラインメモリ304に、図9(d)に示される符号フォーマットのライン終端符号を見つけるまで、順次符号を書き込んでいく。
図11は、0度回転復号時の符号データと符号ラインメモリ304との関係を示す。符号データの内容を示す図11(a)は、上述の図10(a)と共通である。1ライン目の復号時の符号ラインメモリ304の内容は、図11(b)における一番下の符号から1ライン目の0ワード目の符号から順次、1ライン目の3ワード目の符号までを格納する。このように、順次1ライン分の符号が格納される。図11(b)〜図11(d)において、左側はメモリのアドレス、右側は格納されるデータ順を示す。図11(c)は9ライン目、図11(d)は10ライン目をそれぞれ示す。復号処理部306は、符号ラインメモリ304の終端の0ワード目から、1ワード目、2ワード目、3ワード目と順次符号データを読み込むことにより、正確に1ラインを復号する。
符号読み込み部305は、180度回転復号時に、図10を用いて説明したように、符号ラインメモリ304に格納された符号データを逆順で、順次読み込み、復号処理部306に転送する。また、符号読み込み部305は、0度回転復号時には、図11を用いて説明したように、符号ラインメモリに格納された符号データを順次読み込み、復号処理部306に転送する。復号処理部は、符号ラインメモリ304から読み出された符号データを順次復号し、画像ラインメモリ307に転送する。
ライン反転読み込み部308は、180度回転復号時に、画像ラインメモリ307に格納された画像データをラインの後端から先頭側へと読み込み、エンジンコントローラ110に転送する。また、ライン反転読み込み部308は、0度回転復号時には、画像ラインメモリ307に格納された画像データを順方向に読み込み、エンジンコントローラ110に転送する。
<MTF符号化方式を用いた構成>
図12は、符号化処理部203の一例の構成を示す。本第1の実施形態では、画像データの符号化をMTF符号化方式を用いて行う。MTF符号化方式は、特許第4000266号公報に開示されるように、小さい動的な辞書をMTF(Move To Front)制御することにより、辞書と一致したインデックス値を符号化する符号化方式である。このMTF符号化方式による符号化は、既出の文字の中で前回出現した文字が、今回出現する確率が最も高いと見做す符号化方法である。
MTF符号化方式は、次のように動作する。入力される値が取り得る全ての値を保持するリストを持っており、入力された値とそのリスト中の値を比較し、同じ値を持つリスト中の位置をシンボルとして符号を生成する。次いで、この比較対象となった値をリスト中から削減し、その入力値をリストの先頭へもってくる。
例えば、5つの文字「a」、「b」、「d」、「o」および「Y」から作られている文字系列を例にとって説明する。先ず、この5つの文字に対するリストR={a,b,d,o,Y}を作成し、各文字に対してシンボル0、1、2、3および4を与える。次に、入力文字系列(例えば{Ydbbaaaadoo})を1文字ずつ調べ、対応するリストのシンボルを出力し、その文字をリストの先頭へ移動する作業を、入力系列全ての文字を出力するまで繰り返し、最終的に、出力系列{4,3,3,0,3,0,0,0,2,4,0}が得られる。
画像データ読み込み部201は、メインメモリ130の画像データ領域130Bから画像データを読み込み、MTF符号化処理部210に転送する。MTF符号化処理部210は、この例では32個のデータを格納する辞書を持ち、画像データ読み込み部201から読み込んだデータを、MTF処理により辞書のデータと比較し、一致した場合、一致したインデクス値をハフマン符号化処理部211に転送し、一致しなかった場合は、読み込んだデータをESC(エスケープ)データとして、ハフマン符号化処理部に211に転送する。
ハフマン符号化処理部211は、MTF符号化処理部210から転送されたインデクス値またはESCデータに対してハフマン符号化処理を行い、符号書き込み部204に転送する。符号書き込み部204は、ハフマン符号化処理部211から転送された符号データを外部に転送する。転送された符号データは、メインメモリ130のページ符号データ領域130Cに格納される。
図13は、復号処理部306の一例の構成を示す。符号読み込み部305は、メインメモリ130のページ符号データ領域130Cから符号データを読み込み、ハフマン復号処理部310に転送する。ハフマン復号処理部310は、符号読み込み部から転送された符号データのハフマン符号を復号し、MTF復号化処理部311に転送する。
MTF復号化処理部311は、この例では32個のデータを格納する辞書を持ち、ハフマン復号処理部310から転送された符号データがインデクス値である場合は、復号されたインデクス値により辞書を読み込み、MTF処理により画像データを求め、画像データ書き込み部312に転送する。また、ハフマン復号処理部310から転送された符号データがESCデータの場合は、直接的に画像データ書き込み部312に転送する。画像データ書き込み部312は、MTF復号化処理部311から転送された画像データを外部に転送する。転送された画像データは、メインメモリ130の画像データ領域130Bに格納される。
<符号化処理>
次に、本第1の実施形態による符号化処理について、より詳細に説明する。図14は、符号化する画像データの例を示す。このように、ライン単位の画像データを符号化する。図15は、図14の画像データが符号化された符号データの一例を示す。このように、ライン単位に符号化され、先頭にラインマーカが配置され、続けてライン符号データが配置され、終端にライン終端符号が配置される。
本第1の実施形態に適用可能な符号フォーマットについて、図9を用いて説明する。図9(c)は、ラインの先頭を識別するための識別符号であるラインマーカを示す。ラインマーカは符号長が20ビットで、2進数の値「1」が20個連なってなる。図9(c)では、16進表記としている。ラインマーカのビット配列は、他の符号をどのように組み合わせても発生しないパターンが選択される。こうすることで、符号を先頭から復号しなくても、符号の中からラインマーカを容易に検出可能である。
そして、図16に示すライン符号データの例のように、ラインマーカの検出と、ライン単位の符号データの復号を容易にするために、ライン単位の符号をワード単位で切り分けている。
図9(a)は、インデクス符号を示す。32個の符号にそれぞれインデクスが対応付けられており、小さい値の符号ほど確率が高いため、短い符号長が割り当てられる。図9(b)はESCデータのヘッダであるESCヘッダを示す。ESCデータは、データ値が辞書に無い場合の生データであり、この例では16ビット単位に符号化するために16ビットのデータとなっている。
図9(d)は、ライン終端符号を示す。ライン終端符号は、各ライン符号データの終端を示す符号であり、図16に例示したライン符号データのように、ライン毎にワード単位で切り分けたライン符号データの終端を判定するために用いる。
図17は、符号化処理の一例を示すフローチャートである。ステップS10で、ラインカウンタのカウント値IYと符号カウンタのカウント値をクリアする。ステップS11で、ライン単位に符号化を行う。次のステップS12で処理したラインのカウント値IYをカウントアップし、次のステップS13でカウント値IYが画像の高さで処理したか否かを判定し、処理したと判定された場合、処理を終了する。処理が終了していないと判定された場合は、処理がステップS11に戻される。
図18は、図17のステップS11におけるライン単位の符号化処理の一例のフローチャートを示す。ステップS20で、符号バッファ=0すなわち空に初期化され、ポインタ値=64ビットにそれぞれ初期化する。次のステップS21でラインマーカを符号化する。すなわち、値「0xFFFFF(16進表記)」をラインマーカの符号データとし、符号サイズを20ビットとする。ステップS22で、ラインマーカの符号データが出力される。
次のステップS23で、画像データを16ビット単位に読み込み、次のステップS24で、読み込んだ画像データと一致する辞書の値を探索する。図19に例を示す。この例では、画像データの値が「0x5555」とされ、辞書から値「0x5555」を探索する。その結果、14番目の辞書データと一致することが確認され、インデックス値を「14」としている。入力データと一致する辞書の値が存在する場合、フラグHITFLG=1とする。一致する値が存在しない場合は、フラグHITFLG=0とされる。
次のステップS25で、入力データと一致する辞書の値が存在するか否かが判定され、一致する値が存在する場合(フラグHITFLG=1)、処理がステップS26に移行されてインデクス値を符号化し、次のステップS27で辞書を更新する。図20は、辞書更新の例を示す。この例では、入力データが14番目の辞書データと一致したので、辞書の1番目〜14番目のデータを1つずつ後方にずらし、一致した入力データを0番目の辞書に格納する。
一方、ステップS25で入力データと一致する辞書の値が存在しないと判定されたら、処理はステップS28に移行され、ESC符号化処理を行なう。そして、ステップS29で画像データを読み込まれたデータとし、次のステップS30でESC辞書の更新処理が行われる。
ステップS27またはステップS30の辞書更新処理が終了すると、処理がステップS31に移行され、1ライン分を処理したか否かが判定される。若し、未だ1ライン分を処理していないと判定された場合は、処理はステップS23に戻される。
一方、1ライン分の処理が終了したと判定された場合、処理はステップS32に移行される。ステップS32では、ライン終端符号の符号化が行われる。すなわち、値「0xF7」をライン終端符号の符号データとし、符号サイズを8ビットとする。次にステップS33で、ライン終端符号が出力される。
次のステップS34で、符号バッファが空か否かが判定され、空であれば図18のフローチャートによる一連の符号化処理が終了される。空でないと判定されたら、処理はステップS35に移行され、符号バッファ内のデータが32ビットだけ右シフトされて出力符号バッファに格納され、次のステップS36で、出力符号バッファのデータが出力される。そして、次のステップS37で符号カウンタのカウント値が1だけカウントアップされ、図18のフローチャートによる一連の処理が終了される。
図21は、図18のステップS24における辞書探索処理の一例のフローチャートを示す。ステップS40でインデクス値I=0とされ、次のステップS41でI番目の辞書データが読み込まれた画像データと一致するか否かが判定され、一致しない場合、ステップS42でインデクス値Iが1だけカウントアップされ、次のステップS43でインデクス値I<32であれば処理がステップS41に戻される。インデクス値I≧32であれば、処理がステップS46に移行されてフラグHITFLG=0とされる。一方、ステップS41で一致すると判定されたら、処理がステップS44に移行され、一致したインデクス値Iを値DICTNUMとし、次のステップS45でフラグHITFLG=1とする。
図22は、図18のステップS27における辞書更新処理の一例のフローチャートを示す。ステップS50でインデクス値I=1とされ、次のステップS51で(I−1)番目の辞書データをI番目の辞書データとし、次のステップS52でインデクス値Iが1だけカウントアップされ、次のステップS53でインデクス値I<値DICTNUMか否かが判定される。インデクス値I<値DICTNUMであれば、処理がステップS51に戻される。一方、インデクス値I≧値DICTNUMであれば、処理がステップS54に移行され、DICTNUM番目の辞書データが0番目の辞書データとされる。
図23は、図18のステップS30におけるESC辞書更新処理の一例のフローチャートを示す。ステップS60でインデクス値I=1とされ、次のステップS61で(I−1)番目の辞書データをI番目の辞書データとし、次のステップS62でインデクス値Iが1だけカウントアップされ、次のステップS63でインデクス値I<32か否かが判定される。インデクス値I<32であれば、処理がステップS61に戻される。一方、インデクス値I≧32であれば、処理がステップS64に移行され、画像データが0番目の辞書データとされる。
図24は、図18のステップS26におけるインデクス符号化処理の一例のフローチャートを示す。ステップS70で、図9に示した符号フォーマットに基づき、図25に例示されるインデクス符号とインデクス符号サイズと対応付けたインデクス符号テーブルにより、インデックス値の符号値と符号長を求める。すなわち、インデクス符号テーブルより、インデクス符号[DICTNUM]を符号データとし、符号サイズをインデクス符号サイズ[DICTNUM]とする。これら符号データおよび符号サイズを、ステップS71の符号出力処理で可変長符号化する。
図26は、図18のステップS28におけるESC符号化処理の一例のフローチャートを示す。ステップS75でESCヘッダの値「0」を符号データとし、符号サイズを3ビットとして、次のステップS76の符号出力処理で符号データおよび符号サイズを可変長符号化する。次のステップS77で読み込まれた画像データを符号データとし、符号サイズを16ビットとして、次のステップS78の符号出力処理で符号データおよび符号サイズを可変長符号化する。
図27は、上述のステップS71、ステップS76およびステップS78における符号出力処理の一例のフローチャートを示す。符号出力処理は、符号サイズの長さの可変長の符号データをワードサイズ(この例では32ビット)に纏めて出力する。符号バッファは64ビットであり、符号サイズの長さの可変長の符号データ順次付加していく。符号ポインタは、符号バッファの中の有効な符号の終端を示す。
ステップS80で、符号ポインタから符号サイズを減じた値が新たな符号ポインタとする。すなわち、符号バッファに符号データを付加するために、符号サイズ分、符号ポインタを更新している。次のステップS81で、符号データを符号ポインタで移動させて位置を合わせて、符号バッファに付加する。次のステップS82で、符号ポインタ≦32であるか否かを判定し、符号ポインタ>32であれば、符号出力処理を終了する。
一方、符号ポインタ≦32であれば、ステップS83〜ステップS87で、符号バッファの上位32ビットが出力される。すなわち、ステップS83で符号バッファが32ビット右シフトされて出力符号バッファとされ、次のステップS84で出力符号バッファが出力される。次のステップS85で、符号ポインタに32が加算され、次のステップS86で符号バッファが32ビット左シフトされる。そして、次のステップS87で、符号カウンタが1だけカウントアップされ、図27のフローチャートによる一連の符号出力処理が終了される。
<復号処理>
次に、本第1の実施形態による復号処理について説明する。図28は、復号処理の一例のフローチャートを示す。印字モードとして両面印字が指定されているものとする。ステップS100で、処理枚数を示すカウンタのカウント値Pが0に初期化されると共に、用紙の表面および裏面を示すフラグSFLAGが0に初期化される。なお、フラグSFLAGは、値が0で表面、1で裏面をそれぞれ示す。
次のステップS101で、フラグSFLAGの値に基づき、これから行う印字が裏面の印字であるか否かが判定される。若しフラグSFLAG=1であり裏面の印字であると判定されたら、処理はステップS102に移行され、180度回転復号処理を行なう。そして、次のステップS103でフラグSFLAG=0として処理をステップS106に移行させる。
一方、ステップS101で、フラグSFLAG=0であり表面の印字であると判定されたら、処理はステップS104に移行され、0度回転復号処理を行なう。そして、次のステップS105でフラグSFLAG=1として処理をステップS106に移行させる。
ステップS106では、カウント値Pが1だけカウントアップされ、次のステップS107で全枚数の処理が終了したか否かが判定される。若し、終了していないと判定されたら、処理がステップS101に戻される。一方、終了していると判定されたら、図28のフローチャートによる一連の復号処理が終了される。
図29は、図28ステップS102における180度回転復号処理の一例のフローチャートを示す。ステップS110でラインカウンタのカウント値IYが0とされ、次のステップS111でライン符号データの先頭アドレスとライン符号データのワード数とが加算されて符号終端アドレスとされて、処理がステップS112に移行される。
ステップS112で、ラインメモリカウンタのカウント値LMが0とされる。このラインメモリカウンタのカウント値LMは、図10における符号ラインメモリ304における、ワード単位での読み出し順番を示す。このステップS112からステップS116までの処理で、図10を用いて説明したようにライン符号データの終端アドレスから順次ライン符号データを読み込み、符号ラインメモリ304に1ライン分のライン符号データを読み込む。すなわち、ステップS113で終端符号アドレスの1ワードの符号データを読み込み、読み込んだ符号データを、次のステップS114で、符号ラインメモリ304のラインメモリカウンタのカウント値が示す位置に書き込む。次のステップS115で終端符号アドレスから1を減じた値が新たな終端符号アドレスとされる。
そして、ステップS116で、ラインマーカを認識したか否かが判定される。これにより、ラインの先頭が認識される。すなわち、符号データの上位20ビットの値が「0xFFFFF」であるか否かが判定される。若し、ラインマーカではないと判定されたら、処理はステップS117に移行され、ラインメモリカウンタのカウント値LMが1だけカウントアップされ、処理がステップS113に戻される。
一方、ステップS116で、ラインマーカが認識されたと判定されたら、処理はステップS118に移行され、180度回転のライン復号処理がなされ、さらに次のステップS119でラインメモリ反転出力処理が行われる。
そして、次のステップS120でラインカウンタのカウント値IYが1だけカウントアップされ、次の処理ステップS121でカウント値IYが画像の高さ未満であるか否かが判定される。カウント値IYが画像の高さ未満であると判定されたら、処理はステップS112に戻される。一方、カウント値IYが画像の高さに達したと判定されたら、図29のフローチャートによる一連の処理が終了される。
図30は、図29のステップS118における180度回転ライン復号処理の一例のフローチャートを示す。ステップS130で、符号バッファ=0(ビット)すなわち空に初期化され、符号ポインタ=64(ビット)に初期化される。符号バッファは、可変長符号を一時的に記憶するバッファであり、符号ポインタは符号バッファの終端を示す。
次のステップS131で、180度回転符号入力処理が行われてライン符号データが入力されて符号バッファに記憶され、次のステップS132で符号バッファが20ビット左シフトされると共に、符号ポインタの値が20減ぜられる。これにより、符号バッファからラインマーカが取り除かれ、MSB(Most Significant Bit)にラインマーカの次の符号の先頭が来る。そして、符号ポインタにラインマーカの符号長分を加算することで、符号の終端を示すようにする。
次のステップS133で、180度回転符号入力処理が行われてライン符号データが入力され符号バッファに記憶され、次のステップS134で符号バッファが56ビット右シフトされて符号データが切り出される。これにより、符号の先頭の8ビットが符号データとして切り出される。
次のステップS135で、切り出された符号がライン終端符号か否か、すなわち、切り出された符号データの値が「0xF7」であるか否かが判定される。若し、切り出された符号がライン終端符号であると判定されたら、図30のフローチャートによる一連の処理が終了される。
一方、ライン終端符号ではないと判定されたら、処理はステップS136に移行され、符号バッファが61ビット右シフトされ、現在の符号の先頭の3ビットを符号データとして切り出す。次のステップS137で、切り出した符号データの値が「0」であるか否かが判定される。若し、「0」ではないと判定されたら、処理はステップS138に移行され、インデクス復号処理が行われる。一方、「0」であると判定されたら、処理はステップS139に移行され、ESC復号処理が行われる。ステップS138またはステップS139の処理が終了したら、処理がステップS133に戻される。
図31は、図30のステップS131およびステップS133における180度回転符号入力処理の一例のフローチャートを示す。この180度回転符号入力処理は、符号バッファの有効符号位置が32ビットより大きくなった場合は、符号ラインメモリから1ワード(32ビット)の符号データを読み込み、符号バッファに付加する。
ステップS140で、符号ポインタが示す符号バッファの有効符号位置が32ビット以上であるか否かが判定される。若し、32ビット未満であると判定されたら、図31のフローチャートによる一連の処理が終了される。
一方、32ビット以上であると判定されたら、処理はステップS141に移行され、符号ラインメモリ304からラインメモリカウンタのカウント値LMで示される位置の1ワードの符号が読み出され、入力符号バッファに記憶される。次のステップS142で、カウント値LMから1が減ぜられて処理がステップS143に移行され、符号ポインタ値から32ビットが減ぜられて符号ポインタが更新される。そして、次のステップS144で、読み込んだ符号データを符号ポインタが示す位置に合わせ、符号バッファに追加する。
図32は、図30のステップS139におけるESC復号処理の一例のフローチャートを示す。ステップS150で、符号バッファが3ビット左シフトされると共に、符号ポインタの値が3だけ減ぜられてESCヘッダが取り除かれる。そして、次のステップS151で図31で説明した180度回転符号入力処理が行われ、次のステップS152で符号バッファが48ビット右シフトされて符号データが切り出され、切り出された符号データが画像データとされる。
次のステップS153で、符号バッファが16ビット左シフトされると共に、符号ポインタの値から16ビットが減ぜられて符号ポインタが更新される。そして、次のステップS154でESC辞書の更新処理が行われる。
ESC辞書が更新されると、処理はステップS155に移行され、画像ラインメモリ307のラインメモリ画素カウンタのカウント値LMPが示す位置に画像データを書き込み、次のステップS156でラインメモリ画素カウンタが1だけカウントアップされて、図32のフローチャートによる一連の処理が終了される。なお、ラインメモリ画素カウンタは、ラインメモリにおいて画素単位のカウントを行う。この例では、1画素のデータ長が16ビットであるので、ラインメモリ画素カウンタは、カウント値LMPを16ビット毎に計数することになる。
図33は、図30のステップS138におけるインデクス復号処理の一例のフローチャートを示す。ステップS160で、符号バッファが56ビット右シフトされる。これにより、符号データから8ビットが切り出されてアドレス値とされる。次のステップS161で、図34に例示されるインデクス逆符号とインデクス逆符号サイズと対応付けたインデクス逆符号テーブルをアドレス値で参照することで、値DICTNUMを求めてインデクス値とすると共に、符号サイズを求める。
次のステップS162で、符号バッファが符号サイズだけ左シフトされると共に、符号ポインタの値から符号サイズが減じられた値で符号ポインタが更新される。そして、次のステップS163で、図35に例示されるようにしてインデクス値の値DICTNUMにより辞書をアクセスして画像データを求める。すなわち、DICTNUM番目の辞書の値を画像データとする。そして、ステップS164で辞書を更新する。
次のステップS165で、画像ラインメモリ307におけるラインメモリ画素カウンタのカウント値LMPが示す位置に画像データを書き込み、次のステップS166でカウント値LMPが1だけカウントアップされて、図32のフローチャートによる一連の処理が終了される。
図36は、図29のステップS119におけるラインメモリ反転出力処理の一例のフローチャートを示す。ステップS170でラインメモリ画素カウンタのカウント値LMPから1が減ぜられ、次のステップS171で、画像ラインメモリ307のカウント値LMPが示す位置の画像データを読み込み、データODATAとする。次のステップS172で、データODATAをエンジンコントローラ110に転送する。そして、次のステップS173でラインメモリ画素カウンタのカウント値LMPが0より大きいか否かが判定され、0より大きいと判定されたら処理がステップS170に戻される。ラインメモリ画素カウンタのカウント値LMPが0であると判定されたら、図36のフローチャートによる一連の処理が終了される。
図37は、図28のステップS104における0度回転復号処理の一例のフローチャートを示す。ステップS180でラインカウンタのカウント値IYが0とされると共に、ラインメモリカウンタのカウント値LMが0とされる。次のステップS181で符号始点アドレスの1ワードの符号データを読み込んで符号データとし、この符号データを次のステップS182で符号ラインメモリ304のラインメモリカウンタのカウント値LMが示す位置に書き込む。次のステップS183で、始点符号アドレスに対して1が加算され、さらに次のステップS184でラインメモリカウンタのカウント値LMに1が加算される。次のステップS185で符号終端アドレスの1ワードの符号を読み込み、符号データとする。
そして、ステップS186で、ラインマーカを認識したか否かが判定される。これにより、ラインの先頭が認識される。すなわち、符号データの上位20ビットの値が「0xFFFFF」であるか否かが判定される。若し、ラインマーカではないと判定されたら、処理がステップS182に戻される。
一方、ステップS186で、ラインマーカが認識されたと判定されたら、処理はステップS187に移行され、0度回転のライン復号処理がなされ、さらに次のステップS188でラインメモリ出力処理が行われる。
そして、次のステップS189でラインカウンタのカウント値IYが1だけカウントアップされ、次の処理ステップS190でカウント値IYが画像の高さ未満であるか否かが判定される。カウント値IYが画像の高さ未満であると判定されたら、処理はステップS181に戻される。一方、カウント値IYが画像の高さに達したと判定されたら、図37のフローチャートによる一連の処理が終了される。
図38は、図37のステップS187における0度回転ライン復号処理の一例のフローチャートを示す。ステップS200で、符号バッファ=0(ビット)すなわち空に初期化され、符号ポインタ=64(ビット)に初期化される。符号バッファは、可変長符号を一時的に記憶するバッファであり、符号ポインタは符号バッファの終端を示す。
次のステップS201で、0度回転符号入力処理が行われてライン符号データが入力されて符号バッファに記憶され、次のステップS202で符号バッファが20ビット左シフトされると共に、符号ポインタの値が20減ぜられる。これにより、符号バッファからラインマーカが取り除かれ、MSB(Most Significant Bit)にラインマーカの次の符号の先頭が来る。そして、符号ポインタにラインマーカの符号長分を加算することで、符号の終端を示すようにする。
次のステップS203で、0度回転符号入力処理が行われてライン符号データが入力され符号バッファに記憶され、次のステップS204で符号バッファが56ビット右シフトされて符号データが切り出される。これにより、符号の先頭の8ビットが符号データとして切り出される。
次のステップS205で、切り出された符号がライン終端符号か否か、すなわち、切り出された符号データの値が「0xF7」であるか否かが判定される。若し、切り出された符号がライン終端符号であると判定されたら、図38のフローチャートによる一連の処理が終了される。
一方、ライン終端符号ではないと判定されたら、処理はステップS206に移行され、符号バッファが61ビット右シフトされ、現在の符号の先頭の3ビットを符号データとして切り出す。次のステップS207で、切り出した符号データの値が「0」であるか否かが判定される。若し、「0」ではないと判定されたら、処理はステップS208に移行され、インデクス復号処理が行われる。一方、「0」であると判定されたら、処理はステップS209に移行され、ESC復号処理が行われる。ステップS208またはステップS209の処理が終了したら、処理がステップS203に戻される。
図39は、図38のステップS201およびステップS203における0度回転符号入力処理の一例のフローチャートを示す。この0度回転符号入力処理は、符号バッファの有効符号位置が32ビットより大きくなった場合は、符号ラインメモリから1ワード(32ビット)の符号データを読み込み、符号バッファに付加する。
ステップS210で、符号ポインタが示す符号バッファの有効符号位置が32ビット以上であるか否かが判定される。若し、32ビット未満であると判定されたら、図39のフローチャートによる一連の処理が終了される。
一方、32ビット以上であると判定されたら、処理はステップS211に移行され、符号ラインメモリ304からラインメモリカウンタのカウント値LMで示される位置の符号が読み出され、入力符号バッファに記憶される。次のステップS212で、ラインメモリカウンタのカウント値LMに1が加算されて処理がステップS213に移行され、符号ポインタ値から32ビットが減ぜられて符号ポインタが更新される。そして、次のステップS214で、読み込んだ符号データを符号ポインタが示す位置に合わせ、符号バッファに追加する。
図40は、図37のステップS188におけるラインメモリ出力処理の一例のフローチャートを示す。ステップS220で、ワークカウンタのカウント値WCが0とされる。このワークカウンタは、画素(16ビット)毎にカウント値WCを計数する。次のステップS221で、画像ラインメモリ307のワークカウンタのカウント値WCが示す位置の画像データを読み込み、データODATAとする。次のステップS222で、データODATAをエンジンコントローラ110に転送する。そして、次のステップS223でワークカウンタのカウント値WCに1が加算される。ステップS224でワークカウンタのカウント値WCがラインメモリ画素カウンタのカウント値LMP未満であるか否かが判定され、カウント値LMP未満であると判定されたら処理がステップS170に戻される。ワークカウンタのカウント値WCがラインメモリカウンタのカウント値LMP以上であると判定されたら、図40のフローチャートによる一連の処理が終了される。
以上説明したように、本第1の実施形態では、ライン符号データに対し、ラインマーカを先頭に配置し、ライン終端符号を終端に配置している。そのため、ライン符号データをラインメモリにワード単位で区切って格納した場合であっても、逆順からの読み出しが容易に行える。したがって、画像データを180度回転するための構成を別途に設ける必要が無く、画像データの180度回転時のバス113におけるデータ転送量を削減することができる。
<第2の実施形態>
次に、本発明の第2の実施形態について説明する。上述の第1の実施形態では、画像データの符号化をMTF符号化方式を用いて行った。これに対して、本第2の実施形態では、画像データの符号化をランレングス符号を用いて行う。なお、本第2の実施形態において、ハードウェア構成は上述の第1の実施形態と共通して適用可能なので、ここでの説明を省略する。
<符号フォーマット>
図41は、本第2の実施形態による符号フォーマットの例を示す。本第2の実施形態では、ライン符号データは、ライン符号ヘッダと、ライン符号ヘッダに続けて配置されるランレングス符号と、ランレングス符号に続けて配置されるライン終端符号とからなる。図41(a)は、ライン符号ヘッダの例を示す。ライン符号ヘッダは、ラインの先頭を識別するための識別符号であって、符号長が12ビットで、2進数の値「1」が12個連なってなる。ライン符号ヘッダのビット配列は、他の符号をどのように組み合わせても発生しないパターンが選択される。そのため、符号を先頭から復号しなくても、符号の中からライン符号ヘッダを容易に検出可能である。また、図41(c)に示すライン終端符号は、各ラインの符号の終端を示す。ここで、図8の復号部109の構成におけるラインマーカ認識部303をライン符号ヘッダを認識するライン符号ヘッダ認識部と読み替えるものとする。
本第2の実施形態でも、上述の第1の実施形態と同様に、図42に例示するライン符号データの例のように、ライン符号ヘッダの検出と、ライン単位の符号データの復号を容易にするために、ライン単位の符号をワード単位で切り分けている。
図41(b)は、ランレングス符号の例を示す。ランレングス符号は、値「0」または値「1」が連続するランレングス値を符号化する。ランレングス符号L0の反転符号は、ランレングスの「0」および「1」の状態を反転する。符号化を行う際に、先頭を値「0」から始めると好ましいため、値「1」から始まる画像データを符号化する場合は、この反転符号で値「1」から始まることを宣言してから、長さを表すランレングス符号L1およびL2で符号化する。ランレングス符号L1およびL2は、値「0」または値「1」のランレングスを表す。ランレングス符号L1は、1個から8個までの連続する値の数を示し、ランレングス符号L2は、9個から72個までの連続する値の数を示す。ランレングス符号L2の先頭の2ビットの値「10」は、ランレングス符号L2を識別するために用いる。
図43(a)〜図43(d)は、180度回転復号時の符号データと符号ラインメモリ304との関係を示し、図44(a)〜図44(d)は、0度回転復号時の符号データと符号ラインメモリ304との関係を示す。このように、本第2の実施形態における符号データと符号ラインメモリ304との関係は、上述の第1の実施形態における符号データと符号ラインメモリ304との関係に対し、ラインマーカをライン符号ヘッダに置き換えた以外は、共通である。
<符号化処理>
本第2の実施形態における符号化処理について説明する。上述の第1の実施形態で図17のフローチャートを用いて説明した処理と同様にして、ライン単位での処理が行われる。図45−1および図45−2は、図17のステップS11における、本第2の実施形態によるライン符号化処理の一例のフローチャートを示す。なお、図45−1および図45−2のフローチャートにおいて、符号「1」、「2」および「3」は、対応する符号に処理が移行することを示す。
ステップS230で、各変数などの初期化が行われ、フラグINITFLG=0、値OLD_bit=0、ランレングス=1、符号バッファ=0(空の状態)および符号ポインタ=64とされる。次のステップS231で、ライン符号ヘッダ「0xFFF」を符号データにし、符号サイズを12ビットとする。次のステップS232で、図27を用いて説明したようにして、ライン符号ヘッダの符号データを出力する。
次のステップS233で、画像データをワード単位で読み込む。そして、次のステップS234で、フラグINITFLG=0で、且つ、読み込んだワードデータ値のMSBが「1」であるか否かが判定される。若し、フラグINITFLG=0、または、読み込んだワードデータ値のMSBが「1」ではないと判定されたら、処理はステップS237に移行される。一方、フラグINITFLG=0、且つ、読み込んだワードデータ値のMSBが「1」であると判定されたら、処理はステップS235に移行される。
ステップS235では、反転符号「0xF8」を符号データとし、符号サイズが8ビットとされ、次のステップS236で、図27を用いて説明したようにして、符号データが出力される。
次のステップS237で、フラグINITFLG=1とされ、さらに次のステップS238で値X=0とされる。そして、次のステップS239で、ワードデータ値からXビット目のビット値を切り出す。次のステップS240で、ステップS239で切り出されたビット値が値OLD_bitと等しいか否かが判定される。若し、等しいと判定されたら、処理はステップS241に移行され、ランレングスが1だけ加算される。一方、切り出されたビット値が値OLD_bitと等しくないと判定されたら、処理はステップS242に移行され、ランレングス符号化処理が行われる。
ステップS241またはステップS242の処理が終了すると、処理がステップS243に移行され、S239で切り出されたビット値が値OLD_bitとされる。さらに、次のステップS244で、値Xに1が加算される。そして、次のステップS245で、値Xがワードビット数未満であるか否かが判定される。若し、値Xがワードビット数未満であると判定されたら、処理がステップS239に戻される。
一方、値Xがワードビット数以上であると判定されたら、処理はステップS246に移行され、1ライン分のワード数を処理したか否かが判定される。若し、未だ1ライン分のワード数を処理していないと判定されたら、処理はステップS233に戻され、画像データから次のワードが読み込まれる。
1ライン分のワード数を処理したと判定されたら、処理はステップS247に移行され、ライン終端符号「0xF0」を符号データとし、符号サイズを8ビットとして、次のステップS248で図27を用いて説明したようにして符号出力処理が行われる。
符号出力処理が終了すると、処理がステップS249に移行され、符号バッファが空か否かが判定される。若し、空であると判定されたら、この図45−1および図45−2のフローチャートによる一連の処理が終了される。一方、符号バッファが空ではないと判定されたら、処理はステップS250に移行され、符号バッファを32ビット右シフトさせて出力符号バッファとし、次のステップS251で出力符号バッファを出力する。そして、処理はステップS252に移行され、符号カウンタが1だけカウントアップされて図45−1および図45−2のフローチャートによる一連の処理が終了される。
図46は、図45−1および図45−2のステップS242におけるランレングス符号化処理の一例のフローチャートを示す。ステップS260で、ランレングスが8以下であるか否かが判定される。若し、8以下であると判定されたら、処理はステップS261に移行され、ランレングスから1が減ぜられ、次のステップS262で4ビットのランレングス値を符号データとし、符号サイズを4ビットとする。そして、次のステップS263で図27を用いて説明したようにして符号出力処理が行われる。そして、処理がステップS273に移行されてランレングスが1とされ、図46のフローチャートによる一連の処理が終了される。
一方、上述のステップS260でランレングスが8を超えると判定されたら、処理がステップS264に移行され。ランレングスが72以下であるか否かが判定される。若し、72以下であると判定されたら、処理がステップS265に移行され、ランレングスから9が減ぜられ、処理がステップS266に移行される。ステップS266では、2ビットの値「0b11」と、6ビットのランレングスとによる8ビットを符号データとし、符号サイズを8ビットとする。そして、処理がステップS267に移行され、図27を用いて説明したようにして符号出力処理が行われる。符号出力処理が終了すると、処理が上述のステップS273に移行される。
一方、上述のステップS264でランレングスが72を超えると判定されたら、処理がステップS268に移行される。ステップS268では、2ビットの値「0b10」と、10進数の値「72」のランレングスを示す6ビットの値「0b111111」とによる8ビットを符号データとし、符号サイズを8ビットとする。そして、処理がステップS269に移行され、図27を用いて説明したようにして符号出力処理が行われる。
符号化処理が終了すると、処理がステップS270に移行され、反転符号「0xFF00」を符号データとし、符号サイズを8ビットとする。すなわち、この反転符号により、ランレングスが継続していることを示す。そして、処理がステップS271に移行され、図27を用いて説明したようにして符号出力処理が行われる。符号出力処理が終了すると、処理がステップS272に移行され、ランレングスから72が減ぜられて処理がステップS260に戻される。
<復号処理>
次に、本第2の実施形態による復号処理について説明する。上述の第1の実施形態で図28のフローチャートを用いて説明した処理と同様にして、ライン単位での処理が行われる。そして、両面印字の場合に、ステップS101においてフラグSFLAG=1であり裏面印字であると判定されたら、ステップS102の180度回転復号処理が、図29と同様にして行われる。
図47は、図29のステップS118における、本第2の実施形態による180度回転ライン復号処理の例を示すフローチャートである。ステップS280で、各変数などの初期化が行われ、フラグCOLORFLG=0、符号バッファ=0および符号ポインタ=64とされると共に、ラインメモリ画素カウンタのカウント値LMP=0とされる。次のステップS281で、図31を用いて説明したようにして180度回転符号入力処理が行われ、次のステップS282で、符号バッファが12ビット左シフトされると共に、符号ポインタから12が減ぜられる。これにより、符号データからライン符号ヘッダが取り除かれる。
次のステップS283で、図31を用いて説明したようにして180度回転符号入力処理が行われ、次のステップS284で符号バッファが60ビット右シフトされて符号データが読み込まれる。これにより、次の符号の先頭の4ビットが符号データとして切り出される。符号データが切り出されると、処理がステップS285に移行され、符号データの値が8未満であるか否かが判定される。すなわち、このステップS285で、符号がランレングス符号L1であるか否かが判定される。
若し、8未満でありランレングス符号L1であると判定されたら、処理はステップS286に移行され、符号データの値に1が加算された値がランレングスとされる。そして、次のステップS287で、ランレングスの復号処理が行われる。
ステップS287でランレングスが復号されると、処理がステップS288に移行され、符号バッファが4ビット左シフトされると共に、符号ポインタから4が減ぜられる。そして、処理がステップS294に移行され、フラグCOLORFLG=0であるか否かが判定される。若し、フラグCOLORFLG=0であると判定されたら、ステップS295でフラグCOLORFLG=1とされ、処理がステップS283に戻される。一方、フラグCOLORFLG=0ではないと判定されたら、ステップS296でフラグCOLORFLG=0とされ、処理がステップS283に戻される。
上述のステップS285で、符号データの値が8以上であると判定されたら、処理はステップS289に移行され、符号データの値が15未満であるか否かが判定される。すなわち、このステップS289で、符号がランレングス符号L2であるか否かが判定される。若し、15未満であるとされ、ランレングス符号L2であると判定されたら、処理はステップS290に移行され、符号バッファが56ビット右シフトされて符号データが読み込まれ、次のステップS291で符号データの値から128が減ぜられた値が符号データとされる。そして、処理がステップS292のランレングス復号処理に移行される。
ステップS292でのランレングス復号処理が終了すると、処理はステップS293に移行され、符号バッファが8ビット左シフトされると共に、符号ポインタから8が減ぜられる。そして、処理が上述のステップS294に移行される。
上述のステップS289で、符号データの値が16以上であると判定されたら、処理はステップS297に移行され、符号バッファが56ビット右シフトされて符号データが読み込まれる。そして、次のステップS298で、符号データが値「0xF8」、すなわち反転符号であるか否かが判定される。若し、反転符号ではないと判定されたら、符号データがライン終端符号であると判断できるため、この図47のフローチャートによる一連の処理が終了される。
一方、符号が反転符号であると判定されたら、処理がステップS299に移行され、フラグCOLORFLG=0であるか否かが判定される。若し、フラグCOLORFLG=0であると判定されたら、ステップS300でフラグCOLORFLG=1とされ、フラグCOLORFLG=0ではないと判定されたら、ステップS301でフラグCOLORFLG=0とされる。
ステップS300またはステップS301の処理の後、処理がステップS302に移行され、符号バッファが8ビット左シフトされると共に、符号ポインタから8が減ぜられる。そして、処理がステップS283に戻される。
図48は、上述のステップS287およびステップS292のランレングス復号処理の一例のフローチャートを示す。ステップS310で、画像ラインメモリ307におけるラインメモリ画素カウンタのカウント値LMPが示す位置に、フラグCOLORFLGの値を書き込む。次のステップS311で、ラインメモリ画素カウンタのカウント値LMPに1が加算されると共に、ランレングスから1が減じられる。そして、次のステップS312でランレングスが0より大きいか否かが判定される。若し、0より大きいと判定されたら、処理がステップS310に戻される。一方、ランレングスが0であると判定されたら、図48のフローチャートによる一連の処理が終了される。このように、ランレングスの長さ分、現在のフラグCOLORFLGが示す値で画像ラインメモリ307にして描画していく。
図49は、図37のステップS187における、本第2の実施形態による0度回転ライン復号処理の例を示すフローチャートである。ステップS320で、各変数などの初期化が行われ、フラグCOLORFLG=0、符号バッファ=0および符号ポインタ=64とされると共に、ラインメモリカウンタのカウント値LM=0、ラインメモリ画素カウンタのカウント値LMP=0とされる。次のステップS321で、図39を用いて説明したようにして0度回転符号入力処理が行われ、次のステップS322で、符号バッファが12ビット左シフトされると共に、符号ポインタから12が減ぜられる。これにより、符号データからライン符号ヘッダが取り除かれる。
次のステップS323で、図39を用いて説明したようにして0度回転符号入力処理が行われ、次のステップS324で符号バッファが60ビット右シフトされて符号データが読み込まれる。これにより、次の符号の先頭の4ビットが符号データとして切り出される。符号データが切り出されると、処理がステップS325に移行され、符号データの値が8未満であるか否かが判定される。すなわち、このステップS325で、符号がランレングス符号L1であるか否かが判定される。
若し、8未満でありランレングス符号L1であると判定されたら、処理はステップS326に移行され、符号データの値に1が加算された値がランレングスとされる。そして、次のステップS327で、ランレングスの復号処理が行われる。
ステップS327でランレングスが復号されると、処理がステップS328に移行され、符号バッファが4ビット左シフトされると共に、符号ポインタから4が減ぜられる。そして、処理がステップS334に移行され、フラグCOLORFLG=0であるか否かが判定される。若し、フラグCOLORFLG=0であると判定されたら、ステップS335でフラグCOLORFLG=1とされ、処理がステップS323に戻される。一方、フラグCOLORFLG=0ではないと判定されたら、ステップS336でフラグCOLORFLG=0とされ、処理がステップS323に戻される。
上述のステップS325で、符号データの値が8以上であると判定されたら、処理はステップS329に移行され、符号データの値が15未満であるか否かが判定される。すなわち、このステップS329で、符号がランレングス符号L2であるか否かが判定される。若し、15未満であるとされ、ランレングス符号L2であると判定されたら、処理はステップS330に移行され、符号バッファが56ビット右シフトされて符号データが読み込まれ、次のステップS331で符号データの値から128が減ぜられた値が符号データとされる。そして、処理がステップS332のランレングス復号処理に移行される。
ステップS332でのランレングス復号処理が終了すると、処理はステップS333に移行され、符号バッファが8ビット左シフトされると共に、符号ポインタから8が減ぜられる。そして、処理が上述のステップS334に移行される。
上述のステップS329で、符号データの値が16以上であると判定されたら、処理はステップS337に移行され、符号バッファが56ビット右シフトされて符号データが読み込まれる。そして、次のステップS338で、符号データが値「0xF8」、すなわち反転符号であるか否かが判定される。若し、反転符号ではないと判定されたら、符号データがライン終端符号であると判断できるため、この図49のフローチャートによる一連の処理が終了される。
一方、符号が反転符号であると判定されたら、処理がステップS339に移行され、フラグCOLORFLG=0であるか否かが判定される。若し、フラグCOLORFLG=0であると判定されたら、ステップS340でフラグCOLORFLG=1とされ、フラグCOLORFLG=0ではないと判定されたら、ステップS341でフラグCOLORFLG=0とされる。
ステップS340またはステップS341の処理の後、処理がステップS342に移行され、符号バッファが8ビット左シフトされると共に、符号ポインタから8が減ぜられる。そして、処理がステップS323に戻される。
以上説明したように、本第2の実施形態では、ライン符号データに対し、ライン符号ヘッダを先頭に配置し、ライン終端符号を終端に配置している。そのため、ライン符号データをラインメモリにワード単位で区切って格納した場合であっても、逆順からの読み出しが容易に行える。したがって、画像データを180度回転するための構成を別途に設ける必要が無く、画像データの180度回転時のバス113におけるデータ転送量を削減することができる。また、ランレングス符号化を用いても、上述したMTF符号化方式を用いた場合と同様にして、符号化および復号処理が可能である。
100 CPU
102 メモリアービタ
107 バスI/F
108 符号化部
109 復号部
110 エンジンコントローラ
113 バス
130 メインメモリ
201 画像データ読み込み部
203 符号化処理部
204 符号書き込み部
210 MTF符号化処理部
211 ハフマン符号化処理部
303 ラインマーカ認識部
304 符号ラインメモリ
305 符号読み込み部
306 復号処理部
307 画像ラインメモリ
308 ライン反転読み込み部
310 ハフマン復号処理部
311 MTF復号化処理部
特開平8−317225号公報 特許第3437346号公報 特開2001−197496号公報 特開2007−214802号公報 特許第4131977号公報 特開2002−200792号公報 特許第2888186号公報

Claims (12)

  1. 画像データがライン単位で符号化された符号データの先頭に識別符号が配置された複数のライン符号データを、該画像データの先頭ライン側から終端ライン側に向けた順番で記憶する第1の記憶手段と、
    前記第1の記憶手段から前記ライン符号データを読み出す第1の読み出し手段と、
    前記第1の読み出し手段で読み出された前記ライン符号データから前記識別符号を認識し、該識別符号に基づき前記ライン符号データをライン単位で記憶する第2の記憶手段と、
    前記第2の記憶手段から前記ライン符号データを読み出す第2の読み出し手段と、
    前記第2の読み出し手段で読み出された前記ライン符号データを復号する復号手段と、
    前記復号手段で前記ライン符号データが復号された復号画像データをライン単位で記憶する第3の記憶手段と、
    前記第3の記憶手段に記憶された前記復号画像データをライン単位で読み出す第3の読み出し手段と
    を有し、
    前記画像データを180度回転させて出力する場合に、
    前記第1の読み出し手段は、
    前記第1の記憶手段から、前記ライン符号データを、前記終端ライン側から前記先頭ライン側に向けて読み出すと共に、各ラインを終端側から先頭側に向けて読み出し、
    前記第2の読み出し手段は、
    前記第2の記憶手段から、前記ライン符号データを、該ライン符号データに含まれる前記識別符号の位置から該ライン符号データによるラインの終端側に向けて読み出し、
    前記第3の読み出し手段は、
    前記第3の記憶手段から、前記復号画像データを、画素単位でラインの終端側から先頭側に向けて読み出す
    ことを特徴とする画像処理装置。
  2. 前記識別符号は、前記符号データに用いられない符号の組み合わせからなる
    ことを特徴とする請求項1に記載の画像処理装置。
  3. 前記第2の記憶手段は、前記ライン符号データを前記ラインよりデータ長が短い所定単位毎に区切って記憶する
    ことを特徴とする請求項1または請求項2に記載の画像処理装置。
  4. 前記第2の記憶手段は、前記識別符号を前記所定単位の先頭に配置するように前記ライン符号データを記憶する
    ことを特徴とする請求項3に記載の画像処理装置。
  5. 前記ライン符号データは、前記符号データの終端に他の識別符号が配置される
    ことを特徴とする請求項1乃至請求項4の何れか1項に記載の画像処理装置。
  6. 前記符号データは、前記画像データのうち該符号データが含むラインの情報のみを用いて符号化された
    ことを特徴とする請求項1乃至請求項5の何れか1項に記載の画像処理装置。
  7. 前記符号データは、可変長符号化を用いて符号化された
    ことを特徴とする請求項1乃至請求項6の何れか1項に記載の画像処理装置。
  8. 前記符号データは、動的な辞書を用いて符号化された
    ことを特徴とする請求項7に記載の画像処理装置。
  9. 前記符号データは、ランレングス符号化方式を用いて符号化された
    ことを特徴とする請求項8に記載の画像処理装置。
  10. 前記画像データを0度回転させて出力する場合に、
    前記第1の読み出し手段は、
    前記第1の記憶手段から、前記ライン符号データを、前記先頭ライン側から前記終端ライン側に向けて読み出すと共に、各ラインを先頭側から終端側に向けて読み出し、
    前記第2の読み出し手段は、
    前記第2の記憶手段から、前記ライン符号データを、該ライン符号データに含まれる前記識別符号の位置から該ライン符号データによるラインの終端側に向けて読み出し、
    前記第3の読み出し手段は、
    前記第3の記憶手段から、前記復号画像データを、画素単位でラインの先頭側から終端側に向けて読み出し、
    前記第1の読み出し手段、前記第2の読み出し手段および前記第3の読み出し手段は、
    前記画像データ毎に、前記0度回転時の読み出し処理と前記180度回転時の読み出し処理とを切り替える
    ことを特徴とする請求項1乃至請求項9の何れか1項に記載の画像処理装置。
  11. 第1の読み出し手段が、画像データがライン単位で符号化された符号データの先頭に識別符号が配置された複数のライン符号データを、該画像データの先頭ライン側から終端ライン側に向けた順番で記憶する第1の記憶手段から前記ライン符号データを読み出す第1の読み出しステップと、
    第2の記憶手段が、前記第1の読み出し手段で読み出された前記ライン符号データから前記識別符号を認識し、該識別符号に基づき前記ライン符号データをライン単位で記憶する第2の記憶ステップと、
    第2の読み出し手段が、前記第2の記憶手段から前記ライン符号データを読み出す第2の読み出しステップと、
    復号手段が、前記第2の読み出しステップで読み出された前記ライン符号データを復号する復号ステップと、
    第3の記憶手段が、前記復号ステップで前記ライン符号データが復号された復号画像データをライン単位で記憶する第3の記憶ステップと、
    第3の読み出し手段が、前記第3の記憶手段に記憶された前記復号画像データをライン単位で読み出す第3の読み出しステップと
    を有し、
    前記画像データを180度回転させて出力する場合に、
    前記第1の読み出しステップは、
    前記第1の記憶手段から、前記ライン符号データを、前記終端ライン側から前記先頭ライン側に向けて読み出すと共に、各ラインを終端側から先頭側に向けて読み出し、
    前記第2の読み出しステップは、
    前記第2の記憶手段から、前記ライン符号データを、該ライン符号データに含まれる前記識別符号の位置から該ライン符号データによるラインの終端側に向けて読み出し、
    前記第3の読み出しステップは、
    前記第3の記憶手段から、前記復号画像データを、画素単位でラインの終端側から先頭側に向けて読み出す
    ことを特徴とする画像処理方法。
  12. 用紙の表面および裏面にそれぞれ印字可能な印字手段と、
    請求項10に記載の画像処理装置と
    を有し、
    前記第1の読み出し手段、前記第2の読み出し手段および前記第3の読み出し手段は、
    前記印字手段が前記用紙の表面に印字する際には前記0度回転時の読み出し処理を行い、該用紙の裏面に印字する際には前記180度回転時の読み出し処理を行う
    ことを特徴とする画像形成装置。
JP2010063353A 2010-03-18 2010-03-18 画像処理装置および画像処理方法、ならびに、画像形成装置 Expired - Fee Related JP5509957B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010063353A JP5509957B2 (ja) 2010-03-18 2010-03-18 画像処理装置および画像処理方法、ならびに、画像形成装置
US13/043,750 US8817346B2 (en) 2010-03-18 2011-03-09 Image processing apparatus, image processing method, and image forming apparatus for reading code data rotated at 180 degrees

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010063353A JP5509957B2 (ja) 2010-03-18 2010-03-18 画像処理装置および画像処理方法、ならびに、画像形成装置

Publications (2)

Publication Number Publication Date
JP2011199532A JP2011199532A (ja) 2011-10-06
JP5509957B2 true JP5509957B2 (ja) 2014-06-04

Family

ID=44647029

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010063353A Expired - Fee Related JP5509957B2 (ja) 2010-03-18 2010-03-18 画像処理装置および画像処理方法、ならびに、画像形成装置

Country Status (2)

Country Link
US (1) US8817346B2 (ja)
JP (1) JP5509957B2 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012129778A (ja) 2010-12-15 2012-07-05 Ricoh Co Ltd 画像処理装置および画像処理方法
JP5768524B2 (ja) 2011-06-20 2015-08-26 株式会社リコー 画像処理装置、画像処理方法およびプログラム
US10534606B2 (en) * 2011-12-08 2020-01-14 Oracle International Corporation Run-length encoding decompression
JP5862267B2 (ja) 2011-12-14 2016-02-16 株式会社リコー 画像処理装置および画像処理方法、ならびに、画像形成装置
JP6003059B2 (ja) * 2012-01-05 2016-10-05 株式会社リコー 画像処理装置および画像処理方法、ならびに、画像形成装置
JP6044292B2 (ja) 2012-11-16 2016-12-14 株式会社リコー データ処理装置、データ処理方法
US11113054B2 (en) 2013-09-10 2021-09-07 Oracle International Corporation Efficient hardware instructions for single instruction multiple data processors: fast fixed-length value compression
US9430390B2 (en) 2013-09-21 2016-08-30 Oracle International Corporation Core in-memory space and object management architecture in a traditional RDBMS supporting DW and OLTP applications
US10402425B2 (en) 2016-03-18 2019-09-03 Oracle International Corporation Tuple encoding aware direct memory access engine for scratchpad enabled multi-core processors
US10599488B2 (en) 2016-06-29 2020-03-24 Oracle International Corporation Multi-purpose events for notification and sequence control in multi-core processor systems
US10380058B2 (en) 2016-09-06 2019-08-13 Oracle International Corporation Processor core to coprocessor interface with FIFO semantics
US10783102B2 (en) 2016-10-11 2020-09-22 Oracle International Corporation Dynamically configurable high performance database-aware hash engine
US10459859B2 (en) 2016-11-28 2019-10-29 Oracle International Corporation Multicast copy ring for database direct memory access filtering engine
US10725947B2 (en) 2016-11-29 2020-07-28 Oracle International Corporation Bit vector gather row count calculation and handling in direct memory access engine
JP6946671B2 (ja) 2017-03-03 2021-10-06 株式会社リコー 画像処理装置及び画像処理方法
JP7040058B2 (ja) 2018-01-31 2022-03-23 株式会社リコー 符号化装置
JP2021175049A (ja) 2020-04-22 2021-11-01 株式会社リコー 情報処理装置、情報処理方法、及びプログラム

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6019360A (ja) * 1983-07-12 1985-01-31 Nec Corp フアクシミリの復号化回路
US4682215A (en) * 1984-05-28 1987-07-21 Ricoh Company, Ltd. Coding system for image processing apparatus
US5113494A (en) * 1987-02-27 1992-05-12 Eastman Kodak Company High speed raster image processor particularly suited for use in an image management system
JP2922575B2 (ja) 1990-04-13 1999-07-26 三菱電機株式会社 整流装置の直流電流制御装置
JPH04131977A (ja) 1990-09-25 1992-05-06 Hitachi Ltd 半導体集積回路装置
JPH08317225A (ja) 1995-05-18 1996-11-29 Fuji Xerox Co Ltd 画像データ圧縮・伸張装置
JPH099040A (ja) * 1995-06-21 1997-01-10 Minolta Co Ltd 画像処理装置
JP3148103B2 (ja) * 1995-06-30 2001-03-19 株式会社東芝 画像形成装置
JP3437346B2 (ja) 1995-09-06 2003-08-18 キヤノン株式会社 画像符号化・復号化装置
JP3674644B2 (ja) * 1996-02-09 2005-07-20 富士ゼロックス株式会社 印字用データ発生装置
JP2888186B2 (ja) 1996-02-19 1999-05-10 富士ゼロックス株式会社 画像符号化装置および画像復号装置
JP4131977B2 (ja) 1996-09-06 2008-08-13 株式会社東芝 可変長復号化装置
US6195151B1 (en) * 1999-09-28 2001-02-27 Hewlett-Packard Company Media handling system for duplex printing
JP2001197496A (ja) 2000-01-12 2001-07-19 Ricoh Co Ltd 画像符号化装置、画像符号化・復号化装置、画像符号化・復号化方法、およびコンピュータが実行可能なプログラムを記録した記録媒体
JP2002142118A (ja) 2000-10-31 2002-05-17 Ricoh Co Ltd 符号化装置、復号化装置、画像形成装置、符号化方法および復号化方法
JP2002200792A (ja) 2001-01-04 2002-07-16 Hitachi Ltd 両面印字装置
JP3857534B2 (ja) 2001-03-21 2006-12-13 株式会社リコー 画像圧縮処理装置
JP3865203B2 (ja) 2001-04-24 2007-01-10 株式会社リコー 画像圧縮装置、画像形成装置、画像圧縮方法及び記録媒体
JP4000266B2 (ja) 2002-03-08 2007-10-31 株式会社リコー データ符号化装置、データ符号化方法、及びそのプログラム
JP2005208575A (ja) 2003-12-26 2005-08-04 Ricoh Co Ltd 画像処理装置、画像処理方法、およびその方法をコンピュータで実行するプログラム
JP2006123505A (ja) 2004-09-29 2006-05-18 Ricoh Co Ltd 画像形成装置、画像形成方法および画像形成システム
JP4773223B2 (ja) * 2006-02-08 2011-09-14 株式会社リコー 画像処理装置、画像処理方法、コンピュータ読み取り可能な記録媒体
JP5081539B2 (ja) 2007-08-31 2012-11-28 株式会社リコー 画像データ符号化装置、画像データ符号化方法、画像形成装置、画像形成方法、画像データ復号化装置、及び画像データ復号化方法
JP4950007B2 (ja) 2007-11-17 2012-06-13 株式会社リコー 画像処理装置及びこれを備えた画像形成装置、並びに、画像処理方法
JP5540672B2 (ja) * 2009-03-05 2014-07-02 株式会社リコー 復号装置、復号装置の制御方法及び画像形成装置

Also Published As

Publication number Publication date
US8817346B2 (en) 2014-08-26
JP2011199532A (ja) 2011-10-06
US20110228325A1 (en) 2011-09-22

Similar Documents

Publication Publication Date Title
JP5509957B2 (ja) 画像処理装置および画像処理方法、ならびに、画像形成装置
JP5081539B2 (ja) 画像データ符号化装置、画像データ符号化方法、画像形成装置、画像形成方法、画像データ復号化装置、及び画像データ復号化方法
JP4950007B2 (ja) 画像処理装置及びこれを備えた画像形成装置、並びに、画像処理方法
US7359557B2 (en) Method of and apparatus for encoding, method of and apparatus for decoding, and image forming apparatus
US7233702B2 (en) Image data compression apparatus for compressing both binary image data and multiple value image data
US6944682B2 (en) System and method for directly indicating to first direct memory controller (DMA) in halt state to resume DMA transfer via resume instruction from second DMA controller
JP2007201532A (ja) データ格納制御装置、データ復元制御装置、画像形成装置、データ格納制御方法、データ復元制御方法
JP2002320093A (ja) 画像圧縮装置、画像伸長装置、画像形成装置、画像圧縮方法、画像伸長方法及び記録媒体
JPH1141429A (ja) 圧縮・伸張処理装置
US8712174B2 (en) Image processing apparatus and image processing method
JP5740991B2 (ja) 画像処理装置および画像処理方法
JP2011019096A (ja) 画像処理装置および画像処理方法
JP3679586B2 (ja) 符号化及び復号装置とその符号化及び復号方法
JP5201040B2 (ja) 画像処理装置、画像処理方法およびプログラム
JP3311322B2 (ja) カラー画像処理装置
JP2008290362A (ja) 印刷制御装置と画像形成システム
JP2010219777A (ja) 画像処理装置、画像処理方法およびプログラム
JP4056338B2 (ja) 画像データの圧縮装置及び方法
JP3043446B2 (ja) カラー画像処理装置
JP2008048302A (ja) 画像圧縮装置、該方法及び該プログラム、記録装置及び該方法、画像解凍装置、該方法及び該プログラム、記録媒体並びに圧縮画像フォーマット
JPH10200757A (ja) 画像処理装置及びその方法及び画像処理システム
JP2006231854A (ja) 画像形成装置及びその制御方法
JPH1013641A (ja) 画像処理装置
JP2006197326A (ja) マルチファンクションプリンター
JP2009060316A (ja) 画像データ符号化装置、画像データ符号化方法、画像形成装置及び画像形成方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130206

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140225

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140310

R151 Written notification of patent or utility model registration

Ref document number: 5509957

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees