JP2006287944A - 画像符号化装置および画像復号装置 - Google Patents

画像符号化装置および画像復号装置 Download PDF

Info

Publication number
JP2006287944A
JP2006287944A JP2006112296A JP2006112296A JP2006287944A JP 2006287944 A JP2006287944 A JP 2006287944A JP 2006112296 A JP2006112296 A JP 2006112296A JP 2006112296 A JP2006112296 A JP 2006112296A JP 2006287944 A JP2006287944 A JP 2006287944A
Authority
JP
Japan
Prior art keywords
image
buffer
small area
value
gradations
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.)
Withdrawn
Application number
JP2006112296A
Other languages
English (en)
Inventor
Hisafumi Saika
尚史 齋鹿
Kensaku Oji
謙作 蔭地
Keisuke Iwasaki
圭介 岩崎
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.)
Sharp Corp
Original Assignee
Sharp 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 Sharp Corp filed Critical Sharp Corp
Priority to JP2006112296A priority Critical patent/JP2006287944A/ja
Publication of JP2006287944A publication Critical patent/JP2006287944A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

【課題】画像の劣化を防止しながら、効率の高い画像圧縮を行なうことができる画像符号化装置および画像復号装置を提供する。
【解決手段】小領域ごとに異なる階調数を持ち得る入力画像をビットプレーンに分割して圧縮する画像符号化装置は、上位プレーンにおいてより隣接画素間の連続性が高まるように、符号化対象の小領域の階調数に応じて異なる画素値変換を各画素値に施しビットプレーンに分割するための画像変換手段と、画像変換手段による変換によって得られるビットプレーンごとに所定のエントロピー符号化を行なうための画像符号化手段とを含む。すべての小領域の階調数が等しい場合は、入力画像の全体を一つの小領域とみなし、小領域の数を1として画像を符号化する。
【選択図】図38

Description

この発明は画像の階調数を減少させることによりデータを圧縮するための画像減色装置、画像符号化装置およびそのように圧縮された画像を復号するための画像復号装置に関し、特に、減色後の画像の劣化を防止することができる画像減色装置、画像符号化装置および画像復号装置に関する。
データ通信およびデータ保存を行なう場合、データ量を削減することが記憶領域を節約するために望ましい。特に画像データについては、そのデータ量が多いため、データ量を削減するさまざまな技術が工夫されている。データ量の削減を目的とした画像の符号化方式には、エントロピー符号化方式と呼ばれるものがある。エントロピー符号化方式には算術符号化およびハフマン符号化などの方式が知られている。
しかし、エントロピー符号化を施す前に、画像処理で画像データのデータ量自体を削減することがよく行なわれている。その代表的なものとして、多値画像を、使用目的に応じて十分な程度の階調数まで減色する方法がある。最も単純な方法は画像全体を共通の階調数まで減色することである。しかし、画像の属性は一般には全体で一様ではない。たとえば単純なテキスト画像であっても、単色の背景領域と、少なくとも2値以上の画素値が必要な文字領域とに分割される。そのため、全体を一様に減色すると、たとえば文字領域などが必要以上に減色されてしまい画像が劣化することがある。
こうした問題を解決するために、画像をブロックなどの小領域に分割し、それぞれの小領域ごとに異なる階調数に減色する技術が開発されてきた。そのような技術の一例が特開平6−350986号公報(特許文献1)に開示されている。この公報に開示された技術では、各小領域としてブロックをとり、ブロック内の近似誤差および統計量に基づいて、ブロックごとに階調数を決定している。
他の例は特開平5−56282号公報(特許文献2)に開示されたものである。この技術は、同じくブロックごとに階調数を決定している。しかしこの場合には階調数が大きなブロックについては、その解像度を減少させている。このようにすることにより、各ブロックのデータ量が一定となる。
特開平6−350986号公報 特開平5−56282号公報
画像の小領域ごとに階調数を設定する上に述べたような手法は、全体を一様に減色するよりも画像の劣化を防ぎながらデータ量を削減することができる。しかしその反面、上記のような手法は以下のような問題点も持っている。
第1の問題点は、小領域ごとの視覚的つながりが考慮されていないことである。そのような問題点を図59および図60を参照して説明する。なお以下の説明では、「小領域」とは、画像のあるブロックを指すものとする。
図59に入力画像の例を示す。この入力画像は全体では256階調を有するものとする。この画像は、「150」という画素値を持つ星印領域101と、「175」という画素値を持つ矢印領域102および星印領域103と、「255」という画素値を持つ背景領域とを含んでいる。
今、各小領域ごとに、減色後の階調数として4階調または8階調のいずれかが選択されるものとする。4階調の場合には、例えば、減色後の画素値は0、85、170、255のいずれかとなる。これは、階調数0から255の空間を均等に分割することによって得られる4つの階調である。同じく8階調の場合には、例えば、画素値は0、36、73、109、146、182、219、255のいずれかの値をとる。入力画像からの変換は、減色後の階調数が決定した後は、その階調数で可能な減色後の画素値で最も入力画像に近い値をとることによって行なう。
このようなロジックの下では、図59に示す矢印領域102については、4階調で画素値「170」で表わされるのが妥当のように思われる。星印領域103についても同様である。しかし、星印領域101(画素値150)については、4階調で最も近い画素値は85または170であるため、いずれを選択した場合であっても誤差が大きくなる。そのため、既存のロジックによれば星印領域101を含んだ小領域(図59に示される分割した正方領域)について8階調が必要と判断される可能性がある。そうした場合の処理結果の一例を示すのが図60である。
図60を参照して、星印領域101については、8階調で、元の画素値150と比較的近い値である146が選択されている。そのため星印領域101については特に問題はない。しかし、矢印領域102のうち、星印領域101が存在する小領域と同じ小領域の中の部分は、8階調で元の画素値175と最も近い値、つまり182という画素値で表わされている。そのため、この部分は矢印領域102のその他の部分の「170」という画素値と異なる画素値を有することになる。こうして、図60に示されるように、左下の小領域と他の小領域との境界に沿って、矢印領域102の中に段差が現われる。この段差は原画には存在していなかったものである。こうした現象が好ましくないことは言うまでもない。
このような現象は、従来の技術では小領域ごとの最適な減色階調数の判定が、小領域の中でほぼ閉じて行なわれるために生じる。
従来の技術のもう1つの問題点は、従来の技術では、各ブロックの最適な階調数の判定にあたって、図形的な特徴が考慮されていないことである。ブロック全体での誤差が同じであったとしても、図形的な特徴により画像の劣化が特に目立ちやすくなる場合がある。たとえば画像の比較的平坦な領域であれば誤差は目立ちにくい。それに対して直線、特に縦方向または横方向の線では、無理な減色をすると線のがたつきが生じやすく、見る者がそうした画像の劣化に気づきやすい。しかし従来の技術ではこのような問題点を十分に考慮しているとは言えなかった。
それゆえに本発明の目的は、画像の劣化を防止しながら、原画像の減色処理を行なうことができる画像減色装置およびそうした画像減色装置を用いることにより効率的に画像符号化が可能な画像符号化装置を提供することである。
本発明の他の目的は、小領域ごとに減色処理され、さらに符号化された画像データを復号することができる画像復号装置を提供することである。
この発明のある局面にかかる画像減色装置は、入力されたデジタル画像データの階調数を減少させて出力する画像減色装置であって、入力画像を予め定められた手法により小領域に分割するための分割手段と、各小領域ごとに、当該小領域に含まれる画像データに基づいて、当該小領域を適切に減色するための階調数を設定するための適応的減色手段とを含む。
好ましくは適応的減色手段は、入力画像中から予め定められた形状、たとえば直線を抽出するための抽出手段と、抽出手段による予め定められた形状の抽出結果に基づいて、入力画像中の予め定められた形状が存在する領域の階調数が、予め定められた形状の存在しない領域の階調数以上となるように、各小領域の階調数を設定するための手段とを含む。
さらに好ましくは、適応的減色手段は、異なる減色方法の下での、画像の少なくとも一部における背景画素および非背景画素のいずれか一方の分布を表わす指標を算出するための分布算出手段と、分布算出手段により算出された分布の比較結果に基づいて減色方法の適否を決定するための適否決定手段とを含む。
さらに好ましくは、分布算出手段は、入力画像中から予め定められた形状を抽出するための抽出手段と、異なる減色方法の下での、予め定められた形状の近傍の背景画素および非背景画素のいずれか一方の分布を検出するための画素分布検出手段とを含み、適否決定手段は、画素分布検出手段により検出された、第1の減色階調数とそれより少ない第2の減色階調数との下での、背景画素および非背景画素の分布を比較し、比較結果が予め定める条件を満足しているか否かに基づいて、第2の減色階調数の適否を判定するための手段を含む。
予め定める条件とは、第2の減色階調数の下での背景画素の数と、第1の減色階調回数の下での背景画素の数との差が一定以上であることでもよいし、第1の減色階調数の下での非背景画素の数と、第2の減色階調回数の下での非背景画素の数との差が一定以上であることでもよい。
適応的減色手段は、入力画像をラベリングするためのラベリング手段と、ラベリング手段の出力に基づき、共通なラベルを含む小領域に共通のラベルを付与するための小領域ラベリング手段とを含み、小領域ラベリング手段によって共通のラベルが付与された小領域には、共通の階調数を設定する構成でもよい。
適応的減色手段は、入力画像の小領域の境界をはさんで隣接する二つの画素が共通の画素値を持つ場合に、当該二つの画素が属する二つの小領域に共通のラベルを付与する小領域ラベリング手段とを含み、小領域ラベリング手段により共通のラベルが付与された小領域には、共通の階調数を設定する構成でもよい。
この発明の他の局面にかかる画像符号化装置は、入力されたデジタル画像データの階調数を減少させるための、請求項1〜請求項9のいずれかに記載の画像減色装置と、画像減色手段により減色された画像のエントロピー符号化を行なうための画像符号化手段とを含む。
この発明のさらに他の局面にかかる画像符号化装置は、小領域ごとに異なる階調数を持ち得る入力画像をビットプレーンに分割して圧縮する画像符号化装置であって、上位プレーンにおいてより隣接画素間の連続性が高まるように、符号化対象の小領域の階調数に応じて異なる変換を各画素値に施しビットプレーンに分割するための画像変換手段と、画像変換手段による変換によって得られるビットプレーンごとに所定のエントロピー符号化を行なうための画像符号化手段とを含む。
この発明の別の局面にかかる画像符号化装置は、小領域ごとに異なる階調数を持ち得る入力画像をビットプレーンに分割して圧縮する画像符号化装置であって、すべての小領域の階調数が等しいか否かを判定するための判定手段と、判定手段によりすべての小領域の階調数が等しいと判定されたことに応答して、入力画像の全体を一つの小領域とみなし、小領域の数を1として画像を符号化するための第1の画像符号化手段と、判定手段によりすべての小領域の階調数が等しいわけではないと判定されたことに応答して、入力画像の各小領域ごとに符号化するための第2の画像符号化手段とを含む。
この発明のさらに別の局面にかかる画像復号装置は、請求項10に記載の画像符号化装置によって符号化された画像データを入力するための入力手段と、入力手段により入力された画像データに対して、請求項10に記載のエントロピー符号化に対応した復号を行なう復号手段とを含む。
この発明のある局面にかかる画像減色装置は、請求項11に記載の画像符号化装置によって符号化された画像データを入力するための入力手段と、入力手段により入力された画像データに対して、請求項11に記載のエントロピー符号化に対応した復号を行なう復号手段と、復号手段により復号された画像データに対して、請求項11に記載の画像変換手段に対応した逆変換を行なうための画像逆変換手段とを含む。
この発明のある局面にかかる画像減色装置は、請求項12に記載の画像符号化装置によって符号化された画像データを復号するための画像復号装置であって、画像符号化手段によって符号化された画像データに含まれる小領域の数がいくつかを判定するための判定手段と、判定手段により判定された数の小領域に画像データを分割して復号するための復号手段とを含む。
以上のように本発明による画像減色装置は、小領域の間の繋がりを考慮して、小領域の減色後の階調数を決定する。そのため、色階調数の画素値の配置に制限を加えずに、視覚的に大きな影響を持つ小領域ごとの違いによる段差が起こりにくい画像の減色処理を行なうことができる。
また本発明に係る画像減色装置は、小領域中に線領域がある場合、小領域の減色階調数を大きくするような制御を行なう。そのため、がたつきなど線領域の劣化が目立たないように画像の減色処理を行なうことができる。
本発明に係る画像減色装置は、小領域中に含まれる文字の縦線、横線の周囲の過度の減色による劣化を実際に検出し、その結果に応じて適切な階調数での減色を行なう。無理な減色は行なわないので、特に文字に含まれる線部分の劣化が目立たないように画像の減色処理を行なうことができる。
また、本発明にかかる画像圧縮装置は、異なる階調数を持つ小領域を考慮して、減色後のビットプレーンの圧縮効果が高くなるように構成されている。そのため、より効率の高い画像圧縮を行なうことができる。
さらに、上の本発明に係る画像復号装置は、小領域の階調数がどれも等しいときには、一部の情報の復号をスキップするように構成した。そのため、従来と比較してさらに符号化効率の高い画像圧縮を行なうことができる。
[第1の実施の形態]
以下、本発明の第1の実施の形態である画像減色装置の説明を行なう。なお以下の説明では、第1の実施の形態の説明に限らず、理解を容易にするために具体的なデータ構造および画像の階調数などの数値例を挙げる。しかしこれらは単に説明のための例にすぎず、本発明の技術的範囲を制限するようなものであると解すべきではない。
また本明細書では、小領域または画像の階調数とは、その小領域または画像で許されている画素値の種類の数をいうものとし、実際にその小領域または画像に何種類の画素値が現われるかをいうものではないものとする。たとえばある小領域で0〜7の画素値が許されている場合には、実際には3種類の値しか画素値として現われなくても、その小領域は8値領域と考える。
図1を参照して、この画像減色装置はスキャナなどの画像入力装置301と、画像入力装置301により入力された画像データを格納するための入力画像バッファ302と、入力画像バッファ302に格納された画像データに対し、小領域ごとに適切な必要最小限の階調数に減色する適応的減色処理を行なうための適応的減色器303と、適応的減色器303の出力する減色された画像データを格納するための減色画像バッファ304と、減色画像バッファ304に格納された画像データを、256階調の画像に変換して出力するための出力画像作成器305と、出力画像作成器305の出力する256階調の画像を格納するための出力画像バッファ306と、出力画像バッファ306に格納されたデータを表示または印刷するためのディスプレイまたはプリンタからなる画像出力装置307とを含む。
画像入力装置301としてここではスキャナを想定している。しかし画像入力装置としてはスキャナに限らず他の画像入力装置、たとえばデジタルカメラ、通信により受信した画像データを格納する記憶装置など、どのようなものであってもよい。
入力画像バッファ302は、各画素のデータ以外にも、横方向の画素数、縦方向の画素数、および階調数を格納するものとする。図2に入力画像バッファ302に格納される画像データのデータ構造を示す。図2を参照してこの画像データは、横方向画素数(LX)501と、縦方向画素数(LY)502と、階調数503と、画像データ504とを含む。この例では横方向画素数501、縦方向画素数502および階調数503はいずれも4バイトの整数データであるものとする。なお以下の説明では、特に断らない限り、整数とは4バイト整数を指すものとする。また画像データ504は、横方向画素数501×縦方向画素数502の数だけの画素を含み、1画素当り1バイト(8ビット)が割当てられるものとする。画像は256階調のグレイスケール画像であると仮定する。
なお、入力画像バッファ302に格納された画像データでは、背景領域の画素値は255に近い値を、非背景領域の画素値は0に近い値をそれぞれ持つものとする。なお減色画像バッファ304および出力画像バッファ306も入力画像バッファ302と同じデータ構造を持つものとする。
出力画像作成器305は、小領域階調数バッファ617(図3)および基準画素値テーブル622(図3)を参照して、小領域ごとに減色された、減色画像バッファ304の画像を2560階調に変換して出力画像バッファ306に出力する機能を有する。
図3を参照して、図1に示される適応的減色器303は、以下に述べるさまざまな構成要素を制御して適応的減色処理を行なうためのコントローラ601を含む。適応的減色器303はさらに、小領域情報生成器602と、小領域数レジスタ603と、小領域情報バッファ604と、画像2値化器605と、2値画像バッファ606と、線抽出器607と、線本数レジスタ608と、線情報バッファ609と、文字矩形情報抽出器610と、文字矩形数レジスタ611と、文字矩形情報バッファ612と、第1カウンタ613と、文字矩形減色器614と、文字矩形階調数バッファ615と、小領域減色器616と、小領域階調数バッファ617と、線領域階調数レジスタ618と、小領域階調数検証器619と、小領域単純減色器620と、画素値変換器621と、基準画素値テーブル622とを含む。
コントローラ601は、適応的減色器303の他の構成要素の制御ならびに他の各構成要素相互間および各構成要素と適応的減色器303の外部との間のデータ通信の制御を行なうためのものである。コントローラ601は、以下に説明する適応的減色器303の各構成要素の動作に常に関与している。しかし、記載の簡略化のために、理解に差し支えがないと思われる箇所ではコントローラ601については言及しないことがある。
文字矩形階調数バッファ615および小領域階調数バッファ617はそれぞれ整数配列である。これら2つのバッファ615および617のi番目の要素をそれぞれRLB[i]、ALB[i]と書く。
小領域情報生成器602は、入力画像バッファ302に格納された画像データ(以下「原画像」と呼ぶ。)を分割するための情報を生成し、小領域の画像を小領域数レジスタ603に、各小領域の位置を含む各小領域に関する情報を小領域情報バッファ604に、それぞれ格納する機能を有する。
画像を小領域に分割する方法にはさまざまなものが考えられる。ここでは、画像を横8ピクセルおよび縦8ピクセルの正方形の小ブロックに分割する方法を用いる。
小領域情報バッファ604の構成例を図5に示す。図5を参照して、小領域情報バッファ604には、各小領域(ブロック)の左上隅のx座標およびy座標、ならびに右下隅のx座標およびy座標からなる組が、小領域の数だけ格納されている。一般には画像の横幅および縦幅は8の倍数とは限らない。そのため、画像の一部に半端な大きさのブロックができることがある。この実施の形態ではx方向の余りは、画像の左右端に横幅が8より小さなブロックを作ることにより吸収する。y方向の余りは、画像の最下端に縦幅が8より小さなブロックを作ることで吸収する。
画像2値化器605は、入力画像バッファ302に格納された画像データから2値画像を生成して、2値画像バッファ606に格納する機能を有する。画像2値化器605は、以下に述べる2値化しきい値Tを用いて原画像データを2値化する。すなわち画像2値化器605は、原画像データのうち画素値が0以上、かつしきい値T未満の画素(非背景領域の画素)には、対応する2値化画像の画素値として0を割当てる。それ以外の画素(背景領域の画素)には、対応する2値化画像の画素値として255が割当てられる。
しきい値Tを求める方法として、ここでは「大津の方法」と呼ばれるものを用いる。この「大津の方法」については、高木、下田監修「画像解析ハンドブック」、東京大学出版会、502〜504頁に解説されている。
このように、画像データバッファ302に格納されている画像データから2値化画像を生成するのは、以降の処理で背景領域と非背景領域とを区別するのを容易にするためである。
2値画像バッファ606は、1画素当り1バイトとして2値化された画像データを格納する機能を有する。
線抽出器607は、2値画像バッファ606を参照して、非背景領域から横方向および縦方向の直線を抽出してその情報を線情報バッファ609に格納する機能を有する。このように直線に関する情報を抽出する手法としては、特許第3100825号に記載のものなど、公知の技術を使用することができる。特に、この実施の形態にかかる線抽出器607は、横線および縦線を抽出する。このように抽出する直線を横線および縦線に限ったのは、従来の技術の項でも述べたとおり、縦方向または横方向の直線をなす画素について特別な処理を行なうことが、画像の劣化を防ぐ上で効果が大きいと考えられるためである。
線情報バッファ609が格納するデータ構造を、図5に示す。図5を参照して、線情報バッファ509は、線抽出器607により抽出された直線の外接長方形の左上隅X座標およびY座標ならびに右下隅X座標およびY座標を格納する。このように直線を外接長方形で近似できるのは、線抽出器607が抽出する直線が横方向および縦方向の直線であるためである。
文字矩形情報抽出器610は、2値画像バッファ606に格納された2値画像を参照して、非背景領域に属する画素からなる文字要素に外接する矩形の情報を抽出し、抽出された矩形の数を文字矩形数レジスタ611、座標情報を文字矩形情報バッファ612にそれぞれ格納する機能を有する。なおここで文字要素と呼んでいるのは、代表的には、非背景領域に属する画素がなす各連結領域である。そうした文字要素に外接する矩形を画像から抽出する技術は、たとえば特許第3058489号公報に開示されている。
文字矩形情報バッファ612のデータ構造を図6に示す。図6を参照して、文字矩形情報も、各文字要素の外接矩形の左上隅X座標およびY座標ならびに右下隅X座標およびY座標を含む。
文字矩形減色器614は、文字矩形情報抽出器610により抽出され、文字矩形情報バッファ612に格納された文字矩形につき、各矩形の最適な階調数を決定してその情報を文字矩形階調数バッファ615に格納する機能を有する。その詳細については後述する。
小領域減色器616は、各小領域のこの時点での最適な階調数を決定して、その情報を小領域階調数バッファ617に格納する機能を有する。この詳細についても後述する。
小領域階調数検証器619は、小領域階調数バッファ617の内容が整合しているかどうかを検証し、小領域階調数バッファ617の内容を書換える機能を有する。その詳細については後述する。
小領域単純減色器620は、入力画像バッファ302と小領域階調数バッファ617とを参照し、各小領域に属する各画素を減色して、減色画像バッファ304の対応する小領域に出力する機能を有する。その詳細については後述する。
基準画素値テーブル622は、各階調数に応じた画素値が参照できるテーブルである。
以下、図3に示した各構成要素を用いてコントローラ601が減色処理を行なう処理の制御構造について図4を参照して説明する。各ブロックでの処理内容の詳細については後述することとして、コントローラ601で行なわれる処理の全体の流れは図4に示されるとおりである。なおこの処理はすべてコントローラ601の制御によって行なわれるものであるが、以下の説明ではコントローラ601の制御について言及しないことがある。
まず小領域情報生成器602が、入力画像バッファ302に格納された原画像を分割するための情報を生成し、小領域の数を小領域数レジスタ603に格納する。また各小領域の位置を含む、各小領域に関する情報が小領域情報バッファ600に格納される(S701)。
次に、画像2値化器605は、入力画像バッファ302に格納された画像データから2値画像を生成し、2値画像バッファ606に格納する(S702)。続いて線抽出器607が、2値画像バッファ606を参照して、非背景領域から横方向および縦方向の直線を抽出して、その内容を線情報バッファ609に格納する(S703)。
続いて文字矩形情報抽出器610が、2値画像バッファ606を参照して、非背景領域に属する画素からなる文字要素に外接する矩形の情報を抽出し、抽出された矩形の数を文字矩形数レジスタ611、座標情報を文字矩形情報バッファ612に、それぞれ格納する(S704)。文字矩形減色器614が、各矩形の最適な階調数を決定し、その情報を文字矩形階調数バッファ615に格納する(S705)。この詳細については後述する。小領域減色器616は、各小領域のこの時点での最適な階調数を決定して、その情報を小領域階調数バッファ617に格納する(S705A)。この詳細については後述する。
コントローラ601は、文字矩形階調数バッファ615に格納されている矩形ごとの階調数の情報を参照して、小領域階調数バッファ617の内容を書換える(S706)。この詳細については後述する。コントローラ601はさらに、線情報バッファ609に格納されている線の情報を参照して、小領域階調数バッファ617の内容を書換える(S707)。この詳細についても後述する。
続いて小領域階調数検証器619が、小領域階調数バッファ617の内容の整合性がとれているかどうかを検証し、検証結果に従って小領域階調数バッファ617の内容を書換える(S708)。その詳細については後述する。さらに小領域単純減色器620が、入力画像バッファ302と小領域階調数バッファ617とを参照しながら、各小領域に属する各画素を減色して、減色画像バッファ304の対応する小領域に出力する(S709)。詳細については後述する。S709の処理が終了すると減色処理は終了である。
図4に示すS705において行なわれる処理の制御構造につき図7を参照して説明する。コントローラ601は、第1カウンタ613を0で初期化する(S1061)。カウンタ613の値を以下では「i」と呼ぶ。
文字矩形減色器614が入力画像バッファ302および文字矩形情報バッファ612を参照し、i番目の矩形に含まれる領域について、最適な階調数を決定する。決定された情報は文字矩形階調数バッファ615のi番目の要素に格納される(S1062)。文字矩形減色器614の動作については後述する。
続いてコントローラ601は第1カウンタ613の値iをインクリメントする(S1603)。第1カウンタ613の内容iと、文字矩形数レジスタ611の内容とが比較され(S1604)、等しければS704の処理を終了する。iと矩形数とが等しくなければ制御はS1602に戻る。
続いて図4に示されるS705Aの処理の詳細について図8を参照して説明する。コントローラ601は、第1カウンタ613の値iを0で初期化する(S5201)。以下、第1カウンタ613の値をiと呼ぶ。
続いて小領域減色器616が、入力画像バッファ302、小領域情報バッファ604を参照して、i番目の小領域について、原画像と、減色後の誤差とが一定範囲になるような減色階調数を、予め定めた可能な減色階調数から求める。小領域減色器616はその減色階調数を小領域階調数バッファ617に出力する(S5202)。小領域階調数バッファ617は、小領域と1対1に対応するような整数配列である。小領域減色器616の動作については後述する。
続いてコントローラ601は、第1カウンタ613の値iをインクリメントする(S5203)。コントローラ601は、第1カウンタ613の値を小領域数レジスタ603の値と比較し(S5204)、等しければ処理を終了し、等しくなければ制御をS5202に戻す。
図4に示すS706において行なわれる処理の詳細について図9を参照して説明する。まずコントローラ601は、第1カウンタ613の値iを0で初期化する(S5301)。続いてコントローラ601は、第2カウンタ616の値を0で初期化する(S5302)。以下第2カウンタ616の値をjと呼ぶ。
続いてコントローラ601は、文字矩形情報バッファ612と小領域情報バッファ604とを参照し、i番目の矩形が、j番目の小領域と重なっているかどうかを判定する(S5303)。両者が重なっていれば制御はS5304に進み、重なっていなければ制御はS5306に進む。小領域情報および矩形情報が、いずれもその左上の座標と右下の座標とで一意に定められている。したがってこのS5303のような判断はi番目の矩形と小領域との座標の比較で行なうことができる。
さらにコントローラ601は、文字矩形階調数バッファ615のi番目の要素の値と、小領域階調数バッファ617のj番目の要素の値とを比較する(S5304)。前者の方が大きければ制御はS5305に進み、そうでないときは制御はS5306に進む。
ステップS5305では、小領域階調数バッファ617のj番目の要素に、文字矩形階調数バッファ615のi番目の要素の値が代入される。
続いてS5306において、コントローラ601は第2カウンタ616の値を1だけインクリメントする(S5306)。そしてその値が小領域数レジスタ603の値と比較される(S5307)。両者が等しければ制御はS5308に進み、さもなければ制御はS5303に戻る。
ステップS5308では、コントローラ601は第1カウンタ613の値を1インクリメントする。そしてこのインクリメントされた第1カウンタ613の値を文字矩形数レジスタ611の値と比較する(S5309)。両者が等しければこの処理は終了し、等しくなければ制御はS5302に戻る。
続いて図4のS707の処理の内容について図10を参照して説明する。なおこの処理の前に、予め線の領域に使用する減色階調数が定まっており、線領域階調数レジスタ618に既に格納されているものとする。
線領域階調数レジスタ618に格納される値に特に制限はない。しかし画像から線を抽出するのは、減色時にがたつきなどの劣化が目立たないように、他の領域より大きめの階調数を割当てるのが目的である。したがって減色後の階調数としては大きめの値をとることが望ましい。
この実施の形態の装置では線領域階調数レジスタ618には「8」が格納されているものとする。これは第2減色テーブル1103および減色テーブル1603に格納されている減色後の階調数の最大値と同じである。
図10を参照して、コントローラ601は、第1カウンタ613の値iを0で初期化する(S5401)。続いて第2カウンタ616の値jを0で初期化する(S5402)。
コントローラ601は、線情報バッファ609と小領域情報バッファ604とを参照し、i番目の矩形がj番目の小領域と重なっているかどうかを判定する(S5403)。両者が重なっていれば制御はS5404に進み、重なっていなければ制御はS5406に進む。
各線の情報は、その外接矩形の左上隅の座標と右下隅の座標とで一意に定まっている。したがってS5403の判定は、i番目の矩形とj番目の線の座標の比較で容易に行なうことができる。
i番目の線とj番目の小領域とが重なっている場合、ステップS5404においてコントローラ601は、線領域階調数レジスタ618の値と小領域階調数バッファ617のj番目の要素の値とを比較する(S5405)。前者の方が大きければ制御はS5405に進み、さもなければ制御はS5406に進む。
線領域階調数レジスタ618の値の方が小領域階調数バッファ617のj番目の要素の値よりも大きければ、ステップS5405において、小領域階調数バッファ617のj番目の要素に、線領域階調数レジスタ618の値が代入される(S5405)。
続いてコントローラ601は、第2カウンタ616の値jをインクリメントし(S5406)、第2カウンタ616の値jを小領域数レジスタ613の値と比較する(S5407)。両者が等しければ制御はS5408に進み、さもなければ制御はS5403に戻る。
S5408ではコントローラ601は第1カウンタ613の値iをインクリメントする。さらにS5409において、第1カウンタ613の値iが線本数レジスタ608の値と比較される(S5409)。両者が等しければ処理は終了し、等しくなければ制御はS5402に戻る。
続いて図4に示すS709の処理の詳細につき図11を参照して説明する。コントローラ601は、第1カウンタ613の値iを0で初期化する(S5501)。
小領域単純減色器620が、入力画像バッファ302と小領域階調数バッファ617とを参照しつつ、i番目の小領域に属する各画素を減色し、減色画像バッファ304の対応する画素に出力する(S5502)。画素値変換器621は、基準画素値テーブルを参照して、i番目の小領域に対応する小領域階調数バッファ617のi番目の要素の値を参照して、基準画素値テーブル622に格納された基準画素値のうち最も近いものに小領域の各画素の値を減色する。
続いてコントローラ601は第1カウンタ613の値iをインクリメントし(S5503)、第1カウンタ613の値iと小領域数レジスタ603の値とを比較する(S5504)。両者が等しければ処理は終了し、さもなければ制御はS5502に戻る。
図12に、図3に示される文字矩形減色器614の構成を示す。図12を参照して、文字矩形減色器614は、コントローラ1101と、第1減色テーブル1102と、第2減色テーブル1103と、可能階調数レジスタ1104と、線抽出器1105と、線本数レジスタ1106と、線情報バッファ1107と、第1カウンタ1108と、第2カウンタ1109と、累積ヒストグラム生成器1110と、累積ヒストグラムバッファ1111と、テンポラリー線階調数バッファ1112とを含む。
コントローラ1101は、文字矩形減色器614の他の構成要素の制御、ならびに他の各構成要素相互間および各構成要素と文字矩形減色器614の外部との間のデータ通信の制御を行なうためのものである。コントローラ1101は、文字矩形減色器614の他の各構成要素の動作に常に関与している。しかし、説明の簡略化のために、以下においては理解に差し支えないと思われる範囲でコントローラ1101の関与については言及しないことがある。
第1減色テーブル1102は、文字矩形減色器614の出力として可能な階調数が予め格納されている整数配列である。文字矩形減色器614の出力は1以上であり、かつ原画像の階調数以下であることが要請される。原画像の階調数は、既に述べたように本実施の形態では256である。したがって文字矩形減色器614の出力は1以上256以下である。ただし、データ容量削減の見地からは、十分な画質が保てる範囲でなるべく小さな値であることが望ましい。
本実施の形態では、文字矩形減色器614の出力は1、2、4、8の4種類であるものとする。そしてこれらの値がこの順で第1減色テーブル1102に格納されているものとする。すなわち、第1減色テーブル1102は4つの要素を持つ。以後、第1減色テーブル1102のj番目の要素をS[j]と表わすことがある。この記法を用いて第1減色テーブル1102の要素を表わせば、S[0]=1、S[1]=2、S[2]=4、およびS[3]=8である。
文字矩形減色器614の出力として可能な階調数は予め決定されており、可能階調数レジスタ1104に格納されている。この実施の形態では、可能階調数レジスタ1104に格納されている値は4である。以後の説明では、説明を一般化するために可能階調数レジスタ1104に格納されている値をvとして説明する。本実施の形態はv=4となる場合である。
第2減色テーブル1100は、2次元配列である。その(j,k)要素は、j階調に減色するときに、0から数えてk番目(ただしj>k)の階調に減色される、最小の原画像の画素値が予め格納されているものとする。以後、第2減色テーブル1103の(j,k)要素をT[j][k]と書く。
原画像の画素値から減色後の画素値を決定するアルゴリズムは以下のようなものである。前提として、基準となる画素値(以下「基準画素値」と呼ぶ。)は以下のようにして決定される。まず、256階調を構成する画素値0〜255のうち、両端の0、255をそれぞれ基準画素値とする。残りの(減色後階調数−2)個の基準画素値を、両端の0および255を含めて、その間隔が均等になるように0〜255の間に配置する。各基準画素値に、小さな基準画素値から順に0、1、2、…と番号を付ける。そして基準画素値の分布が決定される。階調数が2値、4値、8値に対応する基準画素値の分布をそれぞれ図13、図14および図15に示す。
図13を参照して、2階調の場合には、基準画素値は上記の説明からわかるように0と255とからなる。原画像の画素値が0と255とのいずれに近いかによって、減色後の画素は0か1かの値をとる。
図14を参照して、4階調の場合には、0と255以外に85および170が基準画素値となる。原画像の画素が0、85、170、255のいずれに最も近いかによって、減色後の画素は0〜3のいずれかの値をとる。
8階調の場合には、図15に示されるように、0と255以外に、36、73、109、146、182、219も基準画素値となる。図13および図14の場合と同様に原画像の画素値がこれら基準画素値のいずれに最も近いかによって減色後の画素値に0〜7のいずれかの値が割り振られる。
なお、減色後の階調数、原画像の階調数および画素値によっては、上下の基準画素値との差の絶対値が同じになるような画素(上下の基準画素値のちょうど中間に位置する画素)が出現する可能性がある。そのような場合には、本実施の形態では常に低い方の基準画素値を採用するものとする。もちろんこの場合の画素値の決定方法は、矛盾がない範囲で予め取決めをしておけばどのような方法を採用してもよい。たとえば二つの基準画素値のうち、常に高い方の基準画素値を採用するなどの方法をとることもできる。
このアルゴリズムの下では、原画像の階調数より小さなjについて、j階調に減色するときに、減色後の画素値が0から数えてk番目の画素値になるような最小の画素値が必ず存在する。ただしここでいう最小の画素値とは、実際の入力画像からとるのではなく、入力としてあり得る画素値すべてを想定した場合の、言わば計算上の値である。たとえば画像を2階調に減色するときには、0以上127以下の値を持つ画素は0番目の基準画素値0に近いと判定される。したがってT[2][0]、すなわち第2減色テーブル1103の(2,0)番目の要素は0となる。また128以上255以下の値を持つ画素は1番目の基準画素値255に近いと判定される。したがって第2減色テーブル1103のT[2][1]は128となる。
同様に4階調に減少する場合を考えると、0以上42以下の画素値は0番目の基準画素値0に、43以上127以下の画素値は1番目の基準画素値85に、128以上212以下の画素は2番目の基準画素値170に、213以上255以下の画素は3番目の基準画素値255に、それぞれ最も近いと判定される。したがってT[4][0]=0、T[4][1]=43、T[4][2]=128、およびT[4][3]=213となる。
同様の計算を8階調について行なえばT[4][0]〜T[4][7]の要素はそれぞれ0、18、55、91、128、164、200および237となる。もちろんここに挙げた数値はあくまでも一例であって本発明がこれに限定されるわけではない。
以上の説明から、第2減色テーブル1103は2次元配列ではあるが、そこには不要な要素が多く含まれていることがわかる。すなわち、第1減色テーブル1102の要素となっていないようなjに対応するT[j][k]要素は不要である。またj,kに対応するT[j][k]も不要である。本実施の形態では、このような不要な添え字の組合せに対応する第2減色テーブル1103の要素T[j]には0が格納されているものとする。
図16を参照して、文字矩形減色器614のコントローラ1101が各構成要素を制御する処理の制御構造について説明する。以下の説明でも、コントローラ1101は常に関与しているが、説明の簡略化のためにコントローラ1101には言及しないことがある。
まず、線抽出器1105が、2値画像バッファ606を参照して、現在処理対象となっている矩形領域から縦方向または横方向の直線を抽出して、その情報を線情報バッファ1107に格納する(S1201)。なお図3に示す線抽出器607と図12に示す線抽出器1105との機能は似ており、そのため同じモジュールでこれらを兼用させることができる。ただし、線抽出器1105で取出すことが意図されているのは、一般的な意味での線ではなく、図17および図18に例が示されているような、文字中の横棒または縦棒である。そのため線抽出器1105が動作する際のパラメータ(線とみなすための最低の長さなど)は、図3に示す線抽出器607が動作する際のパラメータとは一般的には異なったものである。本実施の形態では、線抽出器1105では、図3の線抽出器607で用いた方法、すなわち特許第3100825号公報に開示されているような技術を用いる。
再び図16を参照して、コントローラ1101は、第1カウンタ1108の値iを0に初期化する(S1202)。以下iは第1カウンタ1108の値を意味するものとする。
累積ヒストグラム生成器1110が、i番目の線の両側の帯状の領域の、画素値の累積ヒストグラムを生成し累積ヒストグラムバッファ1111に格納する(S1203)。ここで累積ヒストグラムと呼ぶのは、i番目の線の両側の帯状領域について、各画素値ごとに、その画素値未満の画素数を集計したものである。累積ヒストグラムバッファ1111は、原画像で可能な画素値と1対1対応する整数配列である。すなわちこの例では原画像が256階調なので、累積ヒストグラムバッファ1111も256の要素からなる。以下、累積ヒストグラムバッファ1111のm番目の要素をH[m]と表わすことがある。
要するに、H[m]とは、処理領域中で、m未満の画素値を持つ画素の数である。したがってH[0]は、その領域の画素値分布に無関係に必ず0になる。画像の領域を指定すれば、そこに含まれる全画素からなる集合が1つ定まり、それについてこのような累積ヒストグラムを作成できるのは明らかである。当業者であれば累積ヒストグラム生成器1110の構成および動作を容易に理解し、実現させることができるであろう。
図19〜図21を参照して、この累積ヒストグラムについて説明する。図19を参照して、入力文字から抽出された横線1501の上側に帯状の領域1502を、下側に帯状の領域1503を、それぞれ想定する。帯状領域としては、ここでは線を上下に2ドットずつ(縦線の場合には左右に2ドットずつ)膨らませた領域から、当該線を除いた領域とする。
図20は、図19と同じ入力画像を8値化した後の例である。この例では、7以外の画素値をとる非背景領域1504が得られるが、これは図19に示される横線1501より太っている。これは、直線を抽出する際に用いられる2値化しきい値が、8値で非背景領域となるような、8値に減色したときに7以外の画素値となるような画素値の基準画素値237より通常かなり低いこと、またそのようにして得られた非背景領域から直線を抽出した時点でヒゲなどが一般に取れることなどが理由である。
図21には、同じ入力画像を4値化した例を示す。図21に示される例では、3以外の画素値をとる非背景領域1505は、図20に示される非背景領域1504に比べて痩せている。図19に示される帯状領域1502および1503において、このように減色階調数を8(図20)から4(図21)に変化させたとき、8値減色時には非背景領域に属し、4値減色時には背景領域になる画素が多いときに、8階調の減色では劣化はそれほどないが、4階調では劣化が激しいとみなすのである。
再び図16を参照してコントローラ1101は、第2カウンタ1109の値jをv−1という値に初期化する(S1204)。現在の例ではj=4−1=3となる。
続いてコントローラ1101は、第1減色テーブル1102、第2減色テーブル1103、可能階調数レジスタ1104、第2カウンタ1109、累積ヒストグラムバッファ1111を参照して、H[T[S[j]][S[j]−1]]の値を取出し、H[T[S[v]][S[v]−1]]と比較する(S1205)。両者の間に大きな差がなければ制御はS1206に進み、さもなければ第2カウンタ1109の値jをインクリメントし(S1208)、S1209に制御は進む。
ここで行なわれる比較の物理的意味について説明する。T[S[v]][S[v]−1]は、最大の減色後階調数S[v]の下での、背景領域となるような画素値の減色前の最小値を示す。S[v]は、最大の減色階調数、S[v]−1は、そのような減色の下での、減色後の最大画素値を示しているからである。同様に、T[S[j]][S[j]−1]は、j番目の減色階調数S[j]の下での、背景領域となるような画素値の減色前の最小値を示す。
一般にH[m]は、m未満の画素値を持つ画素値の数なので、H[T[S[v]][S[v]−1]]は、最大の階調数への減色の下では、背景領域にならない画素の数を示す。同様にH[T[S[j]][S[j]−1]]は、j番目の減色階調数での下で、背景領域にならない画素の数を示す。
この2つの数に大きな差があるということは、S[v]階調への減色では背景領域でなかったのに、j<vとなるようなあるjについて、S[j]階調への減色では背景領域になってしまう画素が多くあるということを意味する。このような判定を行なっている対象は、文字中の縦、横方向の直線の両側の帯領域である。したがってこれは、S[j]階調への減色は、S[v]階調への減色に比べて、文字を構成する線の劣化が著しいということを意味する。つまり、減色によるがたつきまたは痩せ細りが目立つということである。そこで、このような場合にはステップS1205において、その領域についてはこれ以上の減色はできないと判断し、それ以上の減色を止めるようにしたのである。
再び図16を参照して、ステップS1206では、コントローラ1101は第2カウンタ1109の値jをデクリメントし、jと0とを比較する(S1207)。jが0より小さければ制御はS1208に進み、さもなければ制御はS1205に戻る。
第2カウンタ1109の値jが0より小さい場合、コントローラ1101は、第2カウンタ1109の値jをインクリメントし(S1208)、さらにテンポラリー線階調数バッファ1112のi番目の要素(以下TLB[i])にS[j]を代入する(S1209)。
続いてコントローラ1101は第1カウンタ1108の値iをインクリメントし(S1210)、第1カウンタ1108の値iと線本数レジスタ1106の値とを比較する(S1211)。両者が等しければ制御はS1212に進み、さもなければ制御はS1203に戻る。
第1カウンタ1108の値iと線本数レジスタ1106の値とが等しい場合、次に行なわれる処理はテンポラリー線階調数バッファ1112の最小の要素を取出す処理である。そのためにコントローラ1101は第2カウンタ1109の値jに、TLB[0]の値を代入する(S1212)。コントローラ1101は、第1カウンタ1108の値iに1を代入する(S1213)。続いてコントローラ1101は、jとTLB[i](すなわちS[i])とを比較する(S1214)。jの方が大きければ制御はS1215に進み、さもなければ制御はS1216に進む。jの方が大きい場合には、第2カウンタ1109の値jにTLB[i]を代入する(S1215)。
続いてコントローラ1101は、第1カウンタ1108の値iをインクリメントし(S1216)、第1カウンタ1108の値iと線本数レジスタ1106の値とを比較する(S1217)。両者が等しければ制御はS1218に進み、さもなければ制御はS1214に戻る。
第1カウンタ1108の値iと線本数レジスタ1106の値とが等しければ、コントローラ1101は文字矩形減色器614の出力として第2カウンタ1109の値を出力し(S1218)、処理を終了する。
次に、図8に示したS5202で行なわれる小領域iの階調数決定処理を行なう小領域減色器616について説明する。図22を参照して、小領域減色器616は、コントローラ1701と、可能階調数レジスタ1702と、減色テーブル1703と、第1カウンタ1704と、画素値変換器1705と、テンポラリー減色画像バッファ1706と、基準画素値テーブル1707とを含む。
コントローラ1701は、小領域減色器616の他の各構成要素の制御および他の各構成要素間または各構成要素と小領域減色器616の外部との間のデータ通信の制御を行なうためのものである。コントローラ1701は小領域減色器616の他の各構成要素の動作に常に関与している。しかし、説明の簡略化のために、理解に差し支えない範囲でコントローラ1701の動作については以下で言及しないことがある。
減色テーブル1703は、図12に示す第2減色テーブル1103と同じ構造および内容を持っている。また、可能階調数レジスタ1702は、小領域減色器616の出力として可能な階調数を予め格納するためのものである。この階調数は予め決定されている。この例では、可能階調数レジスタ1702に格納されている値は、図12に示す可能階調数レジスタ1104に格納されているものと同じ値「4」である。なお以下の説明では、可能階調数レジスタ1104に4以外の値が格納されている場合についても一般化するために、可能階調数レジスタ1702の値としてvを用いる。
画素値変換器1705は、基準画素値テーブル1707に格納された基準画素値に基づいて、画素値を256階調からS[i]階調に変換する機能を有する。テンポラリー減色画像バッファ1706は、画素値変換器1705によって減色された後の画像を格納するためのものである。
基準画素値テーブル1707は、図12に示す第2減色テーブル1103と似た2次元配列である。ただし、その値は基準画素値である。以下基準画素値テーブル1707の2次元テーブルの(ij)成分をU[i][j]と書く。
コントローラ1701によって行なわれる処理の制御構造について図23を参照して説明する。まずコントローラ1701は、第1カウンタ1704の値iをv−1に初期化する(S1801)。以下iは第1カウンタ1704の値を意味するものとする。続いてコントローラ1701は、入力画像バッファ302に格納されている原画像の、iおよび小領域情報バッファ604によって特定される処理領域を、画素値変換器1705を用いてS[i]階調に減色し、テンポラリー減色画像バッファ1706に格納する(S1802)。
画素値変換器1705による、256階調からS[i]階調への変換方法として、ここでは図12に示す第2減色テーブル1103に関する説明で述べたものと同様の手法を用いる。すなわち、基準画素値を元の色空間に均等に配置し、原画像の画素値がどの基準画素値に近いかによって、減色後の画素値が決定される。このための基準画素値として基準画素値テーブル1707に格納されている値が使用される。
原画像が256階調であるという条件の下で、4階調に対応する部分について基準画素値テーブル1707の値を示すと次のとおりである。すなわち、U[4][0]=0、U[4][1]=85、U[4][2]=170、U[4][3]=255である。
なお基準画素値テーブル1707は2次元配列ではあるが、不要な要素を多く含んでいること、および省略し得る要素を含んでいることについては、図12に示す第2減色テーブル1003について既に述べたのと同様である。
後の説明に備えて、ここで8階調について同様に基準画素値テーブル1707の値を示しておく。すなわちこの場合U[8][0]〜U[8][7]はそれぞれ、0、36、73、109、146、182、219および255である。
再び図23を参照して、コントローラ1701は、現在処理中の小領域に対応する、入力画像バッファ301の小領域の画素と、テンポラリー減色画像バッファ1706の小領域の画素の値との比較を行なう(S1803)。両者の差が大きければ原画像に比べて減色後の画像が大きく劣化しているものと判断して制御はS1805に進む。そうでない場合は制御はS1804に進む。
S1803で行なわれる処理は、基本的には、対応する各画素同士の差の平均値を算出して、予め定めておいたしきい値と比較する処理である。しかし、テンポラリー減色画像バッファ1706の内容は、S[i]階調に減色されている。そのため、このままでは256階調の原画像と意味のある比較が行なえない。そこで本実施の形態では、次のような方法を用いる。
テンポラリー減色画像バッファ1706から取出した1つの画素の画素値をwとする。この画素値wをU[S[i]][w]に変換する。つまり画素値wを、減色に用いられた基準画素値に変換する。このように変換された値を、テンポラリー減色画像バッファ1706に格納されている画像の対応する画素と比較するのである。
S1803で行なわれる判定の結果、入力画像バッファ301の小領域の画素と、テンポラリー減色画像バッファ1706の小領域の画素の値との差が予め定めたしきい値より小さい場合、コントローラ1701は、第1カウンタ1704の値iをデクリメントする(S1804)。そしてこの第1カウンタ1704の値iと0とを比較し(S1805)、iが0より小さければ制御はS1806に進み、そうでなければ制御はS1802に戻る。
S1803で画像が大きく劣化したと判定された場合、およびS1805で第1カウンタ1704の値iが0より小さいと判定された場合、コントローラ1701は、小領域減色器616の出力としてS[i+1]を出力して処理を終了する(S1806)。
図24を参照して、図3に示す小領域階調数検証器619は、コントローラ2001と、基準階調数レジスタ2002と、画素値変換器2003と、基準画素値テーブル2004と、減色画像バッファ2005と、第1カウンタ2006と、第2カウンタ2007と、ラベルバッファ2008と、ラベル付替え器2009と、小領域ラベルバッファ2010と、第3カウンタ2011とを含む。
コントローラ2001は、小領域階調数検証器619の他の各構成要素の制御および他の各構成要素相互間または各構成要素と小領域階調数検証器619の外部との間のデータ通信の制御を行なうためのものである。コントローラ2001は、小領域階調数検証器619の他の各構成要素の動作に常に関与している。しかしここでは、説明の簡略化のために、理解に差し支えないと思われる範囲でコントローラ2001の関与については言及しないことがある。
減色画像バッファ2005は、入力画像バッファ302(図1参照)と同じ横幅および縦幅を有し、かつ基準階調数レジスタ2002で与えられる階調数を持つ画像バッファである。ラベルバッファ2008は、減色画像バッファ2005の各画素と1対1で対応する1次元整数配列である。ここで、減色画像バッファ2005の各画素は、ラスタスキャンに従った順序で、ラベルバッファ2008の各要素と対応するものとする。ラベルバッファ2008のi番目の要素をPB[i]と書く。
小領域ラベルバッファ2010は、以下の規則で小領域と1対1対応する1次元整数配列である。小領域ラベルバッファ2010のk番目の要素をALB[k]と書く。横方向にj番目、縦方向にi番目の小領域に対応する小領域ラベルバッファ2010の要素は次の式で与えられる。
ALB[i×横方向の小領域数+j]
以下、小領域階調数検証器619の機能を実現するために、コントローラ2001が行なう処理を図25を参照して説明する。コントローラ2001は、入力画像バッファ302の各画素を、基準階調数レジスタ2002に格納されている階調数に画素値変換器2003を用いて減色し、減色画像バッファ2005に格納する(S2101)。ここでは、画素値変換器2003は、図22に示す画素値変換器1705と全く同一の動作を行なうものとする。また画素値変換器2003が参照する基準画素値テーブル2004も、図22に示す基準画素値テーブル1707と全く同内容であるものとする。基準階調数レジスタ2002に格納されている階調数は、予め定められた値であり、画質が良好となる階調数が想定されている。ここでは、基準階調数レジスタ2002には、図1に示す線領域階調数レジスタ618の格納内容と同様、「8」が格納されているものとする。
続いてコントローラ2001は、ラベルバッファ2008を初期化する(S2102)。この初期化の方法については後述する。
コントローラ2001はさらに、ラベルバッファ2000の値を生成する(S2103)。ラベルバッファ2008の値は、減色画像バッファ2005に格納された画像の、いわゆる8連結の意味で隣接した画素のうち、同じ画素値を持った画素は共通の値を持つように生成される。この方法の詳細については後述する。
続いてコントローラ2001は、小領域ラベルバッファ2010を初期化する(S2104)。この方法の詳細についても後述する。
さらにコントローラ2001は、小領域ラベルバッファ2010の値を生成する(S2105)。小領域ラベルバッファ2010の値は、ラベルバッファ2000の値が同じ画素を持つような2つの小領域には対応する小領域ラベルバッファ2010の要素に同じ値が入るように生成される。この方法の詳細については後述する。
図25に示すS2102で行なわれる処理について図26を参照してより詳細に説明する。ラベルバッファの初期化処理ではコントローラ2001は、第1カウンタ2006の値iを0に初期化する(S2201)。以下第1カウンタ2006の値をiとする。
続いてコントローラ2001は、ラベルバッファ2000のLB[i]の値をiと初期化する(S2202)。さらにコントローラ2001は、第1カウンタ2006の値iをインクリメントし(S2203)、この第1カウンタ2006の値iを、減色画像バッファ2005の画素数(=横幅×縦幅)と比較する(S2204)。両者が等しければ処理は終了し、さもなければ制御はS2202に戻る。
図25のS2103において行なわれるラベルバッファの値を生成する処理の詳細につき図27を参照して説明する。図27を参照して、コントローラ2001は、第1カウンタ2006の値iを0に初期化する(S2301)。以下第1カウンタ2006の値をiと呼ぶ。続いてコントローラ2001は、第2カウンタ2007の値jを0に初期化する(S2302)。以下、第2カウンタ2007の値をjとする。
以下の説明では、減色画像バッファ2005(図24参照)において座標(j,i)に対応する画素を「着目画素」と呼ぶ。コントローラ2001は、着目画素と、その左上の(j−1,i−1)という座標を持つ画素とが同じ画素値を持っているかどうかを検査する(S2303)。両者が同じ画素値を持っていれば制御はS2304に、そうでなければ制御はS2305に進む。
S2304では、ラベル付け替え器2009(図24参照)を用いて、ラベルバッファ2008(図24参照)の書換を行なう(S2304)。ここでは、ラベルバッファ2008の書換は以下のようにして行なわれる。すなわち、着目画素と、その左上の画素それぞれに対応するラベルバッファ2008の要素LB[k],LB[m]と、それまでにその両者のいずれかと同じ値を持っていた代表パターンラベルバッファ2008のすべての要素とに、共通の値min(LB[k],LB[m])を代入する。ここでk、mはそれぞれ以下の式によって得られる整数である。
k=i×画像の横幅+j
m=(i−1)×画像の横幅+(j−1)
着目画素の左上の画素が存在しない場合には、S2303の条件は常に成り立たないものとする。すなわちj<1またはi<1の場合には、S2304の処理は行なわれない。
次に、着目画素の左上の画素の代わりに、真上の画素についてS2305においてS2303と同じ判断を行なう。すなわち、コントローラ2001は、着目画素と、その真上の(j,i−1)という座標を持つ画素とが同じ画素値を持っているかどうかを検査する(S2305)。もし両者が同じ画素値を持っていれば制御はS2306に、さもなければ制御はS2307に進む。
ステップS2306では、ラベル付け替え器2009を用いて、ラベルバッファ2008の書換が行なわれる。ここではラベルバッファ2008の書換は以下のようにして行なわれる。すなわち、着目画素と、その真上の画素それぞれに対応するラベルバッファ2008の要素LB[k]、LB[m]と、それまでにその両者のいずれかと同じ値を持っていた代表パターンラベルバッファ2008のすべての要素とに共通の値min(LB[k],LB[m])を代入する。ただし、k、mはそれぞれ以下の式によって得られる値である。
k=i×画像の横幅+j
m=(i−1)×画像の横幅+j
着目画素の真上の画素が存在しない場合、すなわちi<1の場合には、S2305における条件は常に成立しないと考える。
次に、S2307において、着目画素の真上の画素の代わりに、右上の画素についてS2303、S2305と同じ判断を行なう。すなわち、コントローラ2001は、着目画素と、その右上の(j+1,i−1)という座標を持つ画素とが同じ画素値を持っているかどうかを検査して(ステップS2307)、同じ画素値を持っていれば制御はS2308に、さもなければ制御はS2309に進む。
S2308では、ラベル付け替え器2009を用いて、ラベルバッファ2008の書換を行なう(S2308)。ここでは、ラベルバッファ2008の書換は以下のようにして行なわれる。すなわち、着目画素と、その右上の画素それぞれに対応するラベルバッファ2008の要素LB[k]、LB[m]と、それまでにその両者のいずれかと同じ値を持っていた代表パターンラベルバッファ2008のすべての要素とに共通の値min(LB[k]、LB[m])を代入する。ただしここでk、mはそれぞれ以下の式に従って定められる整数である。
k=i×画像の横幅+j
m=(i−1)×画像の横幅+(j+1)
ここでも、着目画素の右上の画素が存在しない場合、すなわちj=画像の横幅−1またはi<1の場合には、ステップS2307の条件は常に成り立たないものとする。
続いて、S2309において、着目画素の右上の画素の代わりに、左隣の画素についてS2307と同じ判断を行なう。すなわち、コントローラ2001は、着目画素と、その左隣の(j−1,i)という座標を持つ画素とが同じ画素値を持っているかどうかを検査する(S2309)。もし両者が同じ画素値を持っていれば制御はS2310に、さもなければ制御はS2311に進む。
S2310では、ラベル付け替え器2009を用いて、ラベルバッファ2008の書換処理を行なう(S2310)。ラベルバッファ2008の書換は次のようにして行なわれる。すなわち、着目画素と、その左隣の画素それぞれに対応するラベルバッファ2008の要素LB[k]、LB[m]と、それまでにその両者のいずれかと同じ値を持っていた代表パターンラベルバッファ2008のすべての要素とに、共通の値min(LB[k]、LB[m])を代入する。ただしk、mはそれぞれ以下の式に従って計算される整数である。
k=i×画像の横幅+j
m=i×画像の横幅+(j−1)
ここでは、着目画素の左隣の画素が存在しない場合、すなわちj<1の場合には、S2113の条件は常に成り立たないものとする。
S2310の処理の後、S2311ではコントローラ2001は、代入カウンタ2007の値jをインクリメントする。コントローラ2001はさらに代入カウンタ2007の値jを画像の横幅と比較し(S2312)、両者が等しければ制御はS2313に進み、さもなければ制御はS2303に戻る。
S2312における判断の結果がYESであれば、コントローラ2001は、第1カウンタ2006の値iをインクリメントする(S2313)。そして、この第1カウンタ2006の値iが画像の縦幅と等しいか否かについての判定を行なう(S2314)。両者が等しければ処理を終了し、さもなければ制御はS2302に戻る。
以上の処理では、各着目画素についてその左上、真上、右上および左隣についてのみ連結関係が検査されている。右隣、左下、真下、右下についての連結関係は検査していない。しかしそれらに位置する画素との間の隣接関係については、そのそれぞれの隣接画素が着目画素となったときに処理されるので、図27に示される処理によって8連結の意味での隣接画素同士の連結関係はすべて検査されるのである。
この図27に示される処理が終了した時点では、ラベルバッファ2008(図24参照)には、減色画像バッファ2005(図24)に格納されている画像を、値が同じで、隣接した画素に同じラベルをつけるという規則でラベリングした結果が入っている。ラベルバッファ2008のこの時点での内容を、以下、「減色連結領域画像」と呼ぶ。またそれに含まれる連結領域をそれぞれ「減色連結領域」と呼ぶ。
続いて、図25のS2104に示される小領域ラベルバッファを初期化する処理について図28を参照して詳細に説明する。まずコントローラ2001は、図24に示される第1カウンタ2006の値iを0に初期化する(S2401)。以下第1カウンタ2006の値をiと呼ぶ。続いてコントローラ2001は、小領域ラベルバッファ210の内容を、ALB[i]=iとなるように初期化する(S2402)。
続いてコントローラ2001は、第1カウンタ2006の値iをインクリメントする(S2403)。そしてこの第1カウンタ2006の値iは、図3に示される小領域数レジスタ6003の値と比較され(S2404)、両者が等しければ処理は終了し等しくなければ制御はS2402に戻る。
次に、図25のS2105において行なわれる小領域ラベルバッファの値を生成する処理の詳細につき図29を参照して説明する。ここで行なわれるのは、小領域階調数バッファ617(図3)の内容が、減色連結領域画像に対して整合性がとれているかどうかを判定するための処理である。
ここでいう「整合性」とは以下のような意味である。ある減色連結領域が、複数の小領域にわたっている場合を考える。そのような小領域が小領域階調数バッファ617の内容によって異なる階調数に減色された場合を考える。そうした場合、この階調数の違いによって、小領域の境界に、本来なかった段差ができる可能性がある。これは既に発明が解決しようとする課題の項において図59および図60を用いて既に説明した。ここで注意すべきは、こうした現象がもとの画像自体から生じたものではなく、あくまでも画像をブロック状の小領域に分割したことと、各小領域の階調数が異なっていることとから生じたものである。
小領域階調数バッファ617の内容に従って単純に減色すると、このような事態が起きる場合がある。そこでそうした場合に小領域階調数バッファ617の内容は整合性がとれていないとみなすのである。
このような事態は、すべての小領域の階調数を基準階調数レジスタ2002の値と揃えればもちろん回避することはできる。しかし、そのような方式をとると、情報量が少ない小領域、たとえば図59の右側で図形が存在しないような領域に、本来必要のない余分な階調数を割当てる必要が生じてしまう。したがってそうしたやり方をとることはできない。
ここでの処理の目的は、同じ連結領域に属する画素は、小領域ごとの減色後も、多くの場合に同じ画素値を持つようにすることである。なお、異なる連結領域に属する画素については、図59で示されるような減色画像バッファ2005に格納されている画像で同じ画素値を持っている場合でも、小領域ごとの減色後も常に同じ画素値を持たせるようなことは意図されていない。たとえば、図59では、同じ画素値を持っていた矢印状の領域102と星状の領域103とは、図60に示される例では異なる画素値を有している。
以下の処理では、同じ減色連結領域を共有した小領域に共通のラベルがつけられるものとする。ただしここでは、減色画像バッファで0、7のいずれかの画素値を持つ連結領域については、共有されていても無視する。というのは、画素値変換器2003で使用した減色アルゴリズムのもとでは、このような両端の画素値は、256階調から4階調などのより低い階調数への減色では、やはり両端の画素値に移り、したがって256階調に復元して表示する際の画素値には影響がないためである。8階調に減色したときの0、7以外の画素値についてはこのようなことはいえないのは上に述べたとおりである。
図29を参照して、まずコントローラ2001は、第1カウンタ2006の値iを0に初期化する(S2501)。以下第1カウンタ2006の値をiで表わすものとする。続いてS2502においてコントローラ2001は、第2カウンタ2007の値jを0に初期化する。以下第2カウンタ2007の値をjと呼ぶ。
このループでは、iは小領域の縦方向の番号を表わし、jは小領域の横方向の番号を表わす。以下の説明でX1およびY1を次のように定める。
X1=(画像の横幅+7)/8
Y1=(画像の縦幅+7)/8
容易にわかるように、X1、Y1はそれぞれ、横方向の小領域数および縦方向の小領域数を表わす。またkは次の式で与えられる整数である。
k=i×X1
以下の説明では、横から数えてj番目、縦から数えてi番目の小領域を小領域(j,i)と表わすものとする。コントローラ2001は、第2カウンタ2007の値jとX1−1とを比較する(S2503)。両者が等しければ制御はS2513に進み、さもなければ制御はS2504に進む。
S2504ではコントローラ2001は、小領域(j,i)と、小領域(j+1,i)の境界のつながりを検査する(ステップS2504)。この2つの小領域が減色連結領域を共有していれば制御はS2505に、さもなければ制御はS2506に進む。ここでの判定方法については後述する。
S2505では、ラベル付け替え器2009を用いて小領域ラベルバッファ2010の書換処理が行なわれる。ここでは書換えは以下のようにして行なわれる。すなわち、小領域(j,i)と小領域(j+1,i)とのそれぞれに対応する小領域ラベルバッファ2008の要素ALB[k]、ALB[k+1]と、それまでにその両者のいずれかと同じ値を持っていた代表パターンラベルバッファ2008のすべての要素に対して、共通の値min(ALB[k]、LB[k+1])が代入される。
続いてコントローラ2001は、第1カウンタ2006の値iとY1−1とを比較し(S2506)、両者が等しければ制御はS2513に進み、さもなければ制御はS2507に進む。これは、小領域の縦方向の番号iが縦方向の小領域数Y1−1に等しいということは、それより下の小領域が存在しないということであるためである。
S2507では、コントローラ2001は、小領域(j,i)と、小領域(j+1,i+1)との境界のつながりを検査する(S2507)。この2つの小領域が減色連結領域を共有していれば制御はS2508に進み、さもなければ制御はS2509に進む。この判定方法については後述する。
S2508では、ラベル付け替え器2009を用いて、小領域ラベルバッファ2010の書換処理が行なわれる。ここでの書換は以下のように行なわれる。すなわち、小領域(j,i)と、小領域(j+1,i+1)とのそれぞれに対応する小領域ラベルバッファ2010の要素ALB[k]、ALB[k+X1+1]と、それまでにその両者のいずれかと同じ値を持っていた小領域ラベルバッファ2010のすべての要素とに、共通の値min(ALB[k]、LB[k+X1+1])を代入する。
S2509ではコントローラ2001は、小領域(j,i)と、小領域(j,i+1)との境界のつながりを検査し、この2つの小領域が減色連結領域を共有していれば制御はS2508に進み、さもなければ制御はS2510に進む。この判定方法については後述する。
S2510ではラベル付け替え器2009を用いて、小領域ラベルバッファ2010のラベルの書換処理が行なわれる。ここでは、小領域(j,i)と小領域(j,i+1)とのそれぞれに対応する小領域ラベルバッファ2010のすべての要素とに、共通の値min(ALB[k]、LB[k+X1])を代入する。
S2511では、コントローラ2001は第2カウンタ2007の値jをインクリメントする。さらにコントローラ2001は第2カウンタ2007の値jとX1とを比較し(S2512)、両者が等しければ制御はS2513に進み、さもなければ制御はS2503に戻る。
S2513では、コントローラ2001は第1カウンタ2006の値iをインクリメントする。コントローラ2001はさらに、第1カウンタ2006の値iとY1とを比較し(S2514)、両者が等しければ処理を終了し、両者が等しくなければ制御はS2502に戻る。
図29のS2504において行なわれる判定処理の詳細につき、図30を参照して説明する。まずコントローラ2001は、第3カウンタ2011の値mを0に初期化する(S2601)。以下mとは、第3カウンタ2011の値を意味するものとする。また以下の説明においては、小領域(j,i)の左右端の列の、上から数えてm番目の画素を着目画素と呼ぶ。
コントローラ2001は、着目画素が0と等しいか否かを検査し(S2602)、両者が等しければ制御はS2607に進み、さもなければ制御はS2603に進む。S2603ではコントローラ2001は、着目画素が7と等しいか否かを検査し、等しければ制御はS2607に進み、さもなければ制御はS2604に進む。
S2604ではコントローラ2001は、着目画素と、その右隣の画素のそれぞれに対応する、ラベルバッファ2008の要素が同じ値を持つかどうかを判定する。すなわちコントローラ2001は、着目画素と、小領域(j+1,i)の最左端の列の、上から数えてm番目の画素のそれぞれ対応する、ラベルバッファ2008の要素が同じ値を持つかどうかを判定する。両者が同じ値を持っていれば制御はS2609に進み、さもなければ制御はS2605に進む。
S2605ではコントローラ2001は、着目画素と、その右上の画素、つまり小領域(j+1,i)の最左端の列の、上から数えてm−1番目の画素のそれぞれに対応する、ラベルバッファ2008の要素が同じ値を持つかどうかを判定する(S2605)。両者が同じ値を持っていれば制御はS2609に進み、さもなければ制御はS2606に進む。ただしm<1の場合は、S2605の条件は成り立たないものとする。
S2606ではコントローラ2001は、着目画素と、その右下の画素、つまり小領域(j+1,i)の最左端の列の、上から数えてm+1番目の画素のそれぞれに対応する、ラベルバッファ2008の要素が同じ値を持つかどうかを判定する。両者が同じ値を持っていれば制御はS2609に進み、さもなければ制御はS2607に進む。ただしここでmが小領域の高さと等しいときには、S2606の条件は成立しないものとする。
S2607ではコントローラ2001は、第3カウンタ2011の値mをインクリメントする。さらにコントローラ2001は、第3カウンタ2011の値mと小領域の縦幅とを比較し(S2608)、等しければ制御はS2610に進み、さもなければ制御はS2602に戻る。
S2604、S2605およびS2606における判定結果がYESであればコントローラ2001は、2領域が減色連結領域を共有していると判断して(S2609)、処理は終了する。コントローラ2001は、S2608における判断結果がYESの場合には、2領域が減色連結領域を共有していないと判断し(S2610)、処理を終了する。
S2604〜S2606で用いられる条件の意味について以下に説明する。これらの判断では、2つの画素に対応するラベルバッファ2008の要素が同じ値を持っているかどうかについての判定が行なわれている。両方の要素が同じ値を持っているということは、2つの画素が、同じ減色連結領域に属していることを示す。さらに、そのような2つの画素が異なる小領域に属していることは、それぞれが属する小領域が1つの減色連結領域を共有していることを示すのである。したがってS2604〜S2606における判定結果がYESであればS2609のように、2領域が減色連結領域を共有していると判断することができるのである。
続いて、図29のS2507において行なわれる判定処理の詳細につき図31を参照して説明する。ここでの判定は、小領域(j,i)と、その右下の小領域(j+1,i+1)とが減色連結領域を共有しているか否か、ついてのものである。
これら2001はまず、着目画素が0と等しいか否かを検査する(S2701)。両者が等しければ制御はS2705に進み、さもなければ制御はS2702に進む。
S2702ではコントローラ2001は、着目画素が7と等しいか否かを検査する(S2702)。両者が等しければ制御はS2705に進み、さもなければ制御はS2703に進む。
S2703ではコントローラ2001は、小領域(j,i)の右下角の画素2901(以下「着目画素」と呼ぶ。)と、小領域(j+1,i+1)の左上角の画素のそれぞれに対応する、ラベルバッファ2008の要素が同じ値を持つかどうかを判定する。もし両者が同じ値を持っていれば制御はS2704に進み、さもなければ制御はS2705に進む。
図32に、着目画素2901、小領域(j+1,i+1)の左上角の画素2902、ブロック境界2903および2904をそれぞれ図示した。なお、図32に示されているのが全体のごく一部であることはもちろんである。
S2704ではコントローラ2001は、2領域が減色連結領域を共有していると判断して処理を終了する。一方S2705ではコントローラ2001は、2領域が減色連結領域を共有していないと判断して処理を終了する。
S2703で用いられる条件は、S2604〜S2606で用いられた条件と同じであり、したがってそれらと同様の意味を有する。
図29のS2510において行なわれる小領域ラベルの書換処理の詳細につき、図33を参照して説明する。まずコントローラ2001は、第3カウンタ2011の値mを0に初期化する(S2801)。以下mは第3カウンタ2011の値を意味するものとする。また、以下の説明では小領域(j,i)の最下端のラインの、左から数えてm番目の画素を着目画素と呼ぶ。
コントローラ2001は、着目画素が0と等しいか否かを検査する(S2802)。両者が等しければ制御はS2807に進み、さもなければ制御はS2803に進む。同様にコントローラ2001は、S2803において、着目画素が7と等しいか否かを検査する(S2803)。両者が等しければ制御はS2807に進み、さもなければ制御はS2804に進む。
S2804ではコントローラ2001は、着目画素と、その真下の画素、つまり小領域(j,i+1)の最上端のラインの、左から数えてm番目の画素のそれぞれに対応する、ラベルバッファ2008の要素が同じ値を持つかどうかを判定する。もし両者が同じ値を持っていれば制御はS2809に進み、さもなければ制御はS2805に進む。
S2805ではコントローラ2001は、着目画素と、その左下の画素、つまり小領域(j,i+1)の最上端のラインの、左から数えてm−1番目の画素それぞれに対応する、ラベルバッファ2008の要素が同じ値を持つかどうかを判定する。同じ値を持っていれば制御はS2809に進み、さもなければ制御はS2806に進む。このとき、m<1の場合は、S2805の条件は成立しないものとする。
S2806ではコントローラ2001は、着目画素と、その右下の画素、つまり小領域(j,i+1)の最上端のラインの、左から数えてm+1番目の画素それぞれに対応する、ラベルバッファ2008の要素が同じ値を持つかどうかを判定する。もし両者が同じ値を持っていれば制御はS2809に進み、さもなければ制御はS2807に進む。ただし、mが小領域の横幅と等しいときには、S2806の条件は成立しないものとする。
S2804〜S2806で用いられる条件の意味については、S2604〜S2606において用いられた条件と同様である。
S2807ではコントローラ2001は、第3カウンタ2011の値mをインクリメントする。さらにコントローラ2001は、第3カウンタ2011の値mと小領域の横幅とを比較し(S2808)、両者が等しければ制御はS2810に進み、さもなければ制御はS2802に戻る。
S2804、S2805またはS2806の判定結果がYESである場合には、コントローラ2001はS2809で2領域が減色連結領域を共有していると判定し、処理を終了する。一方S2808での判定がYESとなった場合にはコントローラ2001は、S2810で2領域が減色連結領域を共有していないと判定し処理を終了する。
以上の第1の実施の形態の説明では、入力画像として256階調のグレイスケール画像を仮定し、1画素当たり1バイト(8ビット)を割当てるものとした。しかし本発明はそのような特定の値に限定されるわけではない。本実施の形態は他の階調数の画像に対しても実現可能であり、またグレイスケール画像に限らずカラー画像であってもよい。カラー画像の場合には、上に述べた減色をカラー成分ごとに行なうことができる。
また上に述べた第1の実施の形態では、画像を小領域に分割する際に、横8ピクセル、縦8ピクセルのブロックに分割している。しかし小領域の分割例がこのようなものに限られるわけではないことはいうまでもない。この実施の形態と異なる分割方法をとった場合、図5に示されるような小領域情報バッファ604の構造も当然それに合わせて変わってくるものである。
第1の実施の形態で述べたように画像を一定の大きさの格子に分割して小領域とする場合、実は縦のブロックの大きさ、横のブロックの大きさ以外は小領域情報バッファ604に格納する必要はない。ただしこの場合、標準的なブロックの大きさを格納しておく必要がある。この場合には、左端、下端の半端な大きさのブロックの大きさの有無および存在した場合の縦方向および横方向のサイズは、縦のブロックの大きさ、横のブロックの大きさと、画像全体の横幅および縦幅から算出し得るからである。また格子状の分割の場合には、横方向の小領域数、縦方向の小領域数がそれぞれ定義できるのであるから、それらの情報を小領域情報バッファ604に格納することも考えられる。
原画像を格子状に分割している場合について説明した上のものと同じアルゴリズムが、全く異なる形状の小領域に元画像を分割している場合にも若干の修正をすることだけで対応できるのは明らかである。したがってその詳細についてはここでは特に述べないこととする。
上で述べた第1の実施の形態において、画像2値化器605が画像を2値化する際のしきい値Tを求める方法として、「大津の方法」と呼ばれるものを用いている。このしきい値Tを求める方法としてはこれ以外の方法も種々存在している。それらの方法については、高木、下田監修「画像解析ハンドブック」、東京大学出版会、502〜504頁に解説されているのでそれらを参照されたい。
なお、2値画像の格納方法として、ここでは、非背景領域と背景領域との値として0および255の組合せを用いた。しかし2値画像の格納方法がそのような値の組合せのみに限定されるわけではないことは明らかである。すなわち、2値画像の格納には、1画素当たり1ビットで足りることを利用して、2値画像バッファ606の容量を削減することも可能であるし、可逆圧縮技術を適用して2値画像バッファ606の容量を削減することも可能である。いずれにせよ上述した画像符号化装置の処理結果に何ら影響を及ぼすことではない。
また上に説明した第1の実施の形態の装置では、線抽出器607が抽出する直線を、横線または縦線に限っている。しかしそれ以外の線についても線抽出器607で抽出することにしても全く差し支えはない。そのような画像からの一般の線要素の抽出方法については、前掲の「画像解析ハンドブック」、564〜573頁に解説されているのでそちらを参照されたい。なお、これらの手法は一般に、2値画像ではなく多値画像をその処理対象としている。したがってそうした手法を採用する場合には、線抽出器607が2値画像バッファ606を参照する代わりに、画像データバッファ302を参照するように変更すればよい。
また上で述べた第1の実施の形態においては、抽出される直線が横線または縦線に限られている。そのため線情報バッファ609のデータ構造も図5に示されるようなものとなっている。しかし直線として、斜め線まで許容した場合にも同様のデータ構造で線情報を格納することが可能である。ただしこの場合、斜めの曲線をその外接平行四辺形で近似することとする。この場合のデータ構造の一例を図34に示す。図34に示す例では、斜め線の外接平行四辺形の4つの頂点の座標がすべて線情報バッファに格納される。
曲線の表わし方としてはこの他にも種々考えられる。たとえば(中心線の始点座標、中心の長さ情報または中心線の終点情報、および直線の太さ情報)の組合せ、または(中心線の始点座標、中心線の長さ情報、中心線の角度の情報および直線の太さ情報)の組合せで表わすことも考えられる。いずれにしても図5、図34に示したようなデータ構造と類似のデータ構造の必要な情報を格納することが可能である。
今まで述べてきた直線の表わし方は、いわゆる「ベクトルデータ」としての表わし方であった。しかし直線の表わし方はこのような「ベクトルデータ」としての表わし方に限定されるわけではない。抽出された直線を、画像情報として表わす方法もある。この場合の線情報バッファ609のデータ構造の例としては、画像データバッファ302の構造と同じものが使用できる。この場合線の領域に含まれる画像には1、それ以外の画素には0という画素値を持たせればよい。このような表わし方は、それが最終のデータとして用いられる場合には、必要となる記憶領域の観点から、ベクトル化に分類される手法に比して効率はよくない。しかし、中間的な情報として用いる必要がある場合には、曲線以外の形状の線の情報も表現しやすいという利点がある。
上に述べた説明では、たとえば第2減色テーブル1103の2次元配列が、不要な要素を多く含んでいることについて説明した。そしてその場合、不要な添え字の組合せに対応する第2減色テーブル1103の要素T[j]には0が格納されているものとした。しかしもちろん、不要な添え字の組合せに対応する要素には0以外の任意の値を用いてもよい。また、第2減色テーブル1103を単なる2次元配列とは異なるデータ構造で実現することにより、このような不要な添え字の組合せに対応する要素を排除することができる。その場合には必要なメモリ容量を小さくすることが可能となる。さらに、第1の実施の形態で第2減色テーブル1103の要素T[j][0]はjと無関係に必ず0となる。したがってこれら要素は最初から第2減色テーブル1103において省略することもできる。
さらにまた上で述べた第1の実施の形態の装置では、図12に示す線情報バッファ1107のデータ構造として、図3に示した線情報バッファ609と同様のものを用いた。しかしもちろん、線情報バッファ1107のデータ構造を線情報バッファ609のデータ構造と異なるものにしてもよいことはもちろんである。
また上の第1の実施の形態の装置では、S1205の判定は、S[v]階調への減色に比べて、S[j−1]階調では背景領域になってしまう画素がしきい値以上あるか否か、ということを基準としてこれ以上の減色はできないと判断している。しかしこの判定の条件は上で説明したものに限定されるわけではない。たとえば、予め定められたしきい値で定まる範囲に2つの数の差の絶対値が収まっているか否かを判定の条件としてもよい。または、2つの数の比率が、1に近い予め定められた範囲内にあるか否かという条件を判定条件としてもよい。その他にも、さまざまなバリエーションを考えることができる。
なお上の第1の実施の形態の装置では、線情報バッファ609のデータ構造に関連して、各線の情報が個別に取出せるものとして説明をした。しかし、仮に線情報バッファ609がそのような構造となっていなくても、各画素がいずれかの線に含まれているか否かが判定できる限りにおいて、S5401〜S5409(図10)の処理を以下の処理に置き換えることで同じ目的を達成することができる。以下に述べる方法はたとえば、線情報バッファ609が画像データを格納するためのバッファとなっている場合に有効である。
以下の説明では、線情報バッファ609が、画像データバッファ302に格納されてれているのと同じサイズを持ち、線に含まれる画素は1、それ以外の画素は0という画素値を持った画像データを格納しているものとする。
図35を参照して、コントローラ601は、まず第1カウンタ613の値iを0で初期化する(S5601)。以下iは第1カウンタ613の値を意味するものとする。続いてコントローラ601は、第2カウンタ616の値jを0で初期化する(S5602)。以下jは第2のカウンタ616の値を意味するものとする。
続いてS5603ではコントローラ601は、線情報バッファ609の横方向にj番目、縦方向にi番目の要素が1であるか否かを判定する(S5603)。この画素の値が1であるときは制御S5604に進み、さもなければ制御はS5606に進む。
S5604ではコントローラ601は、第1カウンタ613の値i、第2カウンタ6016の値j、および小領域情報バッファ604の内容を参照して、現在処理中の画素が含まれる小領域に対応する小領域階調数バッファ617の要素を取出し(以下これをk番目の要素とする)、線領域階調数レジスタ618の値と比較する。そして後者の方が大きければ制御はS5605に、さもなければ制御はS5606に進む。
S5605ではコントローラ601は、小領域階調数バッファ617のk番目の要素に、線領域階調数レジスタ618の値を代入する。続いてS5606ではコントローラ601は、第2カウンタ616の値jをインクリメントし、続いて第2カウンタ616の値jを画像の横幅と比較する(S5607)。両者が等しければ制御はS5608に進み、さもなければ制御はS5603に戻る。
S5608ではコントローラ601は、第1カウンタ613の値iをインクリメントする。続いてS5609でコントローラ601は、第1カウンタ613の値iを画像の縦幅と比較する。そして両者が等しければ処理を終了し、さもなければ制御はS5602に戻る。
以上のようにすることにより、線情報バッファ609の内容が画像データである場合にも線に関する情報を取出すことができる。
これまでの説明では、線抽出器607、文字矩形情報抽出器610は、2値画像が必要な場合には、2値画像バッファ606を参照することとしていた。しかし本実施の形態の装置はそのような実現方法のみに限定されるわけではない。たとえば、画像2値化器605として、しきい値だけを求めるようなものを用いることもできる。この場合には、線抽出器607、文字矩形情報抽出器610では、画像2値化器605によって求められたしきい値と、画像データバッファ302とを参照することによって、必要があるたびに背景領域に属する画素と非背景領域に属する画素とを識別することができる。そのような処理をすることによって、上で述べた第1の実施の形態における処理の同等の処理が行なえることは明らかである。
また上の第1の実施の形態の装置では、着目画素と隣接する画素との間の連結関係を検査する際に、いわゆる8連結の意味での隣接画素を検査している。しかし本発明は8連結の意味での隣接画素に限定されるわけではない。たとえば隣接画素の定義として4連結の意味での隣接画素を採用することもできる。この場合には、各着目画素について、真上および左隣の画素を検査すればよい。この場合の処理は8連結の意味で上に説明した処理を簡略化すればよいことは明らかである。
今、上で説明した第1の実施の形態では、たとえば図25のS2105では、小領域階調数バッファ617の内容が、減色連結領域画像に対して整合性がとれているかどうかを判定していた。そして上の実施の形態では、ある減色連結領域が複数の小領域にわたっている場合に、そのような小領域が、小領域階調数バッファ617の内容によって異なる階調数に減色される場合があるという事態を避けるためのものであった。もちろんこのような事態は、すべての小領域の階調数を基準階調数レジスタ2002の値と揃えれば回避することができる。しかし、そのような形をとると、情報量が少ない小領域、たとえば図59の右側で図形が存在しないような領域に、本来必要のない余分な階調数を割当てる必要が生じてしまうという弊害が生ずる。
また別の方法として、256階調への復元の際に、低い階調数を256階調に復元したときに得られる画素値は、高い階調数を256階調に復元したときに得られる画素値のサブセットにする、という方法も考えられる。これはたとえば、4階調を256階調に復元する際の画素値を0、73、182、255とする、あるいは逆に、8階調を256階調に復元する際の画素値を0、36、85、109、146、170、219、255とする、などの方法である。いずれの方法にせよ256階調に復元する際の画素値が不均等に分布することになり、好ましくない。
こうした問題を回避するための別の方法として、1つの減色連結領域がまたがっている小領域はすべて同じ階調数になるように、小領域階調数バッファ617の各要素を調整する処理を行なうことが挙げられる。
なお、同じ減色連結領域に属する2つの画素も、減色連結領域を作成するのに用いた階調数と異なる階調数への減色を行なうと、2つの画素の減色後の画素値は一致しないことがある。
たとえば、原画像で200〜236の画素値を持つ画素を考える。これら画素は、すべて8階調への減色では219という基準画素値に近いと判定され、6という画素値に減色されるであろう。したがって、原画像で、200〜236の範囲の画素値を持つ2つの画素は8階調への減色では、同一の減色連結領域に属することがあり得る。しかし、この2つの画素の一方が212以下の画素値を、もう一方が213以上の画素値を持つ場合には、4階調への減色では、前者は170という基準画素値に近いと判定されるために減色後の画素値は2、後者は255という基準画素値に近いと判定されるために減色後の画素値は3となる。したがって、4階調への減色後のこの2つの画素の画素値は一致しない。
しかしながら、このような結果は原画像にもともと存在した画素値の大小関係に起因するものである。つまり原画像に本来存在しない小領域の境界に沿った段差ができるような、図60に示されるような結果とは全く異なるものである。また、小領域に減色器616と組合せた形態では、小領域単位では原画像と大きく差があるような減色結果は起こり得ない。そのため各小領域の境界の問題以外では、減色によって視覚的に大きな問題が生じるおそれがないと考えられる。
なお、図30に示したS2604の条件判定では、ラベルバッファ2008に格納された、減色連結領域の情報を用いた。しかしこの場合、ラベルバッファ2008を用いずに、原色画像バッファ2005の情報を用いて判定を行なっても同じことである。ただしこの場合、S2604の処理は以下のように変更される。
すなわち、コントローラ2001は、減色画像バッファ2005の、着目画素と、その右隣の画素、つまり小領域(j,i)の最左端の列の、上から数えてm番目の画素が同じ値を持つかどうかを判定する。もし両者が同じ値を持っていれば制御はS2609に進み、さもなければ制御はS2605に進む。類似した処理を行なうステップS2605、S2703などについても同様である。
このような形態でも、ラベルバッファ2008を用いたのと同様の結果が得られるのは、次のような理由による。すなわち、減色画像バッファ2005上で、2つの隣接する画素が同じ画素値を持っているということは、ラベルバッファ2008の対応する要素が同じ値を持っているということを意味しているということであり、したがってS2604で行なわれている判定は、実は上に説明した代替案における判定方法と同じ効果を持つためである。
以上のように本実施の形態による画像減色装置は、小領域の間の繋がりを考慮して、小領域の減色後の階調数を決定する。そのため、色階調数の画素値の配置に制限を加えずに、視覚的に大きな影響を持つ小領域ごとの違いによる段差が起こりにくい画像の減色処理を行なうことができる。
また本実施の形態に係る画像減色装置は、小領域中に線領域がある場合、小領域の減色階調数を大きくするような制御を行なう。そのため、がたつきなど線領域の劣化が目立たないように画像の減色処理を行なうことができる。
本実施の形態に係る画像減色装置は、小領域中に含まれる文字の縦線、横線の周囲の過度の減色による劣化を実際に検出し、その結果に応じて適切な階調数での減色を行なう。無理な減色は行なわないので、特に文字に含まれる線部分の劣化が目立たないように画像の減色処理を行なうことができる。
[第2の実施の形態]
図36を参照して、本発明の第2の実施の形態に係る画像符号化装置は、画像入力装置3001、入力画像バッファ3002、適応的減色器3003、減色画像バッファ3004、画像符号化器3005、および符号化画像バッファ3006を含む。画像入力装置3001、入力画像バッファ3002、適応的減色器3003および減色画像バッファ3004はそれぞれ、第1の実施の形態で説明した画像入力装置301、入力画像バッファ3002、適応的減色器303および減色画像バッファ304と全く同じ構成および動作を持つ。したがってここではそれらについての詳細な説明は繰返さない。
画像符号化器3005は、減色画像バッファ3004、小領域階調数バッファ617および小領域数レジスタ603を参照しながら、画像を符号化して符号化画像バッファ3006に格納する機能を有する。
符号化画像バッファ3006に格納された符号化画像のフォーマットとしては、図37に示されたものを仮定する。なお、この第2の実施の形態の説明においても、具体的なデータ構造、数値例は説明のための例に過ぎず、本発明の技術的範囲を制限するようなものではない。
図37を参照して、符号化画像バッファ3006に格納された符号化画像は、画像の横ピクセル数3101、画像の縦ピクセル数3102、小領域数(AC)3103、各小領域の階調数の圧縮データのサイズ(SAC)3104、各小領域の階調数の圧縮データのサイズ3105、各小領域左上隅X座標の圧縮データのサイズ(SASX)3106、各小領域の左上隅X座標の圧縮データ3007、各小領域左上隅Y座標の圧縮データのサイズ(SASY)3108、各小領域左上隅Y座標の圧縮データ3109、各小領域右下隅座標の圧縮データのサイズ(SAEX)3110、各小領域の右下隅X座標の圧縮データ3011、各小領域右下隅Y座標の圧縮データのサイズ(SAEY)3112、各小領域右下隅Y座標の圧縮データ3113、ビットプレーン数(NP)3114、0番目のビットプレーンの圧縮データのサイズSPS[0]3115、0番目のビットプレーンの圧縮データの3116、…、(NP−1)番目のビットプレーンの圧縮データのサイズSPS[NP−1]3117、および(NP−1)番目のビットプレーンの圧縮データ3118を含む。
図37に示されるデータのうちデータ3101〜3104、3106、3108、3110、3112、3114、3115、3117はいずれも4バイトの整数である。
図38を参照して、画像符号化器3005は、コントローラ3201、整数配列可逆圧縮器3102、テンポラリー整数配列バッファ3103、ビットプレーン分割器3204、ビットプレーンバッファ3205、ビットプレーン分割規則テーブル3206、画像可逆圧縮器3207、ビットプレーン数レジスタ3208、第1カウンタ3209およびテンポラリー小領域情報バッファ3210を含む。
コントローラ3201は、画像符号化器3005の他の各構成要素の制御および他の各構成要素間の、または各構成要素と画像符号化器3005の外部との間のデータ通信の制御を行なうためのものである。コントローラ3201は画像符号化器3005内の他の各構成要素の動作に常に関与している。しかし、説明を簡略化するために、理解に差し支えない範囲でコントローラ3201の関与については以下の説明では言及しないことがある。
コントローラ3201は、図39に示されるような制御構造を有する処理を行なうことにより上記した画像符号化器の機能を実現する。すなわち、コントローラ3201はまず、入力画像バッファ3001から画像の横幅を取出し、符号化画像バッファ3006の画像横幅のフィールド3101に書込む(S3301)。さらにコントローラ3201は、入力画像バッファ3001から画像の縦幅を取出し、符号化画像バッファ3006の、画像縦幅のフィールド3102に書込む(S3302)。さらにコントローラ3201は、小領域レジスタ603の内容を符号化画像バッファ3006の小領域数のフィールド3103に書込む(S3303)。
以後の説明では、小領域に対して、対応する小領域階調数バッファ617の要素が示している値を、その小領域階調数と呼ぶ。また、小領域階調数バッファ617のi番目の要素ALB[i]と表現する。
コントローラ3201は、小領域階調数バッファ617の要素ALB[]がすべて等しいか否かを判定する(S3304)。これらがすべて等しければ制御はS3305に進み、さもなければ制御はS3307に進む。
S3305では、コントローラ3201は、小領域情報バッファ604の0番目の小領域の情報として、画像全体を1つの小領域とした小領域情報を書込む。続いてS3306ではコントローラ3201は、小領域数レジスタ603に1を設定する。
S3304〜S3306の処理の意味は以下のようなものである。小領域の階調数がどれも同じであるときは、画像を小領域に分割する意味がない。したがってそのような場合には、画像全体を1つの小領域とすることで、処理を高速化することができる。この際、特別なフラグなどを用いずに小領域数が1であるという特殊なケースとして符号化データ上に表現することで、復号時には例外処理が不要になるという利点もある。
S3307では整数配列可逆圧縮器3102が、小領域階調数バッファ617の、先頭から小領域数レジスタ603の値が示す個数の要素を可逆圧縮し、圧縮データの長さとともにそれぞれ符号化画像バッファ3006がフィールド3005、3004に格納する。
ここでは、整数配列可逆圧縮器3102が整数配列を圧縮する際の圧縮方式としては、LZ77方式を想定する。LZ77方式については、たとえば植松、「文書データ圧縮アルゴリズム入門」(CQ出版社)131〜141頁に詳しく記載されている。LZ77方式については周知の方式であるので、ここではその詳細な説明は繰返さない。なおここで採用する可逆圧縮方式がLZ77に限定されるわけではないことはもちろんである。
S3308では、コントローラ3201は、小領域情報バッファ604の、各小領域の右上隅X座標に対応する要素を先頭から小領域数レジスタ603が示す個数だけ読取り、テンポラリー整数配列バッファ3103に格納する。続いて整数配列可逆圧縮器3102はテンポラリー整数配列バッファ3103の内容を可逆圧縮し、その圧縮データの長さとともにそれぞれ符号化画像バッファ3006のフィールド3107、3106に格納する(S3309)。
さらにコントローラ3201は、小領域情報バッファ604の、各小領域の右上隅Y座標に対応する要素を先頭から小領域数レジスタ603が示す個数だけ読取り、テンポラリー整数配列バッファ3103に格納する(S3310)。続いてS3311で整数配列可逆圧縮器3102は、テンポラリー整数配列バッファ3103の内容を可逆圧縮し、その圧縮データの長さとともにそれぞれ符号化画像バッファ3006のフィールド3109、3108に格納する。
S3312ではコントローラ3201は、小領域情報バッファ604の、各小領域左上隅X座標に対応する要素を先頭から小領域数レジスタ603が示す個数だけ読取り、テンポラリー整数配列バッファ3103に格納する。S3313では、整数配列可逆圧縮器3102は、テンポラリー整数配列バッファ3103の内容を、可逆圧縮し、その圧縮データの長さとともにそれぞれ符号化画像バッファ3006のフィールド3111、3110に格納する。
S3314では、コントローラ3201は、小領域情報バッファ604の、各小領域の左下隅Y座標に対応する要素を先頭から小領域数レジスタ603が示す個数だけ読取り、テンポラリー整数配列バッファ3103に格納する。S3315で整数配列可逆圧縮器3102は、テンポラリー整数配列バッファ3103の内容を可逆圧縮し、その圧縮データの長さとともにそれぞれ符号化画像バッファ3006のフィールド3113、3112に格納する。
S3316でビットプレーン分割器3204は、減色画像バッファ3004に格納された画像を各小領域ごとにビットプレーンに分割し、ビットプレーンバッファ3205に格納する。S3317では、コントローラ3201は、符号化されるビットプレーンの数を符号化画像バッファ3006のビットプレーン数のフィールド3113に書込む。この例の場合には、3がフィールド3113に書込まれる。この後画像可逆圧縮器3207が、ビットプレーンバッファ3205の内容をプレーンごとに圧縮し(S3318)処理を終了する。
図39のS3304の処理の詳細について図40を参照して説明する。まずS3401でコントローラ3201は、第1カウンタ3209を1に初期化する。以下の説明ではiは第1カウンタ3209の値を意味する。続くS3402でコントローラ3201はALB[0]とALB[i]とを比較する(S3402)。両者が等しければ制御はS3403に、等しくなければ制御はS3406に進む。
S3403では、コントローラ3201は、第1カウンタ3209の値iをインクリメントする。続いてS3404においてコントローラ3201は、第1カウンタ3209の値iを小領域数レジスタ603の内容と比較する(S3404)。両者が等しければ制御はS3405に進み、さもなければ制御はS3402に戻る。
S3406ではコントローラ3201は、小領域階調数バッファ617の要素がすべて一致していないと判定して処理を終了する。一方S3405では、コントローラ3201は、小領域階調数バッファ617の要素がすべて等しいと判定して処理を終了する。
図39に示したS3316の処理の詳細について図41を参照して説明する。S3501において、コントローラ3201は、第1カウンタ3209を0に初期化する(S3501)。
S3502においてビットプレーン分割器3204は、小領域情報バッファ604から、i番目の小領域の位置情報を読出してテンポラリー小領域情報バッファ3210にコピーする。ここでは、テンポラリー小領域情報バッファ3210は、小領域の右上隅のX座標およびY座標、ならびに右上隅のX座標およびY座標を格納できる4つ組の整数とする。続いてS3503でビットプレーン分割器3204は、ビットプレーン分割規則テーブル3206、テンポラリー小領域情報バッファ3210を参照し、i番目の小領域をビットプレーンに分割し、ビットプレーンバッファ3205の対応する領域に書込む。ここで行なわれるビットプレーンへの分割の規則は、ビットプレーン分割規則テーブル3206で与えられる。その値の定め方については後述する。
S3504でコントローラ3201は第1カウンタ3209の値iをインクリメントする。続いてコントローラ3201は、S3505において第1カウンタ3209の値iと小領域数レジスタ603の値とを比較する。もし両者が等しければ処理は終了する。さもなければ制御はS3502に戻る。
図39のS3318の処理の詳細について図42を参照して説明する。コントローラ3201は、最初に第1カウンタ3209の値iを0に初期化する(S5001)。以下iは第1カウンタ3209の値を意味するものとする。
続いて画像可逆圧縮器3207は、ビットプレーンバッファ3205のi番目のプレーンのデータを可逆圧縮し、圧縮データの長さとともに符号化画像バッファ3006に書込む(S5002)。2値画像の可逆圧縮の手法としては、ここではJBIG(Joint Bi-level Image Group)を仮定する。したがって画像可逆圧縮器3207の出力はJBIGデータとなる。なおJBIGについては、たとえば画像電子学会誌第20巻第1号に詳しい。またJBIG方式については既に広く使われている方式である。したがってここではその詳細な説明は行なわない。なおまたここで2値画像の圧縮方式としてどのような方法を用いるかは問題ではなく、JBIG以外の方法であってもよい。
続いてS5003においてコントローラ3201は、第1カウンタ3209の値iをインクリメントする。さらにコントローラ3201は、第1カウンタ3209の値iをビットプレーン数レジスタ3208と比較する(S5004)。両者が等しければ処理は終了し、さもなければ制御はS5002に戻る。
図38に示すビットプレーンバッファ3205は、出力画像バッファ3006と等しいデータ構造およびサイズを持つバッファを3プレーン分集めたものである。後に説明するように、ビットプレーンバッファ3205の各プレーンのデータは2値画像である。したがって通常行なわれているように、1画素あたり1ビットを格納することなどにより、さらに効率的にデータを格納するようにしてもよい。なおビットプレーンバッファ3205の各プレーンには、最上位プレーンから0、1、2と番号が付けられているものとする。
ビットプレーンバッファ3205が3プレーンからなるのは、小領域階調数バッファ617で示される小領域階調数の最大が8であり、8階調画像は3プレーンで表わされるためである。したがって小領域階調数バッファ617の内容によっては、プレーン数を変更する必要が生ずる。なおビットプレーン数レジスタ3208に、この最大のプレーン数の情報が予め格納されているものとする。
図38に示すビットプレーン分割規則テーブル3206は、2次元整数配列となっている。そのインデックスは、小領域階調数0〜8と画素値0〜7とである。ビットプレーン分割規則テーブル3206によって、画素値は、小領域の階調数によって異なった変換を受けてから、2進表現の各桁の値によって適切なビットプレーンに転換される。
ビットプレーン分割規則テーブル3206のインデックスの1つである小領域階調数の範囲を0〜8としたのは、最大の階調数として8を仮定しているためである。また、画素値の範囲を0〜7としたのは、最大の画素値が最大の階調数−1となるためである。プレーン番号の範囲を0〜2としたのは、プレーン数が3であるためである。このような範囲は、ここに挙げたパラメータが変更されれば適宜変更されるべきものである。
なおここで述べたビットプレーン分割規則テーブル3206のデータ構造は、説明をわかりやすくするためにある程度冗長な構造としたものである。たとえば、小領域階調数として2、4、8以外には、対応する要素は不要である。また、小領域階調数≦画素値となるような組合せは存在しない。さらに効率の高いデータ構造を考えることは当然可能であるが、ここでは理解を容易とするために上記したようなある程度の冗長さを含んだものを用いる。不要なビットプレーン分割規則テーブル3206の要素については、特に説明しない限り0が格納されているものとする。実際にはどのような値を設定してもそれらの値は使用されないので処理結果には影響しない。
以下、ビットプレーン分割規則テーブル3206の各要素の値の定め方について説明する。最も簡単な方法は、図43に示すように、画素値を2進法で表わし、各桁の0/1をそのまま各プレーンに対応させる方法である。この方法に対応するビットプレーン分割規則テーブル3206の構造は以下のとおりである。すなわち、ビットプレーン分割規則テーブル3206は、図43に示す第1列をインデックスの1つである画素値としたとき、もう片方のインデックスの値にかかわらず、図43の第2列に示されている対応する値が読出せるような構造とする。たとえば小領域階調数にかかわらず、画素値5に対応するプレーン番号0、1、2それぞれに対応するビットプレーン分割規則テーブル3206の要素は5となり、同じく画素値6に対応する要素は6となる。
図43の3列目以降は、ビットプレーンバッファ3205への展開後の値を説明する目的で示したものである。したがってビットプレーン分割規則テーブル3206には実際にはこれらの値は現われない。これは後に説明する図44および図45についても同様である。
このようなビットプレーン分割規則テーブル3206の値の定め方を用いても、本発明の第2の実施の形態は動作する。しかしここでは、ビットプレーン分割規則テーブル3206の内容として以下の規則で定められるものを用いる。すなわち、小領域階調数が8である要素については図43で、小領域階調数が4である要素については図44で、小領域階調数が2である要素については図45で与えられるものを用いる。
このように定めるのは、特にテキスト画像またはそれに類する画像の効率的な符号化を目的としてのことである。テキスト画像の場合には、広い面積を背景領域が占めることが多い。その中でも、2値で表現できる小領域は特に背景領域が広い範囲を占める画像であると考えられる。すなわち、小領域階調数が異なっても、大半の小領域で、小領域階調数が2の小領域では1、小領域階調数が4の小領域では3、小領域階調数が8の領域では7と、画素が最も大きな値を持った領域、すなわち背景領域が大半を占めることが、少なくともテキスト画像では多いと考えられる。
ところが、このように異なる小領域階調数を持つ小領域からなる画像を、図43に示されている方法で小領域階調数にかかわりなくビットプレーンに展開すると、同じ背景領域でも各ビットプレーンの値が異なることがある。たとえば背景領域は、小領域階調数が8の小領域ではすべてのビットプレーンが1、小領域階調数が4の小領域では第1ビットプレーンは0、その他のビットプレーンでは1、小領域階調数が2の小領域では第3ビットプレーンは1、その他のビットプレーンは0となる。
そのため、各ビットプレーンは、小領域階調数が異なる小領域ごとに、0と1とが混在したものになる。これは、第1の実施の形態で説明したような、表示時に起こる問題ではないが、第2の実施の形態のように、小領域ごとに適応的に階調数を変化させる技術を画像圧縮技術と組合せる場合に、圧縮効率を低下させるという問題として現われる。
このような状況を改善するために、画素値の復元には、減色後の画素値だけでなく、各小領域の小領域階調数を用いることができることを利用して圧縮効率を高める。そのために、上に述べたように小領域階調数によってビットプレーンへの展開規則を変更するのである。したがって、各小領域の階調数の異なるものに対してビットプレーン分割規則を別々に持たせ、階調数の情報を用いてビットプレーンの圧縮率を向上させるように、減色後のビットプレーンの値の連続性を高めることができる。これが本実施の形態の装置における技術的に重要な点の1つである。
これを比較的単純な例を参考にして説明する。図46には、減色前の入力画像を示す。この画像は3901〜3906の小領域に分割されている。そして小領域3901、3902、3904、3905にまたがって文字画像3907が存在している。
この例では、減色後に小領域3901、3902、3904、3905の階調数は8値と判定され、小領域3903、3906の階調数が2値と判定されているものとする。これは文字3907の存在から十分あり得ることである。また背景領域は8値領域では画素値が7、2値領域では画素値が1となっており、文字3907は画素値0を持っているものとする。
図46に示した例では、図43に示した分割方法を用いると、2値では0、1としてビットプレーンに展開される。そのために、2値領域の最上位プレーン(0番目のプレーン)は常に0となる。これを図47に示した。このため、最上位プレーンでは、小領域によって背景領域でも値が異なっており、値の分布の偏りを利用して圧縮を行なうエントロピー圧縮には不利である。
このような場合に、図44に示された方法で2値領域の値を変換することが考えられる。この場合には画素値として0または7としてビットプレーンに展開される。そのために2値領域の最上位プレーン(0番目のプレーン)は、2値でも背景領域では1となる。これを図48に示した。このため、小領域ごとに異なる階調数が混在していたとしても、それによって圧縮効率を低下させることが少ない。
図36、図37で定められるビットプレーン分割規則テーブル3206とは別の例として、小領域階調数が4である小領域に対しては図49に示されるものを、小領域階調数が2である小領域に対しては図50に示されるものを、それぞれ用いることも考えられる。これは、特に小領域階調数が8であるような小領域の数が少ない画像において有効である。ビットプレーン分割規則テーブル3206として、図49および図50に示されているものを用いた場合には、上位2プレーンで大半の小領域の画像が表現されているからである。
これに対して、ビットプレーン分割規則テーブル3206として、図44、図45に示されているものを採用すると、利点もある。すなわち、小領域ごとに異なる階調数を持たせながら、最上位プレーンを復号するだけで画像の概略がわかるという機能を減色後の画像が持つことができるということである。これはこの場合、背景画像に対応する画素値については、小領域階調数に関係なく最上位プレーンに1が入っているためである。
なお本実施の形態では多値画像をビットプレーンに分割して複数の2値画像として圧縮しているが、多値画像のまま圧縮しても差し支えない。また、小領域階調数バッファ617の、横方向の小領域数を横幅、縦方向小領域数を縦幅とする画像としてビットプレーンに分割して圧縮することもできる。
上の第2の実施の形態で説明した画像圧縮装置は、異なる階調数を持つ小領域を考慮して、減色後のビットプレーンの圧縮効果が高くなるように構成されている。そのため、より効率の高い画像圧縮を行なうことができる。
[第3の実施の形態]
以下に述べる本発明の第3の実施の形態に係る装置は、第2の実施の形態による画像符号化装置に対応する画像復号装置である。なお今までの説明と同様、以下の説明において用いる具体的なデータ構造または数値例は、説明のための例に過ぎず、本発明の技術的範囲をこれらに制限するような性質のものではない。
図51を参照して、この第3の実施の形態に係る画像復号装置は、符号化画像バッファ4201、画像復号器4202、出力画像バッファ4203および画像出力装置4204を含む。
図52を参照して、画像復号器4202は、コントローラ4301、整数配列復号器4302、テンポラリー整数配列バッファ4303、圧縮画像復号器4304、ビットプレーンバッファ4305、ビットプレーン統合器4306、ビットプレーン統合規則テーブル4307、小領域情報バッファ4308、小領域階調数バッファ4309、小領域数レジスタ4310、ビットプレーン数レジスタ4311、画像横幅レジスタ4312、画像縦幅レジスタ4313、第1カウンタ4314、減色画像バッファ4315、表示画像作成器4316、基準画素値テーブル4317とを含む。以下の説明では、小領域階調数バッファ4309のi番目の要素をALB[i]と表わすものとする。
符号化画像バッファ4201は、第2の実施の形態の画像符号化装置を構成する符号化画像バッファ3006と同一のデータ構造である。
コントローラ4301は、画像復号器4202の他の各構成要素の制御および他の各構成要素相互間または各構成要素と画像復号器4202の外部との間のデータ通信の制御を行なうためのものである。コントローラ4301は画像復号器4202内の他の各構成要素の動作には常に関与している。しかし、説明の簡略化のために、以下の記載では理解に差し支えない限りコントローラ4301の動作については言及しないことがある。
コントローラ4301が図52に示される各構成要素を制御することにより、画像復号器4202としての機能を実現するための処理の制御構造を図53以下を参照して説明する。まず、コントローラ4301は、符号化画像バッファ4201の画像横幅のフィールド3101の内容を画像横幅レジスタ4312にコピーする(S4501)。続いてコントローラ4301は、符号化画像バッファ4201の画像縦幅のフィールド3102の内容を画像縦幅レジスタ4313にコピーする(S4502)。さらにコントローラ4301は、符号化画像バッファ4201の小領域数のフィールド3103の内容を小領域数レジスタ4312にコピーする(S4503)。
整数配列復号器4302は、符号化画像バッファ4201のフィールド3204の値が示しているバイト数だけ、フィールド3105から符号化データを読込む。さらに整数配列復号器4302は、このように読込んだ符号化データを復号し、小領域階調数バッファ4309に書込む(S4504)。このとき整数配列復号器4302で行なわれるのは、第2の実施の形態の装置の整数配列可逆圧縮器3102による符号化に対する復号動作である。ここでは、第2の実施の形態で用いた例に従って圧縮アルゴリズムとしてはLZ77を想定しているものとする。
なお、ここに述べたとおり整数配列復号器4302が採用する復号動作のアルゴリズムは、第2の実施の形態の装置の整数配列可逆圧縮器3102において用いられた符号化アルゴリズムに対応するものである。したがって符号化アルゴリズムが変わればそれに従って整数配列復号器4302の採用する復号動作も変わる。
整数配列復号器4302は、符号化画像バッファ4201のフィールド3106の値が示しているバイト数だけフィールド3107から符号化データを読込む。さらに整数配列復号器4302は読込んだ符号化データを復号し、テンポラリー整数配列バッファ4303に書込む(S4505)。
コントローラ4301は、テンポラリー整数配列バッファ4303の内容を、小領域情報バッファ4308の、各小領域の左上X座標に対応する部分に書込む(S4506)。
整数配列復号器4302は、符号化画像バッファ4201のフィールド3108の値が示しているバイト数だけ、フィールド3109から符号化データを読込む。整数配列復号器4302はこの符号化データを復号し、テンポラリー整数配列バッファ4303に書込む(S4507)。
コントローラ4301は、テンポラリー整数配列バッファ4303の内容を、小領域情報バッファ4308の、各小領域の左上Y座標に対応する部分に書込む(S4508)。
整数配列復号器4302は、符号化画像バッファ4201のフィールド3110の値が示しているバイト数だけフィールド3111から符号化データを読込む。整数配列復号器4302は、この符号化データを復号し、テンポラリー整数配列バッファ4303に書込む(S4509)。
コントローラ4301は、テンポラリー整数配列バッファ4303の内容を、小領域情報バッファ4308の各小領域の右下X座標に対応する部分に書込む(S4510)。整数配列復号器4302は、符号化画像バッファ4201のフィールド3112の値が示しているバイト数だけフィールド3113から符号化データを読込む。整数配列復号器4302は、読込んだ符号化データを復号し、テンポラリー整数配列バッファ4303に書込む(S4511)。
コントローラ4301は、テンポラリー整数配列バッファ4303の内容を、小領域情報バッファ4308の、各小領域の右下Y座標に対応する部分に書込む(S4512)。コントローラ4301は、符号化画像バッファ4201のフィールド3114の内容をビットプレーン数レジスタ4311にコピーする(S4513)。
圧縮画像復号器4304が、符号化画像バッファ4201の画像を復号してビットプレーンバッファ4305に書込む(S4514)。なお、圧縮画像復号器4304が採用する復号動作のアルゴリズムは、第2の実施の形態の装置の画像可逆圧縮器3207において用いられた符号化アルゴリズムに対応するものである。したがって符号化アルゴリズムが変わればそれにしたがって圧縮画像復号器4304の採用する復号動作も変わる。
ビットプレーン統合器4306は、ビットプレーンバッファ4305の画像を統合して8値画像に変換し、減色画像バッファ3521に格納する(S4515)。
表示画像作成器4316は、小領域階調数バッファ617と基準画素値テーブル4317とを参照し、各小領域ごとに異なる階調数を持つ、減色画像バッファ4315の画像を256階調の画像に変換し、出力画像バッファ4203に出力する(S4516)。
図53に示すS4514で行なわれる処理についてその詳細を図54を参照して説明する。コントローラ4301は、第1カウンタ4314を0に初期化する(S4601)。以下iは第1カウンタ4314の値を意味するものとする。
圧縮画像復号器4304は、符号化画像バッファ4201のフィールド3115(または3117、3119、…)が示す長さだけ符号化データを読込んで復号し、ビットプレーンバッファ4305のi番目のプレーンに書込む(S4602)。
コントローラ4301は第1カウンタ4314の値iをインクリメントする(S4603)。続いてコントローラ4301は、第1カウンタ4314の値iとビットプレーン数レジスタ4311とを比較し(S4604)、両者が等しければ処理は終了する。さもなければ制御はS4602に戻る。
図53のS4515に示されるビットプレーン統合処理の詳細につき図55を参照して説明する。コントローラ4301は第1カウンタ4314の値を0に初期化する(S4605)。以下の説明ではiは第1カウンタ4314の値を意味するものとする。
ビットプレーン統合器4306は、第1カウンタ4314、ビットプレーン統合規則テーブル4307、小領域情報バッファ4308およびALB[i]を参照して、i番目の小領域に対応するビットプレーンバッファ4305の内容を統合し、減色画像バッファ4315上の対応する小領域に格納する(S4606)。この場合のビットプレーン統合規則テーブル4307の内容については後述する。この各ビットプレーンの統合の規則を与えるのがビットプレーン統合規則テーブル4307である。
ビットプレーン統合器4306は、S5102において、ビットプレーンの各画素を、画素値の2進表現と見なして多値画像に変換した後、画素値およびビットプレーン統合規則テーブル3507を参照して出力画素値に変換する。ビットプレーン統合規則テーブル4307の内容については後述する。
コントローラ3501は、第1カウンタ4314の値iをインクリメントする(S4607)。続いてコントローラ3501は、第1カウンタ4314の値iと小領域数レジスタ3510の内容とを比較する(S4608)。両者が等しければ処理は終了し、等しくなければ制御はS4607に戻る。
図52に示すビットプレーン統合規則テーブル4307の内容は以下のとおりである。ビットプレーン統合規則テーブル4307は2次元整数配列となっている。そのインデックスは、小領域階調数0〜8と画素値0〜7とである。ビットプレーン統合規則テーブル4307によって、画素値は、小領域の階調数によって異なった変換を受ける。
ここで用いられるビットプレーン統合規則テーブル4307は、発明の第2の実施の形態で用いられ、図43〜図45で説明したビットプレーン分割規則テーブル3206の態様を逆にしたものである。
小領域階調数が8、4、2の場合をそれぞれ図56、図57および図58に示す。図56〜図58の1列目〜3列目はそれぞれ、ビットプレーンバッファ4305の値と画素値との対応を説明する目的で示したものであり、ビットプレーン統合規則テーブル4307の一部をなすものではない。また図57および図58で、括弧の中に入れられた変換後画素値は、使われない入力画素値に対応するものであることを示す。
以上のように、第3の実施の形態に係る画像復号装置は、小領域の階調数がどれも等しいときには、一部の情報の復号をスキップするように構成した。そのため、従来と比較してさらに符号化効率の高い画像圧縮を行なうことができる。
以上説明した実施の形態に開示されている発明の構成を以下に列挙する。
(1) 入力されたデジタル画像データの階調数を減少させて出力する画像減色装置であって、
入力画像を予め定められた手法により小領域に分割するための分割手段と、
各前記小領域ごとに、当該小領域に含まれる画像データに基づいて、当該小領域を適切に減色するための階調数を設定するための適応的減色手段とを含む、画像減色装置。
(2) 前記適応的減色手段は、
前記入力画像中から予め定められた形状を抽出するための抽出手段と、
前記抽出手段による前記予め定められた形状の抽出結果に基づいて、前記入力画像中の前記予め定められた形状が存在する領域の階調数が、前記予め定められた形状の存在しない領域の階調数以上となるように、各前記小領域の階調数を設定するための手段とを含む、(1)に記載の画像減色装置。
(3) 前記予め定められた形状は直線である、(2)に記載の画像減色装置。
(4) 前記適応的減色手段は、
異なる減色方法の下での、前記画像の少なくとも一部における背景画素および非背景画素のいずれか一方の分布を表わす指標を算出するための分布算出手段と、
前記分布算出手段により算出された分布の比較結果に基づいて減色方法の適否を決定するための適否決定手段とを含む、(1)に記載の画像減色装置。
(5) 前記分布算出手段は、
前記入力画像中から予め定められた形状を抽出するための抽出手段と、
異なる減色方法の下での、前記予め定められた形状の近傍の背景画素および非背景画素のいずれか一方の分布を検出するための画素分布検出手段とを含み、
前記適否決定手段は、
前記前記画素分布検出手段により検出された、第1の減色階調数とそれより少ない第2の減色階調数との下での、背景画素および非背景画素の分布を比較し、その比較結果が予め定める条件を満足しているか否かに基づいて、前記第2の減色階調数の適否を判定するための手段を含む、(4)に記載の画像減色装置。
(6) 前記予め定める条件とは、前記第2の減色階調数の下での背景画素の数と、前記第1の減色階調回数の下での背景画素の数との差が一定以上であることである、(5)に記載の画像減色装置。
(7) 前記予め定める条件とは、前記第1の減色階調数の下での非背景画素の数と、前記第2の減色階調回数の下での非背景画素の数との差が一定以上であることである、(5)に記載の画像減色装置。
(8) 前記適応的減色手段は、
入力画像をラベリングするためのラベリング手段と、
前記ラベリング手段の出力に基づき、共通なラベルを含む小領域に共通のラベルを付与するための小領域ラベリング手段とを含み、
前記小領域ラベリング手段によって共通のラベルが付与された小領域には、共通の階調数を設定する、(1)に記載の画像減色装置。
(9) 前記適応的減色手段は、
入力画像の小領域の境界をはさんで隣接する二つの画素が共通の画素値を持つ場合に、当該二つの画素が属する二つの小領域に共通のラベルを付与する小領域ラベリング手段とを含み、
前記小領域ラベリング手段により共通のラベルが付与された小領域には、共通の階調数を設定する、(1)に記載の画像減色装置。
(10) 入力されたデジタル画像データの階調数を減少させるための、(1)〜(9)のいずれかに記載の画像減色装置と、
前記画像減色手段により減色された画像のエントロピー符号化を行なうための画像符号化手段とを含む、画像符号化装置。
(11) 小領域ごとに異なる階調数を持ち得る入力画像をビットプレーンに分割して圧縮する画像符号化装置であって、
上位プレーンにおいてより隣接画素間の連続性が高まるように、符号化対象の小領域の階調数に応じて異なる変換を各画素値に施しビットプレーンに分割するための画像変換手段と、
前記画像変換手段による変換によって得られるビットプレーンごとに所定のエントロピー符号化を行なうための画像符号化手段とを含む、画像符号化装置。
(12) 小領域ごとに異なる階調数を持ち得る入力画像をビットプレーンに分割して圧縮する画像符号化装置であって、
すべての小領域の階調数が等しいか否かを判定するための判定手段と、
前記判定手段によりすべての小領域の階調数が等しいと判定されたことに応答して、前記入力画像の全体を一つの小領域とみなし、小領域の数を1として画像を符号化するための第1の画像符号化手段と、
前記判定手段によりすべての小領域の階調数が等しいわけではないと判定されたことに応答して、前記入力画像の各小領域ごとに符号化するための第2の画像符号化手段とを含む、画像符号化装置。
(13) (10)に記載の画像符号化装置によって符号化された画像データを入力するための入力手段と、
前記入力手段により入力された画像データに対して、前記(10)に記載のエントロピー符号化に対応した復号を行なう復号手段とを含む、画像復号装置。
(14) (11)に記載の画像符号化装置によって符号化された画像データを入力するための入力手段と、
前記入力手段により入力された画像データに対して、前記(11)に記載のエントロピー符号化に対応した復号を行なう復号手段と、
前記復号手段により復号された画像データに対して、(11)に記載の画像変換手段に対応した逆変換を行なうための画像逆変換手段とを含む、画像復号装置。
(15) (12)に記載の画像符号化装置によって符号化された画像データを復号するための画像復号装置であって、
前記画像符号化手段によって符号化された画像データに含まれる小領域の数がいくつかを判定するための判定手段と、
前記判定手段により判定された数の小領域に前記画像データを分割して復号するための復号手段とを含む、画像復号装置。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した実施の形態の説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
実施の形態1にかかる画像減色装置の概略構成を示す図である。 実施の形態1にかかる画像減色装置の入力画像バッファ302に格納される画像データのデータ構造を示す図である。 実施の形態1にかかる画像減色装置の適応的減色器の構成を示す図である。 画像減色装置で行なわれる処理の制御構造を示すフローチャートである。 実施の形態1にかかる画像減色装置の小領域情報バッファ604の構成例を示す図である。 実施の形態1にかかる画像減色装置の文字矩形情報バッファ612のデータ構造を示す図である。 図4に示すS705において行なわれる処理の制御構造を示す図である。 図4に示されるS705Aにおいて行なわれる処理の制御構造を示す図である。 図4に示すS706において行なわれる処理の制御構造を示す図である。 図4のS707において行なわれる処理の制御構造を示す図である。 図4に示すS709において行なわれる処理の制御構造を示す図である。 実施の形態1にかかる画像減色装置の適応的減色器の文字矩形減色器614の構成を示す図である。 階調数が2値に対応する基準画素値の分布を示す図である。 階調数が4値に対応する基準画素値の分布を示す図である。 階調数が8値に対応する基準画素値の分布を示す図である。 文字矩形減色器614のコントローラ1101が各構成要素を制御する処理の制御構造を示す図である。 線抽出器1105で取出すことが意図されている文字の縦線を示す図である。 線抽出器1105で取出すことが意図されている文字の横線を示す図である。 累積ヒストグラムを求める処理を説明するための、横線とその上下の帯状領域とを示す図である。 図19に示す入力画像を8値化した後の例を示す図である。 図19に示す入力画像を4値化した後の例を示す図である。 図8に示したS5202で行なわれる小領域iの階調数決定処理を行なう小領域減色器616の構成を示す図である。 コントローラ1701によって行なわれる処理の制御構造を示す図である。 図3に示した小領域階調数検証器619の構成を示す図である。 コントローラ2001が行なう処理の制御構造を示す図である。 図25に示すS2102で行なわれる処理の制御構造を示す図である。 図25のS2103において行なわれるラベルバッファの値を生成する処理の制御構造を示す図である。 図25のS2104に示される小領域ラベルバッファを初期化する処理の制御構造を示す図である。 図25のS2105において行なわれる小領域ラベルバッファの値を生成する処理の制御構造を示す図である。 図29のS2504において行なわれる判定処理の制御構造を示す図である。 図29のS2507において行なわれる判定処理の制御構造を示す図である。 着目画素と隣接画素との間の関係を示す図である。 図29のS2510において行なわれる小領域ラベルの書換処理の制御構造を示す図である。 線情報バッファ609のデータ構造の他の一例を示す図である。 線情報バッファ609が画像データを格納するためのバッファとなっている場合にコントローラ601が行なう処理の制御構造を示す図である。 第2の実施の形態に係る画像符号化装置の概略構造を示す図である。 第2の実施の形態において符号化画像バッファ3006に格納された符号化画像のフォーマットを示す図である。 第2の実施の形態に係る画像符号化器3005の概略構造を示す図である。 画像符号化器3005のコントローラ3201が行なう処理の制御構造を示す図である。 図39のS3304で行なわれる処理の制御構造を示す図である。 図39に示したS3316で行なわれる処理の制御構造を示す図である。 図39のS3318で行なわれる処理の制御構造を示す図である。 ビットプレーン分割規則テーブル3206の各要素の値の定め方の一例を示す図である。 ビットプレーン分割規則テーブル3206の各要素の値の定め方の他の一例を示す図である。 ビットプレーン分割規則テーブル3206の各要素の値の定め方のさらに他の一例を示す図である。 減色前の入力画像を示す図である。 図46に示された画像を、図43に示した分割方法でビットプレーンに展開したときの減色画像を示す図である。 図46に示された画像を、図48に示した分割方法でビットプレーンに展開したときの減色画像を示す図である。 小領域階調数が4である小領域に対して適用されるビットプレーン分割規則テーブルの例を示す図である。 小領域階調数が2である小領域に対して適用されるビットプレーン分割規則テーブルの例を示す図である。 第3の実施の形態にかかる画像復号装置の概略構造を示す図である。 図51に示す画像復号器の概略構造を示す図である。 第3の実施の形態にかかる装置のコントローラ4301が行なう処理の制御構造を示す図である。 図53に示すS4514で行なわれる処理の制御構造を示す図である。 図53のS4515に示されるビットプレーン統合処理の制御構造を示す図である。 小領域階調数が8の場合のビットプレーン統合規則テーブル4307の構成を示す図である。 小領域階調数が4の場合のビットプレーン統合規則テーブル4307の構成を示す図である。 小領域階調数が2の場合のビットプレーン統合規則テーブル4307の構成を示す図である。 従来技術の問題点を説明するための、入力画像を示す図である。 従来技術による処理結果の一例を示す図である。
符号の説明
301 画像入力装置、303 適応的減色器、304 減色画像バッファ、305 出力画像作成器、601 コントローラ、602 小領域情報生成器、605 画像2値化器、607 線抽出器、610 文字矩形情報抽出器、614 文字矩形減色器、616 小領域減色器、619 小領域階調数検証器、620 小領域減色器、621 画素器変換器。

Claims (4)

  1. 小領域ごとに異なる階調数を持ち得る入力画像をビットプレーンに分割して圧縮する画像符号化装置であって、
    上位プレーンにおいてより隣接画素間の連続性が高まるように、符号化対象の小領域の階調数に応じて異なる画素値変換を各画素値に施しビットプレーンに分割するための画像変換手段と、
    前記画像変換手段による変換によって得られるビットプレーンごとに所定のエントロピー符号化を行なうための画像符号化手段とを含む、画像符号化装置。
  2. 小領域ごとに異なる階調数を持ち得る入力画像をビットプレーンに分割して圧縮する画像符号化装置であって、
    すべての小領域の階調数が等しいか否かを判定するための判定手段と、
    前記判定手段によりすべての小領域の階調数が等しいと判定されたことに応答して、前記入力画像の全体を一つの小領域とみなし、小領域の数を1として画像を符号化するための第1の画像符号化手段と、
    前記判定手段によりすべての小領域の階調数が等しいわけではないと判定されたことに応答して、前記入力画像の各小領域ごとに符号化するための第2の画像符号化手段とを含む、画像符号化装置。
  3. 請求項1に記載の画像符号化装置によって符号化された画像データを入力するための入力手段と、
    前記入力手段により入力された画像データに対して、請求項1に記載のエントロピー符号化に対応した復号を行なう復号手段と、
    前記復号手段により復号された画像データに対して、請求項1に記載の画像変換手段に対応した逆変換を行なうための画像逆変換手段とを含む、画像復号装置。
  4. 請求項2に記載の画像符号化装置によって符号化された画像データを復号するための画像復号装置であって、
    前記画像符号化装置によって符号化された画像データに含まれる小領域の数がいくつかを判定するための判定手段と、
    前記判定手段により判定された数の小領域に前記画像データを分割して復号するための復号手段とを含む、画像復号装置。
JP2006112296A 2006-04-14 2006-04-14 画像符号化装置および画像復号装置 Withdrawn JP2006287944A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006112296A JP2006287944A (ja) 2006-04-14 2006-04-14 画像符号化装置および画像復号装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006112296A JP2006287944A (ja) 2006-04-14 2006-04-14 画像符号化装置および画像復号装置

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2001095351A Division JP3862511B2 (ja) 2001-03-29 2001-03-29 画像減色装置および画像減色方法

Publications (1)

Publication Number Publication Date
JP2006287944A true JP2006287944A (ja) 2006-10-19

Family

ID=37409286

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006112296A Withdrawn JP2006287944A (ja) 2006-04-14 2006-04-14 画像符号化装置および画像復号装置

Country Status (1)

Country Link
JP (1) JP2006287944A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009027663A (ja) * 2007-07-24 2009-02-05 Fuji Xerox Co Ltd 画像処理装置及びプログラム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009027663A (ja) * 2007-07-24 2009-02-05 Fuji Xerox Co Ltd 画像処理装置及びプログラム
JP4687918B2 (ja) * 2007-07-24 2011-05-25 富士ゼロックス株式会社 画像処理装置及びプログラム
US8369639B2 (en) 2007-07-24 2013-02-05 Fuji Xerox Co., Ltd. Image processing apparatus, computer readable medium storing program, method and computer data signal for partitioning and converting an image

Similar Documents

Publication Publication Date Title
US7489830B2 (en) Methods for generating anti-aliased text and line graphics in compressed document images
US6751356B2 (en) Image processing apparatus and method
US7706618B2 (en) Image coding apparatus, image coding method, and recording medium, capable of creating highly versatile data
US6731800B1 (en) Method for compressing scanned, colored and gray-scaled documents
KR100524566B1 (ko) 이미지 처리 장치 및 방법
CN102577345B (zh) 图像处理设备及其处理方法
Kunt et al. Block coding of graphics: A tutorial review
JPH07220091A (ja) 画像処理装置及び方法
CA2013232C (en) Image reduction system
JP3862511B2 (ja) 画像減色装置および画像減色方法
US5461682A (en) Image filing apparatus providing image data suitable for several input/output devices
US5442459A (en) Process for encoding a half tone image considering similarity between blocks
US5583953A (en) Intelligent doubling for low-cost image buffers
JP3715905B2 (ja) 画像処理装置、画像処理方法、プログラム並びに記憶媒体
US8774511B2 (en) Image processing apparatus and image processing method
EP0388282A1 (en) Method and device for the acquisition and digital storage of coloured geographical maps and display of the maps
JP2006323870A (ja) 画像減色装置、画像符号化装置、画像復号装置、画像減色方法、画像符号化方法および画像復号方法
JP4089905B2 (ja) 画像処理装置、画像処理方法、プログラム及び情報記録媒体
JP2006287944A (ja) 画像符号化装置および画像復号装置
EP0741489A1 (en) Image encoding/decoding method
JPH04356873A (ja) カラー文書画像の適応符号化方式
JPH09186858A (ja) 画像処理方法及び装置、及びコンピュータ制御装置
JP3062224B2 (ja) 画像符号化方法
JPH1098620A (ja) 画像処理装置
JP2941288B2 (ja) 画像処理システム

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20080603