(57)【特許請求の範囲】
【請求項１】
画像処理の処理単位となる処理枠により纏めて処理される複数画素の配列状態が、前記複数画素のデータ形式がベクタ形式のみであり前記処理枠内でベクタ形式が一定となる第１ケースと、前記複数画素のデータ形式がベクタ形式のみであり前記処理枠内でベクタ形式が切り替わる第２ケースと、前記複数画素のデータ形式がラスタ形式を含む第３ケースと、を含む複数ケースのうちの何れに該当するのかを判定する判定部と、
前記複数ケースの各ケースごとに定められた修正パターンのうちの前記判定された各ケースに対応した修正パターンにより前記複数画素を前記処理枠に適合したデータ形式とする適合部と、
を有する、
ことを特徴とする画像処理装置。
【請求項２】
請求項１に記載の画像処理装置において、
前記適合部は、前記複数画素の配列状態が、前記第１ケース又は前記第３ケースである場合に、前記複数画素のデータ形式のうちのベクタ形式を前記処理枠に適合したベクタ形式に再ベクタ化する、
ことを特徴とする画像処理装置。
【請求項３】
請求項２に記載の画像処理装置において、
再ベクタ化されたベクタ形式の前記複数画素をベクタ形式のまま前記処理枠に適用して画像処理する処理部をさらに有する、
ことを特徴とする画像処理装置。
【請求項４】
請求項１から３のいずれか１項に記載の画像処理装置において、
前記適合部は、前記複数画素の配列状態が、前記第１ケース又は前記第３ケースである場合に、前記処理枠により纏めて処理される複数画素の各ラインごとの画素数が複数ラインにおいて互いに等しくなるように各ラインのデータ形式を修正する、
ことを特徴とする画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置に関する。
【背景技術】
【０００２】
画像データに対して画像処理を施す画像処理装置が広く知られている。画像データは、例えばラスタ形式やベクタ形式などのデータ形式の複数画素で構成される。また、画像処理としては、例えば、処理対象となる注目画素のみからその出力値を得ることができる処理の他に、注目画素の周辺にある複数画素を利用して注目画素の出力値を得るウィンドウ処理（Ｗｉｎｄｏｗ処理）などが知られている。
【０００３】
ちなみに、特許文献１には、色ごとの符号データを基に最小のラン長を抽出し、抽出された最小のラン長を基に新たな符号データを生成する画像処理装置が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−３１２１０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、画像データの複数画素を画像処理の処理単位となる処理枠に適合したデータ形式とすることにある。
【課題を解決するための手段】
【０００６】
請求項１に係る発明は、画像処理の処理単位となる処理枠により纏めて処理される複数画素の配列状態が、前記複数画素のデータ形式がベクタ形式のみであり前記処理枠内でベクタ形式が一定となる第１ケースと、前記複数画素のデータ形式がベクタ形式のみであり前記処理枠内でベクタ形式が切り替わる第２ケースと、前記複数画素のデータ形式がラスタ形式を含む第３ケースと、を含む複数ケースのうちの何れに該当するのかを判定する判定部と、前記複数ケースの各ケースごとに定められた修正パターンのうちの前記判定された各ケースに対応した修正パターンにより前記複数画素を前記処理枠に適合したデータ形式とする適合部と、を有することを特徴とする画像処理装置である。
【０００７】
請求項２に係る発明は、請求項１に記載の画像処理装置において、前記適合部は、前記複数画素の配列状態が、前記第１ケース又は前記第３ケースである場合に、前記複数画素のデータ形式のうちのベクタ形式を前記処理枠に適合したベクタ形式に再ベクタ化する、ことを特徴とする画像処理装置である。
【０００８】
請求項３に係る発明は、請求項２に記載の画像処理装置において、再ベクタ化されたベクタ形式の前記複数画素をベクタ形式のまま前記処理枠に適用して画像処理する処理部をさらに有する、ことを特徴とする画像処理装置である。
【０００９】
請求項４に係る発明は、請求項１から３のいずれか１項に記載の画像処理装置において、前記適合部は、前記複数画素の配列状態が、前記第１ケース又は前記第３ケースである場合に、前記処理枠により纏めて処理される複数画素の各ラインごとの画素数が複数ラインにおいて互いに等しくなるように各ラインのデータ形式を修正する、ことを特徴とする画像処理装置である。
【発明の効果】
【００１１】
請求項１に係る発明によれば、画像データの複数画素が画像処理の処理単位となる処理枠に適合したデータ形式となる。また、複数ケースの各ケースごとに定められた修正パターンにより処理枠に適合したデータ形式が得られる。
【００１２】
請求項２に係る発明によれば、複数画素のベクタ形式が処理枠に適合するように再ベクタ化される。
【００１３】
請求項３に係る発明によれば、ベクタ形式の複数画素がベクタ形式のまま処理枠により画像処理される。
【００１４】
請求項４に係る発明によれば、処理枠により纏めて処理される複数画素の各ラインごとの画素数が複数ラインに亘って揃えられる。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施形態として好適な画像処理装置の具体例を示す図である。
【図２】画像データのデータ形式を説明するための図である。
【図３】ウィンドウ処理を説明するための図である。
【図４】ウィンドウ内における複数画素の配列状態を説明するための図である。
【図５】ケース１の再ベクタ化を説明するための図である。
【図６】ケース２の再ベクタ化を説明するための図である。
【図７】ケース３の再ベクタ化を説明するための図である。
【図８】各ケースに応じたウィンドウ処理を説明するための図である。
【図９】ベクタ形式ラインバッファの内部構成例を示す図である。
【図１０】本実施形態により得られる効果の具体例を示す図である。
【発明を実施するための形態】
【００１７】
図１は、本発明を実施するための形態として好適な画像処理装置１００の具体例を示す図である。図１の画像処理装置１００は、画像データ（文字や数字や記号のみのデータを含む）に対して画像処理を実行する。
【００１８】
画像処理装置１００は、例えば、画像読み取り機能（スキャン機能）等を備え、画像読み取り機能を介して紙などの媒体から得られた画像データを処理対象とする。また、画像処理装置１００による画像処理後の画像データに対応した画像が紙などの媒体に印刷されてもよいし、画像処理後の画像データが外部の装置に提供されてもよい。画像処理装置１００の好適な具体例には、複写機、印刷機、ファクシミリ（ＦＡＸ）などが含まれる。さらに、複写機、印刷機、ファクシミリのうちのいずれか複数の機能を兼ね備えた複合機も画像処理装置１００の好適な具体例である。もちろん、例えばコンピュータ等の外部の装置から得られる画像データを画像処理装置１００が画像処理してもよい。
【００１９】
図１には画像処理装置１００が備える主な内部構成（符号を付した複数のブロック）が図示されている。図１に示す内部構成は、各種のハードウェアを利用して実現することができる。例えばＤＲＰ（Dynamic Reconfigurable Processor：動的再構成可能プロセッサ）などを利用して図１の内部構成の少なくとも一部が実現されてもよい。また、例えばＰＬＤ（Programmable Logic Device）やＦＰＧＡ（Field Programmable Gate Array）やＡＳＩＣ（Application Specific Integrated Circuit）などを利用して図１に示す内部構成の少なくとも一部が実現されてもよい。なお、画像処理装置１００の内部構成を実現するための上述したハードウェアはあくまでも一例に過ぎず、他のハードウェアが利用されてもよい。さらに、画像処理装置１００の内部構成の少なくとも一部がＣＰＵやメモリ等のハードウェアとそれらの動作を規定するプログラムとの協働により実現されてもよい。
【００２０】
図２は、画像データのデータ形式を説明するための図である。図２には、図１の画像処理装置１００により画像処理される画像データのデータ形式であるラスタ形式＜Ａ＞とベクタ形式＜Ｂ＞の具体例が図示されている。
【００２１】
図２に示すデータ形式は、識別子と画素数と画素データで構成される。識別子は、データ形式がラスタ形式「０」であるのかベクタ形式「１」であるのかを示す１ビットのデータである。画素数は、画像データ内において連続する複数画素の個数を示す１５ビットのデータである。画素データは、各画素の画素値を示す８ビットのデータで構成される。
【００２２】
ラスタ形式は、画素値が同一ではない連続する複数画素を取り扱うのに適したデータ形式であり、ラスタ形式における画素数は、画素値が同一ではない（不一致の）複数画素の個数を示す。また、ラスタ形式における画素データは、画素数で示される個数の複数画素に関する複数の画素値で構成される。
【００２３】
一方、ベクタ形式は、画素値が同一の連続的な複数画素を取り扱うのに適したデータ形式であり、ベクタ形式における画素数は、画素値が同一である（一致する）複数画素の個数を示す。ベクタ形式の画素数はラン長（ＲＵＮ長）と呼ばれる。また、ベクタ形式における画素データは、画素数で示される個数の複数画素に関する同一の画素値（一つの画素値）で構成される。
【００２４】
図１の画像処理装置１００により処理される画像データ（処理前）は、図２に示すラスタ形式とベクタ形式を含むデータ形式であり、画像処理装置１００は、その画像データに対してウィンドウ処理を実行する。
【００２５】
図３は、ウィンドウ処理を説明するための図である。ウィンドウ処理におけるウィンドウ（Ｗｉｎｄｏｗ）は、画像処理の処理単位となる処理枠の具体例である。
【００２６】
図３（１）には、ウィンドウの具体例として３×３のウィンドウが図示されている。このウィンドウによる画像処理では、注目画素Ｐの周辺にある複数画素Ａ〜Ｈを利用して注目画素Ｐの出力値Ｐ´が得られる。
【００２７】
画像データは複数のラインで構成され、各ラインは一次元的に配列された複数画素で構成される。図３において、画像データのライン方向（各ライン上における複数画素の配列方向）がＸ方向であり、複数ラインの配列方向（ライン方向に垂直な方向）がＹ方向である。図３（１）のウィンドウは、Ｘ方向に３画素、Ｙ方向に３画素の合計９画素を処理対象とする。
【００２８】
例えば、図３（１）のウィンドウは、ラインｎ（ｎは自然数）上の３画素Ｆ〜Ｈと、ライン（ｎ＋１）上の３画素Ｄ，Ｐ，Ｅと、ライン（ｎ＋２）上の３画素Ａ〜Ｃを処理対象とする。３つのラインに対応した複数画素は、ラインバッファ１〜３から出力される。
【００２９】
図３（２−１）には、ラインバッファにおける処理の具体例が図示されている。ラインバッファ１〜３には、まず、画像データの先頭のライン１とそれに続くライン２，３の複数画素が次々に記憶される。そして、記憶された３ラインの複数画素は、ラインバッファ１〜３から読み出されて後段の処理に利用される。
【００３０】
ライン１〜３に係る処理が終了すると、ラインバッファ１〜３には、ライン２〜４の複数画素が記憶される。つまり、ライン２の複数画素がラインバッファ２からラインバッファ１にシフトされ、ライン３の複数画素がラインバッファ３からラインバッファ２にシフトされ、ラインバッファ３にライン４の複数画素が記憶される。
【００３１】
さらに、ライン２〜４に係る処理が終了すると、ラインバッファ１〜３には、ライン３〜５の複数画素が記憶される。つまり、ライン３の複数画素がラインバッファ２からラインバッファ１にシフトされ、ライン４の複数画素がラインバッファ３からラインバッファ２にシフトされ、ラインバッファ３にライン５の複数画素が記憶される。
【００３２】
こうして、ラインバッファ１〜３には、画像データを構成する複数ラインの複数画素が各ラインごとに段階的にシフトされる。
【００３３】
ところが、各ライン内にベクタ形式の複数画素が含まれていると、各ライン内におけるベクタ数（ベクタ形式のデータ数）が複数ラインにおいて異なる場合がある。そのため、ベクタ形式ラインバッファ１０（図１）は、各ライン内におけるベクタ数を考慮しつつ、ラインバッファ１〜３におけるシフト処理を行う必要がある。なお、ベクタ形式ラインバッファ１０の具体例については、後に図９を利用して詳述する。
【００３４】
また、各ライン内にベクタ形式の複数画素が含まれていると、ベクタ形式における画素数（ラン長）はベクタごとに異なる場合があるため、例えば、図３（２−２）に示すように、複数画素のデータ形式がウィンドウのサイズに適合しない場合がある。そこで、図１の画像処理装置１００は、ウィンドウにより纏めて処理される複数画素の配列状態を判定し、その配列状態に応じた修正により複数画素をウィンドウに適合したデータ形式に再ベクタ化する。
【００３５】
図４は、ウィンドウ内における複数画素の配列状態を説明するための図である。図４には、ウィンドウ内におけるラインｎ，ライン（ｎ＋１），ライン（ｎ＋２）の３ラインに関する複数画素の配列状態が図示されている。その配列状態は、ケース１〜３の配列パターンに分類される。
【００３６】
ケース１は、ウィンドウ内の３ライン全ての複数画素がベクタ形式であり、３ライン全てにおいてベクタのラン長がウィンドウサイズ（３画素分）以上であり、ウィンドウ内でベクタ形式が一定となる配列パターンである。
【００３７】
ケース２は、ウィンドウ内の３ライン全ての複数画素がベクタ形式であり、ウィンドウ内において、少なくとも１つのラインのベクタが変化してベクタ形式が切り替わる配列パターンである。
【００３８】
ケース３は、ウィンドウ内において少なくとも１つのラインにラスタ形式の複数画素が含まれる配列パターンである。
【００３９】
図１のケース判定部２０は、ベクタ形式ラインバッファ１０の３つのラインバッファ１〜３（Ｂ１〜Ｂ３）から得られる３ラインに関する複数画素の配列状態が、ケース１〜ケース３の何れに該当するのかを判定する。そして、再ベクタ化処理部３０は、ケース１〜ケース３の各ケースごとに定められた修正パターンのうち、ケース判定部２０により判定された各ケースに対応した修正パターンにより、３ラインの複数画素をウィンドウに適合したデータ形式に再ベクタ化する。
【００４０】
図５は、ケース１の再ベクタ化を説明するための図である。ケース１では、ウィンドウ内の３ライン全ての複数画素がベクタ形式であり、３ライン全てにおいてベクタのラン長がウィンドウサイズ（３画素分）以上である。そこで、ウィンドウの処理対象となる３ラインのうち、ベクタ（入力ベクタ）のラン長が最小となるラインに合わせて他ラインのベクタのラン長が修正される。
【００４１】
例えば、図５に示す具体例のように、ラインｎの入力ベクタのラン長が３０、ライン（ｎ＋１）の入力ベクタのラン長が２０、ライン（ｎ＋２）の入力ベクタのラン長が１０である場合に、ラン長が最小となるライン（ｎ＋２）の入力ベクタと同じラン長となるように、ラインｎとライン（ｎ＋１）の入力ベクタが修正される。具体的には、図５に示すように、ラインｎのラン長３０で画素値３の入力ベクタがラン長１０で画素値３のベクタ１とラン長２０で画素値３のベクタ２に再ベクタ化され、ライン（ｎ＋１）のラン長２０で画素値２の入力ベクタがラン長１０で画素値２のベクタ１とラン長１０で画素値２のベクタ２に再ベクタ化される。なお、ライン（ｎ＋２）の入力ベクタはそのままベクタ１とされ、ライン（ｎ＋２）における次の入力ベクタ（ＮＥＸＴベクタ）がベクタ２とされる。
【００４２】
図５には、再ベクタ化処理部３０（図１）が実行するケース１における再ベクタ化処理のフローチャートが示されている。まず、ウィンドウの処理対象となる３ラインのうち、ベクタ（入力ベクタ）のラン長が最小である最小ラン長が抽出され（Ｓ１）、各ラインのラン長が最小ラン長とされる（Ｓ２）。
【００４３】
次に、ウィンドウのラン長（ｗｉｎｄｏｗラン長）が算出される（Ｓ３）。ウィンドウのラン長は、ウィンドウによる画像処理後の出力値のラン長（画素数）であり、次式により算出される。ｗｉｎｄｏｗラン長＝最小ラン長−（ｗｉｎｄｏｗサイズ−１）
【００４４】
また、後の画像処理における振り分けがケース１とされ（Ｓ４）、最小ラン長と３ライン全ての識別子とラン長が読み出され（Ｓ５）、最小ラン長となったライン以外の他のラインに関するラン長が再計算され（Ｓ６）、入力ベクタが再ベクタ化される。例えば、図５に示す具体例のように、入力ベクタが再ベクタ化されてベクタ１とベクタ２に分解されて再ベクタ化処理が終了する。
【００４５】
図６は、ケース２の再ベクタ化を説明するための図である。ケース２では、ウィンドウ内の３ライン全ての複数画素がベクタ形式であり、ウィンドウ内において、少なくとも１つのラインのベクタが変化してベクタ形式が切り替わる。ケース２では、再ベクタ化によるベクタの修正（分解）が行われない。
【００４６】
例えば、図６に示す具体例のように、ウィンドウ内において、ラインｎとライン（ｎ＋１）とライン（ｎ＋２）の入力ベクタがベクタ１からベクタ２に切り替わる場合に、ケース２であると判定される。
【００４７】
図６には、再ベクタ化処理部３０（図１）が実行するケース２における再ベクタ化処理のフローチャートが示されている。ケース２では、まず、ウィンドウのラン長（ｗｉｎｄｏｗラン長）が算出される（Ｓ１）。ウィンドウのラン長は、ウィンドウによる画像処理後の出力値のラン長（画素数）であり、ケース２では、出力値の不一致画素数となり、次式により算出される。ｗｉｎｄｏｗラン長＝（ｗｉｎｄｏｗサイズ−１）
【００４８】
そして、後の画像処理における振り分けがケース２とされ（Ｓ２）、入力ベクタの修正が行われずに再ベクタ化処理が終了する。
【００４９】
図７は、ケース３の再ベクタ化を説明するための図である。ケース３では、ウィンドウ内において少なくとも１つのラインにラスタ形式の複数画素が含まれる。そして、ケース３では、入力ベクタに含まれるラスタ形式のラン長（不一致画素数）に合わせて他ラインのベクタのラン長が修正される。
【００５０】
例えば、図７に示す具体例のように、ライン（ｎ＋２）の入力ベクタにラスタ形式のデータが含まれる場合に、つまりライン（ｎ＋２）のベクタ２がラスタ形式である場合に、そのラスタ形式のラン長（不一致画素数）と同じラン長となるように、ラインｎとライン（ｎ＋１）の入力ベクタが修正される。具体的には、図７に示すように、ラインｎの入力ベクタであるベクタ２（ラン長２０，画素値３）が、ラン長５で画素値３のベクタ２とラン長１５で画素値３のベクタ３に再ベクタ化され、ライン（ｎ＋１）の入力ベクタであるベクタ２（ラン長１０，画素値２）が、ラン長５で画素値２のベクタ２とラン長５で画素値２のベクタ３に再ベクタ化される。なお、ライン（ｎ＋２）の入力ベクタであるベクタ２はラスタ形式のままベクタ２とされ、ライン（ｎ＋２）における次の入力ベクタ（ＮＥＸＴベクタ）がベクタ３とされる。
【００５１】
図７には、再ベクタ化処理部３０（図１）が実行するケース３における再ベクタ化処理のフローチャートが示されている。まず、ウィンドウの処理対象となる３ラインに含まれるラスタ形式の不一致画素数が抽出され（Ｓ１）、次に、ウィンドウのラン長（ｗｉｎｄｏｗラン長）が算出される（Ｓ２）。ウィンドウのラン長は、ウィンドウによる画像処理後の出力値のラン長（画素数）であり、ケース３では、出力値の不一致画素数となり、次式により算出される。なお、次式右辺の不一致画素数は、入力ベクタに含まれるラスタ形式の不一致画素数である。ｗｉｎｄｏｗラン長＝不一致画素数＋ｗｉｎｄｏｗサイズ−１
【００５２】
そして、後の画像処理における振り分けがケース３とされ（Ｓ３）、３ライン全ての入力ベクタ（ＮＥＸＴベクタを含む）の識別子とラン長が読み出され（Ｓ４）、ラスタ形式が含まれるライン以外の他のラインに関するベクタのラン長が再計算され（Ｓ５）、入力ベクタが再ベクタ化される。例えば、図７に示す具体例のように、入力ベクタであるベクタ２が再ベクタ化されてベクタ２とベクタ３に分解されて再ベクタ化処理が終了する。
【００５３】
図１の再ベクタ化処理部３０により再ベクタ化された画像データは、画像処理選択部４０を介して、画像処理部５１〜５３に送られる。画像処理選択部４０は、再ベクタ化された画像データを、ケース１の場合に画像処理部５１へ送り、ケース２の場合に画像処理部５２へ送り、ケース３の場合に画像処理部５３へ送る。そして、画像処理部５１〜５３において各ケースに応じた画像処理（ウィンドウ処理）が実行される。
【００５４】
図８は、各ケースに応じたウィンドウ処理を説明するための図である。図８には、３×３のウィンドウを利用した画像処理の基本処理と各ケース（ケース１〜３）ごとの処理例が図示されている。
【００５５】
基本処理では、３×３のウィンドウ内における９画素の各々の画素値に、ウィンドウ内の画像位置に応じた係数が乗算され、９画素から得られる９個の乗算結果が加算されて出力値が得られる。
【００５６】
例えば、図８に示す具体例のように、ウィンドウ内の注目画素Ｐと画素Ａ〜Ｈに、各画素位置に対応した係数Ｋ１１〜Ｋ３３が乗算され、９画素から得られる９個の乗算結果が加算されることにより出力値Ｐ´が算出される。
【００５７】
ケース１においては、ウィンドウ内の３ライン全てにおいてベクタのラン長がウィンドウサイズ（３画素分）以上であり、ウィンドウ内において各ラインの３画素が同じ画素値となる。そこで、画像処理部５１（図１）は、各ラインごとに代表１画素の画素値を利用して基本処理に対応した処理結果を得る。例えば、図８に示す具体例のように、各ラインごとに１画素のみ、つまり、ライン（ｎ＋２）の画素Ａとライン（ｎ＋１）の画素Ｄとラインｎの画素Ｆが利用されて出力値Ｐ´が算出される。
【００５８】
ケース２では、ウィンドウ内において、少なくとも１つのラインのベクタが変化してベクタ形式が切り替わる。そこで、画像処理部５２（図１）は、各ラインごとに同一のベクタに属する複数画素について、それらのうちの代表１画素の画素値を利用して、基本処理に対応した処理結果を得る。なお、ケース２では、図８に示す具体例のように、ウィンドウの位置に応じてステップ１（ＳＴＥＰ１）とステップ２（ＳＴＥＰ２）の計算式が利用される。
【００５９】
ケース３では、ウィンドウ内において、少なくとも１つのラインにラスタ形式の複数画素が含まれる。そこで、画像処理部５３（図１）は、ラスタ形式が含まれるラインについては基本処理と同様に３画素の各々の画素値を利用し、ベクタ形式で構成されるラインの同一ベクタに属する複数画素については、それらのうちの代表１画素の画素値を利用して基本処理に対応した処理結果を得る。例えば、図８に示す具体例のように、ラスタ形式が含まれるライン（ｎ＋２）については画素Ａ〜Ｃの画素値が利用され、ベクタ形式で構成されるライン（ｎ＋１）とラインｎについては、代表１画素である画素Ｄと画素Ｆの画素値が利用されて出力値Ｐ´が算出される。
【００６０】
図１の画像処理部５１〜５３により画像処理（ウィンドウ処理）されたデータは、セレクタ６０を介してマージ処理部７０に送られる。セレクタ６０は、画像処理部５１〜５３において画像処理（ウィンドウ処理）が実行される度に、画像処理が実行された各画像処理部５１〜５３から得られる画像処理後のデータ（出力値Ｐ´）をマージ処理部７０へ出力する。
【００６１】
マージ処理部７０は、セレクタ６０を介して各画像処理部５１〜５３から得られる画像処理後のデータと、再ベクタ化処理部３０から得られる識別子とｗｉｎｄｏｗラン長を利用して、画像処理後の画像データを形成する。
【００６２】
マージ処理部７０は、例えば、画像処理部５１から得られるケース１のウィンドウ処理結果である出力値Ｐ´（図８参照）を画素値とし、再ベクタ化処理部３０から得られる識別子（ベクタ「１」）とケース１におけるｗｉｎｄｏｗラン長（図５参照）を利用して、識別子と画素数（＝ｗｉｎｄｏｗラン長＝一致画素数）と画素データで構成されるデータ形式（図２のベクタ形式）の画像データを形成する。
【００６３】
また、マージ処理部７０は、例えば、画像処理部５２から得られるケース２のウィンドウ処理結果である各ステップの出力値Ｐ´（図８参照）を画素値とし、再ベクタ化処理部３０から得られる識別子（ラスタ「０」）とケース２におけるｗｉｎｄｏｗラン長（図６参照）を利用して、識別子と画素数（＝ｗｉｎｄｏｗラン長＝不一致画素数）と画素データで構成されるデータ形式（図２のラスタ形式）の画像データを形成する。
【００６４】
そして、マージ処理部７０は、例えば、画像処理部５３から得られるケース３のウィンドウ処理結果である出力値Ｐ´（図８参照）を画素値とし、再ベクタ化処理部３０から得られる識別子（ラスタ「０」）とケース３におけるｗｉｎｄｏｗラン長（図７参照）を利用して、識別子と画素数（＝ｗｉｎｄｏｗラン長＝不一致画素数）と画素データで構成されるデータ形式（図２のラスタ形式）の画像データを形成する。
【００６５】
こうして、マージ処理部７０により、画像処理後（ウィンドウ処理後）の画像データが形成される。
【００６６】
図９は、ベクタ形式ラインバッファ１０（図１）の内部構成例を示す図である。図９に示す具体例において、ベクタ形式ラインバッファ１０は、ベクタ書き込み（Ｗｒｉｔｅ）アドレスカウンタ（１）〜（３）と、ベクタ読み出し（Ｒｅａｄ）アドレスカウンタ（１）〜（３）と、ランダムアクセスメモリであるＲＡＭ（１）〜（３）を備えている。
【００６７】
処理前（ウィンドウ処理前）の画像データはベクタ形式とラスタ形式を含むデータ形式（図２）であり、画像データの先頭ラインから各ラインごとに次々にベクタ形式ラインバッファ１０に入力される。
【００６８】
ベクタ書き込みアドレスカウンタ（１）〜（３）は、各々に対応するＲＡＭ（１）〜（３）へのデータの書き込み（Ｗｒｉｔｅ）を制御する。ベクタ書き込みアドレスカウンタ（１）〜（３）は、各ラインごとに次々にＲＡＭに書き込まれる複数画素のデータ形式のラン長、つまりラスタ形式の不一致画素数とベクタ形式の一致画素数を累積的に加算し、ラン長（画素数）の累積加算がラインサイズ（１ラインの画素数）に達するとライトアドレスカウンタ（ＷＡＤＤ）を初期化（カウント値０）する。これにより、各ＲＡＭ（１）〜（３）には、ライトアドレスカウンタが初期化されてから次の初期化までの１ライン分を単位とするデータ（ラスタ形式とベクタ形式のデータ）が書き込まれる。
【００６９】
一方、ベクタ読み出しアドレスカウンタ（１）〜（３）は、各々に対応するＲＡＭ（１）〜（３）からのデータの読み出し（Ｒｅａｄ）を制御する。ベクタ読み出しアドレスカウンタ（１）〜（３）は、各ラインごとに次々にＲＡＭから読み出される複数画素のデータ形式のラン長、つまりラスタ形式の不一致画素数とベクタ形式の一致画素数を累積的に加算し、ラン長（画素数）の累積加算がラインサイズ（１ラインの画素数）に達するとリードアドレスカウンタ（ＲＡＤＤ）を初期化（カウント値０）する。これにより、各ＲＡＭ（１）〜（３）から、ライトアドレスカウンタが初期化されてから次の初期化までの１ライン分を単位とするデータ（ラスタ形式とベクタ形式のデータ）が読み出される。
【００７０】
こうして、画像データの先頭ラインから各ラインごとに次々にベクタ形式ラインバッファ１０に入力されたデータは、各ラインごとに段階的にラインバッファ３（Ｂ３），ラインバッファ２（Ｂ２），ラインバッファ１（Ｂ１）にシフトされる。
【００７１】
例えば、ＲＡＭ（２）にラインｎのデータが記憶され、ＲＡＭ（３）にライン（ｎ＋１）のデータが記憶されている状態で、ライン（ｎ＋２）のデータがベクタ形式ラインバッファ１０に入力される場合、ＲＡＭ（２）に記憶されたラインｎのデータが読み出されてＲＡＭ（１）に書き込まれることによりラインｎのデータがシフトされ、そのシフトと並行的に、ＲＡＭ（３）に記憶されたライン（ｎ＋１）のデータが読み出されてＲＡＭ（２）に書き込まれることによりライン（ｎ＋１）のデータがシフトされる。
【００７２】
さらに、ラインｎ，ライン（ｎ＋１）のシフトと並行的に、ライン（ｎ＋２）のデータがＲＡＭ（３）に書き込まれる。その結果として、ＲＡＭ（１）に対応したラインバッファ１（Ｂ１）からラインｎのデータが出力され、ＲＡＭ（２）に対応したラインバッファ２（Ｂ２）からライン（ｎ＋１）のデータが出力され、ＲＡＭ（３）に対応したラインバッファ３（Ｂ３）からライン（ｎ＋２）のデータが出力される。
【００７３】
図１０は、本実施形態（図１の画像処理装置１００）により得られる効果の具体例を示す図である。図１０には、ケース１〜３の各ケースごとに、通常のＷｉｎｄｏｗ処理（ウィンドウ処理）と比較した場合における効果の具体例が図示されている。
【００７４】
通常のＷｉｎｄｏｗ処理とは、処理対象となる全ての画素の各画素ごとにウィンドウ処理を適用する処理であり、図１０の具体例では、３ラインの各ラインが８Ｋ個（８０００個）の画素で構成されており、１画素あたりのウィンドウ処理が１クロック（ＣＬＫ）であると、１ＣＬＫ×８Ｋ画素×３ライン＝２４ＫＣＬＫの処理時間が必要になる。
【００７５】
これに対し、ケース１では、１ライン上の全画素が同一の画素値であるため、各ラインごとに１画素分の処理のみとなり、１ＣＬＫ×１画素×３ライン＝３ＣＬＫの処理時間で済む。したがって、通常のＷｉｎｄｏｗ処理と比較して、処理時間が２４Ｋ／３＝８０００倍に高速化する。
【００７６】
また、ケース２において２Ｋ個の画素ごとに画素値が変化する（ベクタが変化する）場合には、ステップ１とステップ２でそれぞれ６画素の合計１２画素の処理が必要になるため（図８参照）、１ＣＬＫ×１２個×３ライン＝３６ＣＬＫの処理時間が必要になる。したがって、通常のＷｉｎｄｏｗ処理と比較して、処理時間が２４Ｋ／３６＝６６７倍に高速化する。
【００７７】
なお、ケース３において、互いに隣接する画素の画素値が全て異なる場合には、全ての画素の各画素ごとにウィンドウ処理を適用する必要があるため、通常のＷｉｎｄｏｗ処理と同様に、１ＣＬＫ×８Ｋ画素×３ライン＝２４ＫＣＬＫの処理時間が必要になる。このように、互いに隣接する画素の画素値が全て異なる場合においても、通常のＷｉｎｄｏｗ処理と同じ処理時間で済む。
【００７８】
以上、本発明の好適な実施形態を説明したが、上述した実施形態は、あらゆる点で単なる例示にすぎず、本発明の範囲を限定するものではない。本発明は、その本質を逸脱しない範囲で各種の変形形態を包含する。
【符号の説明】
【００７９】
１０  ベクタ形式ラインバッファ、２０  ケース判定部、３０  再ベクタ化処理部、４０  画像処理選択部、５１，５２，５３  画像処理部、６０  セレクタ、７０  マージ処理部、１００  画像処理装置。
【図１】
0006631119.tif 000002
【図２】
0006631119.tif 000003
【図３】
0006631119.tif 000004
【図４】
0006631119.tif 000005
【図５】
0006631119.tif 000006
【図６】
0006631119.tif 000007
【図７】
0006631119.tif 000008
【図８】
0006631119.tif 000009
【図９】
0006631119.tif 000010
【図１０】
0006631119.tif 000011