JP4635956B2 - データ圧縮装置及びプログラム - Google Patents

データ圧縮装置及びプログラム Download PDF

Info

Publication number
JP4635956B2
JP4635956B2 JP2006132939A JP2006132939A JP4635956B2 JP 4635956 B2 JP4635956 B2 JP 4635956B2 JP 2006132939 A JP2006132939 A JP 2006132939A JP 2006132939 A JP2006132939 A JP 2006132939A JP 4635956 B2 JP4635956 B2 JP 4635956B2
Authority
JP
Japan
Prior art keywords
pixel data
run length
data group
value
pixel
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
JP2006132939A
Other languages
English (en)
Other versions
JP2007306333A (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.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co Ltd
Fujifilm Business Innovation Corp
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 Fuji Xerox Co Ltd, Fujifilm Business Innovation Corp filed Critical Fuji Xerox Co Ltd
Priority to JP2006132939A priority Critical patent/JP4635956B2/ja
Publication of JP2007306333A publication Critical patent/JP2007306333A/ja
Application granted granted Critical
Publication of JP4635956B2 publication Critical patent/JP4635956B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Image Processing (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)

Description

本発明は、2値の画像データを圧縮する技術に関する。
文字や図形など中間調のない2値の白黒画像を符号化すると、各々の主走査ラインにおいて、白画素を表す画素データや黒画素を表す画素データがそれぞれ複数個連続することがある。このように連続する同一色の画素データ群をその連続画素数(ランレングス)で表現することでデータ圧縮を行うという手法が知られている。これは、一般に「ランレングス圧縮」と呼ばれている。
ところで、2値の画素データをメモリなどの記憶媒体に格納したり、その記憶媒体から読み出して伝送したりする場合には、所定のビット数の画素データ群が一組にパッキングされ、その一組を単位として格納処理や伝送処理がなされるようになっている。このときのビット数は、画素データが格納される記憶媒体の構成に依存し、例えば4bit、8bit、16bitなどである。
ここで、図16を用いて、画素データに対してランレングス圧縮を施すときの手順を説明する。この図16では、白画素を表す画素データの値を“0”、黒画素を表す画素データの値を“1”とする。また、これら画素データは4bit毎にパッキングされるものとする。従って、図示のように、メモリMには、4bit毎にパッキングされた画素データ群が格納されている。これらの画素データに対してランレングス圧縮を施すには、1つの主走査ライン分の画素データを全てアンパッキングしてバッファに展開する必要がある。なぜなら、パッキングされた状態では正確なランレングスを特定することができないからである。例えば画素データ群g1のデータ値は“0000”であるから、この画素データ群g1だけに着目すれば、ランレングスは「4」と判断されるが、実際にはこれら「0000」の後に続いて、画素データ群g2のデータ値“0111”のうちの“0”が連続しているから、正確なランレングスは「5」となるのである。
このため、図中の矢印rが指し示すように、画素データ群g1の下方から上方に向かって各画素データが順次読み出されてバッファに展開される。そして、画素データ群g1が全て読み出された後には、画素データ群g2、g3,g4・・・について上記の同様の順序で画素データが逐一読み出されてバッファに展開される。このようなアンパッキングを経て、1本の主走査ラインを構成する画素を表す画素データ群G“00000111000111111111000111000000・・・”がバッファに展開されることになる。そして、この画素データ群gにおいて白画素のランレングスと黒画素のランレングスとをそれぞれ特定することで圧縮データL“5,3,3,9,3,3・・・”を得ることができる。
このように、従来の技術では、ランレングス圧縮を施す前に、主走査ラインを構成する画素データ群g1,g2,g3,g4,・・・を全て読み出してバッファに展開するという処理が必須である。このため、画素データ群のパッキングを解除して(アンパッキングして)バッファに展開するための処理時間を要するとともに、そのためのバッファやアンパッキング回路を実装しなければならないという問題がある。そこで、この種の問題点を解消するため、例えば特許文献1では、画素データをパッキングしたままでランレングス圧縮を施すという技術が提案されている。
特許第3459704号公報
特許文献1に記載の技術では、パッキングを解除することなく画像データのランレングス圧縮を行うことで処理の高速化を図ることが可能となる。しかし、その一方で、画素データを2次元ブロック化してパッキングし、さらにそれを所定の濃度パタンに変換して符号化しなければならないため、回路構成や処理が複雑になってしまうという欠点がある。
本発明は上述した背景に鑑みてなされたものであり、その目的は、回路構成を複雑化せずに、2値の画素データをパッキングしたままランレングス圧縮を行い、その圧縮処理に要する時間を短縮することにある。
上記目的を達成するために、本発明は、2値で表された所定数の画素データを含む画素データ群を記憶手段から各々のデータ群単位で順番に読み出し、これら画素データ群に含まれる画素データを圧縮するデータ圧縮装置であって、各々の前記画素データ群において連続する同値の画素データを連続画素データとして抽出し、その連続数をランレングスとして算出するランレングス抽出手段と、前記ランレングス抽出手段によって算出されたランレングスを記憶するランレングス記憶手段と、各々の前記画素データ群において最後に読み出された画素データの値を記憶する隣接画素値記憶手段と、前記画素データ群から前記ランレングス抽出手段によって抽出された連続画素データの中に、当該画素データ群において最後に読み出された画素データが含まれているか否かを各々の画素データ群について判断する判断手段と、第1の画素データ群についての前記判断手段による判断結果が否定的な場合には、当該第1の画素データ群について前記ランレングス抽出手段により算出されて前記ランレングス記憶手段によって記憶されているランレングスを出力する一方、前記第1の画素データ群についての前記判断手段による判断結果が肯定的な場合には、前記ランレングス抽出手段によって算出されて前記ランレングス記憶手段によって記憶されているランレングスを出力せずに記憶させたままにしておく第1の制御手段と、前記第1の画素データ群の次に読み出された第2の画素データ群において最初に読み出された画素データの値が、前記隣接画素値記憶手段によって記憶されている値と一致する場合であって、当該第2の画素データ群についての前記判断手段による判断結果が否定的な場合には、前記ランレングス記憶手段によって記憶された前記第1の画素データ群におけるランレングスと、前記第2の画素データ群について前記ランレングス抽出手段により算出されたランレングスとを加算して出力し、前記第2の画素データ群において最初に読み出された画素データの値が、前記隣接画素値記憶手段によって記憶されている値と一致する場合であって、当該第2の画素データ群についての前記判断手段による判断結果が肯定的な場合には、前記ランレングス記憶手段によって記憶された前記第1の画素データ群におけるランレングスと、前記第2の画素データ群について前記ランレングス抽出手段により算出されたランレングスとの加算結果を前記ランレングス記憶手段に記憶させる第2の制御手段と、前記第2の画素データ群において最初に読み出された画素データの値が前記隣接画素値記憶手段によって記憶されている値と一致しない場合には、前記ランレングス記憶手段によって記憶された前記第1の画素データ群におけるランレングスを出力する第3の制御手段とを備えることを特徴とするデータ圧縮装置を提供する。
本発明の好ましい態様においては、前記記憶手段から読み出された各画素データ群に含まれる画素データのうち、読み出された順序が連続する複数の画素データを、それよりも少ない数の画素データに変換する変換手段を備え、前記ランレングス抽出手段、前記ランレングス記憶手段、前記隣接画素値記憶手段、前記第1の制御手段、前記第2の制御手段及び前記第3の制御手段は、前記変換手段による画素データが変換された画素データ群に対して処理を行うことを特徴としている。
本発明の好ましい態様においては、前記第1の制御手段、前記第2の制御手段及び前記第3の制御手段によって出力された複数のランレングスをそれぞれ異なる記憶領域に記憶するデータ記憶手段と、前記データ記憶手段によって記憶されているランレングスを読み出させる順番を表す制御信号を生成する生成手段と、前記生成手段によって生成された制御信号が表す順番で前記データ記憶手段に記憶されているランレングスを読み出して出力する出力制御手段とを備えることを特徴としている。
また、本発明は、2値で表された所定数の画素データを含む画素データ群を記憶手段から各々のデータ群単位で順番に読み出し、これら画素データ群に含まれる画素データを圧縮するデータ圧縮装置に、各々の前記画素データ群において連続する同値の画素データを連続画素データとして抽出し、その連続数をランレングスとして算出する機能と、算出されたランレングスをランレングス記憶手段に記憶させる機能と、各々の前記画素データ群において最後に読み出された画素データの値を隣接画素値記憶手段に記憶させる機能と、前記画素データ群から抽出された連続画素データの中に、当該画素データ群において最後に読み出された画素データが含まれているか否かを各々の画素データ群について判断する機能と、第1の画素データ群についての判断結果が否定的な場合には、当該第1の画素データ群について算出されて前記ランレングス記憶手段によって記憶されているランレングスを出力する一方、前記第1の画素データ群についての判断結果が肯定的な場合には、算出されて前記ランレングス記憶手段によって記憶されているランレングスを出力せずに記憶させたままにしておく機能と、前記第1の画素データ群の次に読み出された第2の画素データ群において最初に読み出された画素データの値が、前記隣接画素値記憶手段によって記憶されている値と一致する場合であって、当該第2の画素データ群についての判断結果が否定的な場合には、前記ランレングス記憶手段によって記憶された前記第1の画素データ群におけるランレングスと、前記第2の画素データ群について算出されたランレングスとを加算して出力し、前記第2の画素データ群において最初に読み出された画素データの値が、前記隣接画素値記憶手段によって記憶されている値と一致する場合であって、当該第2の画素データ群についての判断結果が肯定的な場合には、前記ランレングス記憶手段によって記憶された前記第1の画素データ群におけるランレングスと、前記第2の画素データ群について算出されたランレングスとの加算結果を前記ランレングス記憶手段に記憶させる機能と、前記第2の画素データ群において最初に読み出された画素データの値が前記隣接画素値記憶手段によって記憶されている値と一致しない場合には、前記ランレングス記憶手段によって記憶された前記第1の画素データ群におけるランレングスを出力する機能とを実現させるためのプログラムを提供する。
本発明によれば、2値で表された所定数の画素データを含む画素データ群を記憶手段から各々のデータ群単位で順番に読み出し同値の画素が連なっている数をランレングスとして算出する。そして、順番に読み出される画素データ群の前に読み出された画素データ群の値やランレングスとの関係から、同値の画素データが連続する連続画素データのランレングスを算出する。そして、主走査ラインにおけるランレングスを特定すれば、算出されたランレングスを連ねて圧縮データとして出力する。このようにすれば、1本の主走査ラインを構成する画素データの全てを読み出してからランレングス圧縮を施すよりも、高速な圧縮処理が可能であり、主走査ラインを構成する全ての画素データを展開するためのバッファや、アンパッキングするための回路を必要としないため、回路構成を複雑化することがない。さらに、ランレングス圧縮の間、ランレングスのデータ量を見積もることができ、符号量制御と同様の役割を果たすことができるため、システムの設計を容易にすることも可能である。
次に、図面を参照しながら、本発明を実施するための最良の形態について説明する。なお、各々の図面において同一の構成には同じ符号を付している。
(1)第1実施形態
まず、本発明の第1実施形態を説明する。同実施形態では、図1に示すように、画素データ群g1〜g8をパッキングしたままランレングス圧縮を施して圧縮データLを得る。これにより、従来から必要とされていたバッファやアンパッキング回路を不要とするとともに、全体としてランレングス圧縮に要する時間を短縮することができる。
図2は、第1実施形態に係るデータ圧縮装置1の構成を示している。2値化処理部Tによって2値化された画素データが、パッキング回路Pによって4bitずつにパッキングされ、複数の画素データ群としてメモリMに格納されている。データ圧縮装置1は、このメモリMから読み出された画素データに対してランレングス圧縮を施す。図2に示すように、このデータ圧縮装置1は、メモリMから読み出されてデータ圧縮装置1に入力される複数の画素データ群から“0”又は“1”の連続する画素データを連続画素データとして抽出し、これら画素データ群に含まれる画素データをランレングス(連続画素数)に変換するデータ変換部10と、各々の画素データ群の最後にデータ圧縮装置1に入力された画素データの値を記憶するデータ隣接値記憶部20と、データ変換部10から供給されるランレングスを記憶するランレングス記憶部30と、データ変換部10から供給されるランレングスとランレングス記憶部30から供給されるランレングスとを加算する加算部40と、データ変換部10又は加算部40から供給されるランレングスを出力する出力部50とを備えている。特にデータ変換部10は、このデータ圧縮装置1において全体を制御するとともに、後述する所要な処理を司る制御手段として機能する。なお、これらの各部に格納されているデータの初期値は“0”である。
次に、図3及び図4を参照しながら、ランレングス圧縮を施す際の具体例について説明する。
メモリMには、4bitずつパッキングされた画素データ群g1,g2,g3,g4,g5,g6,g7,g8・・・が記憶されている。図3は画素データ群g1〜g4に対するランレングス圧縮処理の過程を示し、図4は画素データ群g4に引き続いて入力される画素データ群g5〜g8に対するランレングス圧縮処理の過程を示している。なお、これら画素データ群のうち、画素データ群g1の画素値を“0000”とし、画素データ群g2の画素値を“0111”とし、画素データ群g3の画素値を“0001”とし、画素データ群g4の画素値を“1111”とし、画素データ群g5の画素値を“1111”とし、画素データ群g6の画素値を“0001”とし、画素データ群g7の画素値を“1100”とし、画素データ群g8の画素値を“0000”とする。これらの画素データ群は、画素データ群g1,g2,g3,・・・,g8という順序でメモリMから読み出されてデータ変換部10に入力される。図3及び図4において、出力部50の“N”はランレングスを出力しないことを表しており、矩形で囲まれた数値は出力部50から出力されるランレングスを意味している。なお、以下の説明においては、例えば画素データ群の画素値が“0000”である場合、画素データ群“0000”と表現する(画素値が異なっても同様の表現とする)。
図3において、まず、最初の画素データ群g1“0000”がデータ変換部10に入力される。この場合、データ変換部10は、画素データ“0”が4個連続しているので、画素データ群の先頭から連続するランレングス“4”を算出する(矢印a1)。ただし、この時点では、次に供給される画素データ群g2の値が不明であるため、データ変換部10は画素データ“0”のランレングスが“4”であるのか、またはそれ以上の値であるかを特定することができない。つまり、データ変換部10は、最初に入力された画素データ群について、同値の連続画素データの中に、同画素データ群の最後に読み出された画素データが含まれている場合には、算出されたランレングス(画素データ“0”のランレングス“4”)を記憶させる。よって、データ変換部10は、ランレングス“4”をいったん加算部40へ供給することになる(矢印a2)。これにより、ランレングス“4”が、加算部40に保持されている“0”(初期値)に加算され、加算部40には新たにランレングス“4”が保持される(矢印a3)。一方、最初に入力された画素データ群の値が“0001”であるような場合には、同値の連続画素データ(画素データ“0”)の中に同画素データ群の最後に読み出された画素データが含まれていないので、データ変換部10は、算出されたランレングス(画素データ“0”のランレングス“3”)を出力させることになる。そして、データ変換部10は、画素データ群g1のうちの最後に入力された画素データの値“0”を、データ隣接値記憶部20に供給して記憶させる(矢印a4)。このデータ隣接値記憶部20に記憶された値は、隣り合う画素データ群に含まれるランレングスどうしが連続しているか否かを判断するために利用される。
次に、画素データ群g2“0111”がデータ変換部10に入力される。データ変換部10は、この画素データ群g2から、画素データ群の先頭から連続する画素データ“0”のランレングス“1”を算出すると共に(矢印b1)、その次に連続する画素データ“1”のランレングス“3”を算出する(矢印b2)。そして、データ変換部10は、データ隣接値記憶部20から隣接値データ“0”を読み出し、画素データ群g2の先頭の画素データの値と一致しているか否かを判断する。両者が一致していれば、隣り合う画素データ群のランレングスどうしが連続していることを意味するが、両者が一致していない場合には、隣り合う画素データ群のランレングスどうしが連続していないことになる。ここでは両者共に“0”で一致しているので、このような場合には、データ変換部10は、すでに入力された画素データ群から算出されたランレングスと、ここで入力された画素データ群から算出されたランレングスとを加算する。つまり、データ変換部10は、加算部40へランレングス“1”を供給して(矢印b3)、その加算部40にランレングス“4”を加算させる(矢印b4)。これにより、加算部40にはランレングス“5”が保持される。さらに、この連続画素データの中には画素データ群g2において最後に読み出された画素データが含まれていないので、ランレングス“5”はこれ以上連続しない。よって、データ変換部10は、このランレングスの加算結果を加算部40から出力部50へ供給させる。そして、出力部50から画素データ“0”のランレングスとして“5”が出力される(矢印b5)。
このように、加算部40に保持されているランレングスに対して、データ変換部10から供給されてくるランレングスを加算させ、その加算結果を加算器40に保持させておくか又は出力部50へ供給させる。加算部40に加算結果を保持させておく場合とは、その加算結果であるランレングスに対して、さらに同値のランレングスが連続する可能性がある場合である。一方、加算部40から加算結果が出力部50に供給される場合とは、その加算結果であるランレングスに対して、さらに同値のランレングスが連続する可能性がない場合である。加算部40による加算結果が出力部50へ供給されると、それまで加算部40が保持していた値は“0”にクリアされる。
一方、画素データ群g2から算出された画素データ“1”のランレングス“3”は、データ変換部10からランレングス記憶部30に供給され、ランレングス記憶部30に記憶される(矢印b6)。その理由は、前述した画素データ“0”のランレングスと同様に、次に供給される画素データ群g3の値が不明であるため、画素データ“1”のランレングスが“3”であるのか、またはそれ以上の値であるかを特定することができないからである。なお、このランレングス記憶部30は、パッキングの1単位となるビット数(ここでは4bit)の画素データを記憶することができればよい。そして、データ変換部10は、画素データ群g2のうちの最後に入力された画素データの値“1”を、データ隣接値記憶部20に供給して記憶させる。
次に、画素データ群g3“0001”がデータ変換部10に入力される。データ変換部10は、この画素データ群g3から、画素データ群の先頭から連続する画素データ“0”のランレングス“3”を算出すると共に(矢印c1)、その次に連続する画素データ“1”のランレングス“1”を算出する(矢印c2)。そして、データ変換部10は、データ隣接値記憶部20から隣接値データ“1”を読み出し、画素データ群g3の先頭の画素データの値“0”と一致しているか否かを判断する。ここでは一致していないので、データ変換部10は、画素データ群g2のランレングスと画素データ群g3のランレングスとが連続していないと判断するということになる。この場合、データ変換部10は、画素データ群g2から算出した画素データ“1”のランレングス“3”、即ちランレングス記憶部30において画素データ群g2の最後に読み出された画素データが含まれている連続画素データのランレングスとして保持されているランレングス“3”を加算部40に供給させるが(矢印c3)、加算結果も“3”のままであるため(矢印c4)、そのまま出力部50に供給して出力させる(矢印c5)。
さらに、データ変換部10は、画素データ群g3から算出した画素データ“0”のランレングス“3”を出力部50へ供給して出力させる(矢印c6)。これは、画素データ“0”のランレングス“3”に続いて、画素データ“1”のランレングス“1”が既に算出されており、このランレングス“3”がこれ以上連続する可能性がないからである。続いて、データ変換部10は、画素データ群g3の最後尾の画素データ“1”のランレングス“1”を、ランレングス記憶部30に記憶させる(矢印c7)。そして、データ変換部10は、画素データ群g3のうちの最後に入力された画素データの値“1”を、データ隣接値記憶部20に供給して記憶させる(矢印c8)。
次に、画素データ群g4“1111”がデータ変換部10に入力される。データ変換部10は、この画素データ群g4から、画素データ群の先頭から連続する画素データ“1”のランレングス“4”を算出する(矢印d1)。そして、データ変換部10は、データ隣接値記憶部20から隣接値データ“1”を読み出し、画素データ群g2の先頭の画素データの値“1”と一致しているか否かを判断する。ここでは両者共に“1”で一致しているのでランレングスは連続しており、データ変換部10は、画素データ群g3から算出されて記憶されているランレングスと、その次の画素データ群g4から算出されたランレングスとを加算する。つまり、データ変換部10は、加算部40へランレングス“4”を供給する(矢印d2)。ここで、ランレングス記憶部30から加算部40に対してランレングス“1”が供給されて、この加算部40によって保持されている(矢印d3)。そして、データ変換部10によって加算部40に供給されるランレングス“4”と、加算部40によって保持されているランレングス“1”とが加算される(矢印d4)。これにより、加算部40にはランレングス“5”が保持される。
さらに、画素データ群g4から抽出された連続画素データの中には、その画素データ群g4において最後に読み出された画素データが含まれているので、さらにランレングスが連続する可能性がある。よって、データ変換部10は、このランレングスの加算結果を加算部40に記憶させたままにする。そして、データ変換部10は、画素データ群g4において最後に入力された画素データの値“1”を、データ隣接値記憶部20に供給して記憶させる(矢印d5)。以上の処理に引き続いて、図4に示すような処理が行われる。なお、この図4に示したランレングス圧縮は図3に示したものと同様であるので、説明を省略する。また、例えば画素データ群に含まれる画素データが“0110”というようなケースにおいては、データ“1”のランレングスが「2」となるが、このように画素データ群において先頭及び最後に読み出された画素データが含まれていないランレングスである場合には、データ変換部10は、算出したランレングスを出力部50へ供給してそのまま出力させればよい。
データ圧縮装置1は、メモリMから順次読み出される画素データ群の各々に対して上記のように処理を繰り返し行うことによって、出力部50から出力されるランレングスを連ねた圧縮データ“5,3,3,9,3,3,・・・”を得ることができる。この圧縮データにおいては白画素を表す画素データ“0”のランレングスと黒画素を表す画素データ“1”のランレングスとが交互に現れるから、出力部50から圧縮データを受け取った装置又はコンピュータプログラムはこの圧縮データに基づいて2値の画像データを再現することができる。
以上説明した第1実施形態によれば、従来は必要であったバッファやアンパッキングするための回路を必要としないため、回路構成を複雑化することなくランレングス圧縮の処理の高速化を実現することが可能となる。
(2)第2実施形態
次に、本発明の第2実施形態について説明する。
第1実施形態では、4bit毎にパッキングされた画素データ群に対してランレングス圧縮を施していたが、以下に説明する第2実施形態では、図5に示すように、8bit毎にパッキングされた画素データ群g1〜g4を、4bitの画素データ群g1’〜g4’に変換してからランレングス圧縮を施して圧縮データLを得る。つまり、画素データ群を構成する画素データを、少ない数の画素データに変換してからランレングス圧縮を施すので、データ量を減少させることができ、全体としてランレングス圧縮の処理に要する時間をさらに短縮させることが可能となる。
図6は、第2実施形態に係るデータ圧縮装置1aの構成を示した図である。このデータ圧縮装置1aは、第1実施形態と同様の処理を実行するデータ変換部10と、データ隣接値記憶部20と、ランレングス記憶部30と、加算部40と、出力部50のほか、パッキング単位で入力された画素データ群のbit数を小さいbit数に変換するビット数変換部60を備えている。なお、これらの各部に格納されているデータの初期値を“0”とする。
ビット数変換部60は、8bit毎にパッキングされた画素データ群が入力されると、これを4bitに変換する。このようにすればデータ量を小さくすることができ、ランレングス圧縮の高速化が可能となるが、後でこれらの画素データから元の主走査ラインを再現する際には、元の主走査ラインに対して誤差を含むことになる。そのため、ビット数変換部60は、画素データの損失をできるだけ小さくして、元の画像に近い画像を再現できるように変換処理を行う必要がある。
図7は、ビット数変換部60が、8bitにパッキングされた画素データ群gを4bitの画素データ群g’に変換する処理の過程を示している。図7に示すように、画素データ群gは、画素データp1,p2,p3,p4,p5,p6,p7,p8によって構成されている、これらはp1,p2,p3,・・・,p8という順序でメモリMから読み出されてデータ圧縮装置1aに入力され、4bitの画素データ群g’に変換される。この画素データ群g’は画素データp1’,p2’,p3’,p4’によって構成されている。また、画素データ群gの前に入力された画素データ群のうちの最後(8番目)に入力された画素データが、ビット数変換部60に備えられたデータ隣接値記憶部20aに画素データb8として記憶されている。ビット数変換部60は、画素データ群gが入力されると、画素データb8を読み出した後に、その画素素データb8に代えて画素データp8をデータ隣接値記憶部20aに記憶させる。
次に、ビット数変換部60が、画素データ群gを画素データ群g’に変換する具体的な手順について説明する。図7に示しているように、ビット数変換部60は、画素データ群gを構成する画素データp1〜p8において、隣接する2bitずつを一組とし、それぞれを1bitに変換することで、8bitを4bitに変換する。具体的には、画素データ群gのうちの先頭の画素データp1と2番目の画素データp2を一組とし、3番目の画素データp3と4番目の画素データp4を一組とし、5番目の画素データp5と6番目の画素データp6を一組とし、7番目の画素データp7と8番目の画素データp8一組とするといった具合である。このようにして、ビット数変換部60は画素データ群gを2bitずつ分割して、各々の組について画素データを1bitに変換する。つまり、メモリから読み出された各画素データ群に含まれている画素データのうち、読み出された順序が連続する複数の画素データを、それよりも少ない数の画素データに変換するのである。
ここで、図8は、各々の組の2bitの画素データを1bitの画素データにする変換方法を記述した変換テーブルを示している。データ変換部10は、図8に示した変換テーブルに従って、画素データ群gを画素データ群g’に変換する。具体的には、各々の組の画素データの値に着目して、2bitの画素データの値が共に“0”であれば、値が“0”の1bitの画素データに変換する。また、ビット数変換部60は、2bitの画素データの値が共に“1”であれば、値が“1”の1bitの画素データに変換する。一方、2bitの画素データの値がそれぞれ“0”及び“1”のように異なる場合には、ビット数変換部60は、この組の直前に入力された画素データの値と同値になるように変換する。この「直前に入力された画素データの値」とは、図7の網掛けを施した画素データのことである。具体的には、画素データp1及びp2の組の直前に入力された画素データは画素データb8であり、画素データp3及びp4の組の直前に入力された画素データは画素データp2であり、画素データp5及びp6の組の直前に入力された画素データは画素データp4であり、画素データp7及びp8の組の直前に入力された画素データは画素データp6である。このように直前に入力された画素データの値を考慮して画素データ値を変換するのは、最も細い細線であっても2画素程度の太さであるから、主走査ラインにおいては黒画素及び白画素はそれぞれ複数個連続する場合が多いということや、白画素または黒画素が単数で含まれていても、それを人間が視認しても確認することは困難な大きさであったり、またそれがノイズの可能性もあるという理由による。
そして、ビット数変換部60は、画素データp1及びp2を1bitの画素データp1’に変換し、画素データp3及びp4を画素データp2’に変換し、画素データp5及びp6を画素データp3’に変換し、画素データp7及びp8を画素データp4’に変換すると、これらを画素データ群g’としてデータ変換部10に供給する。例えば画素データ群gの値が“00000111”であるとすれば、画素データp1、p2、p3,p4,p5,p6,p7,p8の値は、それぞれ“0”、“0”、“0”、“0”、“0”、“1”、“1”、“1”となる。この場合、ビット数変換部60は画素データp1,p2に着目すれば、共に画素データの値は“0”であるから、画素データ群g’の画素データp1’の値を“0”とする。同様にして、ビット数変換部60は画素データp3,p4についても共に“0”であるから、画素データ群g’の画素データp2’の値を“0”とする。また、ビット数変換部60は、画素データp5,p6については、画素データp5の値が“0”で画素データp6の値が“1”であるから、これらの組の直前の画素データp4の値“0”を考慮して、画素データ群g’の画素データp3’の値を“0”とする。また、画素データp7,p8については共に“1”であるから、画素データ群g’の画素データp4’の値は“1”となる。このようにして、ビット数変換部60は、8bitの画素データ群g“00000111”と、4bitの画素0001”に変換することができる。
そして、この画素データ群g’がビット数変換部60からデータ変換部10に供給されると、第1実施形態と同様の方法でデータ変換部10によって画素データ群g’にランレングス圧縮が施されることになる。つまり、データ変換部10は、メモリMから読み出された8bit毎にパッキングされた画素データ群g1,g2,g3,g4・・・から、各々が4bitに変換された画素データ群g1’,g2’,g3’,g4’・・・に対してランレングス圧縮を施すことになる。
ここで、図9は、画素データ群g1’〜g4’に対してランレングス圧縮を施す際の具体例を説明する図である。なお、画素データ群g1の画素値を“00000111”とし、画素データ群g2の画素値を“00011111”とし、画素データ群g3の画素値を“11110001”とし、画素データ群g4の画素値を“11000000”とする。そして、これらの画素データ群g1,g2,g3,g4・・・が、画素データ群g1’“0001”、画素データ群g2’“0011”、画素データ群g3’“1100”、画素データ群g4’“1100”・・・というように、それぞれ4bitずつに変換される。これらの画素データ群g1’〜g4’に対して第1実施形態と同様の方法によってランレングス圧縮が行われるわけであるが、元々8bitであった画素データ群g1〜g4を、4bitの画素データ群g1’〜g4’に変換して更にランレングス圧縮を施しているので、この圧縮データを復号して画素データを再現すると、元の8bitで表現されることになる。つまり、データ変換部10は、画素データ群g1’〜g4’から算出されたランレングスの値をそれぞれ2倍にして扱うことになる。よって、図9においても画素データ群g1’〜g4’から算出されたランレングスの値を全て2倍にして表現している。
図9において、まず、最初の画素データ群g1’“0001”がデータ変換部10に入力される。データ変換部10は、この画素データ群g1’から画素データ群の先頭から連続する画素データ“0”のランレングス“3”を算出すると共に、その次に連続する画素データ“0”のランレングス“1”を算出する。ところが、画素データ群g1’は、元々8bitであったものが4bitに変換されているため、これらのランレングスを2倍にする。すなわち、白画素の画素データのランレングスは“6”、黒画素の画素データのランレングスは“2”となる。そして、データ変換部10は、ランレングス“6”をいったん加算部40へ供給する。これにより、ランレングス“4”が、加算部40に保持されている“0”(初期値)に加算され、加算部40には新たにランレングス“4”が保持される。次に、データ変換部10は、ランレングス“2”をランレングス記憶部30へ供給して記憶させる。そして、データ変換部10は、画素データ群g1のうちの最後に入力された画素データの値“1”を、データ隣接値記憶部20に供給して記憶させる。
次に、画素データ群g2’“0011”がデータ変換部10に入力される。データ変換部10は、この画素データ群g2’から、画素データ群の先頭から連続する画素データ“0”のランレングス“2”を算出すると共に、その次に連続する画素データ“1”のランレングス“2”を算出する。そして、画素データ群g1’の場合と同様にして、これらの値を2倍にして、画素データ“0”のランレングスを“4”、画素データ“1”のランレングス“4”となる。そして、データ変換部10は、データ隣接値記憶部20から隣接値データ“1”を読み出し、画素データ群g2’の先頭の画素データの値“0”と一致しているか否かを判断する。ここでは一致していないので、データ変換部10は、画素データ群g1’のランレングスと画素データ群g2’のランレングスとが連続していないと判断するということになる。この場合、データ変換部10は、画素データ群g1’から算出した画素データ“1”のランレングス“2”、即ちランレングス記憶部30に保持されているランレングス“2”を加算部40に供給させるが、加算結果も“2”のままであるため、そのまま出力部50に供給して出力させる。そして、データ変換部10は、画素データ群g2’から算出した画素データ“0”のランレングス“4”を出力部50へ供給して出力させる。これは、画素データ“0”のランレングス“4”に続いて、画素データ“1”のランレングス“4”が既に算出されており、このランレングス“4”がこれ以上連続する可能性がないからである。続いて、データ変換部10は、画素データ群g2’の最後尾の画素データ“1”のランレングス“4”を、ランレングス記憶部30に記憶させる。そして、データ変換部10は、画素データ群g3’のうちの最後に入力された画素データの値“1”を、データ隣接値記憶部20に供給して記憶させる。
データ圧縮装置1aは、メモリMから順次読み出される画素データ群の各々に対して、上記のように処理を繰り返し行うことによって、出力部50から出力されるランレングスを連ねた圧縮データ“6,2,4,8,4,4,・・・”を得ることができる。一方、bit数を変換せずに画素データ群g1〜g4に対してランレングス圧縮処理を施せば、圧縮データ“5,3,3,9,3,3,・・・”となる。これらを比較すれば、各々の画素データのランレングスについて1画素程度の誤差が含まれていることになる。ただし、人間が視認してこの程度の誤差を容易に判別することはできないため大きな問題は生じない。
この第2実施形態によれば、できるだけ画素データの損失を小さくして、8bitから4bitのように、bit数を減少するように変換してからランレングス圧縮を施しているため、画素データのデータ量が減少されて、ランレングス圧縮を施す処理の高速化が可能となる。
(3)第3実施形態
次に、本発明の第3実施形態について説明する。
この第3実施形態では、第1実施形態や第2実施形態で説明した方法によって算出されたランレングスを、データ圧縮装置から別の装置やコンピュータプログラムに出力する際に、正確な順序で且つスムーズに出力されるような制御を行う。
図10は、同実施形態に係る処理の過程を説明する図である。4bit毎にパッキングされた画素データ群がg1,g2,g3,・・・g8の順に入力されると、データ圧縮装置によってランレングスの値が順次算出されていく。このとき、パッキングされた1つの画素データ群がデータ圧縮装置に入力されると直ちにランレングスを算出可能な場合と、次の画素データ群の入力を待たないとランレングを算出することができない場合とがある。つまり、後者の場合は、その時点で算出しているランレングスがさらに大きな値になる可能性がある場合である。
この第3実施形態では、1つの画素データ群がデータ圧縮装置に入力されて直ちにランレングスが算出された場合であって、さらにその際に複数のランレングスが算出された場合には、これらが画素データの入力順に従って別々に保持されるようにしている。図10において、例えば画素データ群g3がデータ圧縮装置に入力された時点で考えると、画素データ群g2の入力時点では特定できなかった黒画素を表す画素データのランレングス“3”を特定することができ、さらに画素データ群g3のみで白画素のランレングス“3”も特定することができる。このように、1つの画素データ群が入力されて2つのランレングスが特定された場合には、これらを別々に保持させておき、それらが正しい順序で出力されるような制御を行うのである。図10に示したパタン信号pは、このような出力制御を行うための制御信号である。
例えば4bit毎にパッキングされた画素データ群が入力される場合、1回の画素データ群の入力時点で最大3つのランレングスが特定される可能性がある。そのため、最初に特定されたランレングスをランレングスL1とし、その次に特定されたランレングスをランレングスL2とし、その次に特定されたランレングスをランレングスL3とする。また、次の画素データ群が入力されてランレングスが特定されると、そのランレングスはランレングスL1となる。これらのランレングスL1〜L3や上述したパタン信号pの信号値は、FIFO(First Input First Out)形式のメモリに記憶されており、メモリから出力されるパタン信号によってこれらランレングスL1,L2,L3の出力順が制御されて、ランレングスが連なった圧縮データLが出力されることになる。
図11は、第3実施形態に係るデータ圧縮装置1bの構成を示した図である。このデータ圧縮装置1bは、第1実施形態と同様の処理を実行するデータ隣接値記憶部20と、ランレングス記憶部30と、加算部40のほか、第1実施形態の処理に加えてパタン信号の生成に関する処理を行うデータ変換部10aと、さらにこのパタン信号に従ってランレングスを連ねた圧縮データを出力する出力調整部50aとを備えている。なお、これらの各部に格納されているデータの初期値を“0”とする。
次に、図12は、出力調整部50aの構成を示した図である。この出力調整部50aには、上述した第1実施形態や第2実施形態と同様の方法で算出されたランレングスが供給される。図12に示すように、出力調整部50aは、供給されてくるランレングスをランレングスL1〜L3としてそれぞれ記憶するデータ記憶部51と、データ変換部10aから供給されるパタン信号の値(パタン信号値)を記憶するパタン信号記憶部52と、データ記憶部51に記憶されたランレングスL1〜L3のうちのいずれか1つを読み出す選択部53と、パタン信号記憶部52から供給されるパタン信号値に基づいて選択部53が読み出すべきランレングスを決定するパタン制御部54とを備えている。データ記憶部51は、ランレングスL1を記憶するための記憶領域51aと、ランレングスL2を記憶するための記憶領域51bと、ランレングスL3を記憶するための記憶領域51cとを有している。なお、ランレングス圧縮を施す処理速度が、ランレングスが出力される処理速度よりも大きい場合もあるため、このデータ記憶部51やパタン信号記憶部52はランレングスやパタン信号を出力されるまで記憶しておくための十分な容量を有している。
パタン制御部54は、選択部53が読み出すべきランレングスを決定するためのアルゴリズムを記憶しており、このアルゴリズムに従って決定された読出指示がパタン制御部54から選択部53に与えられる。図13は、このアルゴリズムを説明するための概念図である。パタン信号は“0”,“1”,“2”,“3”という4種類の値をとり、それぞれ次のような処理を意味している。
まず、パタン信号値“0”は、出力可能なランレングスがないことを意味しており、この場合には、パタン制御部54は、ランレングスL1〜L3のいずれも読み出す必要はないことを選択部53に指示する。選択部53は、この指示を受け取ったときには何の処理も行わない。
次に、パタン信号値“1”は、ランレングスL1を出力すべきことを意味しており、この場合には、パタン制御部54は記憶領域51aに記憶されたランレングスL1を読み出すことを選択部53に指示する。これにより、選択部53によって、記憶領域51aからランレングスが1つだけ読み出されることになる。
次に、パタン信号値“2”は、ランレングスL1を出力した後にランレングスL2を出力すべきことを意味している。この場合、パタン制御部54は、記憶領域51bに記憶されたランレングスL1,L2を順番に読み出すことを選択部53に指示する。これにより、選択部53によって、記憶領域51aからランレングスが1つだけ読み出された後に、記憶領域51bからランレングスが1つだけ読み出されることになる。
そして、パタン信号値“3”は、ランレングスL1を出力した後にランレングスL2を出力し、さらにその後にランレングスL3を出力すべきことを意味している。この場合、パタン制御部54は、記憶領域51bに記憶されたランレングスL1,L2,L3を順番に読み出すことを選択部53に指示する。これにより、選択部53によって、記憶領域51aからランレングスが1つだけ読み出された後に、記憶領域51bからランレングスが1つだけ読み出され、さらに記憶領域51cからランレングスが1つだけ読み出されることになる。
このようにして、パタン信号に基づいて読み出されたランレングスは、それらを連ねた圧縮データとして出力される。
ここで、ランレングスが出力される際の具体例を図12及び図13を用いて説明する。ここでは、4bit毎にパッキングされた画素データ群g1,g2,g3,g4,g5,g6,g7,g8・・・に対してランレングス圧縮が施されるものとする。なお、画素データ群g1の画素値を“0000”とし、画素データ群g2の画素値を“0111”とし、画素データ群g3の画素値を“0001”とし、画素データ群g4の画素値を“1111”とし、画素データ群g5の画素値を“1111”とし、画素データ群g6の画素値を“0001”とし、画素データ群g7の画素値を“1100”とし、画素データ群g8の画素値を“0000”とする。
まず、データ変換部10aに画素データ群g1が入力されると、画素データ群g1の画素値は“0000”であるから、この段階で特定されるランレングスはないので出力調整部50aに供給されるランレングスはなく、出力可能なランレングスがないことを表すパタン信号“0”がデータ変換部10aからパタン信号記憶部52に供給される。次に、データ変換部10aに画素データ群g2が入力されると、画素データ群g2の画素値は“0111”であるから、画素データ“0”のランレングスが“5”であることが特定されるので、ランレングス“5”がランレングスL1として記憶領域51aに記憶されるとともに、データ変換部10aからパタン信号“1”がパタン信号記憶部52に供給される。次いで、データ変換部10aに画素データ群g3が入力されると、画素データ群g3の画素値は“0001”であるから、画素データ“1”のランレングスが“3”であることと、画素データ“0”のランレングスが“3”であることが特定される。よって、最初に特定された画素データ“1”のランレングス“3”がランレングスL1として記憶領域51aに記憶され、次に特定された画素データ“0”のランレングス“3”がランレングスL2として記憶領域51bに記憶される。そして、データ変換部10aからパタン信号“2”がパタン信号記憶部52に供給される。
以降、画素データ群がデータ変換部10aに入力される毎に、上記と同様の処理が繰り返され、これにより記憶領域51aにはランレングス“5,3,9,3・・・”がその順番で記憶され、記憶領域51bにはランレングス“3,3・・・”がその順番で記憶される。そして、パタン信号記憶部52にはパタン信号値“0,1,2,0,0,2,1”がその順番で記憶されることになる。
上述したようなランレングスを算出する処理が実行されると同時に、出力調整部50aによってランレングスを読み出して出力する処理が実行される。まず、最初にパタン信号記憶部52に読み出されたパタン信号“0”が読み出されてパタン制御部54に供給される。パタン信号が“0”の場合はランレングスL1〜L3のいずれも読み出す必要はないため、パタン制御部54は、ランレングスL1〜L3のいずれも読み出す必要はないことを選択部53に指示する。
次に、パタン信号記憶部52からパタン信号“1”が読み出されてパタン制御部54に供給される。パタン制御部54は、記憶領域51aに記憶されたランレングスL1を読み出すことを選択部53に指示する。これにより、記憶領域51aに記憶されているランレングスL1のうち最も先に記憶領域51aに記憶されたランレングス“5”が選択部53によって読み出される。
次に、パタン信号記憶部52からパタン信号“2”が読み出される。パタン信号が“2”の場合には、パタン制御部54によってランレングスL1からランレングスを1
つだけ読み出させて、次にランレングスL2からランレングスを1つだけ読み出させることが決定される。選択部53はパタン制御部54によって決定されたように、記憶領域51aに記憶されたランレングスL1を選択すると、ランレングスL1のうちの最も先に記憶領域51aに記憶されたランレングス“3”を読み出す。さらに、選択部53は、記憶領域51bに記憶されたランレングスL2を選択すると、ランレングスL2のうちの最も先に記憶領域51bに記憶されたランレングス“3”を読み出す。
このようにして、出力調整部50aにランレングスL1〜L3と、パタン信号記憶部52にパタン信号が供給されるたびに同様の処理が施されることになり、読み出された主走査ライン分のランレングスが連なった圧縮データL“5,3,3,9,3,3・・・”が出力されることになる。
この第3実施形態によれば、パッキング単位で画素データ群が入力されて、一度に複数のランレングスが算出された場合にも、パタン信号によって正しい順序でランレングスが読み出されるように制御されており、滞りなく圧縮データを出力させることが可能となる。
なお、上述した実施形態を次のように変形してもよい。
第2実施形態では、8bit毎にパッキングされた画素データ群を4bitに変換してからランレングス圧縮を施していたが、これとは異なるbit数毎にパッキングされた画素データ群に対しても同様の変換処理を施してもよい。例えば、図14は、16bit毎にパッキングされた画素データ群をそれぞれ4bitに変換した場合のビット数変換部における処理の過程を示している。図14において、画素データ群gは、画素データp1,p2,p3,・・・,p16によって構成され、これらはp1,p2,p3,・・・,p16という順序でメモリから読み出されて入力される。また、画素データ群gの前に入力された画素データ群のうちの最後(16番目)に入力された画素データが、ビット数変換部60に備えられたデータ隣接値記憶部20aに記憶されており、そこから画素データb16に供給される。よって、ビット数変換部60は、画素データ群gが入力されると、画素データb16を読み出した後に、画素データp16をデータ隣接値記憶部20aに供給して記憶させる。
そして、16bitの画素データ群gが4bitの画素データ群g’に変換される際には、画素データ群gを構成する画素データp1〜p16において、隣接する4bitずつを一組としてビット数変換を行うことになる。具体的には、画素データ群gのうちの先頭の画素データp1から4番目の画素データp4までを一組とし、同様にして、5番目の画素データp5から8番目の画素データp8までを一組、9番目の画素データp9から12番目の画素データp12までを一組、13番目の画素データp13から16番目の画素データp16までを一組とするといった具合である。また、各々の組の直前の画素データは、それぞれb16,p4,p8,p12となる。図15は、各々の組の4bitの画素データを1bitにする変換方法を記述した変換テーブルを示している。図15においては、第2実施形態と同様に、画素データの損失をできるだけ小さくして、元の画像に近い画像を再現できるように変換テーブルが記述されている。具体的には、各々の組の4bitの画素データ、及びその直前の画素データに着目して、同値の画素データがより多く連続している方の画素データの値に変換しており、すなわち、目立ちやすい方の色が選択されるようにしている。
このようにすれば、第2実施形態よりも主走査ラインを再現させた際の誤差が大きくなるが、データ量がさらに小さくなるため、ランレングス圧縮に要する時間もそれに伴い短縮される。
なお、第1実施形態〜第3実施形態に係るデータ圧縮装置の処理を、CPUがプログラムを実行することによって実現してもよい。このプログラムは、コンピュータによって読み取り可能な磁気記録媒体、光記録媒体あるいはROMなどの記録媒体に記録してデータ圧縮装置に提供することができる。また、インターネットのようなネットワーク経由でデータ圧縮装置にダウンロードさせることも可能である。
本発明の第1実施形態に係るランレングス圧縮の処理の過程を説明する図である。 同実施形態に係る画像処理装置の構成を示したブロック図である。 同実施形態に係るランレングス圧縮の処理の過程を説明する図である。 同実施形態に係るランレングス圧縮の処理の過程を説明する図である。 第2実施形態に係るランレングス圧縮の処理の過程を説明する図である。 同実施形態に係る画像処理装置の構成を示したブロック図である。 同実施形態に係るビット数変換部の処理の過程を説明する図である。 同実施形態に係る変換テーブルを説明する図である。 同実施形態に係るランレングス圧縮の処理の過程を説明する図である。 第3実施形態に係るランレングス圧縮の処理の過程を説明する図である。 同実施形態に係る画像処理装置の構成を示したブロック図である。 同実施形態に係る出力調整部の処理の過程を説明する図である。 同実施形態に係るパタン制御部の処理の過程を説明する図である。 変形例に係るビット数変換部の処理の過程を説明する図である。 変形例に係る変換テーブルを説明する図である。 従来の技術に係るランレングス圧縮の処理の過程を説明する図である。
符号の説明
1,1a,1b…データ圧縮装置、10,10a…データ変換部、20,20a…データ隣接値記憶部、30…ランレングス記憶部、40…加算部、50…出力部、50a…出力調整部、51…データ記憶部、52…パタン信号記憶部、53…選択部、54…パタン制御部、60…ビット数変換部。

Claims (4)

  1. 2値で表された所定数の画素データを含む画素データ群を記憶手段から各々のデータ群単位で順番に読み出し、これら画素データ群に含まれる画素データを圧縮するデータ圧縮装置であって、
    各々の前記画素データ群において連続する同値の画素データを連続画素データとして抽出し、その連続数をランレングスとして算出するランレングス抽出手段と、
    前記ランレングス抽出手段によって算出されたランレングスを記憶するランレングス記憶手段と、
    各々の前記画素データ群において最後に読み出された画素データの値を記憶する隣接画素値記憶手段と、
    前記画素データ群から前記ランレングス抽出手段によって抽出された連続画素データの中に、当該画素データ群において最後に読み出された画素データが含まれているか否かを各々の画素データ群について判断する判断手段と、
    第1の画素データ群についての前記判断手段による判断結果が否定的な場合には、当該第1の画素データ群について前記ランレングス抽出手段により算出されて前記ランレングス記憶手段によって記憶されているランレングスを出力する一方、前記第1の画素データ群についての前記判断手段による判断結果が肯定的な場合には、前記ランレングス抽出手段によって算出されて前記ランレングス記憶手段によって記憶されているランレングスを出力せずに記憶させたままにしておく第1の制御手段と、
    前記第1の画素データ群の次に読み出された第2の画素データ群において最初に読み出された画素データの値が、前記隣接画素値記憶手段によって記憶されている値と一致する場合であって、当該第2の画素データ群についての前記判断手段による判断結果が否定的な場合には、前記ランレングス記憶手段によって記憶された前記第1の画素データ群におけるランレングスと、前記第2の画素データ群について前記ランレングス抽出手段により算出されたランレングスとを加算して出力し、前記第2の画素データ群において最初に読み出された画素データの値が、前記隣接画素値記憶手段によって記憶されている値と一致する場合であって、当該第2の画素データ群についての前記判断手段による判断結果が肯定的な場合には、前記ランレングス記憶手段によって記憶された前記第1の画素データ群におけるランレングスと、前記第2の画素データ群について前記ランレングス抽出手段により算出されたランレングスとの加算結果を前記ランレングス記憶手段に記憶させる第2の制御手段と、
    前記第2の画素データ群において最初に読み出された画素データの値が前記隣接画素値記憶手段によって記憶されている値と一致しない場合には、前記ランレングス記憶手段によって記憶された前記第1の画素データ群におけるランレングスを出力する第3の制御手段と
    を備えることを特徴とするデータ圧縮装置。
  2. 前記記憶手段から読み出された各画素データ群に含まれる画素データのうち、読み出された順序が連続する複数の画素データを、それよりも少ない数の画素データに変換する変換手段を備え、
    前記ランレングス抽出手段、前記ランレングス記憶手段、前記隣接画素値記憶手段、前記第1の制御手段、前記第2の制御手段及び前記第3の制御手段は、前記変換手段による画素データが変換された画素データ群に対して処理を行うことを特徴とする請求項1記載のデータ圧縮装置。
  3. 前記第1の制御手段、前記第2の制御手段及び前記第3の制御手段によって出力された複数のランレングスをそれぞれ異なる記憶領域に記憶するデータ記憶手段と、
    前記データ記憶手段によって記憶されているランレングスを読み出させる順番を表す制御信号を生成する生成手段と、
    前記生成手段によって生成された制御信号が表す順番で前記データ記憶手段に記憶されているランレングスを読み出して出力する出力制御手段と
    を備えることを特徴とする請求項1記載のデータ圧縮装置。
  4. 2値で表された所定数の画素データを含む画素データ群を記憶手段から各々のデータ群単位で順番に読み出し、これら画素データ群に含まれる画素データを圧縮するデータ圧縮装置に、
    各々の前記画素データ群において連続する同値の画素データを連続画素データとして抽出し、その連続数をランレングスとして算出する機能と、
    算出されたランレングスをランレングス記憶手段に記憶させる機能と、
    各々の前記画素データ群において最後に読み出された画素データの値を隣接画素値記憶手段に記憶させる機能と、
    前記画素データ群から抽出された連続画素データの中に、当該画素データ群において最後に読み出された画素データが含まれているか否かを各々の画素データ群について判断する機能と、
    第1の画素データ群についての判断結果が否定的な場合には、当該第1の画素データ群について算出されて前記ランレングス記憶手段によって記憶されているランレングスを出力する一方、前記第1の画素データ群についての判断結果が肯定的な場合には、算出されて前記ランレングス記憶手段によって記憶されているランレングスを出力せずに記憶させたままにしておく機能と、
    前記第1の画素データ群の次に読み出された第2の画素データ群において最初に読み出された画素データの値が、前記隣接画素値記憶手段によって記憶されている値と一致する場合であって、当該第2の画素データ群についての判断結果が否定的な場合には、前記ランレングス記憶手段によって記憶された前記第1の画素データ群におけるランレングスと、前記第2の画素データ群について算出されたランレングスとを加算して出力し、前記第2の画素データ群において最初に読み出された画素データの値が、前記隣接画素値記憶手段によって記憶されている値と一致する場合であって、当該第2の画素データ群についての判断結果が肯定的な場合には、前記ランレングス記憶手段によって記憶された前記第1の画素データ群におけるランレングスと、前記第2の画素データ群について算出されたランレングスとの加算結果を前記ランレングス記憶手段に記憶させる機能と、
    前記第2の画素データ群において最初に読み出された画素データの値が前記隣接画素値記憶手段によって記憶されている値と一致しない場合には、前記ランレングス記憶手段によって記憶された前記第1の画素データ群におけるランレングスを出力する機能と
    を実現させるためのプログラム。
JP2006132939A 2006-05-11 2006-05-11 データ圧縮装置及びプログラム Expired - Fee Related JP4635956B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006132939A JP4635956B2 (ja) 2006-05-11 2006-05-11 データ圧縮装置及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006132939A JP4635956B2 (ja) 2006-05-11 2006-05-11 データ圧縮装置及びプログラム

Publications (2)

Publication Number Publication Date
JP2007306333A JP2007306333A (ja) 2007-11-22
JP4635956B2 true JP4635956B2 (ja) 2011-02-23

Family

ID=38839891

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006132939A Expired - Fee Related JP4635956B2 (ja) 2006-05-11 2006-05-11 データ圧縮装置及びプログラム

Country Status (1)

Country Link
JP (1) JP4635956B2 (ja)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3459704B2 (ja) * 1995-07-14 2003-10-27 キヤノン株式会社 画像処理装置及び方法
JP2004048414A (ja) * 2002-07-12 2004-02-12 Canon Inc 画像領域分離方法および印刷装置

Also Published As

Publication number Publication date
JP2007306333A (ja) 2007-11-22

Similar Documents

Publication Publication Date Title
US6864813B2 (en) Arithmetic decoding method and an arithmetic decoding apparatus
EP0564227B1 (en) Image encoding apparatus and method
US6614939B1 (en) Image compression apparatus and decoding apparatus suited to lossless image compression
JPH08162970A (ja) 復号装置およびその方法
JP4442891B2 (ja) 可変長符号化装置及び可変長符号化方法
JP4635956B2 (ja) データ圧縮装置及びプログラム
JP2003526986A (ja) 算術的に符号化された情報信号の算術復号化
JP3144824B2 (ja) 画像再生装置
JP5070086B2 (ja) データ圧縮装置および画像読取装置
JP3787389B2 (ja) 画像処理装置、及び方法、及びその方法を記憶した記憶媒体
JP2004517527A (ja) グラフィック画像符号化
JP2000217003A (ja) 符号化装置および復号化装置
JPH10150575A (ja) 画像処理システム及び画像処理方法
US7903741B2 (en) Context-adaptive variable length coder with simultaneous storage of incoming data and generation of syntax elements
JP4502383B2 (ja) 復号化装置およびその方法
JPH0786956A (ja) マーカ識別用付加ビット処理装置
JPS6118387B2 (ja)
JP2012244235A (ja) データ圧縮方法、装置及びプログラム
JPH06121174A (ja) 符号化復号化装置
JP2001169118A (ja) 画像処理装置及びその方法、コンピュータ可読メモリ
JP2684887B2 (ja) 符号化復号化装置
JPH06245200A (ja) 2次元データのエネルギー分布による走査方法及びその装置
JP4219079B2 (ja) 画像処理装置
JP2003152549A (ja) 復号方法、復号装置、コンピュータプログラム及び記録媒体
JPH07147638A (ja) 画像処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090210

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: 20101026

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101108

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

Free format text: PAYMENT UNTIL: 20131203

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees