JP2004102989A - 画像処理システム、画像処理方法および画像処理モジュールを記録した媒体 - Google Patents
画像処理システム、画像処理方法および画像処理モジュールを記録した媒体 Download PDFInfo
- Publication number
- JP2004102989A JP2004102989A JP2003196715A JP2003196715A JP2004102989A JP 2004102989 A JP2004102989 A JP 2004102989A JP 2003196715 A JP2003196715 A JP 2003196715A JP 2003196715 A JP2003196715 A JP 2003196715A JP 2004102989 A JP2004102989 A JP 2004102989A
- Authority
- JP
- Japan
- Prior art keywords
- image processing
- processing
- image
- target data
- module
- 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.)
- Pending
Links
Images
Abstract
【課題】異なる画像処理を実行するモジュールが複数ある場合、ドライバは各モジュール間にて画像処理に必要な処理領域を要求しつつ生成させるため、ドライバの処理負荷を低減させるとともに、画像処理を実行するモジュールを適宜増加減することができるシステムを提供する。
【解決手段】各管理オブジェクトP100〜P300と、各画像処理オブジェクトP400,P500を組み合わせた画像処理システムにおいて、各オブジェクトP300〜P500は自己の画像処理に必要な処理領域を前のオブジェクトP200,P400,P500に要求する。そして、要求を受けたオブジェクトは分割画像管理オブジェクトP200が形成した所定の領域の引き渡しを受けたり、各オブジェクトP400,P500が自己の画像処理を実行したものを積み上げて形成した処理領域の引き渡しを受ける。
【選択図】 図23
【解決手段】各管理オブジェクトP100〜P300と、各画像処理オブジェクトP400,P500を組み合わせた画像処理システムにおいて、各オブジェクトP300〜P500は自己の画像処理に必要な処理領域を前のオブジェクトP200,P400,P500に要求する。そして、要求を受けたオブジェクトは分割画像管理オブジェクトP200が形成した所定の領域の引き渡しを受けたり、各オブジェクトP400,P500が自己の画像処理を実行したものを積み上げて形成した処理領域の引き渡しを受ける。
【選択図】 図23
Description
【0001】
【発明の属する技術分野】
本発明は、画像処理システム、画像処理方法および画像処理モジュールを記録した媒体に関し、特に、少なくとも2つ以上の画像処理モジュールが相互に接続し、各画像処理を実行する画像処理システム、画像処理方法および画像処理モジュールを記録した媒体に関する。
【0002】
【従来の技術】
コンピュータなどでは、画像をドットマトリクス状に配置された画素にて構成する画像データとして表し、この画像データに対して所定の画像処理を実行してている。一方、近年、仮想的なドットマトリクス状の領域に対して、オブジェクト画像を適宜配置して一枚の画像を表す手法が利用されている。すなわち、文字だけを表すオブジェクト画像や、イメージを表すオブジェクト画像を個別に用意し、所定の順番で重ね合わせて画像を完成させる。
このような画像を扱う際、コンピュータの処理の都合上、一つのオブジェクト画像を複数に分割することが多い。例えば、オブジェクト画像が大きくなるのにつれてデータ量も極めて多大となり、一体として処理するには処理資源の負担が大きくなるからである。
一方、コンピュータで複数の段階に分けて画像を処理することも可能であり、アプリケーションのように内部において自由に処理できるものの他、オペレーティングシステムの一部として機能するドライバやモジュールによってメモリなどの制約を強く受けながら処理しなければならないものもある。すなわち、メモリなどの制約を受ける場合、分割されたオブジェクトデータを連結して元のオブジェクト画像を生成することなく、画像処理をしなければならないものがある。
従来、画像処理を実行するモジュールはオブジェクトデータの処理を実行する場合に、ドライバに対してオブジェクトデータへのアクセスを要求する。そして、要求を受け付けたドライバはオブジェクトデータから所定の処理領域を形成し、この処理領域を要求のあったモジュールに引き渡している。
【0003】
【発明が解決しようとする課題】
上述した従来のものにおいては、画像処理を実行するモジュールは一つしかなく、ドライバは単にこのモジュールに提供する画像領域を形成し引き渡してしていた。しかし、異なる画像処理を実行するモジュールが複数ある場合、ドライバは各モジュールの要求に応じて所定の処理領域を形成しなければならないため、処理が煩雑になっていた。
本発明は、上記課題にかんがみてなされたもので、各モジュールを実行して所定の画像データを生成する場合、各モジュール間にて画像処理に必要な処理領域を要求しつつ生成させるため、ドライバの処理負荷を低減させることが可能であるとともに、画像処理を実行するモジュールを適宜増加減することが可能な画像処理システム、画像処理方法および画像処理モジュールを記録した媒体の提供を目的とする。
【0004】
【課題を解決するための手段】
上記目的を達成するため、請求項1にかかる発明は、個別に所定の処理対象データに対して画像処理を実行する少なくとも2つ以上の画像処理モジュールを組み合わせて利用する画像処理システムであって、上記画像処理モジュールは、上記画像処理を実行するに際して、当該画像処理に必要となる処理対象データを他の画像処理モジュールに要求するとともに、当該他の画像処理モジュールがこの要求に基づいて生成した処理対象データを利用して画像処理を実行する画像処理実行機能を具備する構成としてある。
上記のように構成した請求項1にかかる発明においては、個別に所定の処理対象データに対して画像処理を実行する少なくとも2つ以上の画像処理モジュールを組み合わせて利用する画像処理システムを提供する。この画像処理システムの画像処理モジュールは画像処理実行機能を備え、この画像処理実行機能にて画像処理を実行するに際して、当該画像処理に必要となる処理対象データを他の画像処理モジュールに要求する。そして、当該画像処理実行機能は、他の画像処理モジュールがこの要求に基づいて作成した処理対象データを利用して画像処理を実行する。
【0005】
また、請求項2にかかる発明は、個別に所定の処理対象データに対して画像処理を実行する少なくとも2つ以上の画像処理モジュールを組み合わせて利用する画像処理システムであって、上記画像処理モジュールは、他の画像処理モジュールから当該他の画像処理モジュールにおける画像処理に必要となる処理対象データの要求を受け付けた際に、上記画像処理を実行した処理対象データから当該他の画像処理モジュールが画像処理にて利用するのに必要十分な領域だけの処理領域を生成する生成機能を具備する構成としてある。
上記のように構成した請求項2にかかる発明においては、個別に所定の処理対象データに対して画像処理を実行する少なくとも2つ以上の画像処理モジュールを組み合わせて利用する画像処理システムを提供する。この画像処理システムの画像処理モジュールは生成機能を備え、この生成機能は、他の画像処理モジュールから当該他の画像処理モジュールにおける画像処理に必要となる処理対象データの要求を受け付けた際、自己が画像処理を実行した処理対象データから当該他の画像処理モジュールが画像処理にて利用するのに必要十分な領域だけの処理領域を生成する。
【0006】
上述した処理対象データは、画像データ全体から所定のデータ領域を抽出して構成するものであってもよいし、画像データから抽出したオブジェクト画像により構成されるものであってもよい。また、処理対象データのデータ形式は、ドットマトリクス状の画素にて形成されるビットマップデータであってもよいし、描画されている図形などが所定の描画命令にて記述されたベクターデータであってもよい。
【0007】
上述した画像処理実行機能を有する画像処理モジュールは、個別に実行する画像処理に必要となる処理対象データを他の画像処理モジュール(生成機能を有する画像処理モジュール)に要求し、この要求に従って当該他の画像処理モジュールが処理対象データを生成する。ここで、画像処理実行機能を有する画像処理モジュールは、この生成された処理対象データを利用して所定の画像処理を実行する。一方、生成機能を有する画像処理モジュールが他の画像処理モジュールから要求を受けた場合、当該生成機能を有する画像処理モジュールは、画像処理を実行した処理対象データから他の画像処理モジュールの要求に対応する必要十分な処理領域の処理対象データを生成する。従って、要求した画像処理モジュールにおいては、画像処理実行機能にてこの処理領域から形成される処理対象データを利用して個別の画像処理を実行することになる。
【0008】
すなわち、画像処理実行機能を有する画像処理モジュールが、個別の画像処理を施す処理対象データを必要とするときに、他の画像処理モジュール(生成機能を有する画像処理モジュール)に向かって、この必要な処理対象データを要求し、この要求を受けた他の画像処理モジュールは、個別の画像処理を実行した処理対象データに基づいて、要求してきた画像処理モジュールの画像処理が利用するのに必要十分な処理領域の処理対象データを生成する。ここで、画像処理実行機能を有する画像処理モジュールが他の画像処理モジュール(生成機能を有する画像処理モジュール)に対して処理対象データを要求する態様は、直接、当該生成機能を有する画像処理モジュールに要求しても良いし、他の画像処理モジュールを介在して間接的に要求しても良い。このように、画像処理システム全体として、画像処理実行機能と生成機能とのそれぞれを有する少なくとも2つ以上の画像処理モジュールを適宜利用することによって、複数の画像処理を施した画像データを生成することが可能になっている。
【0009】
また、画像処理実行機能は、他の画像処理モジュールに対して必要な処理対象データを示した要求を実施することができればよく、その要求の手法は、多種の方法が採用できる。例えば、各画像処理モジュール間にて所定のデータの送受を実行可能なプロセス間通信により実施してもよいし、各画像処理モジュールが共有にアクセス利用できる共有メモリを使用して実施してもよい。むろん、これらに限定されるものではなく、各画像処理モジュールが共有して使用可能なリソースを使用して実施すればよく、適宜採用可能である。また、画像処理モジュールは、所定の処理対象データに対して個別の画像処理を実行することができればよく、その画像処理の内容は特に限定されない。例えば、強調処理、拡大処理、色調処理などがある。むろん、それぞれ強調に使用するパラメータ、拡大に使用するパラメータなどを変更することによって、各処理を複数にしてもよい。
【0010】
画像処理実行機能が他の画像処理モジュールに必要な処理対象データを要求する際の単位の一例として、請求項3にかかる発明は、上記請求項1に記載の画像処理システムにおいて、上記画像処理実行機能は、上記処理対象データがドットマトリクス状に配置された画素から構成される場合、要求する処理対象データとして当該複数の画素を有する所定数のライン単位にて形成される処理領域を要求する構成としてある。一方、生成機能が他の画像処理モジュールの要求に対応して生成する処理対象データの単位の一例として、請求項4にかかる発明は、上記請求項2に記載の画像処理システムにおいて、上記生成機能は、上記処理対象データがドットマトリクス状に配置された画素から構成される場合、当該複数の画素を有する所定数のライン単位によって上記受け付けた処理対象データの要求に対応する処理領域を生成する構成としている。
【0011】
このように、処理対象データがドットマトリクス状に配置された画素から構成される場合、処理対象データを複数の画素を有するライン単位によって形成する。このとき、画像処理実行機能は、同ライン単位に基づいて必要な処理対象データを要求する。例えば、画像処理モジュールA,Bがあり、処理対象データの要求が画像処理モジュールAから画像処理モジュールBへと行われるとする。かかる場合、画像処理モジュールAは、画像処理を1ラインの処理対象データに実行するとき、画像処理モジュールBに対して、1ラインの処理対象データを要求する。同様に、画像処理モジュールBは、画像処理を1ラインの処理対象データにデータに実行するとき、画像処理モジュールAに対して1ラインの処理領域を生成するように要求する。このように、各画像処理モジュールA,B間にて実行される「要求」や「生成」を複数画素にて形成されるライン単位にて実施する。
【0012】
また、画像処理実行機能が他の画像処理モジュール必要な処理対象データを要求する際の単位の他の一例として、請求項5にかかる発明は、請求項1に記載の画像処理システムにおいて、上記画像処理実行機能は、上記処理対象データがドットマトリクス状に配置された画素から構成される場合、要求する処理対象データとして所定数の画素単位にて形成される処理領域を要求する構成としてある。一方、生成機能が他の画像処理モジュールの要求に対応して生成する処理対象データの単位の他の一例として、請求項6にかかる発明は、上記請求項2に記載の画像処理システムにおいて、上記生成機能は、上記処理対象データがドットマトリクス状に配置された画素から構成される場合、同画素単位によって上記受け付けた処理対象データの要求に対応する処理領域を生成する構成としてある。
このように、処理対象データがドットマトリクス状に配置された画素から構成されるとき、処理対象データを複数の画素を有する所定数の画素単位によって生成する。このとき、画像処理実行機能は、同画素単位により必要な処理対象データを要求する。かかる場合、要求を受けた他の画像処理モジュールの生成機能は、画素単位で処理対象データを生成する。これによって、より小さい範囲にて処理対象データを生成することが可能になる。
【0013】
上述したようにライン単位および画素単位を処理対象データとして各画像処理モジュールにて画像処理を実行することが可能になる。一方で、画像処理に複数単位の処理対象データを必要とする画像処理モジュールもある。かかる場合に好適な一例として、請求項7にかかる発明は、上記請求項1〜請求項6のいずれかに記載の画像処理システムにおいて、上記画像処理実行機能は、後段の画像処理モジュールが画像処理に利用するのに必要十分な領域を含めた上で、必要となる上記領域の処理対象データを他の画像処理モジュールに要求する構成としてある。
【0014】
上記のように構成した請求項6にかかる発明において、任意の画像処理モジュールの画像処理実行機能は、当該画像処理モジュールの後段において画像処理を行う画像処理モジュールの画像処理で必要な処理領域を含めた処理領域を前段の画像処理モジュールに要求する。例えば、画像処理モジュールA,Bがあり、処理領域の要求が画像処理モジュールAから画像処理モジュールBへと行われるとする。かかる場合、画像処理モジュールAは個別の画像処理を1ラインの処理対象データに実行する場合であって、この画像処理モジュールAの後段の画像処理モジュールが5ラインの処理対象データに対して画像処理を実行する場合には、画像処理モジュールBに対し、5ラインの処理領域を生成するように要求する。そして、画像処理モジュールBは、個別の画像処理を1ラインの処理対象データに実行する場合には、当該画像処理モジュールBにて5ライン分の画像処理を実行し、この5ライン分の画像処理が完了したら、画像処理モジュールAはこの5ラインを画像処理に利用する。
【0015】
ここで、画像処理モジュールが生成した処理領域を展開して、他の画像処理モジュールにて利用可能にする手法の一例として、請求項8にかかる発明は、請求項2〜請求項7のいずれかに記載の画像処理システムにおいて、上記生成機能は、所定の記憶領域に個別に処理対象データを展開して生成する構成としてある。上記のように構成した請求項8にかかる発明において、各画像処理モジュールの生成機能は、生成する処理対象データを所定の記憶領域に個別に展開する。すなわち、各画像処理モジュールは、個別の画像処理を実行した処理対象データを格納する記憶領域を確保すればよく、他の画像処理モジュールにて生成された処理対象データを自己の記憶領域に取り込む必要がないため、記憶領域を有効に利用することができるようになる。
【0016】
各画像処理モジュールはそれぞれ単独で個別の画像処理を実行することが可能であり、画像処理システムとしては少なくとも2つ以上の画像処理モジュールを組み合わせて利用可能になっている。このとき、各画像処理モジュールは、所定の順序で画像処理を実行する。一方、順番が最後でない各画像処理モジュールは、個別の画像処理が終われば、処理対象データは必要なくなる。かかる場合、この必要のない処理対象データを順次上記記憶領域から解放することができれば好適である。そこで、請求項9にかかる発明は、上記請求項2に記載の画像処理システムにおいて、上記各画像処理モジュールは、組み合わせて利用されるにあたり所定の順番で順序付けられるとともに、上記生成機能は、後順位の画像処理モジュールがある場合、上記記憶領域に個別に生成した処理対象データから以降の画像処理モジュールで不要な処理対象データを順次解放する構成としてある。
【0017】
上記のように構成した請求項9にかかる発明において、画像処理システムは、複数の画像処理モジュールを連結して組み合わせ、所定の順序にて利用して一連の画像処理を実行する。このとき、各画像処理モジュールは、個別に実行する画像処理が順序の最後でないとき、画像処理が終わると、この画像処理の対象から外れた処理対象データを個別の記憶領域から解放する。これにより、順序が最後でない画像処理モジュールは、画像処理が終了した処理対象データを全て記憶領域に展開しておく必要がなくなるため、画像処理に必要とする最低限の記憶領域を確保することができる。すなわち、記憶領域を有効かつ効率的に利用することが可能になる。
【0018】
画像処理モジュールが元画像データから処理対象データを用意する場合がある。この元画像データは、画像のイメージそのままに形成されている場合もあれば、画像がランダムに分割されるとともに、この分割データがランダムに配置されて元画像データを形成する場合もある。このようにランダムに配置されて元画像データが形成されている場合に好適な画像処理モジュールの機能の一例として、請求項10にかかる発明は、請求項2〜請求項9のいずれかに記載の画像処理システムにおいて、上記生成機能は、所定の元画像データから処理対象データを生成するとともに、同処理対象データを生成するに際して、利用頻度の高い処理対象データを限定して利用可能にする構成としてある。
【0019】
上記のように構成した請求項10にかかる発明において、生成機能は、元画像データから処理領域を生成するに際し、利用頻度の高い処理領域を限定して利用可能にする。例えば、従来、ランダムに分割された分割データから所定の処理対象データを生成する場合、すべての分割データを検索しつつ、この処理対象データに該当する分割データを抽出して処理対象データを生成していた。従って、画像処理モジュールは、処理対象データの要求を受けるごとに元画像データの検索を実行するとともに、該当する分割データを抽出し、処理対象データを生成しなければならなかった。しかし、任意の処理対象データを生成した後は、この処理対象データを生成するに際して抽出した分割データが次の処理対象データの生成に利用される確率は高いため、このうような利用頻度が高い分割データを限定して利用可能にしておく。この利用可能にする手法は、この分割データを他の記憶領域に確保しておき、検索する際はこの記憶領域のみを検索する手法にて実現してもよいし、この分割データが元画像データにて存在する位置を示すポインタを保持して実現してもよい。
【0020】
任意の画像処理モジュールが自己の画像処理を実行して1ラインの領域を形成するために必要とする処理領域が5ラインの場合、最初の要求では5ライン必要となるが、この5ラインによって画像処理を実行し1ラインを生成した後は、順次1ラインを要求し、画像処理の実行の際に、先頭の1ラインを処理対象から除外し新規な5ラインにて画像処理を実行する。かかる場合、5ラインを要求する処理と1ラインを要求する処理を個別にするとよい。
【0021】
そこで、請求項11にかかる発明は、請求項1〜請求項10のいずれかに記載の画像処理システムにおいて、上記画像処理実行機能は、初期画像処理時に必要な処理対象データを要求する初期処理対象データ画像処理実行機能と、初期画像処理以降の通常時に必要な処理対象データを要求する通常処理対象データ画像処理実行機能とを備える構成としてある。
上記のように構成した請求項11にかかる発明において、初期処理対象データ画像処理実行機能機能は、初期画像処理時に必要な処理対象データを要求する。上述した例によると5ラインを要求する。また、通常処理対象データ画像処理実行機能は、初期画像処理以降の通常時に必要な処理対象データを要求する。上述した例によると1ラインを要求する。ここで、初期画像処理時とは、上述したように画像処理モジュールが画像処理の対象となる処理対象データを全く保持していない場合をいう。
【0022】
このように、個別に所定の処理対象データに対して画像処理を実行する少なくとも2つ以上の画像処理モジュールを組み合わせて利用する手法は必ずしも実体のあるシステムに限られる必要はなく、その方法としても機能することは容易に理解できる。そこで、請求項12および請求項13は、上述した請求項1〜請求項11のいずれかに記載した画像処理システムの機能を実現可能な画像処理方法を提供するものである。すなわち、必ずしも実体のある画像処理システムに限らず、その機能を実現可能な画像処理方法としても有効である。
【0023】
ところで、画像処理システムを実現する各画像処理モジュールは、システムとして構成された場合において本発明を構成することは上述した通りである。一方で、この画像処理モジュールは所定の記録媒体に記録されて頒布され得るものであり、かかる場合は、この所定の記録媒体においても本発明が機能し得るものと考えることができる。そこで、請求項14および請求項15は、上述した請求項1〜請求項11のいずれかに記載した画像処理システムの機能を実現可能な画像処理モジュールを記録した媒体を提供するものである。
【0024】
ここで、この記録媒体は、磁気記録媒体であってもよいし光磁気記録媒体であってもよいし、今後開発されるいかなる記録媒体においても全く同様に考えることができる。また、一次複製品、二次複製品などの複製段階については全く問う余地無く同等である。さらに、一部がソフトウェアであって、一部がハードウェアで実現されている場合においても発明の思想において全く異なるものではなく、一部を記録媒体上に記憶しておいて必要に応じて適宜読み込まれるような形態のものとしてあってもよい。
【0025】
【発明の効果】
以上説明したように請求項1および請求項2にかかる発明は、複数の画像処理モジュールを適宜組み合わせて利用する画像処理システムにおいて、画像処理実行機能を有する画像処理モジュールでの画像処理に必要な処理対象データを他の画像処理モジュールに生成させるため、処理対象データを管理するためのモジュールを必要とすることが無くなり、画像処理システムを簡素化することが可能となる。このような処理データを生成する生成機能を画像処理モジュール備えさせることにより処理対象データを管理するためのモジュールを必要とすることが無くなり、画像処理システムを簡素化することが可能となる。
また、請求項3および請求項4にかかる発明によれば、ライン単位で処理領域を特定するため、処理領域を確保する領域を小さくすることができる。
【0026】
さらに、請求項5および請求項6にかかる発明によれば、画素単位で処理領域を特定するため処理領域を確保する領域をより小さくすることができる。
さらに、請求項7にかかる発明によれば、複数単位の処理対象データの要求および生成を行うことが可能になる。
さらに、請求項8にかかる発明によれば、各画像処理モジュールが個別の記憶領域に画像処理を実行した処理対象データを保存するため、各画像処理モジュールでの処理結果を利用することが可能になる。
さらに、請求項9にかかる発明によれば、各画像処理モジュールにて画像処理に必要のない処理対象データを記憶領域を解放するため、当該記憶領域を有効かつ効率的に利用することが可能になる。
【0027】
さらに、請求項10にかかる発明によれば、画像処理モジュールは高速に処理対象データを形成することが可能になる。
さらに、請求項11にかかる発明によれば、初期画像処理時と通常画像処理時に使用する画像処理実行機能を別個にするため、処理を高速化することが可能になる。
さらに、請求項12および請求項13にかかる発明によれば、上記請求項1〜請求項11に記載した画像処理システムと同様な効果を奏する画像処理方法を提供することができる。
さらに、請求項14および請求項15にかかる発明によれば、上記請求項1〜請求項11に記載した画像処理システムと同様な効果を奏する画像処理モジュールを記録した媒体を提供することができる。
【0028】
【発明の実施の形態】
以下、図面にもとづいて本発明の実施形態を説明する。
図1は本発明の一実施形態にかかる画像処理システムを実現するハードウェアの一例としてのコンピュータシステム10をブロック図により示している。
本コンピュータシステム10は、画像データを直接的に入力する画像入力デバイスとして、スキャナ11aとデジタルスチルカメラ11bとビデオカメラ11cとを備えており、コンピュータ本体12に接続されている。それぞれの入力デバイスは画像をドットマトリクス状の画素で表現した画像データを生成してコンピュータ本体12に出力可能となっており、ここで同画像データはRGBの三原色においてそれぞれ256階調表示することにより、約1670万色を表現可能となっている。
【0029】
コンピュータ本体12には、外部補助記憶装置としてのフロッピーディスクドライブ13aとハードディスク13bとCD−ROMドライブ13cとが接続されており、ハードディスク13bにはシステム関連の主要プログラムが記録されており、フロッピーディスクやCD−ROMなどから適宜必要なプログラムなどを読み込み可能となっている。
また、コンピュータ本体12を外部のネットワークなどに接続するための通信デバイスとしてモデム14aが接続されており、外部のネットワークに同公衆通信回線を介して接続し、ソフトウェアやデータをダウンロードして導入可能となっている。この例ではモデム14aにて電話回線を介して外部にアクセスするようにしているが、LANアダプタを介してネットワークに対してアクセスする構成とすることも可能である。
【0030】
ここで、外部補助記憶装置のうち、フロッピーディスクドライブ13aやCD−ROMドライブ13cについては、記録媒体自身が交換可能であり、この記録媒体に画像データが記録された状態で供給されることにより、画像入力デバイスの一手段ともなりうる。また、モデム14aやLANアダプタを介してネットワークにアクセスした場合、このネットワークから画像データが供給されることもあり、このような場合も画像入力デバイスの一手段となりうる。この他、コンピュータ本体12の操作用にキーボード15aやポインティングデバイスとしてのマウス15bも接続され、さらに、マルチメディア対応のためにスピーカ18aやマイク18bを備えている。
一方、画像出力デバイスとして、ディスプレイ17aとカラープリンタ17bとを備えている。ディスプレイ17aについては水平方向に800画素と垂直方向に600画素の表示エリアを備えており、各画素毎に上述した1670万色の表示が可能となっている。むろん、この解像度は一例に過ぎず、640×480画素であったり、1024×768画素であるなど、適宜、変更可能である。
【0031】
また、印刷装置としてのカラープリンタ17bはインクジェットプリンタであり、CMYKの四色の色インクを用いて記録媒体たる印刷用紙上にドットを付して画像を印刷可能となっている。画像密度は360×360dpiや720×720dpiといった高密度印刷が可能となっているが、階調表限については色インクを付すか否かといった2階調表現となっている。色インクについては、かかる四色のものに限らず、色の薄いライトシアンやライトマゼンタを加えた六色によってドットの目立ちを低減させることも可能であるしインクジェット方式に限らずカラートナーを利用した静電写真方式などを採用することも可能である。
このような画像入力デバイスを使用して画像を入力しつつ、画像出力デバイスに表示あるいは出力するため、コンピュータ本体12内では所定のプログラムが実行されることになる。そのうち、基本プログラムとして稼働しているのはオペレーティングシステム(OS)12aであり、このオペレーティングシステム12aにはディスプレイ17aでの表示を行わせるディスプレイドライバ(DSPDRV)12bとカラープリンタ17bに印刷出力を行わせるプリンタドライバ(PRT DRV)12cが組み込まれている。これらのドライバ12b,12cの類はディスプレイ17aやカラープリンタ17bの機種に依存しており、それぞれの機種に応じてオペレーティングシステム12aに対して追加変更可能である。また、機種に依存して標準処理以上の付加機能を実現することもできるようになっている。すなわち、オペレーティングシステム12aという標準システム上で共通化した処理体系を維持しつつ、許容される範囲内での各種の追加的処理を実現できる。
【0032】
この基本プログラムとしてのオペレーティングシステム12a上でアプリケーション12dが実行される。アプリケーション12dの処理内容は様々であり、操作デバイスとしてのキーボード15aやマウス15bの操作を監視し、操作された場合には各種の外部機器を適切に制御して対応する演算処理などを実行し、さらには、処理結果をディスプレイ17aに表示したり、カラープリンタ17bに出力したりすることになる。
かかるコンピュータシステム10では、画像入力デバイスであるスキャナ11aなどで写真などを読み取って画像データを取得することができる他、デジタルスチルカメラ11bで撮影した画像データを取得したり、ビデオカメラ11cで撮影した動画としての画像データを取得することができる。このような画像データは最終的に画像出力デバイスとしてのディスプレイ17aで表示したり、カラープリンタ17bで印刷することになるが、元の画像データのままでは写りが悪いなどの問題があることが多く、そのような場合には、何らかの修正が行われる。
この修正を行うのは、一般的にはフォトレタッチなどのアプリケーション12dなどであるが、本画像処理システムではアプリケーション12dが印刷処理を実行するときに出力されるオブジェクトデータに対してプリンタドライバ12cが同修正処理を実行する。
【0033】
印刷処理の際、アプリケーション12dはオペレーティングシステム12aに対してオブジェクトデータを出力する。
図2は、印刷イメージの処理単位の変化を示しており、本来、一つの印刷イメージP.I.は処理の都合上、分割オブジェクトデータa(1)〜a(n)に分割され、さらにプリンタドライバ12cの処理を経てカラープリンタ17bが処理可能なラスタデータb(1)〜b(n)として出力される。
このプリンタドライバ12cがオペレーティングシステム12aに組み込まれた状態でのシステム上の概略構成を図3に示しており、API層から本プリンタドライバ12cが提供する機能管理オブジェクトP1にアクセスされ、この機能管理オブジェクトP1は、分割画像管理オブジェクトP2によって上記分割オブジェクトデータの管理を実行しつつ、処理画像管理オブジェクトP3によって処理画像を取得する。この処理画像を取得するにあたって機能管理オブジェクトP1は同処理画像管理オブジェクトP3に対して必要領域を要求するし、その処理の前提として予め分割オブジェクトデータに関して分割画像登録の処理を実行する。
すなわち、処理画像管理オブジェクトP3が実際の画像処理を実行する拡大処理オブジェクトP4と強調処理オブジェクトP5を介して分割画像管理オブジェクトP2に対して処理対象となる画像領域を通知するため、分割画像管理オブジェクトP2は既に登録されている分割オブジェクトデータのうちの必要なものだけをメモリ上に展開して利用可能とし、展開された結果を利用して強調処理オブジェクトP5と拡大処理オブジェクトP4が画像処理を実行することになる。
【0034】
図4は入力される分割オブジェクトデータと取得される処理画像とを示している。
同図において、元の画像をソース(Source)画像と呼ぶとともに、拡大処理と強調処理を実施された画像をデスティネイション(Destination)画像と呼ぶことにすると、入力される分割オブジェクトデータは9分割されたS−Unit.a〜iである。
ここで、デスティネイション画像は、一体として処理することも可能であるが、この場合も分割して処理するものとし、各分割画像をD−Unit.A〜Cと呼ぶ。D−Unit.A〜Cを得るためには処理前の画像領域を利用可能であることが必要であるが、入力されているのはS−Unit.a〜iであって、全てを利用可能となっているか否かは分からない。
従って、処理画像管理オブジェクトP3から分割画像管理オブジェクトP2に対して対応するS−Unit.a〜iを利用可能とするように要求し、そのようにして利用可能にされるのがS−Area.a〜cである。
ただし、このS−Area.a〜cは領域としては拡大前のD−Unit.A〜Cと一致するものではなく、周縁領域を含むものとなっている。
このように周縁領域を含むのは、拡大処理オブジェクトP4と強調処理オブジェクトP5で画像処理する際に処理対象の画素だけでは処理が不可能であり、その周囲の画素も参照しなければならないからである。
【0035】
次に、各画像処理で参照する周縁領域を図5および図6に示す。
具体的な処理内容については詳述しないが、図5に示す強調処理では対象画素を基準として上方と左方に1画素、右方と下方に2画素を参照する必要がある。
また、図6に示す拡大処理では、対象画素を基準として右方左方と下方に1画素、上方に2画素を参照する必要がある。周縁領域を参照する必要がある具体的な演算例として、フィルタ処理が上げられる。この場合の強調処理と拡大処理の例にあてはめれば、強調処理においては4×4画素分のフィルタを利用し、拡大処理においては3×4画素分のフィルタを利用するので、周縁領域が必要になるといえる。
図7は処理画像管理オブジェクトP3から分割画像管理オブジェクトP2に必要領域が通知される過程を示している。
同図において、最終的に取得される処理画像の領域が、最初の必要領域S−Area’として処理画像管理オブジェクトP3に要求されると、同処理画像管理オブジェクトP3は、拡大処理オブジェクトP4にこれを通知する。
すると、拡大処理オブジェクトP4では自己の拡大倍率が2倍であるときには上記必要領域S−Area’の元となる画像領域は1/2倍である。ただし、参照する画素は上方、右方、下方、左方に対してそれぞれ1、2、2、1画素づつであることを強調処理オブジェクトP5に通知する。この強調処理オブジェクトP5では拡大を行わないため、本来的に必要なのは拡大処理オブジェクトP4で必要とする画像領域であり、上記必要領域S−Area’の1/2倍であるとともに、その周縁領域の(1,2,2,1)画素である。しかし、自己においても周縁領域を参照する必要があり、さらに周縁領域の(2,1,1,1)画素を加えて分割画像管理オブジェクトP2に通知する。
すなわち、このような修正を加えた画像領域S−Areaは必要領域S−Area’の1/2倍の領域と、その周縁領域の(3,3,3,2)画素を加えた領域となる。むろん、このような周縁領域の大きさは拡大処理オブジェクトP4や強調処理オブジェクトP5の演算手法に依存しており、他の演算例では強調処理において上下左右の全てに2画素を要求しつつ、拡大処理で上方と左方に1画素、右方と下方に2画素を要求するというようなものもある。
【0036】
一方、分割画像管理オブジェクトP2は、機能管理オブジェクトP1を介して個々の分割オブジェクトデータが入力されており、領域としての情報を管理しながら実体についてはスプールファイルに格納して分割画像登録を実施している。スプールファイルはハードディスク13b上に格納されるため、他の処理オブジェクトは直接的に参照したり利用することはできない。
しかしながら、この分割画像管理オブジェクトP2は以上のようにして通知された画像領域S−Areaを他のオブジェクトから利用できるようにするため、メモリ上に展開する。この際、必要とされた画像領域S−Areaのそのままをメモリ上に展開するのではなく、図8に示すように、あくまでも画像領域S−Areaを包含するに足るS−Unit.a〜iがどれにあたるかを調査し、該当する全てのS−Unit.a〜iをメモリ上に展開する。
ここで分割オブジェクトデータの数が少なければ画像領域S−Areaを包含するS−Unit.a〜iがどれであるかを判断するのは容易である。
各S−Unit.a〜iの実体データは、ハードディスク13b上に格納されるものの、各領域に関するヘッダ情報は、図9に示すようなテーブルに格納されている。
各テーブルには次のS−Unit.a〜iの情報開始位置を示すポインタnext_ptrが備えられている。本来であれば、このポインタをたどることによって全てのS−Unit.a〜iのヘッダ情報を参照することができるが、各S−Unit.a〜iが画像領域S−Areaの一部とでも重なり合うか否かを判断するのはいくつかの比較演算を繰り返さなければならず、演算回数が多大となってしまう。
一方、分割オブジェクトユニットの配置情報などから必ずしも全てのS−Unit.a〜iと対比する必要もなく、現実的には参照すべきS−Unit.a〜iは限られている。例えば、図9に示す例であれば、S−Areaを展開するに際し、斜線を示すS−Unit.a〜iだけを参照できればよく、一時的にではあるがこのテーブルにおけるポインタnext_ptrを振り替えておくようにしている。
【0037】
本実施形態においては、ポインタnext_ptrにより参照するS−Unit.a〜iを振り替えて間接的にS−Areaを形成するS−Unit.a〜iを指定し、S−Areaを高速に生成可能な構成を採用しているが、むろん、S−Areaを高速に生成可能にする手法は限定されるものではない。図21に示すようにS−Areaの生成に必要なS−Unit.a〜iをハードディスクと比較して相対的に高速アクセス可能な主メモリやキャッシュメモリなどのメモリに格納させ、S−Areaの生成時に参照させるようにしてもよいし、図22に示すように各S−Unit.a〜iにID1〜9を振り分けるとともに、このID1〜9により順不同に配置されたS−Unit.a〜iがソース画像の元画像を形成できるような順番に配置するIDテーブルを形成し、S−Areaの生成時に参照するようにしてもよい。
【0038】
以上のようにして分割画像管理オブジェクトP2が画像領域S−Areaを包含する全てのS−Unit.a〜iをメモリ上に展開したら、強調処理オブジェクトP5が強調処理を実行し、次いで拡大処理オブジェクトP4が拡大処理を実行する。強調処理では対象画素の周縁領域として(2,1,1,1)画素が必要であり、強調処理の結果として生成される画像領域は図10に示すように周縁領域として(2,1,1,1)画素を省いた破線内の領域となる。また、同様にして拡大処理では対象画素の周縁領域として(1,2,2,1)画素が必要であり、強調処理の結果として生成される画像領域は図11に示すように周縁領域として(1,2,2,1)画素を省いた破線内の領域となる。むろん、拡大処理は内部に格子点を補間生成するものであるから、得られる処理画像は縦横2倍に拡大される結果、最初の必要領域S−Area’と一致することになる。
【0039】
次に、分割画像管理オブジェクトP2がメモリ上にS−Areaを展開する他の実施例を説明する。かかる実施例におけるプリンタドライバ12cがオペレーティングシステム12aに組み込まれた状態でのシステム上の概略構成を図23に示す。
同図において、API層から本プリンタドライバ12cが提供する機能管理オブジェクトP100にアクセスされ、この機能管理オブジェクトP100は、分割画像管理オブジェクトP200によって分割オブジェクトデータの管理を実行しつつ、処理画像管理オブジェクトP300より拡大および色調に関する画像処理が実施された画像データを1ラインごと取得し、取得したライン単位の画像データを積み上げてデスティネーション画像を形成する画像データを生成する。
【0040】
具体的には、各モジュールにおいて色調処理オブジェクトP500が分割画像管理オブジェクトP200より引き渡された所定のライン単位の画像データに対して色調処理を実施し、所定のライン単位の画像データを形成し拡大処理オブジェクトP400に引き渡す。次に、拡大処理オブジェクトP400は、この色調処理が為された画像データに対して拡大処理を実施し、1ラインの画像データを形成し処理画像管理オブジェクトP400に引き渡し、機能管理オブジェクトP100は処理画像管理オブジェクトP300より1ラインごとに画像データを取得しつつ積み上げてデスティネーション画像を生成する。
【0041】
ここで、本実施形態においては、拡大処理オブジェクトP400は、1ラインの拡大処理後の画像データを生成するため、同1ラインと参照ラインとを含め5ラインの画像データを必要とする。従って、色調処理オブジェクトP500に対して5ラインの画像データの引き渡しを通知することになる。また、色調処理オブジェクトP500は、1ラインの色調処理後の画像データを生成するため、当該1ラインの画像データのみでよい。従って、分割画像管理オブジェクトP200に対して1ラインの画像データの引き渡しを要求することになる。むろん、これらの処理にて必要とするライン数は、特に限定されるものではなく、各オブジェクトの処理内容に応じて適宜変更可能である。
【0042】
次に、図24に入力される分割オブジェクトデータと取得される処理画像とを示す。
同図において、元の画像をソース(Source)画像と呼ぶとともに、拡大処理と色調処理を実施された処理画像をデスティネイション(Destination)画像と呼ぶことにする。また、入力される分割オブジェクトデータは9分割されたS−Unit.A〜Iである。ここで、デスティネイション画像は、一体として処理することも可能であるが、本実施例においてはライン単位に分割してラインごとに生成され、このラインごとに生成されたものを積み上げて最終的なデスティネーション画像が生成されるものとする。また、デスティネーション画像を分割するライン単位の各分割画像をD−ライン.0〜nと呼ぶ。ここで、nは整数であり、生成されるデスティネーション画像の総ライン数を示している。最初に、D−ライン.0を得るために、処理画像管理オブジェクトP300は、拡大処理オブジェクトP400に対して1ラインの引き渡しを通知する。ここで、拡大処理オブジェクトP400は、1ラインの拡大処理を実行するために、上述したように5ラインの画像データを必要とする。従って、次の色調処理オブジェクトP500に対して5ラインの引き渡しを通知する。色調処理オブジェクトP500は、色調処理を実行するにあたり1ラインの画像データにて処理可能であるため、分割画像管理オブジェクトP200に1ラインの画像データの引き渡しを通知する。
【0043】
そして、分割画像管理オブジェクトP200は、分割画像データS−Unit.A〜Iより所定の1ラインの画像データを形成し、色調処理オブジェクトP500に引き渡す。色調処理オブジェクトP500は、この引き渡された1ラインのデータに色調処理を実施し、色調処理が終わると、拡大処理オブジェクトP400からは5ラインを要求されているため、5ライン分の色調処理が終わるまで、分割画像管理オブジェクトP200に1ラインを引き渡しを通知し、分割画像管理オブジェクトは、要求に従い順次1ラインを生成し、色調処理オブジェクトに渡す。そして、色調処理オブジェクトP500は、引き渡された1ラインの画像データに順次色調処理を実行する。色調処理オブジェクトP500は、5ラインに対する色調処理が終わると、拡大処理オブジェクトP400にこの5ラインを引き渡す。拡大処理オブジェクトP400は、この引き渡された5ラインの内後ろ4ラインを参照して先頭1ラインの強調処理を実施する。そして、色調処理も強調処理も実施された1ラインのデスティネーション画像が生成され、処理画像管理オブジェクトP300に引き渡される。
【0044】
最初の1ラインのデスティネーション画像が生成されると、以降、順次nラインまで、1ラインごとデスティネーション画像が生成される。この1ラインの画像を生成するにあたり、処理画像管理オブジェクトP300は、拡大処理オブジェクトP400に1ラインの引き渡しを通知する。ここで、拡大処理オブジェクトP400は、既に、色調処理が終わっている5ラインを引き渡されている。従って、この5ラインのうち先頭の1ラインを不参照の扱いとし、2番目のラインについて拡大処理を実施するために、色調処理オブジェクトP500に1ラインの引き渡しを通知する。この通知を受けると色調処理オブジェクトP500は、分割画像管理オブジェクトP200に1ラインの引き渡しを通知する。分割画像管理オブジェクトP200は、S−Unit.A〜Iより所定の1ラインを形成し、色調処理オブジェクトP500に引き渡す。色調処理オブジェクトP500は、この引き渡された1ラインに対して色調処理を実施し、拡大処理オブジェクトP400に引き渡す。拡大処理オブジェクトP400は、この引き渡された1ラインを既に引き渡されている4ラインの最後尾に付加して、5ラインの処理領域を形成し、上述した2番目のラインについて拡大処理を実施する。この2番目の1ラインについて拡大処理が終わると、処理画像管理オブジェクトP300に引き渡す。機能管理オブジェクトP100は、このように処理画像管理オブジェクトP300が取得した各オブジェクトにて各処理が実施されたライン単位の画像データを順次積み上げてデスティネーション画像を生成する。
【0045】
以上のようにして、最初に分割画像管理オブジェクトP200が色調処理オブジェクトP500に対して1ラインの画像領域をメモリ上に展開して引き渡し、色調処理オブジェクトP500が色調処理を実行し、色調処理オブジェクトP500において5ラインの画像データを生成すると、拡大処理オブジェクトP400に引き渡し、拡大処理を実行する。そして、5ラインより生成された1ラインの画像データを処理画像管理オブジェクトP300に引き渡す。そして、以降は、処理画像管理オブジェクトP300,拡大処理オブジェクトP400,色調処理オブジェクトP500,分割画像管理オブジェクトP200間にて1ラインの引き渡し通知および形成し、あるいは、画像処理を実行した1ラインの画像データを逆方向にて順次引き渡し、機能管理オブジェクトP100にて積み上げることによりデスティネーション画像を生成する。
本実施形態においては、分割画像管理オブジェクトP200から色調処理オブジェクトP500に引き渡される1ラインの画像データおよび色調処理オブジェクトP500から拡大処理オブジェクトP400に引き渡される5ラインあるいは1ラインの画像データがS−Areaを構成することはいうまでもない。
また、本実施形態においては、画像処理を実行する順番を色調処理オブジェクトP500→拡大処理オブジェクトP400としているが、むろん、これに限定されるものではなく、拡大処理オブジェクトP400→色調処理オブジェクトP500としてもよいし、所定の設定により、拡大処理オブジェクトP400あるいは色調処理オブジェクトP500のいずれか一方のみを実行するようにしてもよい。
【0046】
ここで、図12にプリンタドライバ12cにおける手続の流れを示す。
同図においては、オペレーティングシステム12aに組み込まれた状態でのプリンタドライバ12cの概略構成を示しているが、図3ではプリンタドライバ12c単独での視点で示しており、さらにプリンタドライバ12c内を本来のドライバの機能に近い処理と、付加的な機能に近い処理とに分割し、左欄にドライバ機能をまとめ、右欄にモジュール機能をまとめている。
すなわち、手順1においてはドライバ機能としてソース画像の取得処理があり、これは機能管理オブジェクトP1と分割画像管理オブジェクトP2の機能といえる。次に、手順2はフォトインスタンス取得処理があるが、これは各オブジェクト画像ごとに別個・並行に処理するために現在の実行処理対象を確認するためのものである。
【0047】
以上が前処理に対応し、処理の流れとしては手順3においてモジュールの側からドライバの側に向けて処理画像領域を上述したように通知する
一方、手順4では要求された処理画像領域を含むソース画像(S−Unit.a〜i)をドライバ側が登録し、これに続いて手順5では画像処理として強調処理および拡大処理を実行することになる。
なお、画像処理は、オブジェクト画像全体についての評価を行っておき、その評価結果に基づいて処理を実行する。例えば、あるオブジェクト画像が全体的に暗いのであれば、画像処理で明るく修整すればよい。この場合、オブジェクト画像は分割オブジェクトデータに分割されてしまっているから、それぞれのオブジェクトデータをまとめて評価するか、個別的にオブジェクトデータについて評価しつつも、最終的には各オブジェクト画像ごとに評価をまとめる必要がある。
【0048】
本来、分割オブジェクトデータとオブジェクト画像との対応関係は付けられていないのが通常であり、この対応付けはプリンタドライバ12cの側で行わなければならない。この対応付けの一つの手法として、仮想領域に分割オブジェクトデータを展開してオブジェクト画像を連結する手法があるし、別の手法として分割オブジェクトデータ同士の重なり合いや隣接具合から同じオブジェクト画像であるか否かを判断する手法がある。いずれの手法を採用するかはシステムの相違によってまちまちである。
【0049】
一方、上述したように画像処理のためにオブジェクト画像を評価するには、オブジェクト画像全体にわたって画素の情報をサンプリングすることが有効であり、簡易である。このようなサンプリングは、オブジェクト画像と分割オブジェクトデータとの対応関係が分かる前後のどちらで実行しても良い。
すなわち、対応関係が分かる前に分割オブジェクトデータごとにサンプリングしておき、対応関係が分かってからサンプリング結果を統合することもできるし、対応関係が分かってから各オブジェクト画像ごとに対応する分割オブジェクトデータをサンプリングすることもできる。このようにサンプリングの実行タイミングは条件に応じてさまざまであり、図12においても実行可能な三つのタイミングに対応して破線で示している。なお、ドライバの側で行うといってもサンプリング用のモジュールを用意することも可能である。
【0050】
手順5の画像処理は、このサンプリング結果を利用して実行され、生成された画像がデスティネーション画像となって手順6にて登録される。そして、登録されたデスティネーション画像は手順7でドライバ側にて出力されることになる。そして、最終的にデスティネーション画像が取得されたら手順8でソース画像をメモリから解放する。ここでソース画像の解放タイミングは特に制限されるものではない。
例えば、一つのS−Areaごとに登録・解放を実行するとすれば使用メモリ領域を低減できる反面、作業が煩わしい。これに対して使用メモリ領域の制限が少ない場合は、登録・解放の作業をこまめに行わなくても良いと言える。
【0051】
なお、上述した例では、デスティネーション画像を取得する意味で必要領域を通知しており、生成されるデスティネーション画像は任意のメモり領域に展開されればよい。
これに対してスプールファイル自体に対して拡大処理を実行したい場合もある。この場合は、拡大処理された画像をスプールファイルに対して付加し、元画像ファイルのポインタを拡大処理された画像ファイルにリンクさせればよい。
例えばスプールファイルから読み出して仮想画像を構築し、画像処理を施してから元のスプールファイルを書き換えたいという処理があるとする。
かかる場合に、拡大処理をスプールファイル中の画像ファイルに施してしまえば仮想画像上で拡大処理を実現しなくても良くなる。しかしながら、拡大処理すればスプールファイル中の画像ファイルよりも大きくなるから、拡大後の画像ファイルで書き換えることはできない。従って、拡大後の画像データをスプールファイルの後に付加していき、ポインタのリンクを張り替えるようにするのである。
【0052】
次に、拡大処理の具体的手法について説明する。
一般に、ドットマトリクス状の画素からなる画像についてその格子間に新たに画素を生成する処理を拡大処理と呼んで広く実行されている。これは、ディスプレイ17aの解像度とカラープリンタ17bの解像度に相違があるような場合、画素単位で割り当ててしまうと一定の大きさに表示されなくなるといった不具合を解消するためである。
ここで、拡大処理には、次に示す手法が知られている。
1.最近隣内挿法(単純水増しコピー)
【0053】
2.3次たたみ込み補間(以下、3次補間という)
前者のものは数学的に最も高速な拡大手法であるし、後者のものはきれいな拡大結果を得られる反面で数学的には大量の演算を必要として時間がかかるという特徴を有している。
いずれにしても、これらは画像処理の技術用語としてはフィルタ処理と呼ばれている。ここで、図13や図14は別々のフィルタ[1],[2]を使用して拡大前の画像aから拡大後の画像Aを生成する原理を示している。この場合、拡大前の画像aの数点を利用してフィルタ[1],[2]にかけることにより、拡大後の画像Aのある1点を求めることができる。従って、拡大後の画像Aの全画素について本来的には演算を繰り返すことになる。
【0054】
ところで、フィルタ[1],[2]には処理結果について差があるはずである。すなわち、前者は荒く見え、後者は滑らかに見えるように思われる。しかしながら、拡大結果を使用して印刷した場合、人間の目の認識の限界により必ずしもその差を認識することができない。
すなわち、高度な演算を要するフィルタ[2]だけで拡大した場合と、フィルタ[1],[2]を併用して拡大した場合とにおいて、拡大結果の差を認識できない場合がある。
図15は、後者の手順を示しており、元の画像aに対してフィルタ[2]を利用して拡大処理を実行し、一度、画像a’を生成した後に、今度はフィルタ[1]を利用して拡大処理を実行し画像Aを得ている。むろん、先のフィルタ[2]の拡大処理は3次補間を要するのでモジュールで実行し、フィルタ[1]の拡大処理はドライバで実現するようにしてもよい。
この場合、もちろんフィルタ[1]とフィルタ[2]の拡大倍率によっては肉眼でも差が分かるが、そのような差が分からない範囲の組合せであるならば、処理時間のかかるフィルタ[2]にて生成する画像a’の面積は小さいため高速な処理を期待できる。なぜなら、拡大処理後の画像の面積に比例して演算量も多くなるからである。
【0055】
図16は、3次補間の場合の既存の格子点と補間点との配置を示すとともに、数1は、この3次補間のフィルタ処理を行列演算式で示している。
【数1】
なお、関数f(t)については、
f(t) = {sin(πt)}/πt
で表され、UまたはVをWに置き換えることにより、
t0 = 1+(W−|W|)
t1 = (W−|W|)
t2 = 1−(W−|W|)
t3 = 2−(W−|W|)
で表すことができる。
【0056】
このような3次補間演算は、一般的に多くの演算量を要することになるが、補間点の位置によっては高速化が可能であり、より具体的には整数倍の拡大に限れば処理量はかなり低減することができる。なお、ここでいう整数倍とは原点が格子線の交差点上に置かれるようになる倍率のことであって、拡大処理前後の格子点数の比を意味するものではない。
図17は、この定義でいうところの2倍の拡大であり、図18は、3倍の拡大である。図中、大きな白丸が原点で、小さい黒丸が補間点である。これらの図から分かるように、整数倍の拡大においては、補間点のいくつかは格子線上に配置される。以下、具体的な高速化手段について説明する。
【0057】
(1) 格子線上の補間点の演算簡易化
整数倍の拡大においては、補間点のいくつかは格子線上に配置される。従って、数1は、簡易化(演算量が減る)される。すなわち、補間点が格子線上に存在するということは、W(UあるいはVのいずれか)が0になることを意味する。よって、
t0 = 1、 t1 = 0、 t2 = 1、 t3 = 2
となる。このとき、 f(t) は、上式より以下のようになる。
f(0) = 1、 f(1) = 0、 f(2) = 0
よって、Y軸に関しては格子線上に存在する場合のX軸上の補間点は、
【数2】
によって算出することになり、X軸に関しては格子線上に存在する場合のY軸上の補間点は、
【数3】
によって算出することになる。
この数2、数3から明らかなように拡大処理の演算を簡易化することが可能になる。
【0058】
(2) 複数のフィルタを用意することによる高速化
整数倍のときに格子線上に位置する補間点はもっとも特異な例であるが、格子線上にない場合でも倍率を固定するとともに、補間点ごとのフィルタ処理を用意すれば、f(t) は定数化できるので演算処理を高速化できる。かかる場合、f(t) を定数化すると、
【数4】
により表されることになる。ここにおいて、A〜D、K〜N は、補間点の場所Wによって一意的に決定されうるものであり、予め演算してテーブルに保存しておけばよい。
【0059】
ここで、拡大処理において2倍の場合について図17を参照してみると、局所的には4個の点を補間しなければならないので拡大処理前の画像aを画像Aに拡大する場合、4つのフィルタを用意することになる。これを図で表したものが図19であり、複数のフィルタ処理を用意することを前提とすれば、f(t) の定数化が可能になる。f(t) の定数化が実現する具体的な高速化は以下のような理由による。
まず、f(t) の定数化そのこと自体による高速化が可能である。なぜならば、f(t) の定数化は、f(t) で表せられる3次補間関数の演算の除去を意味するからである。
次に、演算種別の変化によって高速化が可能である。一般に、CPUにとって同じ1回の掛け算でも、“変数 * 変数” より “定数 * 変数”の方が高速な処理となる。従って、数1と数4とを比較した場合、数4の方が高速化されることが分かる。
さらに、一方の定数化によって“定数 * 変数”のかけ算を演算テーブルにて代用することにより、高速化することができる。
【0060】
以上の高速化の効果をまとめると次のようになる。
1つの補間点を求めるために、1つのフィルタ処理を行なう従来の手法によれば、
・3次補間関数の演算
・20回の“変数 * 変数”の演算
が必要である。しかしながら、上に述べたように複数のフィルタ処理を前提とした場合には、
・16回の演算テーブルへのアクセス
・4回の“定数 * 変数”の演算
により実現できる。従って、複数のフィルタを用意した方が高速化を実現できる。また、先に述べた格子線上の補間点の演算簡略化についても、同様にして複数のフィルタ処理を用意して実現可能である。そして、このような複数のフィルタ処理を用意することによる高速化と、格子線上にある補間点の式の簡略化による高速化は、整数倍であれば何倍でも有効である。
【0061】
(3)その他の高速化
(a)2のn乗倍の拡大における特異な補間点の演算式の簡略化
2のn乗倍の拡大においては(nは1以上の整数)、最近傍の原点と原点の2分の1にある場所の点を結んだ格子線(図17の破線)に補間点が置かれるが、X軸上の場合は、
【数5】
により表され、Y軸上の場合は、
【数6】
により表されることになる。この場合、ベクトルの対称性を利用することにより、
・16回の演算テーブルへのアクセス
・2回の“定数 * 変数”の演算
だけで補間点を求めることができる。
【0062】
(b) 各フィルタ間で共用できる演算の保存による演算量の節約
補間点数分のフィルタを用意することによって、高速化できることはすでに述べたが、各フィルタ間で共用できる演算を保存することによって演算量を節約することができる。
(c)4倍拡大における高速化の例
図20は、4倍拡大におけるコーディング例を示している。上述した高速化が具体的に適用されている行に注釈を付している。すなわち、高速化は、
・原点のコピー
・格子線上の簡易式
・各フィルタ間で共用できる演算の保存
・2のn乗倍の特異点の簡易式
という手法で表れている。
【0063】
上述してきたように整数倍の補間拡大に限れば処理量はかなり低減することができる。従って、局所的に補間位置を特定することが高速化に有効であることが分かった。かかる整数倍による補間拡大の方法を適用する場合、整数倍の補間に限定せず、少数倍の補間拡大についても応用することが考えられる。ここでは、拡大処理の他の実施例について、少数倍、具体的には1.25倍の補間拡大について考察する。この1.25倍の補間拡大における局所的な作用を図25に示す。同図において、局所的な1.25倍とは、4点の原点を補間点の1点を含めて5点にすることである。すなわち、平面において、16点の原点を補間点を含めて25点に拡大することをいう。
【0064】
従って、図25に示すように補間点の座標は予め推測することが可能であり、そのことによる演算の効率化および演算量の低減は上述した整数倍の補間拡大による実施例と同様である。よって、それぞれの補間点ごとに最適なフィルタを用意すればよいことになる。ここでは、それぞれの補間点ごとのフィルタを子フィルタと呼び、16点の原点から補間点を含め25点の画素を生成する。これらの子フィルタを使用した全体のフィルタをフィルタ16to25と呼ぶ。ここで、フィルタ16to25を構成する子フィルタに必要なベクトル要素を示す。
・P1〜P5を求めるために必要な1024倍されたベクトル要素
P1:{0,1024,0,0}
P2:{VA,VB,VC,VD}
P3:{VE,VF,VG,VH}
P4:{VH,VG,VF,VE}
P5:{VD,VC,VB,VA}
なお、VA〜VHは3次元補間関数とその補間位置から予め求められる定数である。
【0065】
このように、ある画像を1.25倍にすることを考えた場合、フィルタ16to25を16点ずつ周期的に通すことになる。しかし、一般的にはフィルタ16to25を通すことができない余りの領域が出ることは自明である。従って、フィルタ16to25を適用する場合、参照画素の影響も考えなければならない。この余った領域は別のフィルタを通すことになるので、均一性がなくなり、歪みが生じる。ただし、これは人間の目の誤差の範囲内であることを前提とする。
【0066】
ここで、フィルタ16to25を通した場合のソース画像とデスティネーション画像の大きさの関係を示す。ソース画像1辺の長さをsLとすると、フィルタ16to25を通して得られるデスティネーション画像の1辺の長さdLは、以下のようになる。
となる。ただし、複数の連続した局所的な箇所であって、参照画素の影響がなければ、
・dL = {sL/4}*5 ・・・・式(2)
となる。
【0067】
次に、画像データを形成する画素数が4の倍数である場合に、1.25倍の補間拡大を実施することについて検証する。具体的に、本実施形態においてはデジタルカメラの補間拡大などにより必要とされている、「1280画素*960画素」を1.25倍により補間拡大し、「1600画素*1200画素」に修正するということについて検証する。かかる場合、X座標およびY座標は、Nを整数とすると、4*Nの画素数を5*Nの画素数に変換することを示している。
式(2)を使用して、sLに4*Nを代入すると、
となり、局所的な1.25倍が利用可能であることが分かる。ただし、全体の大きさを考えた場合は、式(1)に基づいて考えなければならないので、
となる。式(4−2)は、デスティネーション画像として4画素足りない状態を示し、式(4−1)は(N−1)回しか、フィルタ16to25を通していないことを示している。このことから、ソース画像でフィルタ16to25を適用することができる画素は、4*(N−1)点であり、4N−4(N−1)=4点は未処理のままであることが分かる。また、デスティネーション画像としてフィルタ16to25により取り出せる画素は、5*(N−1)であり、5N−5(N−1)=5点が生成できないことになる。従って、ソース画像の残りの4点からデスティネーション画像における不足分5点を生成する方法を考える必要がある。
【0068】
このソース画像の残りの4点からデスティネーション画像における不足分5点を生成する方法を図26示す。同図において、局所的には3点を4点にする、すなわち、4/3=1.3333・・・・倍(以下、1.3倍)の補間拡大になる。ここで、この局所的な1.3倍の補間拡大に必要となるベクトル要素は以下のようになる。
・P1〜P4を求めるために必要な1024倍されたベクトル要素
P1:{0,1024,0,0}
P2:{VK,VL,VM,VN}
P3:{VX,VY,VY,VX}
P4:{VN,VM,VL,VK}
なお、VK〜VN,VX,VYは3次元補間関数とその補間位置から予め求められる定数である。
【0069】
以上のことから、フィルタ16to25で処理できなかった箇所については、X方向には、フィルタ12to25X、Y方向にはフィルタ12to25Yを使用する。また、X,Y方向ともに1.25倍できない箇所はフィルタ9to16を使用する。ここで、このフィルタ12to15Yを使用する際の原点と補間点の相関を示した相関図を図27に示す(フィルタ12to25Xは90度回転した図になる。)。このように、1.25倍の補間拡大では、局所的には1.25倍と1.3倍の補間拡大を実行する。かかる場合、フィルタ16to25、フィルタ12to20X、フィルタ12to20X、フィルタ9to16を使用すると補間拡大が可能となり、これに伴い補間拡大処理の高速化を実現することが可能になる。
【0070】
これらのフィルタで必要なベクトル要素をまとめると、14個のベクトル要素が必要になる。
よって、それぞれのベクトル要素に0〜255を掛けた、256個の要素から形成される14個の演算テーブルを使用することにより演算数を減らすことが可能になる。ここで、この演算テーブルの要素1個の大きさを4バイトとすると、1個の演算テーブルの大きさは、1024バイト(1KB)である。これが14個あるので、演算テーブルに必要なメモリは14KBとなる。
【0071】
このように、各管理オブジェクトP100〜P300と、各画像処理オブジェクトP400,P500を組み合わせた画像処理システムにおいて、各オブジェクトP300〜P500は自己の画像処理に必要な処理領域を前のオブジェクトP200,P400,P500に要求する。そして、要求を受けたオブジェクトは分割画像管理オブジェクトP200が形成した所定の領域の引き渡しを受けたり、各オブジェクトP400,P500が自己の画像処理を実行したものを積み上げて形成した処理領域の引き渡しを受ける。従って、各オブジェクトは前後のオブジェクトと接続し、要求のあった処理領域を引き渡すのみでよく処理構成を簡易にすることが可能になる。また、各オブジェクトは前後に接続するオブジェクトと相互にデータの授受を可能にすればよく、オブジェクトが増加減しても、管理オブジェクトP100〜P300を修正する必要がないため、柔軟な画像処理システムを構築することが可能になる。
【図面の簡単な説明】
【図1】本発明の一実施形態にかかる画像処理システムを実行するコンピュータシステムのブロック図である。
【図2】印刷イメージの処理単位の変化を示す図である。
【図3】オペレーティングシステムに組み込まれた状態でのプリンタドライバの概略構成を示す図である。
【図4】画像の処理単位を示す図である。
【図5】強調処理で必要な周縁領域を示す図である。
【図6】拡大処理で必要な周縁領域を示す図である。
【図7】モジュール側からドライバ側に必要領域を要求する際に通知する過程を示す図である。
【図8】S−AreaとS−Unitの関係を示す図である。
【図9】S−Unitのポインタテーブルを示す図である。
【図10】強調処理を実行する場合の実質的処理対象領域を示す図である。
【図11】拡大処理を実行する場合の実質的処理対象領域を示す図である。
【図12】プリンタドライバにおける手続の流れを示す図である。
【図13】第1のフィルタ処理による拡大処理を示す図である。
【図14】第2のフィルタ処理による拡大処理を示す図である。
【図15】二段階のフィルタ処理による拡大処理を示す図である。
【図16】3次補間の格子点と補間点の関係を示す図である。
【図17】2倍補間の格子点と補間点の関係を示す図である。
【図18】3倍補間の格子点と補間点の関係を示す図である。
【図19】4つのフィルタ処理を利用した3次補間による拡大処理を示す図である。
【図20】4倍拡大におけるコーディング例を示す図である。
【図21】S−Unitについて処理対象となるものを分離格納した場合の図である。
【図22】S−Unitの処理領域テーブルを示す図である。
【図23】他の実施の形態におけるオペレーティングシステムに組み込まれた状態でのプリンタドライバの構成を示す図である。
【図24】他の実施の形態おける画像の処理単位を示す図である。
【図25】1.25倍補間の格子点と補間点の関係を示す図である。
【図26】1.3倍補間の格子点と補間点の関係を示す図である。
【図27】フィルタ12to15Yを使用する際の原点と補間点の相関を示した相関図である。
【符号の説明】
10…コンピュータシステム
11a…スキャナ
11a2…スキャナ
11b…デジタルスチルカメラ
11b1…デジタルスチルカメラ
11b2…デジタルスチルカメラ
11c…ビデオカメラ
12…コンピュータ本体
12a…オペレーティングシステム
12b…ディスプレイドライバ
12c…プリンタドライバ
12d…アプリケーション
13a…フロッピーディスクドライブ
13b…ハードディスク
13c…CD−ROMドライブ
14a…モデム
14a2…モデム
15a…キーボード
15b…マウス
17a…ディスプレイ
17b…カラープリンタ
18a…スピーカ
18b…マイク
【発明の属する技術分野】
本発明は、画像処理システム、画像処理方法および画像処理モジュールを記録した媒体に関し、特に、少なくとも2つ以上の画像処理モジュールが相互に接続し、各画像処理を実行する画像処理システム、画像処理方法および画像処理モジュールを記録した媒体に関する。
【0002】
【従来の技術】
コンピュータなどでは、画像をドットマトリクス状に配置された画素にて構成する画像データとして表し、この画像データに対して所定の画像処理を実行してている。一方、近年、仮想的なドットマトリクス状の領域に対して、オブジェクト画像を適宜配置して一枚の画像を表す手法が利用されている。すなわち、文字だけを表すオブジェクト画像や、イメージを表すオブジェクト画像を個別に用意し、所定の順番で重ね合わせて画像を完成させる。
このような画像を扱う際、コンピュータの処理の都合上、一つのオブジェクト画像を複数に分割することが多い。例えば、オブジェクト画像が大きくなるのにつれてデータ量も極めて多大となり、一体として処理するには処理資源の負担が大きくなるからである。
一方、コンピュータで複数の段階に分けて画像を処理することも可能であり、アプリケーションのように内部において自由に処理できるものの他、オペレーティングシステムの一部として機能するドライバやモジュールによってメモリなどの制約を強く受けながら処理しなければならないものもある。すなわち、メモリなどの制約を受ける場合、分割されたオブジェクトデータを連結して元のオブジェクト画像を生成することなく、画像処理をしなければならないものがある。
従来、画像処理を実行するモジュールはオブジェクトデータの処理を実行する場合に、ドライバに対してオブジェクトデータへのアクセスを要求する。そして、要求を受け付けたドライバはオブジェクトデータから所定の処理領域を形成し、この処理領域を要求のあったモジュールに引き渡している。
【0003】
【発明が解決しようとする課題】
上述した従来のものにおいては、画像処理を実行するモジュールは一つしかなく、ドライバは単にこのモジュールに提供する画像領域を形成し引き渡してしていた。しかし、異なる画像処理を実行するモジュールが複数ある場合、ドライバは各モジュールの要求に応じて所定の処理領域を形成しなければならないため、処理が煩雑になっていた。
本発明は、上記課題にかんがみてなされたもので、各モジュールを実行して所定の画像データを生成する場合、各モジュール間にて画像処理に必要な処理領域を要求しつつ生成させるため、ドライバの処理負荷を低減させることが可能であるとともに、画像処理を実行するモジュールを適宜増加減することが可能な画像処理システム、画像処理方法および画像処理モジュールを記録した媒体の提供を目的とする。
【0004】
【課題を解決するための手段】
上記目的を達成するため、請求項1にかかる発明は、個別に所定の処理対象データに対して画像処理を実行する少なくとも2つ以上の画像処理モジュールを組み合わせて利用する画像処理システムであって、上記画像処理モジュールは、上記画像処理を実行するに際して、当該画像処理に必要となる処理対象データを他の画像処理モジュールに要求するとともに、当該他の画像処理モジュールがこの要求に基づいて生成した処理対象データを利用して画像処理を実行する画像処理実行機能を具備する構成としてある。
上記のように構成した請求項1にかかる発明においては、個別に所定の処理対象データに対して画像処理を実行する少なくとも2つ以上の画像処理モジュールを組み合わせて利用する画像処理システムを提供する。この画像処理システムの画像処理モジュールは画像処理実行機能を備え、この画像処理実行機能にて画像処理を実行するに際して、当該画像処理に必要となる処理対象データを他の画像処理モジュールに要求する。そして、当該画像処理実行機能は、他の画像処理モジュールがこの要求に基づいて作成した処理対象データを利用して画像処理を実行する。
【0005】
また、請求項2にかかる発明は、個別に所定の処理対象データに対して画像処理を実行する少なくとも2つ以上の画像処理モジュールを組み合わせて利用する画像処理システムであって、上記画像処理モジュールは、他の画像処理モジュールから当該他の画像処理モジュールにおける画像処理に必要となる処理対象データの要求を受け付けた際に、上記画像処理を実行した処理対象データから当該他の画像処理モジュールが画像処理にて利用するのに必要十分な領域だけの処理領域を生成する生成機能を具備する構成としてある。
上記のように構成した請求項2にかかる発明においては、個別に所定の処理対象データに対して画像処理を実行する少なくとも2つ以上の画像処理モジュールを組み合わせて利用する画像処理システムを提供する。この画像処理システムの画像処理モジュールは生成機能を備え、この生成機能は、他の画像処理モジュールから当該他の画像処理モジュールにおける画像処理に必要となる処理対象データの要求を受け付けた際、自己が画像処理を実行した処理対象データから当該他の画像処理モジュールが画像処理にて利用するのに必要十分な領域だけの処理領域を生成する。
【0006】
上述した処理対象データは、画像データ全体から所定のデータ領域を抽出して構成するものであってもよいし、画像データから抽出したオブジェクト画像により構成されるものであってもよい。また、処理対象データのデータ形式は、ドットマトリクス状の画素にて形成されるビットマップデータであってもよいし、描画されている図形などが所定の描画命令にて記述されたベクターデータであってもよい。
【0007】
上述した画像処理実行機能を有する画像処理モジュールは、個別に実行する画像処理に必要となる処理対象データを他の画像処理モジュール(生成機能を有する画像処理モジュール)に要求し、この要求に従って当該他の画像処理モジュールが処理対象データを生成する。ここで、画像処理実行機能を有する画像処理モジュールは、この生成された処理対象データを利用して所定の画像処理を実行する。一方、生成機能を有する画像処理モジュールが他の画像処理モジュールから要求を受けた場合、当該生成機能を有する画像処理モジュールは、画像処理を実行した処理対象データから他の画像処理モジュールの要求に対応する必要十分な処理領域の処理対象データを生成する。従って、要求した画像処理モジュールにおいては、画像処理実行機能にてこの処理領域から形成される処理対象データを利用して個別の画像処理を実行することになる。
【0008】
すなわち、画像処理実行機能を有する画像処理モジュールが、個別の画像処理を施す処理対象データを必要とするときに、他の画像処理モジュール(生成機能を有する画像処理モジュール)に向かって、この必要な処理対象データを要求し、この要求を受けた他の画像処理モジュールは、個別の画像処理を実行した処理対象データに基づいて、要求してきた画像処理モジュールの画像処理が利用するのに必要十分な処理領域の処理対象データを生成する。ここで、画像処理実行機能を有する画像処理モジュールが他の画像処理モジュール(生成機能を有する画像処理モジュール)に対して処理対象データを要求する態様は、直接、当該生成機能を有する画像処理モジュールに要求しても良いし、他の画像処理モジュールを介在して間接的に要求しても良い。このように、画像処理システム全体として、画像処理実行機能と生成機能とのそれぞれを有する少なくとも2つ以上の画像処理モジュールを適宜利用することによって、複数の画像処理を施した画像データを生成することが可能になっている。
【0009】
また、画像処理実行機能は、他の画像処理モジュールに対して必要な処理対象データを示した要求を実施することができればよく、その要求の手法は、多種の方法が採用できる。例えば、各画像処理モジュール間にて所定のデータの送受を実行可能なプロセス間通信により実施してもよいし、各画像処理モジュールが共有にアクセス利用できる共有メモリを使用して実施してもよい。むろん、これらに限定されるものではなく、各画像処理モジュールが共有して使用可能なリソースを使用して実施すればよく、適宜採用可能である。また、画像処理モジュールは、所定の処理対象データに対して個別の画像処理を実行することができればよく、その画像処理の内容は特に限定されない。例えば、強調処理、拡大処理、色調処理などがある。むろん、それぞれ強調に使用するパラメータ、拡大に使用するパラメータなどを変更することによって、各処理を複数にしてもよい。
【0010】
画像処理実行機能が他の画像処理モジュールに必要な処理対象データを要求する際の単位の一例として、請求項3にかかる発明は、上記請求項1に記載の画像処理システムにおいて、上記画像処理実行機能は、上記処理対象データがドットマトリクス状に配置された画素から構成される場合、要求する処理対象データとして当該複数の画素を有する所定数のライン単位にて形成される処理領域を要求する構成としてある。一方、生成機能が他の画像処理モジュールの要求に対応して生成する処理対象データの単位の一例として、請求項4にかかる発明は、上記請求項2に記載の画像処理システムにおいて、上記生成機能は、上記処理対象データがドットマトリクス状に配置された画素から構成される場合、当該複数の画素を有する所定数のライン単位によって上記受け付けた処理対象データの要求に対応する処理領域を生成する構成としている。
【0011】
このように、処理対象データがドットマトリクス状に配置された画素から構成される場合、処理対象データを複数の画素を有するライン単位によって形成する。このとき、画像処理実行機能は、同ライン単位に基づいて必要な処理対象データを要求する。例えば、画像処理モジュールA,Bがあり、処理対象データの要求が画像処理モジュールAから画像処理モジュールBへと行われるとする。かかる場合、画像処理モジュールAは、画像処理を1ラインの処理対象データに実行するとき、画像処理モジュールBに対して、1ラインの処理対象データを要求する。同様に、画像処理モジュールBは、画像処理を1ラインの処理対象データにデータに実行するとき、画像処理モジュールAに対して1ラインの処理領域を生成するように要求する。このように、各画像処理モジュールA,B間にて実行される「要求」や「生成」を複数画素にて形成されるライン単位にて実施する。
【0012】
また、画像処理実行機能が他の画像処理モジュール必要な処理対象データを要求する際の単位の他の一例として、請求項5にかかる発明は、請求項1に記載の画像処理システムにおいて、上記画像処理実行機能は、上記処理対象データがドットマトリクス状に配置された画素から構成される場合、要求する処理対象データとして所定数の画素単位にて形成される処理領域を要求する構成としてある。一方、生成機能が他の画像処理モジュールの要求に対応して生成する処理対象データの単位の他の一例として、請求項6にかかる発明は、上記請求項2に記載の画像処理システムにおいて、上記生成機能は、上記処理対象データがドットマトリクス状に配置された画素から構成される場合、同画素単位によって上記受け付けた処理対象データの要求に対応する処理領域を生成する構成としてある。
このように、処理対象データがドットマトリクス状に配置された画素から構成されるとき、処理対象データを複数の画素を有する所定数の画素単位によって生成する。このとき、画像処理実行機能は、同画素単位により必要な処理対象データを要求する。かかる場合、要求を受けた他の画像処理モジュールの生成機能は、画素単位で処理対象データを生成する。これによって、より小さい範囲にて処理対象データを生成することが可能になる。
【0013】
上述したようにライン単位および画素単位を処理対象データとして各画像処理モジュールにて画像処理を実行することが可能になる。一方で、画像処理に複数単位の処理対象データを必要とする画像処理モジュールもある。かかる場合に好適な一例として、請求項7にかかる発明は、上記請求項1〜請求項6のいずれかに記載の画像処理システムにおいて、上記画像処理実行機能は、後段の画像処理モジュールが画像処理に利用するのに必要十分な領域を含めた上で、必要となる上記領域の処理対象データを他の画像処理モジュールに要求する構成としてある。
【0014】
上記のように構成した請求項6にかかる発明において、任意の画像処理モジュールの画像処理実行機能は、当該画像処理モジュールの後段において画像処理を行う画像処理モジュールの画像処理で必要な処理領域を含めた処理領域を前段の画像処理モジュールに要求する。例えば、画像処理モジュールA,Bがあり、処理領域の要求が画像処理モジュールAから画像処理モジュールBへと行われるとする。かかる場合、画像処理モジュールAは個別の画像処理を1ラインの処理対象データに実行する場合であって、この画像処理モジュールAの後段の画像処理モジュールが5ラインの処理対象データに対して画像処理を実行する場合には、画像処理モジュールBに対し、5ラインの処理領域を生成するように要求する。そして、画像処理モジュールBは、個別の画像処理を1ラインの処理対象データに実行する場合には、当該画像処理モジュールBにて5ライン分の画像処理を実行し、この5ライン分の画像処理が完了したら、画像処理モジュールAはこの5ラインを画像処理に利用する。
【0015】
ここで、画像処理モジュールが生成した処理領域を展開して、他の画像処理モジュールにて利用可能にする手法の一例として、請求項8にかかる発明は、請求項2〜請求項7のいずれかに記載の画像処理システムにおいて、上記生成機能は、所定の記憶領域に個別に処理対象データを展開して生成する構成としてある。上記のように構成した請求項8にかかる発明において、各画像処理モジュールの生成機能は、生成する処理対象データを所定の記憶領域に個別に展開する。すなわち、各画像処理モジュールは、個別の画像処理を実行した処理対象データを格納する記憶領域を確保すればよく、他の画像処理モジュールにて生成された処理対象データを自己の記憶領域に取り込む必要がないため、記憶領域を有効に利用することができるようになる。
【0016】
各画像処理モジュールはそれぞれ単独で個別の画像処理を実行することが可能であり、画像処理システムとしては少なくとも2つ以上の画像処理モジュールを組み合わせて利用可能になっている。このとき、各画像処理モジュールは、所定の順序で画像処理を実行する。一方、順番が最後でない各画像処理モジュールは、個別の画像処理が終われば、処理対象データは必要なくなる。かかる場合、この必要のない処理対象データを順次上記記憶領域から解放することができれば好適である。そこで、請求項9にかかる発明は、上記請求項2に記載の画像処理システムにおいて、上記各画像処理モジュールは、組み合わせて利用されるにあたり所定の順番で順序付けられるとともに、上記生成機能は、後順位の画像処理モジュールがある場合、上記記憶領域に個別に生成した処理対象データから以降の画像処理モジュールで不要な処理対象データを順次解放する構成としてある。
【0017】
上記のように構成した請求項9にかかる発明において、画像処理システムは、複数の画像処理モジュールを連結して組み合わせ、所定の順序にて利用して一連の画像処理を実行する。このとき、各画像処理モジュールは、個別に実行する画像処理が順序の最後でないとき、画像処理が終わると、この画像処理の対象から外れた処理対象データを個別の記憶領域から解放する。これにより、順序が最後でない画像処理モジュールは、画像処理が終了した処理対象データを全て記憶領域に展開しておく必要がなくなるため、画像処理に必要とする最低限の記憶領域を確保することができる。すなわち、記憶領域を有効かつ効率的に利用することが可能になる。
【0018】
画像処理モジュールが元画像データから処理対象データを用意する場合がある。この元画像データは、画像のイメージそのままに形成されている場合もあれば、画像がランダムに分割されるとともに、この分割データがランダムに配置されて元画像データを形成する場合もある。このようにランダムに配置されて元画像データが形成されている場合に好適な画像処理モジュールの機能の一例として、請求項10にかかる発明は、請求項2〜請求項9のいずれかに記載の画像処理システムにおいて、上記生成機能は、所定の元画像データから処理対象データを生成するとともに、同処理対象データを生成するに際して、利用頻度の高い処理対象データを限定して利用可能にする構成としてある。
【0019】
上記のように構成した請求項10にかかる発明において、生成機能は、元画像データから処理領域を生成するに際し、利用頻度の高い処理領域を限定して利用可能にする。例えば、従来、ランダムに分割された分割データから所定の処理対象データを生成する場合、すべての分割データを検索しつつ、この処理対象データに該当する分割データを抽出して処理対象データを生成していた。従って、画像処理モジュールは、処理対象データの要求を受けるごとに元画像データの検索を実行するとともに、該当する分割データを抽出し、処理対象データを生成しなければならなかった。しかし、任意の処理対象データを生成した後は、この処理対象データを生成するに際して抽出した分割データが次の処理対象データの生成に利用される確率は高いため、このうような利用頻度が高い分割データを限定して利用可能にしておく。この利用可能にする手法は、この分割データを他の記憶領域に確保しておき、検索する際はこの記憶領域のみを検索する手法にて実現してもよいし、この分割データが元画像データにて存在する位置を示すポインタを保持して実現してもよい。
【0020】
任意の画像処理モジュールが自己の画像処理を実行して1ラインの領域を形成するために必要とする処理領域が5ラインの場合、最初の要求では5ライン必要となるが、この5ラインによって画像処理を実行し1ラインを生成した後は、順次1ラインを要求し、画像処理の実行の際に、先頭の1ラインを処理対象から除外し新規な5ラインにて画像処理を実行する。かかる場合、5ラインを要求する処理と1ラインを要求する処理を個別にするとよい。
【0021】
そこで、請求項11にかかる発明は、請求項1〜請求項10のいずれかに記載の画像処理システムにおいて、上記画像処理実行機能は、初期画像処理時に必要な処理対象データを要求する初期処理対象データ画像処理実行機能と、初期画像処理以降の通常時に必要な処理対象データを要求する通常処理対象データ画像処理実行機能とを備える構成としてある。
上記のように構成した請求項11にかかる発明において、初期処理対象データ画像処理実行機能機能は、初期画像処理時に必要な処理対象データを要求する。上述した例によると5ラインを要求する。また、通常処理対象データ画像処理実行機能は、初期画像処理以降の通常時に必要な処理対象データを要求する。上述した例によると1ラインを要求する。ここで、初期画像処理時とは、上述したように画像処理モジュールが画像処理の対象となる処理対象データを全く保持していない場合をいう。
【0022】
このように、個別に所定の処理対象データに対して画像処理を実行する少なくとも2つ以上の画像処理モジュールを組み合わせて利用する手法は必ずしも実体のあるシステムに限られる必要はなく、その方法としても機能することは容易に理解できる。そこで、請求項12および請求項13は、上述した請求項1〜請求項11のいずれかに記載した画像処理システムの機能を実現可能な画像処理方法を提供するものである。すなわち、必ずしも実体のある画像処理システムに限らず、その機能を実現可能な画像処理方法としても有効である。
【0023】
ところで、画像処理システムを実現する各画像処理モジュールは、システムとして構成された場合において本発明を構成することは上述した通りである。一方で、この画像処理モジュールは所定の記録媒体に記録されて頒布され得るものであり、かかる場合は、この所定の記録媒体においても本発明が機能し得るものと考えることができる。そこで、請求項14および請求項15は、上述した請求項1〜請求項11のいずれかに記載した画像処理システムの機能を実現可能な画像処理モジュールを記録した媒体を提供するものである。
【0024】
ここで、この記録媒体は、磁気記録媒体であってもよいし光磁気記録媒体であってもよいし、今後開発されるいかなる記録媒体においても全く同様に考えることができる。また、一次複製品、二次複製品などの複製段階については全く問う余地無く同等である。さらに、一部がソフトウェアであって、一部がハードウェアで実現されている場合においても発明の思想において全く異なるものではなく、一部を記録媒体上に記憶しておいて必要に応じて適宜読み込まれるような形態のものとしてあってもよい。
【0025】
【発明の効果】
以上説明したように請求項1および請求項2にかかる発明は、複数の画像処理モジュールを適宜組み合わせて利用する画像処理システムにおいて、画像処理実行機能を有する画像処理モジュールでの画像処理に必要な処理対象データを他の画像処理モジュールに生成させるため、処理対象データを管理するためのモジュールを必要とすることが無くなり、画像処理システムを簡素化することが可能となる。このような処理データを生成する生成機能を画像処理モジュール備えさせることにより処理対象データを管理するためのモジュールを必要とすることが無くなり、画像処理システムを簡素化することが可能となる。
また、請求項3および請求項4にかかる発明によれば、ライン単位で処理領域を特定するため、処理領域を確保する領域を小さくすることができる。
【0026】
さらに、請求項5および請求項6にかかる発明によれば、画素単位で処理領域を特定するため処理領域を確保する領域をより小さくすることができる。
さらに、請求項7にかかる発明によれば、複数単位の処理対象データの要求および生成を行うことが可能になる。
さらに、請求項8にかかる発明によれば、各画像処理モジュールが個別の記憶領域に画像処理を実行した処理対象データを保存するため、各画像処理モジュールでの処理結果を利用することが可能になる。
さらに、請求項9にかかる発明によれば、各画像処理モジュールにて画像処理に必要のない処理対象データを記憶領域を解放するため、当該記憶領域を有効かつ効率的に利用することが可能になる。
【0027】
さらに、請求項10にかかる発明によれば、画像処理モジュールは高速に処理対象データを形成することが可能になる。
さらに、請求項11にかかる発明によれば、初期画像処理時と通常画像処理時に使用する画像処理実行機能を別個にするため、処理を高速化することが可能になる。
さらに、請求項12および請求項13にかかる発明によれば、上記請求項1〜請求項11に記載した画像処理システムと同様な効果を奏する画像処理方法を提供することができる。
さらに、請求項14および請求項15にかかる発明によれば、上記請求項1〜請求項11に記載した画像処理システムと同様な効果を奏する画像処理モジュールを記録した媒体を提供することができる。
【0028】
【発明の実施の形態】
以下、図面にもとづいて本発明の実施形態を説明する。
図1は本発明の一実施形態にかかる画像処理システムを実現するハードウェアの一例としてのコンピュータシステム10をブロック図により示している。
本コンピュータシステム10は、画像データを直接的に入力する画像入力デバイスとして、スキャナ11aとデジタルスチルカメラ11bとビデオカメラ11cとを備えており、コンピュータ本体12に接続されている。それぞれの入力デバイスは画像をドットマトリクス状の画素で表現した画像データを生成してコンピュータ本体12に出力可能となっており、ここで同画像データはRGBの三原色においてそれぞれ256階調表示することにより、約1670万色を表現可能となっている。
【0029】
コンピュータ本体12には、外部補助記憶装置としてのフロッピーディスクドライブ13aとハードディスク13bとCD−ROMドライブ13cとが接続されており、ハードディスク13bにはシステム関連の主要プログラムが記録されており、フロッピーディスクやCD−ROMなどから適宜必要なプログラムなどを読み込み可能となっている。
また、コンピュータ本体12を外部のネットワークなどに接続するための通信デバイスとしてモデム14aが接続されており、外部のネットワークに同公衆通信回線を介して接続し、ソフトウェアやデータをダウンロードして導入可能となっている。この例ではモデム14aにて電話回線を介して外部にアクセスするようにしているが、LANアダプタを介してネットワークに対してアクセスする構成とすることも可能である。
【0030】
ここで、外部補助記憶装置のうち、フロッピーディスクドライブ13aやCD−ROMドライブ13cについては、記録媒体自身が交換可能であり、この記録媒体に画像データが記録された状態で供給されることにより、画像入力デバイスの一手段ともなりうる。また、モデム14aやLANアダプタを介してネットワークにアクセスした場合、このネットワークから画像データが供給されることもあり、このような場合も画像入力デバイスの一手段となりうる。この他、コンピュータ本体12の操作用にキーボード15aやポインティングデバイスとしてのマウス15bも接続され、さらに、マルチメディア対応のためにスピーカ18aやマイク18bを備えている。
一方、画像出力デバイスとして、ディスプレイ17aとカラープリンタ17bとを備えている。ディスプレイ17aについては水平方向に800画素と垂直方向に600画素の表示エリアを備えており、各画素毎に上述した1670万色の表示が可能となっている。むろん、この解像度は一例に過ぎず、640×480画素であったり、1024×768画素であるなど、適宜、変更可能である。
【0031】
また、印刷装置としてのカラープリンタ17bはインクジェットプリンタであり、CMYKの四色の色インクを用いて記録媒体たる印刷用紙上にドットを付して画像を印刷可能となっている。画像密度は360×360dpiや720×720dpiといった高密度印刷が可能となっているが、階調表限については色インクを付すか否かといった2階調表現となっている。色インクについては、かかる四色のものに限らず、色の薄いライトシアンやライトマゼンタを加えた六色によってドットの目立ちを低減させることも可能であるしインクジェット方式に限らずカラートナーを利用した静電写真方式などを採用することも可能である。
このような画像入力デバイスを使用して画像を入力しつつ、画像出力デバイスに表示あるいは出力するため、コンピュータ本体12内では所定のプログラムが実行されることになる。そのうち、基本プログラムとして稼働しているのはオペレーティングシステム(OS)12aであり、このオペレーティングシステム12aにはディスプレイ17aでの表示を行わせるディスプレイドライバ(DSPDRV)12bとカラープリンタ17bに印刷出力を行わせるプリンタドライバ(PRT DRV)12cが組み込まれている。これらのドライバ12b,12cの類はディスプレイ17aやカラープリンタ17bの機種に依存しており、それぞれの機種に応じてオペレーティングシステム12aに対して追加変更可能である。また、機種に依存して標準処理以上の付加機能を実現することもできるようになっている。すなわち、オペレーティングシステム12aという標準システム上で共通化した処理体系を維持しつつ、許容される範囲内での各種の追加的処理を実現できる。
【0032】
この基本プログラムとしてのオペレーティングシステム12a上でアプリケーション12dが実行される。アプリケーション12dの処理内容は様々であり、操作デバイスとしてのキーボード15aやマウス15bの操作を監視し、操作された場合には各種の外部機器を適切に制御して対応する演算処理などを実行し、さらには、処理結果をディスプレイ17aに表示したり、カラープリンタ17bに出力したりすることになる。
かかるコンピュータシステム10では、画像入力デバイスであるスキャナ11aなどで写真などを読み取って画像データを取得することができる他、デジタルスチルカメラ11bで撮影した画像データを取得したり、ビデオカメラ11cで撮影した動画としての画像データを取得することができる。このような画像データは最終的に画像出力デバイスとしてのディスプレイ17aで表示したり、カラープリンタ17bで印刷することになるが、元の画像データのままでは写りが悪いなどの問題があることが多く、そのような場合には、何らかの修正が行われる。
この修正を行うのは、一般的にはフォトレタッチなどのアプリケーション12dなどであるが、本画像処理システムではアプリケーション12dが印刷処理を実行するときに出力されるオブジェクトデータに対してプリンタドライバ12cが同修正処理を実行する。
【0033】
印刷処理の際、アプリケーション12dはオペレーティングシステム12aに対してオブジェクトデータを出力する。
図2は、印刷イメージの処理単位の変化を示しており、本来、一つの印刷イメージP.I.は処理の都合上、分割オブジェクトデータa(1)〜a(n)に分割され、さらにプリンタドライバ12cの処理を経てカラープリンタ17bが処理可能なラスタデータb(1)〜b(n)として出力される。
このプリンタドライバ12cがオペレーティングシステム12aに組み込まれた状態でのシステム上の概略構成を図3に示しており、API層から本プリンタドライバ12cが提供する機能管理オブジェクトP1にアクセスされ、この機能管理オブジェクトP1は、分割画像管理オブジェクトP2によって上記分割オブジェクトデータの管理を実行しつつ、処理画像管理オブジェクトP3によって処理画像を取得する。この処理画像を取得するにあたって機能管理オブジェクトP1は同処理画像管理オブジェクトP3に対して必要領域を要求するし、その処理の前提として予め分割オブジェクトデータに関して分割画像登録の処理を実行する。
すなわち、処理画像管理オブジェクトP3が実際の画像処理を実行する拡大処理オブジェクトP4と強調処理オブジェクトP5を介して分割画像管理オブジェクトP2に対して処理対象となる画像領域を通知するため、分割画像管理オブジェクトP2は既に登録されている分割オブジェクトデータのうちの必要なものだけをメモリ上に展開して利用可能とし、展開された結果を利用して強調処理オブジェクトP5と拡大処理オブジェクトP4が画像処理を実行することになる。
【0034】
図4は入力される分割オブジェクトデータと取得される処理画像とを示している。
同図において、元の画像をソース(Source)画像と呼ぶとともに、拡大処理と強調処理を実施された画像をデスティネイション(Destination)画像と呼ぶことにすると、入力される分割オブジェクトデータは9分割されたS−Unit.a〜iである。
ここで、デスティネイション画像は、一体として処理することも可能であるが、この場合も分割して処理するものとし、各分割画像をD−Unit.A〜Cと呼ぶ。D−Unit.A〜Cを得るためには処理前の画像領域を利用可能であることが必要であるが、入力されているのはS−Unit.a〜iであって、全てを利用可能となっているか否かは分からない。
従って、処理画像管理オブジェクトP3から分割画像管理オブジェクトP2に対して対応するS−Unit.a〜iを利用可能とするように要求し、そのようにして利用可能にされるのがS−Area.a〜cである。
ただし、このS−Area.a〜cは領域としては拡大前のD−Unit.A〜Cと一致するものではなく、周縁領域を含むものとなっている。
このように周縁領域を含むのは、拡大処理オブジェクトP4と強調処理オブジェクトP5で画像処理する際に処理対象の画素だけでは処理が不可能であり、その周囲の画素も参照しなければならないからである。
【0035】
次に、各画像処理で参照する周縁領域を図5および図6に示す。
具体的な処理内容については詳述しないが、図5に示す強調処理では対象画素を基準として上方と左方に1画素、右方と下方に2画素を参照する必要がある。
また、図6に示す拡大処理では、対象画素を基準として右方左方と下方に1画素、上方に2画素を参照する必要がある。周縁領域を参照する必要がある具体的な演算例として、フィルタ処理が上げられる。この場合の強調処理と拡大処理の例にあてはめれば、強調処理においては4×4画素分のフィルタを利用し、拡大処理においては3×4画素分のフィルタを利用するので、周縁領域が必要になるといえる。
図7は処理画像管理オブジェクトP3から分割画像管理オブジェクトP2に必要領域が通知される過程を示している。
同図において、最終的に取得される処理画像の領域が、最初の必要領域S−Area’として処理画像管理オブジェクトP3に要求されると、同処理画像管理オブジェクトP3は、拡大処理オブジェクトP4にこれを通知する。
すると、拡大処理オブジェクトP4では自己の拡大倍率が2倍であるときには上記必要領域S−Area’の元となる画像領域は1/2倍である。ただし、参照する画素は上方、右方、下方、左方に対してそれぞれ1、2、2、1画素づつであることを強調処理オブジェクトP5に通知する。この強調処理オブジェクトP5では拡大を行わないため、本来的に必要なのは拡大処理オブジェクトP4で必要とする画像領域であり、上記必要領域S−Area’の1/2倍であるとともに、その周縁領域の(1,2,2,1)画素である。しかし、自己においても周縁領域を参照する必要があり、さらに周縁領域の(2,1,1,1)画素を加えて分割画像管理オブジェクトP2に通知する。
すなわち、このような修正を加えた画像領域S−Areaは必要領域S−Area’の1/2倍の領域と、その周縁領域の(3,3,3,2)画素を加えた領域となる。むろん、このような周縁領域の大きさは拡大処理オブジェクトP4や強調処理オブジェクトP5の演算手法に依存しており、他の演算例では強調処理において上下左右の全てに2画素を要求しつつ、拡大処理で上方と左方に1画素、右方と下方に2画素を要求するというようなものもある。
【0036】
一方、分割画像管理オブジェクトP2は、機能管理オブジェクトP1を介して個々の分割オブジェクトデータが入力されており、領域としての情報を管理しながら実体についてはスプールファイルに格納して分割画像登録を実施している。スプールファイルはハードディスク13b上に格納されるため、他の処理オブジェクトは直接的に参照したり利用することはできない。
しかしながら、この分割画像管理オブジェクトP2は以上のようにして通知された画像領域S−Areaを他のオブジェクトから利用できるようにするため、メモリ上に展開する。この際、必要とされた画像領域S−Areaのそのままをメモリ上に展開するのではなく、図8に示すように、あくまでも画像領域S−Areaを包含するに足るS−Unit.a〜iがどれにあたるかを調査し、該当する全てのS−Unit.a〜iをメモリ上に展開する。
ここで分割オブジェクトデータの数が少なければ画像領域S−Areaを包含するS−Unit.a〜iがどれであるかを判断するのは容易である。
各S−Unit.a〜iの実体データは、ハードディスク13b上に格納されるものの、各領域に関するヘッダ情報は、図9に示すようなテーブルに格納されている。
各テーブルには次のS−Unit.a〜iの情報開始位置を示すポインタnext_ptrが備えられている。本来であれば、このポインタをたどることによって全てのS−Unit.a〜iのヘッダ情報を参照することができるが、各S−Unit.a〜iが画像領域S−Areaの一部とでも重なり合うか否かを判断するのはいくつかの比較演算を繰り返さなければならず、演算回数が多大となってしまう。
一方、分割オブジェクトユニットの配置情報などから必ずしも全てのS−Unit.a〜iと対比する必要もなく、現実的には参照すべきS−Unit.a〜iは限られている。例えば、図9に示す例であれば、S−Areaを展開するに際し、斜線を示すS−Unit.a〜iだけを参照できればよく、一時的にではあるがこのテーブルにおけるポインタnext_ptrを振り替えておくようにしている。
【0037】
本実施形態においては、ポインタnext_ptrにより参照するS−Unit.a〜iを振り替えて間接的にS−Areaを形成するS−Unit.a〜iを指定し、S−Areaを高速に生成可能な構成を採用しているが、むろん、S−Areaを高速に生成可能にする手法は限定されるものではない。図21に示すようにS−Areaの生成に必要なS−Unit.a〜iをハードディスクと比較して相対的に高速アクセス可能な主メモリやキャッシュメモリなどのメモリに格納させ、S−Areaの生成時に参照させるようにしてもよいし、図22に示すように各S−Unit.a〜iにID1〜9を振り分けるとともに、このID1〜9により順不同に配置されたS−Unit.a〜iがソース画像の元画像を形成できるような順番に配置するIDテーブルを形成し、S−Areaの生成時に参照するようにしてもよい。
【0038】
以上のようにして分割画像管理オブジェクトP2が画像領域S−Areaを包含する全てのS−Unit.a〜iをメモリ上に展開したら、強調処理オブジェクトP5が強調処理を実行し、次いで拡大処理オブジェクトP4が拡大処理を実行する。強調処理では対象画素の周縁領域として(2,1,1,1)画素が必要であり、強調処理の結果として生成される画像領域は図10に示すように周縁領域として(2,1,1,1)画素を省いた破線内の領域となる。また、同様にして拡大処理では対象画素の周縁領域として(1,2,2,1)画素が必要であり、強調処理の結果として生成される画像領域は図11に示すように周縁領域として(1,2,2,1)画素を省いた破線内の領域となる。むろん、拡大処理は内部に格子点を補間生成するものであるから、得られる処理画像は縦横2倍に拡大される結果、最初の必要領域S−Area’と一致することになる。
【0039】
次に、分割画像管理オブジェクトP2がメモリ上にS−Areaを展開する他の実施例を説明する。かかる実施例におけるプリンタドライバ12cがオペレーティングシステム12aに組み込まれた状態でのシステム上の概略構成を図23に示す。
同図において、API層から本プリンタドライバ12cが提供する機能管理オブジェクトP100にアクセスされ、この機能管理オブジェクトP100は、分割画像管理オブジェクトP200によって分割オブジェクトデータの管理を実行しつつ、処理画像管理オブジェクトP300より拡大および色調に関する画像処理が実施された画像データを1ラインごと取得し、取得したライン単位の画像データを積み上げてデスティネーション画像を形成する画像データを生成する。
【0040】
具体的には、各モジュールにおいて色調処理オブジェクトP500が分割画像管理オブジェクトP200より引き渡された所定のライン単位の画像データに対して色調処理を実施し、所定のライン単位の画像データを形成し拡大処理オブジェクトP400に引き渡す。次に、拡大処理オブジェクトP400は、この色調処理が為された画像データに対して拡大処理を実施し、1ラインの画像データを形成し処理画像管理オブジェクトP400に引き渡し、機能管理オブジェクトP100は処理画像管理オブジェクトP300より1ラインごとに画像データを取得しつつ積み上げてデスティネーション画像を生成する。
【0041】
ここで、本実施形態においては、拡大処理オブジェクトP400は、1ラインの拡大処理後の画像データを生成するため、同1ラインと参照ラインとを含め5ラインの画像データを必要とする。従って、色調処理オブジェクトP500に対して5ラインの画像データの引き渡しを通知することになる。また、色調処理オブジェクトP500は、1ラインの色調処理後の画像データを生成するため、当該1ラインの画像データのみでよい。従って、分割画像管理オブジェクトP200に対して1ラインの画像データの引き渡しを要求することになる。むろん、これらの処理にて必要とするライン数は、特に限定されるものではなく、各オブジェクトの処理内容に応じて適宜変更可能である。
【0042】
次に、図24に入力される分割オブジェクトデータと取得される処理画像とを示す。
同図において、元の画像をソース(Source)画像と呼ぶとともに、拡大処理と色調処理を実施された処理画像をデスティネイション(Destination)画像と呼ぶことにする。また、入力される分割オブジェクトデータは9分割されたS−Unit.A〜Iである。ここで、デスティネイション画像は、一体として処理することも可能であるが、本実施例においてはライン単位に分割してラインごとに生成され、このラインごとに生成されたものを積み上げて最終的なデスティネーション画像が生成されるものとする。また、デスティネーション画像を分割するライン単位の各分割画像をD−ライン.0〜nと呼ぶ。ここで、nは整数であり、生成されるデスティネーション画像の総ライン数を示している。最初に、D−ライン.0を得るために、処理画像管理オブジェクトP300は、拡大処理オブジェクトP400に対して1ラインの引き渡しを通知する。ここで、拡大処理オブジェクトP400は、1ラインの拡大処理を実行するために、上述したように5ラインの画像データを必要とする。従って、次の色調処理オブジェクトP500に対して5ラインの引き渡しを通知する。色調処理オブジェクトP500は、色調処理を実行するにあたり1ラインの画像データにて処理可能であるため、分割画像管理オブジェクトP200に1ラインの画像データの引き渡しを通知する。
【0043】
そして、分割画像管理オブジェクトP200は、分割画像データS−Unit.A〜Iより所定の1ラインの画像データを形成し、色調処理オブジェクトP500に引き渡す。色調処理オブジェクトP500は、この引き渡された1ラインのデータに色調処理を実施し、色調処理が終わると、拡大処理オブジェクトP400からは5ラインを要求されているため、5ライン分の色調処理が終わるまで、分割画像管理オブジェクトP200に1ラインを引き渡しを通知し、分割画像管理オブジェクトは、要求に従い順次1ラインを生成し、色調処理オブジェクトに渡す。そして、色調処理オブジェクトP500は、引き渡された1ラインの画像データに順次色調処理を実行する。色調処理オブジェクトP500は、5ラインに対する色調処理が終わると、拡大処理オブジェクトP400にこの5ラインを引き渡す。拡大処理オブジェクトP400は、この引き渡された5ラインの内後ろ4ラインを参照して先頭1ラインの強調処理を実施する。そして、色調処理も強調処理も実施された1ラインのデスティネーション画像が生成され、処理画像管理オブジェクトP300に引き渡される。
【0044】
最初の1ラインのデスティネーション画像が生成されると、以降、順次nラインまで、1ラインごとデスティネーション画像が生成される。この1ラインの画像を生成するにあたり、処理画像管理オブジェクトP300は、拡大処理オブジェクトP400に1ラインの引き渡しを通知する。ここで、拡大処理オブジェクトP400は、既に、色調処理が終わっている5ラインを引き渡されている。従って、この5ラインのうち先頭の1ラインを不参照の扱いとし、2番目のラインについて拡大処理を実施するために、色調処理オブジェクトP500に1ラインの引き渡しを通知する。この通知を受けると色調処理オブジェクトP500は、分割画像管理オブジェクトP200に1ラインの引き渡しを通知する。分割画像管理オブジェクトP200は、S−Unit.A〜Iより所定の1ラインを形成し、色調処理オブジェクトP500に引き渡す。色調処理オブジェクトP500は、この引き渡された1ラインに対して色調処理を実施し、拡大処理オブジェクトP400に引き渡す。拡大処理オブジェクトP400は、この引き渡された1ラインを既に引き渡されている4ラインの最後尾に付加して、5ラインの処理領域を形成し、上述した2番目のラインについて拡大処理を実施する。この2番目の1ラインについて拡大処理が終わると、処理画像管理オブジェクトP300に引き渡す。機能管理オブジェクトP100は、このように処理画像管理オブジェクトP300が取得した各オブジェクトにて各処理が実施されたライン単位の画像データを順次積み上げてデスティネーション画像を生成する。
【0045】
以上のようにして、最初に分割画像管理オブジェクトP200が色調処理オブジェクトP500に対して1ラインの画像領域をメモリ上に展開して引き渡し、色調処理オブジェクトP500が色調処理を実行し、色調処理オブジェクトP500において5ラインの画像データを生成すると、拡大処理オブジェクトP400に引き渡し、拡大処理を実行する。そして、5ラインより生成された1ラインの画像データを処理画像管理オブジェクトP300に引き渡す。そして、以降は、処理画像管理オブジェクトP300,拡大処理オブジェクトP400,色調処理オブジェクトP500,分割画像管理オブジェクトP200間にて1ラインの引き渡し通知および形成し、あるいは、画像処理を実行した1ラインの画像データを逆方向にて順次引き渡し、機能管理オブジェクトP100にて積み上げることによりデスティネーション画像を生成する。
本実施形態においては、分割画像管理オブジェクトP200から色調処理オブジェクトP500に引き渡される1ラインの画像データおよび色調処理オブジェクトP500から拡大処理オブジェクトP400に引き渡される5ラインあるいは1ラインの画像データがS−Areaを構成することはいうまでもない。
また、本実施形態においては、画像処理を実行する順番を色調処理オブジェクトP500→拡大処理オブジェクトP400としているが、むろん、これに限定されるものではなく、拡大処理オブジェクトP400→色調処理オブジェクトP500としてもよいし、所定の設定により、拡大処理オブジェクトP400あるいは色調処理オブジェクトP500のいずれか一方のみを実行するようにしてもよい。
【0046】
ここで、図12にプリンタドライバ12cにおける手続の流れを示す。
同図においては、オペレーティングシステム12aに組み込まれた状態でのプリンタドライバ12cの概略構成を示しているが、図3ではプリンタドライバ12c単独での視点で示しており、さらにプリンタドライバ12c内を本来のドライバの機能に近い処理と、付加的な機能に近い処理とに分割し、左欄にドライバ機能をまとめ、右欄にモジュール機能をまとめている。
すなわち、手順1においてはドライバ機能としてソース画像の取得処理があり、これは機能管理オブジェクトP1と分割画像管理オブジェクトP2の機能といえる。次に、手順2はフォトインスタンス取得処理があるが、これは各オブジェクト画像ごとに別個・並行に処理するために現在の実行処理対象を確認するためのものである。
【0047】
以上が前処理に対応し、処理の流れとしては手順3においてモジュールの側からドライバの側に向けて処理画像領域を上述したように通知する
一方、手順4では要求された処理画像領域を含むソース画像(S−Unit.a〜i)をドライバ側が登録し、これに続いて手順5では画像処理として強調処理および拡大処理を実行することになる。
なお、画像処理は、オブジェクト画像全体についての評価を行っておき、その評価結果に基づいて処理を実行する。例えば、あるオブジェクト画像が全体的に暗いのであれば、画像処理で明るく修整すればよい。この場合、オブジェクト画像は分割オブジェクトデータに分割されてしまっているから、それぞれのオブジェクトデータをまとめて評価するか、個別的にオブジェクトデータについて評価しつつも、最終的には各オブジェクト画像ごとに評価をまとめる必要がある。
【0048】
本来、分割オブジェクトデータとオブジェクト画像との対応関係は付けられていないのが通常であり、この対応付けはプリンタドライバ12cの側で行わなければならない。この対応付けの一つの手法として、仮想領域に分割オブジェクトデータを展開してオブジェクト画像を連結する手法があるし、別の手法として分割オブジェクトデータ同士の重なり合いや隣接具合から同じオブジェクト画像であるか否かを判断する手法がある。いずれの手法を採用するかはシステムの相違によってまちまちである。
【0049】
一方、上述したように画像処理のためにオブジェクト画像を評価するには、オブジェクト画像全体にわたって画素の情報をサンプリングすることが有効であり、簡易である。このようなサンプリングは、オブジェクト画像と分割オブジェクトデータとの対応関係が分かる前後のどちらで実行しても良い。
すなわち、対応関係が分かる前に分割オブジェクトデータごとにサンプリングしておき、対応関係が分かってからサンプリング結果を統合することもできるし、対応関係が分かってから各オブジェクト画像ごとに対応する分割オブジェクトデータをサンプリングすることもできる。このようにサンプリングの実行タイミングは条件に応じてさまざまであり、図12においても実行可能な三つのタイミングに対応して破線で示している。なお、ドライバの側で行うといってもサンプリング用のモジュールを用意することも可能である。
【0050】
手順5の画像処理は、このサンプリング結果を利用して実行され、生成された画像がデスティネーション画像となって手順6にて登録される。そして、登録されたデスティネーション画像は手順7でドライバ側にて出力されることになる。そして、最終的にデスティネーション画像が取得されたら手順8でソース画像をメモリから解放する。ここでソース画像の解放タイミングは特に制限されるものではない。
例えば、一つのS−Areaごとに登録・解放を実行するとすれば使用メモリ領域を低減できる反面、作業が煩わしい。これに対して使用メモリ領域の制限が少ない場合は、登録・解放の作業をこまめに行わなくても良いと言える。
【0051】
なお、上述した例では、デスティネーション画像を取得する意味で必要領域を通知しており、生成されるデスティネーション画像は任意のメモり領域に展開されればよい。
これに対してスプールファイル自体に対して拡大処理を実行したい場合もある。この場合は、拡大処理された画像をスプールファイルに対して付加し、元画像ファイルのポインタを拡大処理された画像ファイルにリンクさせればよい。
例えばスプールファイルから読み出して仮想画像を構築し、画像処理を施してから元のスプールファイルを書き換えたいという処理があるとする。
かかる場合に、拡大処理をスプールファイル中の画像ファイルに施してしまえば仮想画像上で拡大処理を実現しなくても良くなる。しかしながら、拡大処理すればスプールファイル中の画像ファイルよりも大きくなるから、拡大後の画像ファイルで書き換えることはできない。従って、拡大後の画像データをスプールファイルの後に付加していき、ポインタのリンクを張り替えるようにするのである。
【0052】
次に、拡大処理の具体的手法について説明する。
一般に、ドットマトリクス状の画素からなる画像についてその格子間に新たに画素を生成する処理を拡大処理と呼んで広く実行されている。これは、ディスプレイ17aの解像度とカラープリンタ17bの解像度に相違があるような場合、画素単位で割り当ててしまうと一定の大きさに表示されなくなるといった不具合を解消するためである。
ここで、拡大処理には、次に示す手法が知られている。
1.最近隣内挿法(単純水増しコピー)
【0053】
2.3次たたみ込み補間(以下、3次補間という)
前者のものは数学的に最も高速な拡大手法であるし、後者のものはきれいな拡大結果を得られる反面で数学的には大量の演算を必要として時間がかかるという特徴を有している。
いずれにしても、これらは画像処理の技術用語としてはフィルタ処理と呼ばれている。ここで、図13や図14は別々のフィルタ[1],[2]を使用して拡大前の画像aから拡大後の画像Aを生成する原理を示している。この場合、拡大前の画像aの数点を利用してフィルタ[1],[2]にかけることにより、拡大後の画像Aのある1点を求めることができる。従って、拡大後の画像Aの全画素について本来的には演算を繰り返すことになる。
【0054】
ところで、フィルタ[1],[2]には処理結果について差があるはずである。すなわち、前者は荒く見え、後者は滑らかに見えるように思われる。しかしながら、拡大結果を使用して印刷した場合、人間の目の認識の限界により必ずしもその差を認識することができない。
すなわち、高度な演算を要するフィルタ[2]だけで拡大した場合と、フィルタ[1],[2]を併用して拡大した場合とにおいて、拡大結果の差を認識できない場合がある。
図15は、後者の手順を示しており、元の画像aに対してフィルタ[2]を利用して拡大処理を実行し、一度、画像a’を生成した後に、今度はフィルタ[1]を利用して拡大処理を実行し画像Aを得ている。むろん、先のフィルタ[2]の拡大処理は3次補間を要するのでモジュールで実行し、フィルタ[1]の拡大処理はドライバで実現するようにしてもよい。
この場合、もちろんフィルタ[1]とフィルタ[2]の拡大倍率によっては肉眼でも差が分かるが、そのような差が分からない範囲の組合せであるならば、処理時間のかかるフィルタ[2]にて生成する画像a’の面積は小さいため高速な処理を期待できる。なぜなら、拡大処理後の画像の面積に比例して演算量も多くなるからである。
【0055】
図16は、3次補間の場合の既存の格子点と補間点との配置を示すとともに、数1は、この3次補間のフィルタ処理を行列演算式で示している。
【数1】
なお、関数f(t)については、
f(t) = {sin(πt)}/πt
で表され、UまたはVをWに置き換えることにより、
t0 = 1+(W−|W|)
t1 = (W−|W|)
t2 = 1−(W−|W|)
t3 = 2−(W−|W|)
で表すことができる。
【0056】
このような3次補間演算は、一般的に多くの演算量を要することになるが、補間点の位置によっては高速化が可能であり、より具体的には整数倍の拡大に限れば処理量はかなり低減することができる。なお、ここでいう整数倍とは原点が格子線の交差点上に置かれるようになる倍率のことであって、拡大処理前後の格子点数の比を意味するものではない。
図17は、この定義でいうところの2倍の拡大であり、図18は、3倍の拡大である。図中、大きな白丸が原点で、小さい黒丸が補間点である。これらの図から分かるように、整数倍の拡大においては、補間点のいくつかは格子線上に配置される。以下、具体的な高速化手段について説明する。
【0057】
(1) 格子線上の補間点の演算簡易化
整数倍の拡大においては、補間点のいくつかは格子線上に配置される。従って、数1は、簡易化(演算量が減る)される。すなわち、補間点が格子線上に存在するということは、W(UあるいはVのいずれか)が0になることを意味する。よって、
t0 = 1、 t1 = 0、 t2 = 1、 t3 = 2
となる。このとき、 f(t) は、上式より以下のようになる。
f(0) = 1、 f(1) = 0、 f(2) = 0
よって、Y軸に関しては格子線上に存在する場合のX軸上の補間点は、
【数2】
によって算出することになり、X軸に関しては格子線上に存在する場合のY軸上の補間点は、
【数3】
によって算出することになる。
この数2、数3から明らかなように拡大処理の演算を簡易化することが可能になる。
【0058】
(2) 複数のフィルタを用意することによる高速化
整数倍のときに格子線上に位置する補間点はもっとも特異な例であるが、格子線上にない場合でも倍率を固定するとともに、補間点ごとのフィルタ処理を用意すれば、f(t) は定数化できるので演算処理を高速化できる。かかる場合、f(t) を定数化すると、
【数4】
により表されることになる。ここにおいて、A〜D、K〜N は、補間点の場所Wによって一意的に決定されうるものであり、予め演算してテーブルに保存しておけばよい。
【0059】
ここで、拡大処理において2倍の場合について図17を参照してみると、局所的には4個の点を補間しなければならないので拡大処理前の画像aを画像Aに拡大する場合、4つのフィルタを用意することになる。これを図で表したものが図19であり、複数のフィルタ処理を用意することを前提とすれば、f(t) の定数化が可能になる。f(t) の定数化が実現する具体的な高速化は以下のような理由による。
まず、f(t) の定数化そのこと自体による高速化が可能である。なぜならば、f(t) の定数化は、f(t) で表せられる3次補間関数の演算の除去を意味するからである。
次に、演算種別の変化によって高速化が可能である。一般に、CPUにとって同じ1回の掛け算でも、“変数 * 変数” より “定数 * 変数”の方が高速な処理となる。従って、数1と数4とを比較した場合、数4の方が高速化されることが分かる。
さらに、一方の定数化によって“定数 * 変数”のかけ算を演算テーブルにて代用することにより、高速化することができる。
【0060】
以上の高速化の効果をまとめると次のようになる。
1つの補間点を求めるために、1つのフィルタ処理を行なう従来の手法によれば、
・3次補間関数の演算
・20回の“変数 * 変数”の演算
が必要である。しかしながら、上に述べたように複数のフィルタ処理を前提とした場合には、
・16回の演算テーブルへのアクセス
・4回の“定数 * 変数”の演算
により実現できる。従って、複数のフィルタを用意した方が高速化を実現できる。また、先に述べた格子線上の補間点の演算簡略化についても、同様にして複数のフィルタ処理を用意して実現可能である。そして、このような複数のフィルタ処理を用意することによる高速化と、格子線上にある補間点の式の簡略化による高速化は、整数倍であれば何倍でも有効である。
【0061】
(3)その他の高速化
(a)2のn乗倍の拡大における特異な補間点の演算式の簡略化
2のn乗倍の拡大においては(nは1以上の整数)、最近傍の原点と原点の2分の1にある場所の点を結んだ格子線(図17の破線)に補間点が置かれるが、X軸上の場合は、
【数5】
により表され、Y軸上の場合は、
【数6】
により表されることになる。この場合、ベクトルの対称性を利用することにより、
・16回の演算テーブルへのアクセス
・2回の“定数 * 変数”の演算
だけで補間点を求めることができる。
【0062】
(b) 各フィルタ間で共用できる演算の保存による演算量の節約
補間点数分のフィルタを用意することによって、高速化できることはすでに述べたが、各フィルタ間で共用できる演算を保存することによって演算量を節約することができる。
(c)4倍拡大における高速化の例
図20は、4倍拡大におけるコーディング例を示している。上述した高速化が具体的に適用されている行に注釈を付している。すなわち、高速化は、
・原点のコピー
・格子線上の簡易式
・各フィルタ間で共用できる演算の保存
・2のn乗倍の特異点の簡易式
という手法で表れている。
【0063】
上述してきたように整数倍の補間拡大に限れば処理量はかなり低減することができる。従って、局所的に補間位置を特定することが高速化に有効であることが分かった。かかる整数倍による補間拡大の方法を適用する場合、整数倍の補間に限定せず、少数倍の補間拡大についても応用することが考えられる。ここでは、拡大処理の他の実施例について、少数倍、具体的には1.25倍の補間拡大について考察する。この1.25倍の補間拡大における局所的な作用を図25に示す。同図において、局所的な1.25倍とは、4点の原点を補間点の1点を含めて5点にすることである。すなわち、平面において、16点の原点を補間点を含めて25点に拡大することをいう。
【0064】
従って、図25に示すように補間点の座標は予め推測することが可能であり、そのことによる演算の効率化および演算量の低減は上述した整数倍の補間拡大による実施例と同様である。よって、それぞれの補間点ごとに最適なフィルタを用意すればよいことになる。ここでは、それぞれの補間点ごとのフィルタを子フィルタと呼び、16点の原点から補間点を含め25点の画素を生成する。これらの子フィルタを使用した全体のフィルタをフィルタ16to25と呼ぶ。ここで、フィルタ16to25を構成する子フィルタに必要なベクトル要素を示す。
・P1〜P5を求めるために必要な1024倍されたベクトル要素
P1:{0,1024,0,0}
P2:{VA,VB,VC,VD}
P3:{VE,VF,VG,VH}
P4:{VH,VG,VF,VE}
P5:{VD,VC,VB,VA}
なお、VA〜VHは3次元補間関数とその補間位置から予め求められる定数である。
【0065】
このように、ある画像を1.25倍にすることを考えた場合、フィルタ16to25を16点ずつ周期的に通すことになる。しかし、一般的にはフィルタ16to25を通すことができない余りの領域が出ることは自明である。従って、フィルタ16to25を適用する場合、参照画素の影響も考えなければならない。この余った領域は別のフィルタを通すことになるので、均一性がなくなり、歪みが生じる。ただし、これは人間の目の誤差の範囲内であることを前提とする。
【0066】
ここで、フィルタ16to25を通した場合のソース画像とデスティネーション画像の大きさの関係を示す。ソース画像1辺の長さをsLとすると、フィルタ16to25を通して得られるデスティネーション画像の1辺の長さdLは、以下のようになる。
となる。ただし、複数の連続した局所的な箇所であって、参照画素の影響がなければ、
・dL = {sL/4}*5 ・・・・式(2)
となる。
【0067】
次に、画像データを形成する画素数が4の倍数である場合に、1.25倍の補間拡大を実施することについて検証する。具体的に、本実施形態においてはデジタルカメラの補間拡大などにより必要とされている、「1280画素*960画素」を1.25倍により補間拡大し、「1600画素*1200画素」に修正するということについて検証する。かかる場合、X座標およびY座標は、Nを整数とすると、4*Nの画素数を5*Nの画素数に変換することを示している。
式(2)を使用して、sLに4*Nを代入すると、
となり、局所的な1.25倍が利用可能であることが分かる。ただし、全体の大きさを考えた場合は、式(1)に基づいて考えなければならないので、
となる。式(4−2)は、デスティネーション画像として4画素足りない状態を示し、式(4−1)は(N−1)回しか、フィルタ16to25を通していないことを示している。このことから、ソース画像でフィルタ16to25を適用することができる画素は、4*(N−1)点であり、4N−4(N−1)=4点は未処理のままであることが分かる。また、デスティネーション画像としてフィルタ16to25により取り出せる画素は、5*(N−1)であり、5N−5(N−1)=5点が生成できないことになる。従って、ソース画像の残りの4点からデスティネーション画像における不足分5点を生成する方法を考える必要がある。
【0068】
このソース画像の残りの4点からデスティネーション画像における不足分5点を生成する方法を図26示す。同図において、局所的には3点を4点にする、すなわち、4/3=1.3333・・・・倍(以下、1.3倍)の補間拡大になる。ここで、この局所的な1.3倍の補間拡大に必要となるベクトル要素は以下のようになる。
・P1〜P4を求めるために必要な1024倍されたベクトル要素
P1:{0,1024,0,0}
P2:{VK,VL,VM,VN}
P3:{VX,VY,VY,VX}
P4:{VN,VM,VL,VK}
なお、VK〜VN,VX,VYは3次元補間関数とその補間位置から予め求められる定数である。
【0069】
以上のことから、フィルタ16to25で処理できなかった箇所については、X方向には、フィルタ12to25X、Y方向にはフィルタ12to25Yを使用する。また、X,Y方向ともに1.25倍できない箇所はフィルタ9to16を使用する。ここで、このフィルタ12to15Yを使用する際の原点と補間点の相関を示した相関図を図27に示す(フィルタ12to25Xは90度回転した図になる。)。このように、1.25倍の補間拡大では、局所的には1.25倍と1.3倍の補間拡大を実行する。かかる場合、フィルタ16to25、フィルタ12to20X、フィルタ12to20X、フィルタ9to16を使用すると補間拡大が可能となり、これに伴い補間拡大処理の高速化を実現することが可能になる。
【0070】
これらのフィルタで必要なベクトル要素をまとめると、14個のベクトル要素が必要になる。
よって、それぞれのベクトル要素に0〜255を掛けた、256個の要素から形成される14個の演算テーブルを使用することにより演算数を減らすことが可能になる。ここで、この演算テーブルの要素1個の大きさを4バイトとすると、1個の演算テーブルの大きさは、1024バイト(1KB)である。これが14個あるので、演算テーブルに必要なメモリは14KBとなる。
【0071】
このように、各管理オブジェクトP100〜P300と、各画像処理オブジェクトP400,P500を組み合わせた画像処理システムにおいて、各オブジェクトP300〜P500は自己の画像処理に必要な処理領域を前のオブジェクトP200,P400,P500に要求する。そして、要求を受けたオブジェクトは分割画像管理オブジェクトP200が形成した所定の領域の引き渡しを受けたり、各オブジェクトP400,P500が自己の画像処理を実行したものを積み上げて形成した処理領域の引き渡しを受ける。従って、各オブジェクトは前後のオブジェクトと接続し、要求のあった処理領域を引き渡すのみでよく処理構成を簡易にすることが可能になる。また、各オブジェクトは前後に接続するオブジェクトと相互にデータの授受を可能にすればよく、オブジェクトが増加減しても、管理オブジェクトP100〜P300を修正する必要がないため、柔軟な画像処理システムを構築することが可能になる。
【図面の簡単な説明】
【図1】本発明の一実施形態にかかる画像処理システムを実行するコンピュータシステムのブロック図である。
【図2】印刷イメージの処理単位の変化を示す図である。
【図3】オペレーティングシステムに組み込まれた状態でのプリンタドライバの概略構成を示す図である。
【図4】画像の処理単位を示す図である。
【図5】強調処理で必要な周縁領域を示す図である。
【図6】拡大処理で必要な周縁領域を示す図である。
【図7】モジュール側からドライバ側に必要領域を要求する際に通知する過程を示す図である。
【図8】S−AreaとS−Unitの関係を示す図である。
【図9】S−Unitのポインタテーブルを示す図である。
【図10】強調処理を実行する場合の実質的処理対象領域を示す図である。
【図11】拡大処理を実行する場合の実質的処理対象領域を示す図である。
【図12】プリンタドライバにおける手続の流れを示す図である。
【図13】第1のフィルタ処理による拡大処理を示す図である。
【図14】第2のフィルタ処理による拡大処理を示す図である。
【図15】二段階のフィルタ処理による拡大処理を示す図である。
【図16】3次補間の格子点と補間点の関係を示す図である。
【図17】2倍補間の格子点と補間点の関係を示す図である。
【図18】3倍補間の格子点と補間点の関係を示す図である。
【図19】4つのフィルタ処理を利用した3次補間による拡大処理を示す図である。
【図20】4倍拡大におけるコーディング例を示す図である。
【図21】S−Unitについて処理対象となるものを分離格納した場合の図である。
【図22】S−Unitの処理領域テーブルを示す図である。
【図23】他の実施の形態におけるオペレーティングシステムに組み込まれた状態でのプリンタドライバの構成を示す図である。
【図24】他の実施の形態おける画像の処理単位を示す図である。
【図25】1.25倍補間の格子点と補間点の関係を示す図である。
【図26】1.3倍補間の格子点と補間点の関係を示す図である。
【図27】フィルタ12to15Yを使用する際の原点と補間点の相関を示した相関図である。
【符号の説明】
10…コンピュータシステム
11a…スキャナ
11a2…スキャナ
11b…デジタルスチルカメラ
11b1…デジタルスチルカメラ
11b2…デジタルスチルカメラ
11c…ビデオカメラ
12…コンピュータ本体
12a…オペレーティングシステム
12b…ディスプレイドライバ
12c…プリンタドライバ
12d…アプリケーション
13a…フロッピーディスクドライブ
13b…ハードディスク
13c…CD−ROMドライブ
14a…モデム
14a2…モデム
15a…キーボード
15b…マウス
17a…ディスプレイ
17b…カラープリンタ
18a…スピーカ
18b…マイク
Claims (15)
- 個別に所定の処理対象データに対して画像処理を実行する少なくとも2つ以上の画像処理モジュールを組み合わせて利用する画像処理システムであって、
上記画像処理モジュールは、
上記画像処理を実行するに際して、
当該画像処理に必要となる処理対象データを他の画像処理モジュールに要求するとともに、
当該他の画像処理モジュールがこの要求に基づいて生成した処理対象データを利用して画像処理を実行する画像処理実行機能を具備することを特徴とする画像処理システム。 - 個別に所定の処理対象データに対して画像処理を実行する少なくとも2つ以上の画像処理モジュールを組み合わせて利用する画像処理システムであって、
上記画像処理モジュールは、
他の画像処理モジュールから当該他の画像処理モジュールにおける画像処理に必要となる処理対象データの要求を受け付けた際に、
上記画像処理を実行した処理対象データから当該他の画像処理モジュールが画像処理にて利用するのに必要十分な領域だけの処理領域を生成する生成機能を具備することを特徴とする画像処理システム。 - 上記請求項1に記載の画像処理システムにおいて、
上記画像処理実行機能は、上記処理対象データがドットマトリクス状に配置された画素から構成される場合、要求する処理対象データとして当該複数の画素を有する所定数のライン単位にて形成される処理領域を要求することを特徴とする画像処理システム。 - 上記請求項2に記載の画像処理システムにおいて、
上記生成機能は、上記処理対象データがドットマトリクス状に配置された画素から構成される場合、当該複数の画素を有する所定数のライン単位によって上記受け付けた処理対象データの要求に対応する処理領域を生成することを特徴とする画像処理システム。 - 上記請求項1に記載の画像処理システムにおいて、
上記画像処理実行機能は、上記処理対象データがドットマトリクス状に配置された画素から構成される場合、要求する処理対象データとして所定数の画素単位にて形成される処理領域を要求することを特徴とする画像処理システム。 - 上記請求項2に記載の画像処理システムにおいて、
上記生成機能は、上記処理対象データがドットマトリクス状に配置された画素から構成される場合、同画素単位によって上記受け付けた処理対象データの要求に対応する処理領域を生成することを特徴とする画像処理システム。 - 上記請求項1〜請求項6のいずれかに記載の画像処理システムにおいて、
上記画像処理実行機能は、後段の画像処理で必要な処理領域を含めた上で必要となる上記処理領域を前段の画像処理モジュールに要求することを特徴とする画像処理システム。 - 上記請求項2〜請求項7のいずれかに記載の画像処理システムにおいて、
上記生成機能は、所定の記憶領域に個別に処理対象データを生成することを特徴とする画像処理システム。 - 上記請求項2に記載の画像処理システムにおいて、
上記各画像処理モジュールは、組み合わせて利用されるにあたり所定の順番で順序付けられるとともに、
上記生成機能は、後順位の画像処理モジュールがある場合、上記記憶領域に個別に生成した処理対象データから以降の画像処理モジュールで不要な処理対象データを順次解放することを特徴とする画像処理システム。 - 上記請求項2〜請求項9のいずれかに記載の画像処理システムにおいて、
上記生成機能は、所定の元画像データから処理対象データを生成するとともに、同処理対象データを生成するに際して、利用頻度の高い処理対象データを限定して利用可能にすることを特徴とする画像処理システム。 - 上記請求項1〜請求項10のいずれかに記載の画像処理システムにおいて、
上記画像処理実行機能は、初期画像処理時に必要な処理対象データを要求する初期処理対象データ画像処理実行機能と、初期画像処理以降の通常時に必要な処理対象データを要求する通常処理対象データ画像処理実行機能とを備えることを特徴とする画像処理システム。 - 個別に所定の処理対象データに対して画像処理を実行する少なくとも2つ以上の画像処理モジュールを組み合わせて利用する画像処理方法であって、
上記画像処理モジュールは、
上記画像処理を実行するに際して、
当該画像処理に必要となる処理対象データを他の画像処理モジュールに要求するとともに、
当該他の画像処理モジュールがこの要求に基づいて生成した処理対象データを利用して画像処理を実行する画像処理実行工程を具備することを特徴とする画像処理方法。 - 個別に所定の処理対象データに対して画像処理を実行する少なくとも2つ以上の画像処理モジュールを組み合わせて利用する画像処理方法であって、
上記画像処理モジュールは、
他の画像処理モジュールから当該他の画像処理モジュールにおける画像処理に必要となる処理対象データの要求を受け付けた際に、
上記画像処理を実行した処理対象データから当該他の画像処理モジュールが画像処理にて利用するのに必要十分な領域だけの処理領域を生成する生成工程を具備することを特徴とする画像処理方法。 - 所定の処理対象データに対して画像処理を実行するとともに当該画像処理を実行するに際して、少なくとも2つ以上の他の画像処理モジュールと適宜処理対象データの送受が可能な画像処理モジュールをコンピュータで実行可能なプログラムにて記録した媒体であって、
上記画像処理モジュールは、
上記画像処理を実行するに際して、
当該画像処理に必要となる処理対象データを上記他の画像処理モジュールに要求するとともに、
当該他の画像処理モジュールがこの要求に基づいて生成した処理対象データを利用して画像処理を実行する画像処理実行機能を具備することを特徴とする画像処理モジュールを記録した媒体。 - 所定の処理対象データに対して画像処理を実行するとともに当該画像処理を実行するに際して、少なくとも2つ以上の他の画像処理モジュールと適宜処理対象データの送受が可能な画像処理モジュールをコンピュータで実行可能なプログラムで記録した媒体であって、
上記画像処理モジュールは、
他の画像処理モジュールから当該他の画像処理モジュールにおける画像処理に必要となる処理対象データの要求を受け付けた際に、
上記画像処理を実行した処理対象データから当該他の画像処理モジュールが画像処理にて利用するのに必要十分な領域だけの処理領域を生成する生成機能を具備することを特徴とする画像処理モジュールを記録した媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003196715A JP2004102989A (ja) | 1998-08-31 | 2003-07-14 | 画像処理システム、画像処理方法および画像処理モジュールを記録した媒体 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP24533798 | 1998-08-31 | ||
JP2003196715A JP2004102989A (ja) | 1998-08-31 | 2003-07-14 | 画像処理システム、画像処理方法および画像処理モジュールを記録した媒体 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP18678899A Division JP3467753B2 (ja) | 1998-08-31 | 1999-06-30 | 画像処理システム、画像処理方法および画像処理モジュールを記録した媒体 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004102989A true JP2004102989A (ja) | 2004-04-02 |
Family
ID=32299992
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003196715A Pending JP2004102989A (ja) | 1998-08-31 | 2003-07-14 | 画像処理システム、画像処理方法および画像処理モジュールを記録した媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004102989A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006094400A (ja) * | 2004-09-27 | 2006-04-06 | Fuji Xerox Co Ltd | 画像処理装置および画像処理方法 |
CN105224290A (zh) * | 2015-09-24 | 2016-01-06 | 清华大学深圳研究生院 | 一种图像负载均衡处理方法及装置 |
-
2003
- 2003-07-14 JP JP2003196715A patent/JP2004102989A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006094400A (ja) * | 2004-09-27 | 2006-04-06 | Fuji Xerox Co Ltd | 画像処理装置および画像処理方法 |
CN105224290A (zh) * | 2015-09-24 | 2016-01-06 | 清华大学深圳研究生院 | 一种图像负载均衡处理方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5643574B2 (ja) | 画像処理装置及び画像処理方法 | |
US20080273218A1 (en) | Image Processing Apparatus, Control Method Thereof, and Program | |
JPH07262360A (ja) | 画像処理装置及び方法 | |
WO1991015831A1 (en) | Page description language interpreter | |
US20090002762A1 (en) | Image processing apparatus, computer readable recording medium stored with image processing program, and image processing method | |
JP4063918B2 (ja) | 表示のためのグラフィックス情報を含むイメージを作成する装置と方法 | |
JP2004102989A (ja) | 画像処理システム、画像処理方法および画像処理モジュールを記録した媒体 | |
JP3467753B2 (ja) | 画像処理システム、画像処理方法および画像処理モジュールを記録した媒体 | |
JP2004062894A (ja) | 画像処理プログラムを記録した媒体、画像処理装置および画像処理方法 | |
JP2000149006A (ja) | 画像処理プログラムを記録した媒体、画像処理装置および画像処理方法 | |
JP2000255117A (ja) | 印刷処理装置および印刷処理方法 | |
JP3467727B2 (ja) | 画像処理プログラムを記録した媒体、画像処理装置および画像処理方法 | |
JP2000149007A (ja) | 画像デ―タ補間処理プログラムを記録した媒体、画像デ―タ補間処理装置および画像デ―タ補間処理方法 | |
JPH1011593A (ja) | 画像形成装置 | |
JPH10151815A (ja) | 印刷処理装置 | |
JP3419450B2 (ja) | 画素データ処理装置および方法 | |
JP2000255125A (ja) | 印刷処理装置および印刷処理方法 | |
JP2603322B2 (ja) | 文字処理装置及び方法 | |
JP3004993B2 (ja) | 画像処理装置 | |
JPH02216590A (ja) | 画像処理装置 | |
JPH10333852A (ja) | 描画処理装置 | |
JP2941688B2 (ja) | グラフィック処理装置 | |
JPH08110871A (ja) | メモリ読出方法及び装置 | |
JPH11119928A (ja) | 印刷処理装置および方法 | |
JP2004326528A (ja) | 画像処理装置及び画像処理方法 |