(57)【要約】      （修正有）【課題】ラスター形式の画像データを処理する技術において、画像サイズに関わらず画像ブロック単位の処理を効率よく行う技術を提供する。【解決手段】画像処理装置のＧＰＵカード５は、ラスター形式の画像データを格納するデバイスメモリー５７と、ラスター方向のブロックサイズが規定された画像ブロック単位で画像データを処理する演算コア群５３と、画像サイズおよびブロックサイズに関する情報を演算コア群に与えるコントローラー５１とを備える。演算コア群は、画像データの先頭から起算して、Ｎ＝（ｎ−１）Ｗａ＋（ｍ−１）Ｗｂ＋１で表される第Ｎ番目の画素から連続するＷｂ画素分の画像データを一括してデバイスメモリーから取得する。ここに、ＷａおよびＷｂはそれぞれラスター方向の画像サイズおよびブロックサイズ、ｍ、ｎは画像ブロックの位置を特定するパラメーターであり、画像サイズおよびブロックサイズの単位は画素数である。【選択図】図２
2018041185.tif 000002
【特許請求の範囲】
【請求項１】
画像を表すラスター形式の画像データを格納する格納部と、
ラスター方向のブロックサイズが規定された画像ブロック単位で前記画像データを処理する処理部と、
前記画像の画像サイズおよび前記ブロックサイズに関する情報を前記処理部に与える制御部と
を備え、
前記処理部は、前記画像データの先頭から起算して次式、
Ｎ＝（ｎ−１）Ｗａ＋（ｍ−１）Ｗｂ＋１
で表される第Ｎ番目の画素を始端とし、連続するＷｂ画素からなる画素列に対応する前記画像データを一括して前記格納部から取得して処理する画像処理装置、
ここに、
Ｗａ：前記ラスター方向の前記画像サイズ
Ｗｂ：前記ラスター方向の前記ブロックサイズ
ｍ：（Ｗａ／Ｗｂ）以上の自然数のうち最小のものを超えない自然数
ｎ：前記ラスター方向に交差する交差方向の画像サイズを超えない自然数
であり、前記画像サイズおよび前記ブロックサイズの単位は画素数である。
【請求項２】
前記格納部は、画素ごとの画素情報が１つのラスター線における画素の配列順序に沿って並ぶデータ列が各ラスター線の配列に沿った順序で並ぶ前記画像データを格納する請求項１に記載の画像処理装置。
【請求項３】
前記処理部は、複数のスレッドを並列的に実行して前記画像ブロック内の各画素に対応する前記画像データを処理する請求項１または２に記載の画像処理装置。
【請求項４】
前記処理部は、前記格納部から取得された前記画像データを使用して一または複数の前記スレッドを各々が実行する複数の演算コアを有する請求項３に記載の画像処理装置。
【請求項５】
前記制御部は、前記処理部に対し、処理すべき前記画像ブロックを特定するための情報を与える請求項１ないし４のいずれかに記載の画像処理装置。
【請求項６】
前記制御部は、前記ブロックサイズを変更設定可能である請求項１ないし５のいずれかに記載の画像処理装置。
【請求項７】
前記交差方向のブロックサイズが画素数を単位としてＨｂ（Ｈｂは２以上の自然数）であるとき、前記処理部は、前記画像データにおいて始端の位置がＷａずつ異なるＨｂ個の前記画素列の前記画像データを前記格納部から取得する請求項１ないし６のいずれかに記載の画像処理装置。
【請求項８】
前記処理部が前記画像データを処理して作成した印刷データに基づき印刷を行う印刷部を備える請求項１ないし７のいずれかに記載の画像処理装置。
【請求項９】
格納部に格納された画像を表すラスター形式の画像データを処理部が取得し、
前記処理部が、ラスター方向のブロックサイズが規定された画像ブロック単位で前記画像データを処理し、
前記処理部は、前記画像データの先頭から起算して次式、
Ｎ＝（ｎ−１）Ｗａ＋（ｍ−１）Ｗｂ＋１
で表される第Ｎ番目の画素を始端とし、連続するＷｂ画素分の前記画像データを一括して前記格納部から取得して処理する画像処理方法、
ここに、
Ｗａ：前記ラスター方向の画像サイズ
Ｗｂ：前記ラスター方向の前記ブロックサイズ
ｍ：（Ｗａ／Ｗｂ）以上の自然数のうち最小のものを超えない自然数
ｎ：前記ラスター方向に交差する交差方向の画像サイズを超えない自然数
であり、前記画像サイズおよび前記ブロックサイズの単位は画素数である。
【請求項１０】
画像データを格納する格納部、前記画像データを処理する処理部、および前記処理部を制御する制御部を有するデバイスが実行可能な制御プログラムであって、
前記格納部に、画像を表すラスター形式の前記画像データを格納させ、
前記処理部に、前記格納部から前記画像データを取得させて、取得した前記画像データをラスター方向のブロックサイズが規定された画像ブロック単位で処理させ、
前記制御部に、前記画像の画像サイズおよび前記ブロックサイズに関する情報を前記処理部に与えさせ、
前記処理部による前記格納部からの前記画像データの取得においては、前記画像データの先頭から起算して次式、
Ｎ＝（ｎ−１）Ｗａ＋（ｍ−１）Ｗｂ＋１
で表される第Ｎ番目の画素を始端とし、連続するＷｂ画素からなる画素列に対応する前記画像データを一括して取得させる制御プログラム、
ここに、
Ｗａ：前記ラスター方向の前記画像サイズ
Ｗｂ：前記ラスター方向の前記ブロックサイズ
ｍ：（Ｗａ／Ｗｂ）以上の自然数のうち最小のものを超えない自然数
ｎ：前記ラスター方向に交差する交差方向の画像サイズを超えない自然数
であり、前記画像サイズおよび前記ブロックサイズの単位は画素数である。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ラスター形式の画像データを処理する技術に関するものである。
【背景技術】
【０００２】
例えば適宜の画像編集アプリケーションで作成された画像データを印刷装置で処理可能なデータに変換する場合のように、画像を表す画像データに何らかのデータ処理を施して新たな画像データを作成することが必要な場合がある。このような場合、画像を構成する各画素に対して同一の処理が適用されることが多い。個々の画素を順番に処理したのでは膨大な演算量の繰り返し処理になるため、このような処理を効率よく行うために、画像を複数の画像ブロックに区分して、画像ブロックごとの処理を並列的に実行することが行われる。
【０００３】
画像ブロックのサイズは、データ処理装置の処理能力に応じて決められることが望ましい。一方、画像のサイズは画像によってまちまちであり、１つの画像を全て同一サイズの画像ブロックに分割することができない場合が生じる。この問題に対応するために、例えば特許文献１および２に記載の技術では、画像の端部にダミー画素を付加することにより画像サイズをブロックサイズの整数倍に合わせた上で、画像を複数ブロックに分割している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−０８７１９１号公報
【特許文献２】特開２００５−１７４１３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記従来技術では、画像データに対する処理を開始する前に画像サイズが調整された画像データを準備する必要があり、これがオーバーヘッドとなって処理時間の増大を招くという問題がある。また、画像サイズとブロックサイズとの関係に応じて処理を異ならせる必要があり、例えば画像ブロック間または画像ブロック内で並列処理の効率を高めることを考える場合、このことが問題となり得る。
【０００６】
このように、上記従来技術には、データ処理に要する時間のさらなる短縮を図ることが難しいという問題が残されている。
【０００７】
この発明にかかるいくつかの態様は、上述の課題の少なくとも一部を解決するための構成を有しており、ラスター形式の画像データを処理する技術において、画像サイズに関わらず画像ブロック単位の処理を効率よく行うことができるようにするものである。
【課題を解決するための手段】
【０００８】
本発明の一の態様は、画像を表すラスター形式の画像データを格納する格納部と、ラスター方向のブロックサイズが規定された画像ブロック単位で画像データを処理する処理部と、画像の画像サイズおよびブロックサイズに関する情報を処理部に与える制御部とを備え、処理部は、画像データの先頭から起算して後述の式で表される第Ｎ番目の画素を始端とし、連続するＷｂ画素分の画像データを一括して格納部から取得して処理する。
【０００９】
また、本発明の他の一の態様は、格納部に格納された画像を表すラスター形式の画像データを処理部が取得し、処理部が、ラスター方向のブロックサイズが規定された画像ブロック単位で画像データを処理し、処理部は、画像データの先頭から起算して後述の式で表される第Ｎ番目の画素を始端とし、連続するＷｂ画素分の画像データを一括して格納部から取得して処理する。
【００１０】
また、本発明の他の一の態様は、画像データを格納する格納部、画像データを処理する処理部、および処理部を制御する制御部を有するデバイスが実行可能な制御プログラムであって、格納部に、画像を表すラスター形式の画像データを格納させ、処理部に、格納部から画像データを取得させて、取得した画像データをラスター方向のブロックサイズが規定された画像ブロック単位で処理させ、制御部に、画像の画像サイズおよびブロックサイズに関する情報を処理部に与えさせ、処理部による格納部からの画像データの取得においては、画像データの先頭から起算して後述の式で表される第Ｎ番目の画素を始端とし、連続するＷｂ画素からなる画素列に対応する画像データを一括して取得させる。
【００１１】
ここで、上記の値Ｎを表す式は、
Ｎ＝（ｎ−１）Ｗａ＋（ｍ−１）Ｗｂ＋１
である。この式において、
Ｗａ：ラスター方向の画像サイズ
Ｗｂ：ラスター方向のブロックサイズ
ｍ：（Ｗａ／Ｗｂ）以上の自然数のうち最小のものを超えない自然数
ｎ：ラスター方向に交差する交差方向の画像サイズを超えない自然数
であり、画像サイズおよびブロックサイズの単位は画素数である。
【００１２】
なお、本明細書においては「ラスター方向」を以下のように定義する。すなわち、ラスター形式の画像データでは、画像を格子状に配列された画素の集合体と見なし、各画素の画像情報が画像内の配列順序に沿って記述されている。この画像データ列における画素情報の記述順に沿って画素を順次並べることで形成される画素列の伸長方向を、本明細書では「ラスター方向」と称する。
【００１３】
上記のように構成された発明では、ラスター形式で記述される画像データにおいて連続する画素に対応した画像データを処理部が格納部から一括取得する。ラスター形式の画像データでは画像を構成する各画素を表す画素情報が画像における画素の配列順に応じた順序で記述されている。そのため、ラスター方向における画像ブロックのブロックサイズに対応する連続した画像データを一括取得することで、個々の画像データを個別に取得する場合よりも、当該画像ブロック内の処理に必要な画像データを短時間で取得することができる。
【００１４】
画像のサイズが画像ブロックのサイズの倍数であるとは限らない。しかしながら、画像データの先頭で表される画素を第１番目の画素として数えたときに上記式で表される第Ｎ番目の画素は、画像サイズとブロックサイズとの関係に関わらず、一の画像ブロックにおけるラスター方向上流側の端部に相当する。その理由については、後の「発明を実施するための形態」の項で詳しく説明する。
【００１５】
したがって、上記画素を始端として連続する、画像ブロックのサイズであるＷｂ画素分の画像データを一括して取得する構成とすれば、一の画像ブロックに含まれる１つの画素列内の画素のデータの全てが取得されることになる。しかしながら、画像のサイズが画像ブロックのサイズの倍数ではない場合、１つのラスター線においてラスター方向の末端に、画素数がブロックサイズに満たない画像ブロックが生じることとなる。
【００１６】
ラスター形式の画像データでは、１つのラスター線のラスター方向における末端に当たる画素の画素情報の次に、次のラスター線のラスター方向における先頭の画素の画素情報が続けて記述されている。したがって、画像ブロックの末尾と画像の末尾とが合致しない場合にもブロックサイズに相当する画素分の連続する画像データを取得すれば、次のラスター線の先頭部分の画像データも含まれることになる。言い換えれば、次のラスター線の先頭部分の画像データがあたかもダミーデータのように自動的に付加されることになる。
【００１７】
特許文献１にも記載されているように、ダミーデータを用いて処理された不要な画像データについては事後的に削除することができるので、画像への影響は回避することが可能である。したがってダミーデータを付加するための特別の処理を行うことなく、ダミーデータを付加した場合と同等の効果を得ることができる。
【００１８】
ここで、ダミーデータとして先の画像ブロックに付加された画素の次の画素を、次の画像ブロックに対応する始端の画素と見なしてしまうと、始端位置がずれることにより、本来の画像ブロックの区切りとは異なる範囲の画像データが取得されることとなる。しかしながら、後述するように、上記式によれば次の画像ブロックの始端に対応する画素は次のラスター線の先頭画素となる。したがって、画像ブロックの区切りと画像データ取得の区切りとがずれるという問題は生じない。
【００１９】
このように、本発明によれば、ラスター形式の画像データを画像ブロック単位で処理する場合、画像サイズとブロックサイズとが倍数関係にあるか否かに関わらず、単一の処理によって、任意の画像ブロックのラスター方向における上流側端部に相当する画素の位置を画像データ中で特定することができる。そのため、格納部に格納された画像データから処理すべき画像ブロックに対応する画像データを短時間で取得することが可能である。また、画像サイズとブロックサイズとの関係に関わらず処理内容が同一であるので、処理の並列化に適しており、これによる処理の効率化、高速化を図る上でも好ましい。
【００２０】
本発明において、格納部は、画素ごとの画素情報が１つのラスター線における画素の配列順序に沿って並ぶデータ列が各ラスター線の配列に沿った順序で並ぶ画像データを格納するものであってもよい。１つの「ラスター線」は、ラスター方向における画像の一端部から他端部までにわたり一列に並ぶ画素の列により表される線を意味する。このような構成によれば、１つのラスター線上の画素に対応する画素データの並びの後に次のラスター線上の画素に対応する画素データが配列されているため、上記のような次の画像ブロックの画像データをダミーデータのように扱うという手法が特に効果的に機能する。
【００２１】
また、処理部は、複数のスレッドを並列的に実行して画像ブロック内の画素に対応する画像データを処理するものであってもよい。上記手法では、画像サイズとブロックサイズとの関係によらず、また処理対象となる画像ブロックの画像内における位置によらず同一の処理を適用することが可能である。したがって並列処理に好適なものであり、複数スレッドの並列処理により、画像ブロック内の各画素のデータ処理を高速に実行することができる。
【００２２】
また、処理部は、格納部から取得された画像データを使用して一または複数のスレッドを各々が実行する複数の演算コアを有する構成であってもよい。このような構成を有するデバイスとして各種のＧＰＵ（Graphics Processing Unit）が製品化されており、画像データの処理に好適に適用可能である。このようなＧＰＵデバイスに上記の並列処理を実行させることで、画像データを高速に処理することができる。
【００２３】
また、制御部は、処理部に対し、処理すべき画像ブロックを特定するための情報を与える構成であってもよい。このような構成によれば、画像中の処理すべき画像ブロックが制御部からの情報により特定されるので、制御部から与える情報により、処理部に任意の画像ブロックを処理させることができる。上記式において自然数の組（ｍ，ｎ）は、画像データを取得しようとしている画素列の画像内における位置を表す情報である。したがって、処理対象とされる画像ブロックが指定されれば自然数の組（ｍ，ｎ）を特定することができる。処理部は、特定された値ｍ，ｎから取得すべき画像データの位置を把握することができる。
【００２４】
また、制御部は、ブロックサイズを変更設定可能であるように構成されてもよい。このような構成によれば、目的に応じて画像の処理単位を変更することができ、種々の画像を効率よく処理することができる。ブロックサイズが変わっても画素列の始端位置を求める上記式自体は不変であるため、処理部が実行すべき処理には変更を加える必要がない。
【００２５】
また、交差方向のブロックサイズが画素数を単位としてＨｂ（Ｈｂは２以上の自然数）であるとき、処理部は、画像データにおいて始端の位置がＷａずつ異なるＨｂ個の画素列の画像データを格納部から取得する構成であってもよい。画像ブロックが交差方向に複数画素分のブロックサイズを有するとき、当該画像ブロックは画像データにおいて互いに離散的に記述された複数の画素列を含む。それらの画素列の始端同士は、画像データ列においてラスター方向の画像サイズ分だけ位置が異なっているから、そのような関係にある長さＨｂの画素列に対応する画像データを格納部から取得することで１つの画像ブロック分の画像データを収集することができる。個々の画素列に対し上記式を適用して始端位置を算出する必要はない。
【００２６】
また、本発明にかかる画像処理装置は、処理部が画像データを処理して作成した印刷データに基づき印刷を行う印刷部を備えるものであってもよい。画像データを印刷に適した印刷データに変換するための処理は並列処理の適用対象として特に好適なものである。このような印刷データの作成処理に本発明を適用することで、画像データを高速に印刷データに変換することが可能となる。
【００２７】
なお、上述した本発明の各態様の有する複数の構成要素はすべてが必須のものではなく、上述の課題の一部または全部を解決するため、あるいは、本明細書に記載された効果の一部または全部を達成するために、適宜、複数の構成要素の一部の構成要素について、その変更、削除、新たな他の構成要素との差し替え、限定内容の一部削除を行うことが可能である。また、上述の課題の一部または全部を解決するため、あるいは、本明細書に記載された効果の一部または全部を達成するために、上述した本発明の一形態に含まれる技術的特徴の一部または全部を上述した本発明の他の形態に含まれる技術的特徴の一部または全部と組み合わせて、本発明の独立した一形態とすることも可能である。
【図面の簡単な説明】
【００２８】
【図１】本発明を適用可能な印刷処理システムの構成例を示すブロック図。
【図２】ＧＰＵカードの構成例を示す図。
【図３】画像ブロックに分割された画像の例を示す図。
【図４】ＧＰＵカードによるデータ処理におけるデータの流れを模式的に示す図。
【図５】画像処理ＰＣにおけるデータ処理の流れを模式的に示す図。
【図６】ＧＰＵにおけるブロックサイズと処理速度との関係を例示する第１の図。
【図７】ＧＰＵにおけるブロックサイズと処理速度との関係を例示する第２の図。
【図８】デバイスメモリーからのデータ転送ルールを説明する原理図。
【図９】Ｙ方向におけるブロックサイズが１より大きい場合の考え方を示す図。
【図１０】処理済みデータから不要部分を削除する方法の例を示す図。
【図１１】本発明の他の実施形態を例示する図。
【発明を実施するための形態】
【００２９】
図１は本発明を適用可能な印刷処理システムの構成例を示すブロック図である。印刷処理システム１は、ユーザー用パーソナルコンピューター（以下「ユーザーＰＣ」と略称する）２、画像処理用パーソナルコンピューター（以下「画像処理ＰＣ」と略称する）３およびプリンター４を含み、それらが互いに通信可能に接続されている。この印刷処理システム１は、ユーザーがプリンター４を作動させて所望の画像を印刷させるためのシステムである。
【００３０】
具体的には、印刷を希望するユーザーは、ユーザーＰＣ２により実行される適宜の画像編集アプリケーションを用いて、印刷したい画像を表す原画像データを作成する。原画像データは画像処理ＰＣ３に送られる。画像処理ＰＣ３に実装された画像処理アプリケーションがデータ処理を実行することで、原画像データが、プリンター４が利用可能な印刷データに変換される。画像処理ＰＣ３からプリンター４へ印刷データが送信され、プリンター４が印刷データに対応して印刷ジョブを実行することで、原画像データに対応する画像が印刷される。
【００３１】
ユーザーＰＣ２は一般的なパーソナルコンピューターやワークステーションと同等のハードウェア構成を有するコンピューター装置である。画像処理ＰＣ３も同様のハードウェア構成を有するものであるが、特に本発明の実施に関わる構成として、ＣＰＵ（Central Processing Unit）３１、本体メモリー３３、インターフェース（ＩＦ）３５およびＧＰＵ（Graphics Processing Unit）カード５を備える。ＣＰＵ３１は、所定の制御プログラムを実行することで、画像処理ＰＣ３全体の動作を司る。インターフェース３５は、外部装置からの通信を行い、例えばユーザーＰＣ２からの原画像データの受信や、プリンター４への印刷データの送信を担う。
【００３２】
また、本体メモリー３３は、ＣＰＵ３１が実行する各種プログラムや該プログラムの実行により生成されるデータを記憶保存する。本体メモリー３３は一般的なパーソナルコンピューターにメインメモリーとして搭載されるものと同等のものであるが、後述するＧＰＵカード５上のデバイスメモリーとの区別のために、ここでは特に「本体メモリー」と称している。
【００３３】
ＧＰＵカード５は、次に説明するように画像データ処理に特化されたハードウェア構成を有するものであり、ＣＰＵ３１からの制御指令に応じて原画像データから印刷データを作成する際の各画素についての演算を並列処理することで、印刷データを短時間で作成する機能を担うものである。
【００３４】
図２はＧＰＵカードの構成例を示す図である。ＧＰＵカード５は、画像処理ＰＣ３の図示しない拡張スロットに装着可能なコネクター５９を有し、画像処理ＰＣ３に装着されることでその機能を拡張するカード型のモジュールである。なお、次に説明するＧＰＵカード５内の各構成は、このように画像処理ＰＣ３に対し着脱可能なモジュールとして実装されるが、画像処理ＰＣ３に予め内蔵されたものであってもよい。また、このようなモジュールが画像処理ＰＣ３に複数実装されてもよい。また、ＧＰＵを含むモジュールの形態は上記のようなカード型のものに限定されず任意である。
【００３５】
ＧＰＵカード５は、コネクター５９を介してＣＰＵ３１と通信可能に接続されるコントローラー５１を備えている。コントローラー５１は、ＣＰＵ３１から受け取った制御プログラムや各種の処理パラメーターに基づき、ＧＰＵカード５内の各部の動作を制御する。コントローラー５１には、各々が多数の演算コア５３１を含む複数の演算コア群５３が接続されている。それぞれの演算コア群５３には、当該演算コア群５３に含まれる演算コア５３１により共有される共有メモリー５５が接続されている。また、演算コア群５３は後述のデバイスメモリー５７とも接続されている。
【００３６】
各演算コア５３１は、コントローラー５１から与えられる共通の演算アルゴリズムと、共有メモリー５５およびデバイスメモリー５７から個別に読み出した異なるデータセットとに基づく演算処理を並列的に実行し、演算結果を共有メモリー５５に書き出す。各演算コア５３１は、比較的単純な演算を特に高速で実行するのに特化されたハードウェア構成を有する。製品化されているＧＰＵには、１つの演算コア群５３に例えば数百ないし数千の演算コア５３１を含むものがある。
【００３７】
１つの演算コア群５３内の複数の演算コア５３１は互いに同一の処理を並列的に実行する。コントローラー５１から異なる演算コア群５３に与えられる演算アルゴリズムが同じであれば、ＧＰＵカード５上の全ての演算コア５３１が同一の処理を並列実行することになる。このように、ＧＰＵカード５は、同一処理の繰り返しであるが演算量が膨大となるような演算を、多数の演算コア５３１による並列処理で高速に実行するのに適した構成を有している。このような構成は、同一の演算を全ての画素について実行することが求められる画像データの処理に特に好適である。
【００３８】
また、ＧＰＵカード５にはデバイスメモリー５７が設けられている。デバイスメモリー５７は、コネクター５９を介して本体メモリー３３との間でデータのやり取りが可能である。画像処理ＰＣ３がユーザーＰＣ２から受け取った原画像データは本体メモリー３３に記憶保存されており、ＧＰＵカード５による原画像データの処理が開始されるときには本体メモリー３３に保存されている原画像データがデバイスメモリー５７にコピーされる。ＧＰＵカード５での高速演算に対して本体メモリー３３からのデータ転送が格段に遅いことから、予め原画像データをＧＰＵカード５上のデバイスメモリー５７にコピーしておくことで、演算時のメモリーアクセスの高速化が図られている。
【００３９】
本体メモリー３３とデバイスメモリー５７との間のデータ転送はＤＭＡ（Direct Memory Access）により行われる。この場合、本体メモリー３３上でアドレスの連続した一連のデータをできるだけまとめて転送することが、高い転送速度を得るために好ましい。そこで、印刷に供される画像全体の原画像データの全体が、または適宜に分割されたバンド単位で一括してデバイスメモリー５７に転送される。
【００４０】
共有メモリー５５は、記憶容量は小さいが演算コア５３１からのアクセス速度はデバイスメモリー５７よりもさらに高い。デバイスメモリー５７に記憶されているデータのうち１つの演算コア群５３が処理に使用する一部のデータを、当該演算コア群５３の直近に配置された共有メモリー５５に予め転送しておくことで、演算コア群５３における処理速度に見合ったメモリーアクセスが可能になる。各演算コア５３１において複数回使用される処理パラメーター等のデータを共有メモリー５５に格納しておくことによって、全体の処理速度を向上させることができる。
【００４１】
図３は画像ブロックに分割された画像の例を示す図である。任意の画像Ｉｍは、２次元の画像平面の各位置に画素をマッピングすることで表現される。ここでは、画像Ｉｍの左上を原点とし、横方向をＸ方向、縦方向をＹ方向とした画像平面に各画素がマッピングされるものとする。各画素の位置はＸ座標値とＹ座標値との組み合わせにより特定される。画像Ｉｍは、横方向（Ｘ方向）においてＷａ画素、縦方向（Ｙ方向）においてＨａ画素の広がりを有する。言い換えれば、画素数を単位として画像サイズを表すとき、横方向の画像サイズがＷａ、縦方向の画像サイズがＨａにより表される。
【００４２】
画像データはラスター形式で記述されているものとする。すなわち、画像Ｉｍは、Ｘ方向にＷａ個の画素を１列に並べてなる画素列ＰＬを、Ｙ方向にＨａ列並べたものとしてデータ表現されている。画像Ｉｍを表す画像データは、画像の左端から右端に向かって、また上から下に向かって並ぶ画素の配列に応じた順序で、各画素の画素情報が記述された形式となっている。本明細書ではこの場合のＸ方向を「ラスター方向」と称し、Ｘ方向に１列に並ぶ画素からなる一の画素列ＰＬにより表現される線状の画像が１つのラスター線に相当する。また、Ｘ方向と交差するＹ方向が「交差方向」に相当する。
【００４３】
この画像Ｉｍが互いに同一サイズの画像ブロックＩｂに分割される。１つの画像ブロックＩｂは、横方向においてＷｂ画素、縦方向においてＨｂ画素の広がりを有する。すなわち、画素数を単位として画像ブロックＩｂのサイズを表すとき、横方向のブロックサイズがＷｂ、縦方向のブロックサイズがＨｂにより表される。個々の画像ブロックＩｂを区別する必要がある場合には、画像ブロックＩｂを代表する特定の位置、例えば左上隅の位置や重心位置などを表す座標値によって画像ブロックＩｂを指定することができる。また、画像ブロックＩｂの配列順に沿って固有の記番号を付し、それによって各画像ブロックＩｂを区別することもできる。
【００４４】
複数の演算コア群５３がそれぞれ１つずつ画像ブロックを処理する。また、１つの演算コア群５３は、１つの画像ブロックの処理を終了すると、別の画像ブロックの処理を実行する。このようにして画像ブロックが１つずつ処理され、最終的に全ての画像ブロックについて処理が終了すると、画像全体の処理が終了したことになる。
【００４５】
図４はＧＰＵカードによるデータ処理におけるデータの流れを模式的に示す図である。原画像データから印刷データを作成するデータ処理においては、本体メモリー３３に記憶されている原画像データがＧＰＵカード５のデバイスメモリー５７にコピーされる。そして、ＧＰＵカード５内で作成された印刷データは、最終的にデバイスメモリー５７から本体メモリー３３にコピーされる。
【００４６】
これにより、画像処理ＰＣ３では本体メモリー３３に記憶された原画像データを印刷データに変換することができるが、演算をＧＰＵカード５に実行させることで、演算の途中ではＣＰＵ３１は他の処理を実行することが可能である。このように、汎用処理能力に優れたＣＰＵ３１と、並列演算処理能力に優れたＧＰＵカード５とでそれぞれの特徴に応じた処理を分担させることで、システム全体として高い処理能力を発揮させることが可能となる。
【００４７】
図５は画像処理ＰＣにおけるデータ処理の流れを模式的に示す図である。この図においては、画像処理ＰＣ３の本体に設けられたＣＰＵ３１、本体メモリー３３およびインターフェース３５等の各構成を「ホスト」と総称し、ＧＰＵカード５上の各構成を「デバイス」と総称する。ＧＰＵカード５がコネクター５９を介して画像処理ＰＣ３に接続された構成においては、コネクター５９よりも画像処理ＰＣ３本体側の各構成がホストに該当する。ホストとデバイスとの間のデータ転送は、コネクター５９を介して行われる。
【００４８】
画像処理ＰＣ３内におけるデータの流れを、図４および図５を参照してより詳しく説明する。インターフェース３５を介してホストがユーザーＰＣ２から原画像データを受信すると（ステップＳ１０１）、原画像データから印刷データを作成するための画像データ処理が実行される。ＣＰＵ３１は、処理すべき画像のサイズに関する画像サイズ情報や、画像ブロックのサイズに関するブロックサイズ情報などの各種情報を準備する（ステップＳ１０２）。
【００４９】
本体メモリー３３に保存された原画像データおよびＣＰＵ３１が準備した情報がデバイスに転送される（ステップＳ１０３）。具体的には、各種情報はコントローラー５１に与えられ、原画像データはデバイスメモリー５７にコピーされる。与えられた情報から、コントローラー５１は、画像のサイズおよびそれを分割する画像ブロックのサイズに加えて、分割により生成される画像ブロックの数や配置を把握する。
【００５０】
コントローラー５１は各演算コア群５３内の演算コア５３１に対し、実行すべき演算アルゴリズムと、当該演算コア群５３が処理すべき画像ブロックの位置を特定するためのブロック位置情報とを与える。前記したように、演算コア群５３内の各演算コア５３１は同一の演算アルゴリズムを実行する。１つの演算コア５３１が実行するアルゴリズムは「スレッド」と呼ばれるものであり、演算コア群５３は複数のスレッドを起動してそれらを並列に実行する「マルチスレッド処理」を実行する。コントローラー５１は各演算コア群５３がそれぞれ実行するマルチスレッド処理を制御する。具体的には、演算コア群５３の各演算コア５３１に演算アルゴリズムとブロック位置情報とを与えることで、各演算コア５３１により実行されるスレッドを起動する（ステップＳ１０４）。各演算コア５３１は、例えば画像ブロック内の１つの画素またはいくつかの画素からなる画素グループに対応する印刷データを作成する処理を、１つのスレッドとして実行する。
【００５１】
一の演算コア群５３に含まれる各演算コア５３１は、与えられたブロック位置情報も含めて、処理すべき画像データが、原画像データを保存するデバイスメモリー５７においてどの位置に格納されているかを算出する（ステップＳ１０５）。
【００５２】
こうして格納位置を特定された未処理の画像データが、デバイスメモリー５７から読み出される（ステップＳ１０６）。ここで、デバイスメモリー５７において、複数の演算コア５３１が実行する複数スレッドに使用されるアドレスの連続する画像データについては、ＤＭＡにおけるデータ転送の場合と同様に、先頭アドレスとデータ個数が定まれば連続データとしてまとめて転送（バースト転送）することができるので、高速にデータ転送することが可能である。ラスター形式の画像データを保存するデバイスメモリー５７においては、ラスター方向において１列に並ぶ画素列の画像データをバースト転送することができる。Ｙ方向において画像ブロックが複数画素を含む場合には、Ｙ方向に位置の異なる画素列ごとにバースト転送が行われる。
【００５３】
各演算コア５３１は、指定された演算アルゴリズムに則り、デバイスメモリー５７から必要な未処理データを読み込んで演算を行い、処理済みのデータをデバイスメモリー５７に書き込む。演算コア５３１により実行されるデータ処理としては例えば、ＲＧＢ画像データをプリンター７のインク色に変換する色変換処理（ステップＳ１０７）、画像データが表す画素情報をインク量に換算するハーフトーン処理（ステップＳ１０８）、データをプリンター７で利用可能なフォーマットの印刷データに変換するフォーマット変換処理（ステップＳ１０９）等を含み得るが、これらの全てを実行しなくてもよく、またこれ以外の処理が含まれてもよい。
【００５４】
これらのデータ処理を各演算コア５３１が並列に実行することにより、演算コア群５３では処理対象の画像ブロックに対応する処理済みデータが作成されながらデバイスメモリー５７に書き出される。こうしてデバイスメモリー５７に各画像ブロックについての処理済みデータが記憶保存される（ステップＳ１１０）。
【００５５】
演算コア群５３において１つの画像ブロックの処理が終了すると、コントローラー５１に対し処理完了通知が送信される。これに応じて、コントローラー５１は、未処理の画像ブロックが残っていれば、当該演算コア群５３に対しその画像ブロックを特定するブロック位置情報を与える。演算コア群５３は、ブロック位置情報を受け取ると、新たにその画像ブロックについて演算を実行する。このようにして各画像ブロックの処理が進行する。最終的には、全ての画像ブロックの処理済みデータ、つまり画像全体を表す印刷データがデバイスメモリー５７に蓄積されることになる。こうして作成された印刷データは、本体メモリー３３に転送される（ステップＳ１１１）。
【００５６】
コントローラー５１はＣＰＵ３１に対し処理完了通知を送信する。これを受けてＣＰＵ３１は、本体メモリー３３に保存された印刷データをプリンター７に出力し（ステップＳ１１２）、プリンター７が印刷データに基づく印刷ジョブを実行して画像を印刷する。
【００５７】
ＧＰＵカード５を用いて画像データの処理を効率よく行うためには、画像ブロックＩｂのブロックサイズを演算コア群５３の処理能力（演算コア数や内蔵される演算器の構造など）に適合したものとすることが必要である。すなわち、演算コア群５３の演算資源を最も効率よく活用することができるように、画像ブロックのサイズが定められることが望ましい。
【００５８】
図６および図７はＧＰＵにおけるブロックサイズと処理速度との関係を例示する図である。より詳しくは、図６は１つの画像ブロックに含まれる画素数を変えてＧＰＵにマルチスレッド処理を実行させたときの処理速度の変化の実測例を示し、図７は１つの画像ブロックのＸ方向およびＹ方向それぞれのブロックサイズを変えてＧＰＵにマルチスレッド処理を実行させたときの処理速度の変化の実測例を示す。これらは市販されているＧＰＵ製品に適宜のダミー画像データを与えて演算を実行させたときの実測結果の代表例であり、製品ごとのハードウェア構成の違いにより具体的な数値は異なるが、概ね同様の傾向が見られる。
【００５９】
図６に示すように、１つの画像ブロック内の画素数を大きくするほど相対的な処理速度は向上する。１つの演算コア群５３で多くの画素を並列処理することにより、画像全体としての処理速度が向上することが示されている。ただし、画素数がある程度以上になると処理速度の向上は鈍化し飽和傾向を示す。ある製品では、画像ブロックを構成する画素数が５１２画素程度で処理速度の上昇は飽和し、それ以上画像ブロックを大きくしても処理速度にはあまり増加が見られなかった。これは、１つの演算コア群５３で同時に処理可能な画素数を超えるようなブロックサイズが設定されたためと考えられる。
【００６０】
一方、１つの画像ブロック内の画素数を５１２画素に固定し、ブロック構成すなわちＸ方向およびＹ方向におけるブロックサイズの組み合わせを変えて処理速度を計測すると、図７に示すように、ラスター方向（Ｘ方向）におけるブロックサイズが大きい領域では処理速度が一定であり、同方向のブロックサイズが小さくなると処理速度の低下が見られた。これは、ラスター方向に連続する画素列が短くなることで、デバイスメモリー５７から一括して転送することのできるデータ列が短くなり、結果としてデータ転送にかかる時間が処理速度を律速することが理由の１つと考えられる。
【００６１】
このように、ＧＰＵカード５による処理を高速に動作させるためには、その処理能力に応じたブロックサイズの画像ブロックが設定される必要がある。メモリーからの転送待ちが演算処理待ちにつながることが多いので、ブロックサイズは大きい方が良い。しかし、本実施例の場合は、後述するように、画像サイズが小さい場合にブロックサイズを大きくすると、本来処理する必要がない無駄な画素をより多く処理することになるので、速度が低下しない範囲で、ブロックサイズをできるだけ小さく設定することが望ましい。上記の実測例では、画像ブロックのブロック構成（Ｗｂ×Ｈｂ）としては、５１２×１、２５６×２、１２８×４等が適当であると言える。また、並列処理を効率よく行うためには、画像データの処理が単一の演算アルゴリズムで実行可能であり、例外的に特別な処理を必要とするようなケースが生じないようにすることが望ましい。
【００６２】
その一方で、処理を必要とする画像のサイズは様々である。このため、図３に示すように画像Ｉｍを複数の画像ブロックＩｂに分割する際、全ての画像ブロックのサイズを同一にすることができない場合があり得る。具体的には例えば、ラスター方向（Ｘ方向）の画像サイズＷａが画像ブロックサイズＷｂの整数倍でない場合、画像Ｉｍの左端から画像ブロックＩｂを割り当ててゆくと、画像Ｉｍの右端において画像端と画像ブロック端とが一致しないという問題が生じる。
【００６３】
ＧＰＵカード５での処理速度を向上させるためには、デバイスメモリー５７から連続したデータを取得して使用するようにして、デバイスメモリー５７からの読み出しをバースト転送により高速に行うことが望ましい。ラスター方向において画像サイズがブロックサイズの整数倍である場合には、画像データの先頭からブロックサイズに相当する画素数分の画像データを順次デバイスメモリー５７から取得することでこの目的は果たされる。これに対し、画像サイズがブロックサイズの整数倍でない場合には、画像の右端に当たる部分で画素数に端数があるため、取得される画像データの区切りと画像ブロックの区切りとの間にずれが生じてしまう。すなわち、処理に必要な画像ブロック単位の画像データを正しく取得することができなくなる。
【００６４】
前述の従来技術においては、画像の右端にダミーデータが追加されることで、見かけ上の画像サイズがブロックサイズの整数倍に合わせて拡張され、これにより上記問題の解消が図られている。しかしながら、ダミーデータの内容がどのようなものであっても、ラスター形式の画像データにこのようなダミーデータを挿入する処理は、大きなオーバーヘッドとなって処理時間の長大化を招く原因となる。また、画像サイズとブロックサイズとの関係に応じて処理が異なり、例外的な処理を発生させないという要請にも合致しない。
【００６５】
この実施形態は、ダミーデータを付加するという追加的処理を必要とせず、しかも画像サイズがブロックサイズの整数倍であるか否かによって処理を変える必要が生じないように構成されている。具体的には、画像サイズとブロックサイズとの関係に関わらず、また処理される画像ブロックが画像の右端に当たるものであるか否かに関わらず、同一のルールでデバイスメモリー５７から共有メモリー５５へのデータ転送が可能となるように構成される。当然に、画像データの区切りと画像ブロックの区切りとが一致しないという問題も生じない。
【００６６】
図８はこの実施形態におけるデバイスメモリーからのデータ転送ルールを説明する原理図である。この実施形態では、データ転送を効率的に行うため、１つの画像ブロック内でラスター方向に画素が連続する画素列の画像データを一括取得されるようにする。一括取得される画素列を構成する画素数は常にラスター方向における画像ブロックのサイズＷｂと同じである。画像データが取得される画素列のデバイスメモリー５７上における始端位置が常に画像ブロックの始端位置と一致するように、データ転送時の始端位置が指定されればよい。
【００６７】
図８では、画像ＩｍをＸ方向の画素列の集合体として表現している。斜線を付した正方形が画素列の始端に相当する画素（以下、「始端画素」と称する）を表す。〈  〉内の文字式は画像Ｉｍの左端からＸ方向に数えて何番目の画素列であるかを示す。また、《  》内の文字式は、画像Ｉｍの上端からＹ方向に数えて何番目の画素列であるかを示す。また、［  ］内の文字式は、画像Ｉｍの左上隅の画素を第１番目の画素として、各画素が、ラスター形式の画像データ上で第１番目の画素から起算して何番目の画素であるかを示している。
【００６８】
図８に示されるように、Ｘ方向に隣り合う画素列の間では、画像データ上において始端画素の位置がブロックサイズＷｂに対応する画素数分だけ異なっている。また、Ｙ方向に隣り合う画素列の間では、画像データ上で始端画素の位置が画像サイズＷａに対応する画素数分だけ異なっている。このことからわかるように、Ｘ方向において第ｍ番目、Ｙ方向において第ｎ番目の画素列の始端画素Ｐａが画像データ上で第Ｎ番目の位置にあるとするとき、
Ｎ＝［（ｎ−１）Ｗａ＋（ｍ−１）Ｗｂ＋１］  …  （式１）
と一般化して表すことができる。ここで、ｍは、Ｘ方向の画像サイズをブロックサイズで除した値（Ｗａ／Ｗｂ）以上の自然数のうち最小のものを超えない自然数である。また、ｎはＹ方向の画像サイズＨａを超えない任意の自然数である。
【００６９】
理解を容易にするためにＹ方向のブロックサイズを１と仮定すると、上記の自然数の組（ｍ，ｎ）は画像Ｉｍに割り付けられた画像ブロックの位置を表すパラメーターとなっている。したがって、コントローラー５１から演算コア群５３に処理すべき画像ブロックの位置を特定するためのブロック位置情報が与えられると、演算コア群５３ではブロック位置情報から上記自然数の組（ｍ，ｎ）を一意に特定することができる。
【００７０】
したがって、演算コア群５３では、コントローラー５１から画像サイズ情報（Ｗａ、Ｈａ）、ブロックサイズ情報（Ｗｂ、Ｈｂ）、およびブロック位置情報が与えられれば、処理すべき画像ブロックに対応する画像データのデバイスメモリー５７上での位置を特定することができる。すなわち、各情報を（式１）に適用することで、取得すべき画像データの始端位置Ｎおよびその長さＷｂが特定される。これにより、該当する画像データをデバイスメモリー５７からまとめて読み出せるようにすることができる。
【００７１】
上記（式１）に基づくデータ転送は、画像サイズとブロックサイズとの関係によらず有効に機能する。また、画像ブロックが画像の右端に相当する場合でも、他の画像ブロックの場合と同様に機能する。その理由を、さらに図８を参照して説明する。
【００７２】
（Ｗａ／Ｗｂ）以上の自然数のうち最小のものを文字Ｍで表すとき、１つのラスター線に含まれる画素列の数は文字Ｍによって表される。ただし、１つのラスター線において第Ｍ番目の画素列の終端（右端）と画像Ｉｍの終端とは必ずしも一致しない。例えばＹ方向において上端から第ｎ番目のラスター線の終端（右端）の画素Ｐｂは、画像データ上では先頭から数えて第ｎＷａ番目の画素である。一方、この画素Ｐｂを含み、画素Ｐｃを始端画素とするＷｂ個の画素からなる第Ｍ番目の画素列は、画素Ｐｂの後続の画素を含む場合がある。例えば、画像データ上で画素Ｐｂに続く第（ｎＷａ＋１）番目の画素は、第（ｎ＋１）番目のラスター線の始端である。
【００７３】
このように、各ラスター線において第Ｍ番目の画素列は、画像サイズＷａがブロックサイズＷｂの整数倍でない場合、当該画素列の末尾に次のラスター線の先頭部分の幾つかの画素を含むことになる。このような画素を含むことで、第Ｍ番目の画素列は、他の画素列と同様に、Ｗｂ個の画素により構成される。したがって、それぞれの長さがＷｂであるＭ個の画素列からなる１つのラスター線を考えると、その長さはＭＷｂとなり、ブロックサイズＷｂの整数倍となる。
【００７４】
このことは、図８に破線で示すように、各ラスター線の末尾に次のラスター線の先頭部分を付加することでラスター方向の画像サイズＷａを見かけ上ＭＷｂに拡張したことと等価である。これにより、次のラスター線の先頭部分の幾つかの画素が、従来技術におけるダミーデータと同等に作用することになる。次のラスター線に属する画素をあたかもダミーデータのように利用するので、ダミーデータを付加するための処理は不要である。
【００７５】
単純に画像データの先頭から一定間隔Ｗｂで画素列を区切った場合、画像ブロックの始端と画素列の始端とが合わなくなることがある。しかしながら、（式１）ではｍをＭを超えない自然数としているため、このような問題は生じない。すなわち、図８の下部に示されているように、第Ｍ番目の画素列の始端画素である画素Ｐｃよりも画像データの並びにおいて後方に位置する画素で、上記（式１）により位置を表すことができ、かつ画素Ｐｃに最も近いのは、第（ｎＷａ＋１）番目の画素Ｐｄである。この画素Ｐｄは、画素Ｐｃを含むラスター線の直下にあるラスター線の始端に相当する。つまり画素Ｐｃを始端画素とする画素列に続く画素列は、画素Ｐｄを始端画素とするものとなり、画素列の区切りと画像ブロックの区切りとの齟齬は生じない。
【００７６】
このように、ＧＰＵカード５では、コントローラー５１が有する情報と（式１）とに基づいて求められた範囲の画像データをデバイスメモリー５７から転送することで、画像ブロック内の画素を処理するために必要な画像データを的確に取得することができる。
【００７７】
図９はＹ方向におけるブロックサイズが１より大きい場合の考え方を示す図である。上記説明では、Ｙ方向のブロックサイズを１と仮定した。この場合、画像ブロック内の全ての画素が画像データでは連続して記述されているため、それらの画像データをデバイスメモリー５７から連続して一括取得することが可能である。
【００７８】
一方、Ｙ方向のブロックサイズＨｂが１より大きい、つまり画像ブロックがＹ方向に複数画素分のサイズを有する場合がある。この場合、Ｘ方向のブロックサイズＷｂが画像サイズＷａ以上でない限り、画像ブロック内の全画素に対応する画像データは、デバイスメモリー５７上でＨｂ個の画素列に分散されて記述されていることになる。この場合の各画素列の始端画素を指定する方法は次の通りである。
【００７９】
図９に示すように、Ｙ方向のブロックサイズＨｂが１より大きい画像ブロックＩｂは、Ｙ方向に並ぶ複数の画素列からなる。［  ］内の文字式はこれらの画素列それぞれの始端画素の画像データにおける位置を表しており、これからわかるように、各始端画素の位置は画像サイズＷａに等しい画素数ずつ異なっている。したがって、コントローラー５１が有する情報によって画像ブロックＩｂ内の例えば最も上の始端画素の位置が特定されると、それを初期値として順次Ｗａを加算してゆくことで他の始端画素についても全て特定することが可能である。また、取得すべき画素列の数はブロックサイズＨｂに等しい。こうしてそれぞれ始端画素が特定された必要数の画素列について画素列ごとにデータ転送を行うことで、画像ブロック全体の画像データを取得することが可能である。
【００８０】
画像の右端に割り当てられた一部の画像ブロックに、ダミーデータと同等の作用を有する次のラスター線の一部の画像データ（以下、「次画像データ」と称する）が付加され画像が拡張されることで、処理後の画像データにも本来は不要な画素が加えられることになる。これらの画素は印刷データとして本体メモリー３３に出力される前に削除されればよい。図５に示すように、この実施形態では画像データ処理として色変換処理、ハーフトーン処理およびフォーマット変換処理が実行される。これ以外の処理が加わってもよい。これらの処理ごとに不要部分の削除を行ってもよく、また各処理の段階では不要部分を残したままとし、例えばデバイスメモリー５７から本体メモリー３３へデータ転送する際に不要部分を削除するようにしてもよい。
【００８１】
図１０は処理済みデータから不要部分を削除する方法の例を示す図である。ここでは、処理段階では不要部分を残しておき、本体メモリー３３への転送時に削除する方法を説明する。図１０上部に示すように、処理済みの画像データが表す画像Ｉｐは、画像ブロックごとに処理された画像データを再配列したものである。画像Ｉｐ内の矢印は原画像データにおけるラスター方向を示している。
【００８２】
処理時に右端の画像ブロックにダミーデータと同様の機能を有する次画像データが付加された場合、画像Ｉｐは本来の画像サイズＷａより大きいサイズＭＷｂに拡張されている。プリンター４に出力される印刷データでは、斜線を付した拡張部分は不要であり、デバイスメモリー５７から本体メモリー３３へデータ転送する際にこの不要部分は削除される。
【００８３】
図１０左下の画像Ｉｐ１は、画像データの記述順序を変えない処理を行った場合の例を示す。この場合、デバイスメモリー５７から本体メモリー３３へデータ転送する際に、画像Ｉｐ１右端に斜線で示す、各ラスター線の末尾のデータを省いてデータが転送される。一方、例えばプリンター４の印刷進行方向に合わせて画像データの記述順序を変える（すなわちラスター方向を横方向から縦方向に変換する）処理が行われた場合には、図１０右下に示すように、画像Ｉｐ２の右端に斜線を付した不要部分に該当するラスター線のデータは転送されない。これにより、本来の画像サイズＷａを有する印刷データが本体メモリー３３に保存される。
【００８４】
以上のように、本実施形態では、処理すべき画像が、ＧＰＵカード５を用いて画像ブロック単位で処理される。処理すべき画像データをデバイスメモリー５７から転送する際においては、ラスター形式の画像データの先頭から起算して上記（式１）で表される第Ｎ番目の画素を始端画素とし、連続する画素数がラスター方向のブロックサイズＷｂに相当する画素列のデータが、連続データとして一括取得される。
【００８５】
このような構成によれば、画像サイズがブロックサイズの整数倍でない場合にも、画素数の足りない画像ブロックに対し、元の画像データに含まれる画像データの一部（次画像データ）があたかもダミーデータのように自動的に付加される。事前に画像サイズとブロックサイズとの関係を把握して必要な場合にダミーデータを付加するという処理が必要ないので、このような処理によるオーバーヘッドをなくすことができる。こうして付加された次画像データがダミーデータと同等の作用をするため、画像サイズとブロックサイズとの関係によって画像ブロックごとの処理を異ならせる必要がない。このため、同一の処理を並列実行するのに適したＧＰＵを用いて、高速のデータ処理が可能となる。
【００８６】
また、（式１）による転送データ位置の特定方法は、画像サイズがブロックサイズの整数倍である場合、そうでない場合のいずれにも適用可能である。したがって、画像サイズとブロックサイズとの関係によらず、一律の処理によって効率の良いデータ転送が可能となる。さらに、画像ブロックのサイズは画像サイズによる制約を受けないので、演算コア群５３の処理能力に応じて設定することができ、ＧＰＵカード５での処理を画像サイズに関わりなく最適化することができる。これらの特徴を有することにより、本実施形態では、ＧＰＵの処理能力を有効に活用し、さらに高速の処理を実現することができる。
【００８７】
以上説明したように、上記実施形態においては、デバイスメモリー５７が本発明の「格納部」として機能し、コントローラー５１が本発明の「制御部」として機能している。また、多数の演算コア５３１を含む演算コア群５３と共有メモリー５５との対が一体的に、本発明の「処理部」として機能している。これらを含む画像処理ＰＣ３が本発明の「画像処理装置」に相当するが、上記各構成はいずれもＧＰＵカード５に実装されたものであるので、ＧＰＵカード５単体も、上記各処理を実行するための制御プログラムが与えられることにより、本発明の「画像処理装置」として機能することになる。
【００８８】
また、図１の印刷処理システム１全体を本発明の「画像処理装置」と見なしたとき、プリンター４が本発明の「印刷部」として機能することになる。
【００８９】
なお、本発明は上記実施形態に限定されるものではなく、その趣旨を逸脱しない限りにおいて上述したものに対して種々の変更を加えることが可能である。例えば、上記実施形態では、本発明の「格納部」、「処理部」および「制御部」を含むＧＰＵカード５が画像処理ＰＣ３に装着されることで、画像処理ＰＣ３が「画像処理装置」として機能する。これに代えて、次に説明するように、プリンター側にＧＰＵカードを搭載することで、プリンターを本発明の「画像処理装置」として機能させることも可能である。
【００９０】
図１１は本発明の他の実施形態を例示する図である。この実施形態の印刷処理システム１０は、プリンター７にＧＰＵカード７７が実装される。プリンター７は、ユーザーＰＣ２から出力される原画像データを直接受信して印刷を実行することが可能である。すなわち、プリンター７は、ＣＰＵ７１、本体メモリー７３、インターフェース７５およびＧＰＵカード７７を備えており、これらの各構成は、上記実施形態において対応する各構成と同様の機能を有する。また、プリンター７は、印刷データに基づき印刷を行うプリンターエンジン７９をさらに備えている。
【００９１】
一般的なプリンターにおいても、外部からの制御指令を処理し、また印刷データを蓄積するためにＣＰＵ、メモリー、インターフェース等が備えられている。ここにＧＰＵカードを付加することで、プリンター側のＣＰＵ等の処理負荷をほとんど増大させることなく、原画像データから印刷データの生成処理を高速に実行することが可能となる。本発明はこのような態様として実現することも可能であり、この場合、プリンター７が本発明の「画像処理装置」として機能、プリンターエンジン７９が本発明の「印刷部」として機能することになる。
【００９２】
また、上記実施形態では、本発明の「格納部」、「処理部」および「制御部」を含むＧＰＵカード５が画像処理ＰＣ３に対し着脱可能なカードモジュールとして構成されている。しかしながら、本発明の各構成は、画像処理ＰＣ３本体（あるいはプリンター７本体）に予め組み込まれたものであってもよい。あるいは、ユーザーＰＣ２が、ＧＰＵカード５を内蔵しまたは装着されることで「画像処理装置」として機能するものであってもよい。
【００９３】
上記実施形態のように着脱可能なカードモジュールとして本発明を構成した場合には、市販されているＧＰＵモジュールを用いて本発明を実施することが可能である。市場には各種の汎用あるいは画像処理専用ＧＰＵモジュールが流通しているので、価格や必要な性能に応じて適宜選択して利用可能である。いずれも汎用性を有するコンピューター装置およびＧＰＵカードの組み合わせにより本発明を実施するためには、当該コンピューター装置に、ＧＰＵカードに上記処理を実行させるための制御プログラムが実装されればよい。すなわち、本発明は、上記した処理をＧＰＵに実行するための制御プログラムあるいはそれを記録したコンピューター読み取り可能な記録媒体としてユーザーに提供される態様で実現することも可能である。
【００９４】
また、上記実施形態では、画像を分割した画像ブロックのサイズを変更設定可能としている。しかしながら、前記したようにブロックサイズは画像サイズによる制約を受けず、ＧＰＵの処理能力に応じて決めることができるので、使用されるＧＰＵの処理能力に合わせてブロックサイズが予め決められていてもよい。この場合、画像サイズが特定されれば、予め定められているブロックサイズから、各画像ブロックの割り付けを決定することが可能である。同様に、各演算コア５３１が実行する演算アルゴリズムが予め定められていてもよい。
【００９５】
また上記実施形態の画像処理装置は、ユーザーＰＣで作成された原画像データをプリンターで利用可能な印刷データに変換する機能を有するものである。しかしながら、本発明の適用対象となるデータ処理は、このように印刷データを生成するものに限定されない。例えば、原画像データから、ディスプレイ等の表示装置による画像表示を行うための表示データを作成する処理にも、本発明を適用することが可能である。特に動画の表示においては高速のデータ処理が必要とされ、本発明はこのような用途にも好適に適用可能なものである。
【符号の説明】
【００９６】
１，１０…印刷処理システム（画像処理装置）、  ２…ユーザーＰＣ、  ３…画像処理ＰＣ（画像処理装置）、  ４…プリンター（印刷部）、  ５，７７…ＧＰＵカード、  ７…プリンター（画像処理装置）、  ３１，７１…ＣＰＵ、  ３３，７３…本体メモリー、  ３５，７５…インターフェース、  ５１…コントローラー（制御部）、  ５３…演算コア群（処理部）、  ５５…共有メモリー、  ５７…デバイスメモリー（格納部）、  ５９…コネクター、  ７９…プリンターエンジン（印刷部）、  ５３１…演算コア、  Ｈａ…Ｙ方向の画像サイズ、  Ｈｂ…Ｙ方向のブロックサイズ、  Ｉｂ…画像ブロック、  Ｉｍ…画像、  Ｗａ…Ｘ方向の画像サイズ、  Ｗｂ…Ｘ方向のブロックサイズ
【図１】
2018041185.tif 000003
【図２】
2018041185.tif 000004
【図３】
2018041185.tif 000005
【図４】
2018041185.tif 000006
【図５】
2018041185.tif 000007
【図６】
2018041185.tif 000008
【図７】
2018041185.tif 000009
【図８】
2018041185.tif 000010
【図９】
2018041185.tif 000011
【図１０】
2018041185.tif 000012
【図１１】
2018041185.tif 000013