(57)【特許請求の範囲】
【請求項１】
（ａ）元の平行四辺形の形状を有する２次元イメージを取得し、
（ｂ）前記元の平行四辺形の形状を変化させて生成する新たな平行四辺形の上底または下底の画素数の基となる数値ｗ、及び、高さの画素数の基となる数値ｈを算出し、
（ｃ）ｗ×ｈの２次元メモリ空間を確保し、
（ｄ）前記２次元イメージを前記新たな平行四辺形の形状に座標変換した場合に生成される新たな２次元イメージの画素値を、走査ラインごとに、走査順に前記２次元メモリに書き込み、
（ｅ）前記新たな２次元イメージの付属情報を、前記２次元メモリに対応付けて記憶する、
ステップからなり、
前記新たな平行四辺形は、前記元の平行四辺形を、走査方向に平行な直線で２つの図形に分割し、分割した２つの図形が有する辺のうち、前記元の平行四辺形の上底及び下底に対応する辺同士を合わせることによって生成され、
前記付属情報は、前記ｗ、前記ｈ、前記新たな平行四辺形の傾きΔｄ、次の読み出しラインとの縦方向のずれを示す次ライン情報ｔである、
画像処理方法をコンピュータに実行させるための画像処理プログラム。
【請求項２】
（ａ）元イメージが単一色ではなく、かつ、当該元イメージの形状に対する座標変換が（ｎ／２）×π（単位はｒａｄ、ｎは自然数）の回転変換を含まない、という条件を満たすか否かを判定し、
（ｂ）前記条件を満たす場合に、
（ｂ−１）前記元イメージを前記所定の２次元マトリクスで座標変換することにより、元の平行四辺形の形状を有する２次元イメージを取得し、
（ｂ−２）前記元の平行四辺形の形状を変化させて生成する新たな平行四辺形の上底または下底の画素数の基となる数値ｗ、及び、高さの画素数の基となる数値ｈを算出し、
（ｂ−３）ｗ×ｈの２次元メモリ空間を確保し、
（ｂ−４）前記２次元イメージを前記新たな平行四辺形の形状に座標変換した場合に生成される新たな２次元イメージの画素値を、走査ラインごとに、走査順に前記２次元メモリに書き込み、 
（ｂ−５）前記新たな２次元イメージの付属情報を、前記２次元メモリに対応付けて記憶する、
ステップからなり、
前記新たな平行四辺形は、前記元の平行四辺形を、走査方向に平行な直線で２つの図形に分割し、分割した２つの図形が有する辺のうち、前記元の平行四辺形の上底及び下底に対応する辺同士を合わせることによって生成され、
前記付属情報は、前記ｗ、前記ｈ、前記新たな平行四辺形の傾きΔｄ、次の読み出しラインとの縦方向のずれを示す次ライン情報ｔである、
画像処理方法をコンピュータに実行させるための画像処理プログラム。
【請求項３】
（ａ）元イメージが単一色ではなく、かつ、当該元イメージの形状に対する座標変換が（ｎ／２）×π（単位はｒａｄ、ｎは自然数）の回転変換を含まない、という条件を満たすか否かを判定し、
（ｂ）前記条件を満たす場合に、
（ｂ−１）前記座標変換で得られた平行四辺形の形状を変化させて生成する新たな平行四辺形の上底または下底の画素数の基となる数値ｗ、及び、高さの画素数の基となる数値ｈを算出し、
（ｂ−２）ｗ×ｈの２次元メモリ空間を確保し、
（ｂ−３）前記２次元メモリ空間のそれぞれの座標（Ｘｉ、Ｙｉ）に、前記元イメージの座標（ｘ、ｙ）の画素値を書き込み、
ここで、（ｘ、ｙ）＝Ａ−１（Ｘｉ’、Ｙｉ）
Ｘｉ’＝Ｘｉ＋Ｙｉ×Δｄ
ｘ  ＜  ０のとき、    ｘ  ＝  ｘ＋Ｘ１
ｘ  ＝＞Ｘ１のとき、  ｘ  ＝  ｘ−Ｘ１
ｙ  ＜  ０のとき、    ｙ  ＝  ｙ＋Ｙ１
ｙ  ＞＝Ｙ１のとき、  ｙ  ＝  ｙ−Ｙ１
Ｘ１は、元イメージの幅画素数
Ｙ１は、元イメージの高さ画素数
Δｄは、前記新たな平行四辺形の傾き
（ｂ−５）付属情報を、前記２次元メモリに対応付けて記憶する、
ステップからなり、
前記付属情報は、前記ｗ、前記ｈ、前記Δｄ、次の読み出しラインとの縦方向のずれを示す次ライン情報ｔである、
画像処理方法をコンピュータに実行させるための画像処理プログラム。
【請求項４】
前記算出されたｗ、ｈが自然数でない場合には、当該ｗ、ｈを整数化して前記２次元メモリ空間を確保する、
ことを特徴とする請求項１乃至３いずれかに記載の画像処理方法をコンピュータに実行させるための画像処理プログラム。
【請求項５】
（ａ）塗りつぶしの対象となる図形の形状を示す２次元図形データを取得し、
（ｂ）前記２次元図形データに基いて、前記図形の形状の２次元イメージを表現するための第１の２次元メモリ空間を確保し、
（ｃ）所定イメージが記憶されている第２の２次元メモリ空間から順次読み出した画素値を、前記第１の２次元メモリ空間の所定のアドレスに順次書き込む、
ステップからなり、
前記第１の２次元メモリ空間への書き込みは、走査順に行われ、
前記第２の２次元メモリ空間からの読み出しは、所定の走査ライン上で走査順に行われ、読み出し位置が該所定の走査ライン上の終端に達した場合は、補助情報として記憶されている次ライン情報に基いて、新たな走査ラインを決定し、決定された走査ラインを前記所定の走査ラインとして画素値を走査順に読み出すことを繰り返す、
画像処理方法をコンピュータに実行させるための画像処理プログラムであって、
前記補助情報には、前記第２の２次元メモリ空間に記憶されている所定イメージの幅を画素数で示す数値ｗ、前記所定イメージの高さを画素数で示す数値ｈ、２次元メモリ空間に記憶されている所定イメージの傾き情報Δｄが記憶され、
前記補助情報に基いて、前記第１の２次元メモリ空間の走査ラインごとに、前記第２の２次元メモリ空間の読み出し開始位置を決定する、
ことを特徴とする画像処理方法をコンピュータに実行させるための画像処理プログラム。
【請求項６】
前記補助情報には、前記第２の２次元メモリ空間に記憶されている所定イメージの幅を画素数で示す数値ｗ、前記所定イメージの高さを画素数で示す数値ｈ、２次元メモリ空間に記憶されている所定イメージの傾き情報Δｄが記憶され、
前記補助情報に基いて、前記第１の２次元メモリ空間の走査ラインごとに、前記第２の２次元メモリ空間の読み出し開始位置（Ｓ、Ｌ）を決定する、
ここで、
（ａ、ｂ）：前記所定イメージにおける前記第１の２次元メモリ空間上の起点座標、
（Ａ、Ｂ）：前記所定イメージで塗りつぶしを開始する前記第１の２次元メモリ空間上の起点座標、
ｔ：次の読み出しラインとの縦方向のずれを示す情報
とすると、
α＝（ａ＋（Ｂ−ｂ）×Δｄ）
ｏｆｆｓｅｔＸ＝（Ａ−α）
Ｓ＝ｏｆｆｓｅｔＸ  ％  ｗ    （ｍ％ｎは、ｍをｎで割った場合の剰余を表す）
Ｓ＜０のとき  Ｓ＝Ｓ＋ｗ
Ｎ＝ｏｆｆｓｅｔＸ／ｗ
ｏｆｆｓｅｔＸ＜０  のとき  Ｎ＝Ｎ−１
Ｌ＝（Ｂ−ｂ＋ｔ×Ｎ）％  ｈ
Ｌ＜０のとき  Ｌ＝Ｌ＋ｈ
であることを特徴とする請求項５に記載の画像処理方法をコンピュータに実行させるための画像処理プログラム。
【請求項７】
前記決定された前記第２の２次元メモリ空間の読み出し開始位置が自然数でない場合は、該読み出し開始位置を整数化する、
ことを特徴とする請求項５または６に記載の画像処理方法をコンピュータに実行させるための画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、高速な処理が可能な画像処理プログラム等に関する。
【背景技術】
【０００２】
従来、イメージを加工編集することが広く行われている。また、加工編集したイメージは、ホームページやプリントＴシャツ等のデザインとして用いられることがある。また、イメージ中の所定の領域を塗りつぶす画像処理が知られている。例えば、下記特許文献１においては、四辺形に対する塗りつぶし処理が記載されている。
【０００３】
【特許文献１】特開平８−４４８８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
イメージの加工編集には様々な手法が提案されている。例えば、図１に示すように、長方形のイメージ１１に対し２次元マトリクス用いて座標変換を行うことによって、ひし形イメージ１２を新たに生成し、生成したひし形イメージ１２で星型図形１３の領域内を塗りつぶすことにより、新たなイメージ１４を生成することができる。すわなち、イメージ（図１における長方形のイメージ１１）、変換マトリクス（図１における２次元マトリクス）、図形（図１における星型図形１３）を入力情報として、新たなイメージを生成することができる。
【０００５】
ここで、新たなイメージ１４を生成するためには、図２に示すように、複数のひし形イメージ１２を、星型図形１３の領域内に敷き詰めていくための画像処理が必要となる。
また、この画像処理を行うには、所定の記憶領域（例えば、ＲＡＭ等）に２次元メモリ空間を確保し、確保したメモリ空間内でひし形イメージ１２を管理する必要がある。このとき、図３に示すように、メモリ空間内の一部の領域（斜線部で示す）は、ひし形イメージ１２の画素が存在しない領域であるため、メモリ使用効率は低い。
また、図３に示されるとおり、メモリ空間上のひし形イメージ１２の画素幅は、水平ラインごとに異なっている。そのため、水平ラインごとにひし形イメージ１２の画素区間を管理する必要があり、画像処理が複雑になる。
【０００６】
また、複数のひし形イメージ１２を星型図形１３の領域内に敷き詰める処理は、ひし形イメージ１２を１つずつ星型図形１３の領域内に貼り付けることによって行われる（図２参照）。この処理では、それぞれのひし形イメージ１２に対して、貼り付ける位置を求める必要となり、画像処理が複雑になる。
さらに、この処理を実現するには、星型図形１３（新たなイメージ１４）のために確保されたメモリ空間（書き込みメモリ空間）のそれぞれの座標に、ひし形イメージ１２が記憶されている２次元メモリ空間（読み出しメモリ空間）の所定のアドレスの画素値をコピーする必要がある。すなわち、書き込みメモリ空間の座標値ごとに、読み出しメモリ空間の座標値を対応付けるための処理が必要となり、画像処理が複雑になるおそれがある。
【０００７】
本発明は、上記問題点を解決するためになされたものであり、所望の形状を有する図形を所望のイメージで高速に塗りつぶすことができる画像処理プログラム等の提供を目的とする。
【課題を解決するための手段】
【０００８】
本発明は、上述した課題を解決することができる画像処理プログラム等である。 
本発明の一側面である請求項１に係る画像処理プログラムは、（ａ）元の平行四辺形の形状を有する２次元イメージを取得し、（ｂ）前記元の平行四辺形の形状を変化させて生成する新たな平行四辺形の上底または下底の画素数の基となる数値ｗ、及び、高さの画素数の基となる数値ｈを算出し、（ｃ）ｗ×ｈの２次元メモリ空間を確保し、（ｄ）前記２次元イメージを前記新たな平行四辺形の形状に座標変換した場合に生成される新たな２次元イメージの画素値を、走査ラインごとに、走査順に前記２次元メモリに書き込み、（ｅ）前記新たな２次元イメージの付属情報を、前記２次元メモリに対応付けて記憶する、ステップからなり、前記新たな平行四辺形は、前記元の平行四辺形を、走査方向に平行な直線で２つの図形に分割し、分割した２つの図形が有する辺のうち、前記元の平行四辺形の上底及び下底に対応する辺同士を合わせることによって生成され、前記付属情報は、前記ｗ、前記ｈ、前記新たな平行四辺形の傾きΔｄ、次の読み出しラインとの縦方向のずれを示す次ライン情報ｔである、画像処理方法をコンピュータに実行させることを特徴とする。
【０００９】
上記画像処理プログラムによれば、元の平行四辺形を走査方向に平行な直線で２つの図形に分割し、分割した２つの図形が有する辺のうち、前記元の平行四辺形の上底及び下底に対応する辺同士を合わせることによって生成される新たな平行四辺形の上底または下底の画素数の基となる数値ｗと高さの画素数の基となる数値ｈに基づいて表現されるメモリ空間を算出する。そして、該メモリ空間に、新たな平行四辺形の形状に座標変換された元の平行四辺形のイメージの画素値を走査ラインごとに走査順に書き込む。また、該メモリ空間に対応づけて、前記ｗ、前記ｈ、前記新たな平行四辺形の傾きΔｄ、次の読み出しラインとの縦方向のずれを示す次ライン情報ｔを補助情報として記憶する。これにより、新たなイメージを生成するためのメモリ空間への画素値の書き込み処理は、前記補助情報を用いながら前記２次元メモリ空間上の走査順に画素値を読み出すことによって実現できるので、書き込み処理の高速化が可能となる。また、新たな平行四辺形のイメージをメモリ空間上でメモリ効率を高めて管理することができる。
【００１０】
また、本発明の一側面である請求項２に係る画像処理プログラムは、（ａ）元イメージが単一色ではなく、かつ、当該元イメージの形状に対する座標変換が（ｎ／２）×π（単位はｒａｄ、ｎは自然数）の回転変換を含まない、という条件を満たすか否かを判定し、（ｂ）前記条件を満たす場合に、（ｂ−１）前記元イメージを前記所定の２次元マトリクスで座標変換することにより、元の平行四辺形の形状を有する２次元イメージを取得し、（ｂ−２）前記元の平行四辺形の形状を変化させて生成する新たな平行四辺形の上底または下底の画素数の基となる数値ｗ、及び、高さの画素数の基となる数値ｈを算出し、（ｂ−３）ｗ×ｈの２次元メモリ空間を確保し、（ｂ−４）前記２次元イメージを前記新たな平行四辺形の形状に座標変換した場合に生成される新たな２次元イメージの画素値を、走査ラインごとに、走査順に前記２次元メモリに書き込み、（ｂ−５）前記新たな２次元イメージの付属情報を、前記２次元メモリに対応付けて記憶する、ステップからなり、前記新たな平行四辺形は、前記元の平行四辺形を、走査方向に平行な直線で２つの図形に分割し、分割した２つの図形が有する辺のうち、前記元の平行四辺形の上底及び下底に対応する辺同士を合わせることによって生成され、前記付属情報は、前記ｗ、前記ｈ、前記新たな平行四辺形の傾きΔｄ、次の読み出しラインとの縦方向のずれを示す次ライン情報ｔである、画像処理方法をコンピュータに実行させることを特徴とする。
【００１１】
上記画像処理プログラムによれば、さらに、元イメージが単一色でなく、かつ、当該元イメージの形状に対する座標変換が（ｎ／２）×π（単位はｒａｄ、ｎは自然数）の回転変換を含まない、という条件を満たすか否かを判定し、前記条件を満たす場合に、元の平行四辺形を走査方向に平行な直線で２つの図形に分割し、分割した２つの図形が有する辺のうち、前記元の平行四辺形の上底及び下底に対応する辺同士を合わせることによって生成される新たな平行四辺形の上底または下底の画素数の基となる数値ｗと高さの画素数の基となる数値ｈに基づいて表現されるメモリ空間し、該メモリ空間に、新たな平行四辺形の形状に座標変換された元の平行四辺形のイメージの画素値を走査ラインごとに走査順に書き込み、また、該メモリ空間に対応づけて、前記ｗ、前記ｈ、前記新たな平行四辺形の傾きΔｄ、次の読み出しラインとの縦方向のずれを示す次ライン情報ｔを補助情報として記憶する。これにより、さらに、塗りつぶしイメージが単一色（すなわち、ベタ塗り画像）である場合、または、（ｎ／２）×π（単位はｒａｄ、ｎは自然数）の回転変換を含む場合には、上述した処理の必要がないと判断するので、不必要な処理を行うことを防ぐことができる。 
【００１２】
また、本発明の一側面である請求項３に係る画像処理プログラムは、（ａ）元イメージが単一色ではなく、かつ、当該元イメージの形状に対する座標変換が（ｎ／２）×π（単位はｒａｄ、ｎは自然数）の回転変換を含まない、という条件を満たすか否かを判定し、（ｂ）前記条件を満たす場合に、（ｂ−１）前記座標変換で得られた平行四辺形の形状を変化させて生成する新たな平行四辺形の上底または下底の画素数の基となる数値ｗ、及び、高さの画素数の基となる数値ｈを算出し、（ｂ−２）ｗ×ｈの２次元メモリ空間を確保し、（ｂ−３）前記２次元メモリ空間のそれぞれの座標（Ｘｉ、Ｙｉ）に、前記元イメージの座標（ｘ、ｙ）の画素値を書き込み、
ここで、（ｘ、ｙ）＝Ａ−１（Ｘｉ’、Ｙｉ）  
Ｘｉ’＝Ｘｉ＋Ｙｉ×Δｄ  
ｘ  ＜  ０のとき、    ｘ  ＝  ｘ＋Ｘ１
ｘ  ＝＞Ｘ１のとき、  ｘ  ＝  ｘ−Ｘ１
ｙ  ＜  ０のとき、    ｙ  ＝  ｙ＋Ｙ１
ｙ  ＞＝Ｙ１のとき、  ｙ  ＝  ｙ−Ｙ１
Ｘ１は、元イメージの幅画素数
Ｙ１は、元イメージの高さ画素数
Δｄは、前記新たな平行四辺形の傾き
（ｂ−５）付属情報を、前記２次元メモリに対応付けて記憶する、
ステップからなり、前記付属情報は、前記ｗ、前記ｈ、前記Δｄ、次の読み出しラインとの縦方向のずれを示す次ライン情報ｔである、画像処理方法をコンピュータに実行させることを特徴とする。
【００１３】
上記画像処理プログラムによれば、さらに、元イメージが単一色でなく、かつ、当該元イメージの形状に対する座標変換が（ｎ／２）×π（単位はｒａｄ、ｎは自然数）の回転変換を含まない、という条件を満たすか否かを判定し、前記条件を満たす場合に、元の平行四辺形を走査方向に平行な直線で２つの図形に分割し、分割した２つの図形が有する辺のうち、前記元の平行四辺形の上底及び下底に対応する辺同士を合わせることによって生成される新たな平行四辺形の上底または下底の画素数の基となる数値ｗと高さの画素数の基となる数値ｈに基づいて表現されるメモリ空間し、前記メモリ空間のそれぞれの座標（Ｘｉ、Ｙｉ）に、前記元イメージの座標（ｘ、ｙ）の画素値を書き込み、また、該メモリ空間に対応づけて、前記ｗ、前記ｈ、前記新たな平行四辺形の傾きΔｄ、次の読み出しラインとの縦方向のずれを示す次ライン情報ｔを補助情報として記憶する。ここで、
（Ｘｍ、Ｙｍ）＝Ａ−１（Ｘｉ’、Ｙｉ）
Ｘｉ’＝Ｘｉ＋Ｙｉ×Δｄ
ｘ  ＜  ０のとき、    ｘ＝ｘ＋Ｘ１
ｘ  ＞＝Ｘ１のとき、  ｘ＝ｘ−Ｘ１
ｙ  ＜  ０のとき、    ｙ＝ｙ＋Ｙ１
ｙ  ＞＝Ｙ１のとき、  ｙ＝ｙ−Ｙ１
ある。これにより、さらに、２次元メモリ空間の座標と元イメージの座標とを対応づけることができ、画像処理を高速に行うことができる。
【００１４】
本発明の一側面である請求項４に係る画像処理プログラムは、請求項１〜３のいずれかの画像処理プログラムであって、前記算出されたｗ、ｈが自然数でない場合には、当該ｗ、ｈを整数化して前記２次元メモリ空間を確保することを特徴とする。
【００１５】
上記画像処理プログラムによれば、さらに、算出されたｗ、ｈが自然数でなくても整数化することによって２次元メモリ空間を確保することができる。
【００１６】
本発明の一側面である請求項５に係る画像処理プログラムは、（ａ）塗りつぶしの対象となる図形の形状を示す２次元図形データを取得し、（ｂ）前記２次元図形データに基いて、前記図形の形状の２次元イメージを表現するための第１の２次元メモリ空間を確保し、（ｃ）所定イメージが記憶されている第２の２次元メモリ空間から順次読み出した画素値を、前記第１の２次元メモリ空間の所定のアドレスに順次書き込む、ステップからなり、前記第１の２次元メモリ空間への書き込みは、走査順に行われ、前記第２の２次元メモリ空間からの読み出しは、所定の走査ライン上で走査順に行われ、読み出し位置が該所定の走査ライン上の終端に達した場合は、補助情報として記憶されている次ライン情報に基いて、新たな走査ラインを決定し、決定された走査ラインを前記所定の走査ラインとして画素値を走査順に読み出すことを繰り返す、画像処理方法をコンピュータに実行させることを特徴とする。
【００１７】
また、上記請求項５に係る画像処理プログラムは、前記補助情報には、前記第２の２次元メモリ空間に記憶されている所定イメージの幅を画素数で示す数値ｗ、前記所定イメージの高さを画素数で示す数値ｈ、２次元メモリ空間に記憶されている所定イメージの傾き情報Δｄが記憶され、前記補助情報に基いて、前記第１の２次元メモリ空間の走査ラインごとに、前記第２の２次元メモリ空間の読み出し開始位置を決定することを特徴とする。
【００１８】
上記画像処理プログラムによれば、塗りつぶしの対象となる図形の形状を示す２次元図形データを取得し、前記２次元図形データに基いて、前記図形の形状の２次元イメージを表現するための第１の２次元メモリ空間を確保し、所定イメージが記憶されている第２の２次元メモリ空間から順次読み出した画素値を、前記第１の２次元メモリ空間の所定のアドレスに順次書き込む。また、前記第１の２次元メモリ空間への書き込みは、走査順に行われ、前記第２の２次元メモリ空間からの読み出しは、所定の走査ライン上で走査順に行われ、読み出し位置が該所定の走査ライン上の終端に達した場合は、補助情報として記憶されている次ライン情報に基いて、新たな走査ラインを決定し、決定された走査ラインを前記所定の走査ラインとして画素値を走査順に読み出すことを繰り返す。これにより、書き込みの対象となる第１の２次元メモリ毎に読み込み元の第２の２次元メモリのアドレスを計算する必要がないため、画像処理を高速に行うことができる。
【００１９】
さらに、当該画像処理プログラムによれば、前記補助情報として、前記第２の２次元メモリ空間に記憶されている所定イメージの幅を画素数で示す数値ｗ、前記所定イメージの高さを画素数で示す数値ｈ、２次元メモリ空間に記憶されている所定イメージの傾き情報Δｄが記憶され、前記補助情報に基いて、前記第１の２次元メモリ空間の走査ラインごとに、前記第２の２次元メモリ空間の読み出し開始位置を決定する。これにより、前記第１の２次元メモリ空間の走査ラインにつき一回だけ前記第２の２次元メモリ空間の読み出し開始位置を決定すればよいので、画像処理を高速に行うことができる。
【００２０】
また、本発明の一側面である請求項６に係る発明は、請求項５の画像処理プログラムであって、前記補助情報には、前記第２の２次元メモリ空間に記憶されている所定イメージの幅を画素数で示す数値ｗ、前記所定イメージの高さを画素数で示す数値ｈ、２次元メモリ空間に記憶されている所定イメージの傾き情報Δｄが記憶され、前記補助情報に基いて、前記第１の２次元メモリ空間の走査ラインごとに、前記第２の２次元メモリ空間の読み出し開始位置（Ｓ、Ｌ）を決定する、 
ここで、
（ａ、ｂ）：前記所定イメージにおける前記第１の２次元メモリ空間上の起点座標、
（Ａ、Ｂ）：前記所定イメージで塗りつぶしを開始する前記第１の２次元メモリ空間上の起点座標、
ｔ：次の読み出しラインとの縦方向のずれを示す情報
とすると、
α＝（ａ＋（Ｂ−ｂ）×Δｄ）
ｏｆｆｓｅｔＸ＝（Ａ−α） 
Ｓ＝ｏｆｆｓｅｔＸ  ％  ｗ    （ｍ％ｎは、ｍをｎで割った場合の剰余を表す）
Ｓ＜０のとき  Ｓ＝Ｓ＋ｗ
Ｎ＝ｏｆｆｓｅｔ／ｗ
ｏｆｆｓｅｔＸ＜０  のとき  Ｎ＝Ｎ−１
Ｌ＝（Ｂ−ｂ＋ｔ×Ｎ）％  ｈ
Ｌ＜０のとき  Ｌ＝Ｌ＋ｈ
であることを特徴とする。
【００２１】
上記画像処理プログラムによれば、さらに、前記補助情報として、前記第２の２次元メモリ空間に記憶されている所定イメージの幅を画素数で示す数値ｗ、前記所定イメージの高さを画素数で示す数値ｈ、２次元メモリ空間に記憶されている所定イメージの傾き情報Δｄが記憶され、前記補助情報に基いて、前記第１の２次元メモリ空間の走査ラインごとに、前記第２の２次元メモリ空間の読み出し開始位置（Ｓ、Ｌ）を決定する。ここで、
（ａ、ｂ）：前記所定イメージにおける前記第１の２次元メモリ空間上の起点座標、
（Ａ、Ｂ）：前記所定イメージで塗りつぶしを開始する前記第１の２次元メモリ空間上の起点座標、
ｔ：次の読み出しラインとの縦方向のずれを示す情報、ｔは自然数
とすると、
α＝ａ＋（Ｂ−ｂ）×Δｄ
ｏｆｆｓｅｔＸ＝（Ａ−α）
Ｓ＝ｏｆｆｓｅｔＸ  ％  ｗ  （ｍ％ｎは、ｍをｎで割った場合の剰余を表す）
Ｓ＜０のとき  Ｓ＝Ｓ＋ｗ
Ｎ＝ｏｆｆｓｅｔ／ｗ
ｏｆｆｓｅｔＸ＜０  のとき  Ｎ＝Ｎ−１
Ｌ＝（Ｂ−ｂ＋ｔ×Ｎ）％  ｈ
Ｌ＜０のとき  Ｌ＝Ｌ＋ｈ
である。これにより、前記第２の２次元メモリ空間の読み出し開始位置を簡単な計算式で求めることができるので、画像処理を高速に行うことができる。
【００２２】
また、本発明の一側面である請求項７に係る発明は、請求項５または６の画像処理プログラムであって、前記決定された前記第２の２次元メモリ空間の読み出し開始位置が自然数でない場合は、所定の補間処理を用いて書き込む画素値を決定することを特徴とする。
【００２３】
上記画像処理プログラムによれば、小数値のまま読み出し開始位置を算出し、該読み出し開始位置を整数化するので、書き込む画素値の精度が高くなり、生成された塗りつぶし画像の画質を向上させることができる。
【発明の効果】
【００２４】
本発明によれば、所望の形状を有する図形を所望のイメージで高速に塗りつぶすことができる。
【発明を実施するための最良の形態】
【００２５】
本発明の一実施形態である画像処理システムについて以下説明する。本実施形態における画像処理システムは、プロセッサ、第１記憶手段、第２記憶手段、から基本的に構成される。なお、必要に応じ、種々の要素を付加してもよいことはいうまでもない。
【００２６】
第１記憶手段は、例えば、不揮発性のメモリ及び／または磁気ディスクで構成される。また、第１記憶手段には、画像処理プログラム（詳細は後述する）、イメージファイル（詳細は後述する）が記憶されている。また、本発明の実現に必要な種々のデータについても、第１記憶手段に記憶されている。第２記憶手段は、例えば、揮発性のメモリで構成される。また、第２記憶手段には、第１の記憶手段に記憶されるプログラム（上述した画像処理プログラムを含む）やデータ（上述したイメージファイルを含む）がロードされる。プロセッサは、第１記憶手段及び第２記憶手段に記憶されるデータを用いて種々の処理を実行する。本実施形態においては、プロセッサは、上述した画像処理プログラムを実行する。また、本実施形態に係る画像処理システムは、入力手段を備え、本発明の実現に必要な種々のデータを第１記憶手段に記憶することなく直接入力できるよう構成してもよい。
【００２７】
上述したプロセッサ、第１記憶手段、第２記憶手段は、例えば、汎用のＰＣとして実現することが可能である。このとき、例えば、ＣＰＵがプロセッサとして機能し、ＨＤＤが第１記憶手段として機能し、ＲＡＭが第２記憶手段として機能する。また、画像処理に特化されたプロセッサ及び／またはメモリを用いて本発明を実現することも可能である。さらに、プリンタが有するプロセッサ、記憶手段を用いて本発明を実現することも可能である。また、本発明に係る画像処理プログラムを、分散処理において実行することも可能である。このとき、ネットワーク技術を用いてもよい。
【００２８】
また、本発明の説明においては２次元メモリ空間という用語を用いるが、２次元メモリ空間とは、所定のアドレスを２次元の座標として特定することができるメモリ空間のことをいう。
【００２９】
以下、本実施形態で実行される画像処理プログラムについて説明する。本実施形態で実行される画像処理プログラムは、変換イメージ格納処理がコンピュータによって実行されるためのプログラムと、塗りつぶしイメージ生成処理がコンピュータによって実行されるためのプログラムと、から構成される。この２つのプログラムは、一連の処理として連続して実行されてもよい。また、変換イメージ格納処理と塗りつぶしイメージ生成処理とが、別個のプロセッサで実行されてもよい。また、例えば、変換イメージ格納処理によって生成されたデータを、別の装置が利用して塗りつぶしイメージ処理が実行させるよう構成することもできる。
【００３０】
［変換イメージ格納処理］
まず、変換イメージ格納処理について説明する。図４は、変換イメージ格納処理のフローチャートである。
【００３１】
Ｓ１において、塗りつぶしに用いるパターンイメージの基となるイメージファイルを取得する。イメージファイルは、例えば、第１記憶手段に記憶されている。また、通信回線等を介して取得してもよい。イメージファイルのファイル形式はどのようなものでもよく、例えば、ＪＰＥＧファイルとすることができる。
【００３２】
Ｓ２において、取得したイメージファイルを、第２記憶手段上の２次元メモリ空間に画素単位で記憶する。ここで、それぞれの画素の画素値は、例えば、ＲＧＢそれぞれ８ビットの２４ビットデータとして表現することができる。ただし、他のパラメータ及び他のデータ量で表現してもよいことはもちろんである。
【００３３】
また、２次元メモリ空間に記憶されるイメージの形状は、矩形とする。ここで、取得したイメージファイルのイメージの形状が矩形でない場合は、矩形に切り出して２次元メモリ空間に記憶する。以下、２次元メモリに記憶したイメージを元イメージという。また、以下、元イメージが格納された２次元メモリ空間を元イメージ格納メモリという。
【００３４】
Ｓ３において、元イメージのすべての画素値が同一であるかどうかを判断する。ここで、元イメージのすべての画素値が同一である場合、元イメージはいわゆるベタ塗り画像である。ベタ塗り画像の場合は、塗りつぶしの対象となる図形領域内の画素値として、元イメージの１つの画素値をコピーすればよく、後述する処理を行う必要がない。ここで、元イメージのすべての画素値が同一であるか否かについては、元イメージの走査開始座標の画素値を記憶し、元イメージのすべての画素値に対し記憶された画素値と同一であるかを調べることによって判断することができる。
【００３５】
Ｓ３において、元イメージのすべての画素値が同一であると判断した場合は（Ｓ３：ＹＥＳ）、変換イメージ格納処理を終了する。一方、元イメージのすべての画素値が同一ではないと判断した場合は（Ｓ３：ＮＯ）、Ｓ４に進む。ただし、Ｓ３のステップは必要に応じて省略することもできる。すなわち、元イメージの画素値の性質に関わらず後述する処理を実行してもよい。
【００３６】
Ｓ４において、元イメージを変換する変換マトリクスＡによる座標変換に、（ｎπ）／２［ｒａｄ］の回転変換が含まれるかどうかを判断する。ここで、変換マトリクスＡは、周知の２次元アフィン変換行列である。（ｎπ）／２［ｒａｄ］の回転変換であれば、変換イメージの形状が矩形であるから、公知の処理を用いることができ、後述する処理を行う必要がない。ただし、Ｓ４のステップは必要に応じて省略することもできる。すなわち、変換イメージの形状に関わらず後述する処理を実行してもよい。
【００３７】
（ｎπ）／２［ｒａｄ］の回転変換が含まれると判断した場合は（Ｓ４：ＹＥＳ）、変換イメージ格納処理を終了する。一方、（ｎπ）／２［ｒａｄ］の回転変換が含まれないと判断した場合は（Ｓ４：ＮＯ）、Ｓ５に進む。
【００３８】
Ｓ５において、塗りつぶしイメージ生成処理で必要となるパラメータを取得する。取得されるパラメータは、図５に示すように、元イメージ１１の形状を変換マトリクスＡで変換した変換イメージ１２の形状におけるｗ、ｈ、ｔ、Δｄである。ここで、変換イメージ１２の点ａ’の座標を（Ｘａ’，Ｙａ’）、点ｃ’の座標を（Ｘｃ’，Ｙｃ’）、点ｄ’の座標を（Ｘｄ’，Ｙｄ’）、点ｅの座標を（Ｘｅ，Ｙｅ）とすれば、
ｗ  ＝  Ｘｅ−Ｘａ’
ｈ  ＝  Ｙｃ’−Ｙａ’
ｔ  ＝  Ｙｃ’−Ｙｄ’
として求めることができる。ただし、点ａ’、点ｃ’、点ｄ’、点ｅのＸ座標値及びＹ座標値は、小数値を含む値となることがある。この場合、上記ｗ、ｈ、ｔについても、小数値を含む値となることがある。ｗ、ｈは、２次元メモリ空間（自然数で管理されるもの）を定義するための基となるパラメータであるので、ｗ、ｈが小数値を含む値となった場合は、整数化した自然数ｗ’、ｈ’を算出する。また、ｗ、ｈが整数値の場合は、ｗ’＝ｗ、ｈ’＝ｈである。なお、整数化するための処理は切り捨て、切り上げ、四捨五入等いずれでもよい。なお、ｔについては、整数化しなくてもよい。
【００３９】
また、Δｄは、
Δｄ＝（Ｘｃ’−Ｘａ’）／（Ｙｃ’−Ｙａ’）
として求めることができる。ここで、Δｄが小数値を有する値となることがあるが、Δｄについては、整数化しなくてもよい。 
【００４０】
Ｓ５で算出されたｗ、ｈ、ｔ、Δｄは、補助情報として後述するＳ６で確保される２次元メモリ空間に対応付けて記憶される。
なお、上述したｗ、ｈ、ｔ、Δｄの算出方法は、単なる一例であり、他の算出方法で求めてもよいことはもちろんである。
【００４１】
Ｓ６において、第２記憶手段上に、幅ｗ’（画素）×高さｈ’（画素）の２次元メモリ空間を確保する。以下、Ｓ６で確保されたメモリ空間を、変換イメージ格納メモリという。
【００４２】
Ｓ７において、Ｓ６で確保された変換イメージ格納メモリに、変換イメージの画素値を格納する。
この処理について図６〜図９を用いて詳細に説明する。以下、元イメージを変換マトリクスＡで変換したイメージを第１変換イメージ２１という。
まず、第１変換イメージ２１を第２変換イメージ２４に変換する（図６参照）。具体的には、第１変換イメージ２１を、走査方向と平行な直線Ｌ１で２つの図形２２、図形２３に分割する。そして、図形２２の直線Ｌ２と、図形２３の直線Ｌ３とを一致させるように図形２２の位置を移動させる。なお、図形２３を移動させてもよいことはもちろんである。なお、Ｌ２及びＬ３は、第１変換イメージ２１（平行四辺形）の上底及び下底である。以上の処理を行うことにより、第２変換イメージ２４を生成することができる。なお、Ｌ１のＹ座標値は図６に限定されるものではない。
【００４３】
次に、第２変換イメージ２４を、Ｙ座標を保ったまま変換イメージ格納メモリ３１に記憶する（図７参照）。具体的には、第２変換イメージ２４を、水平ラインごとの画素群に分け、画素群を水平方向の走査順序を保った状態、かつ、画素群同士の垂直方向の順序を保った状態で変換イメージ格納メモリ３１に記憶する。すなわち、画素群同士の傾きΔｄが無視された状態で変換イメージ格納メモリ３１に記憶されることになる。ただし、Δｄは、Ｓ５において既に取得されている。図８は、変換イメージ格納メモリ３１に格納された第２変換イメージ２４を概念的に示した図である。
【００４４】
ここで、図７において、第２変換イメージ２４の左上の座標を原点とし、また、変換イメージ格納メモリの左上の座標を原点とする。このとき、第２変換イメージ上の座標（Ｘｍ２、Ｙｍ２）と変換イメージ格納メモリ上の座標（Ｘｉ，Ｙｉ）との関係は、
Ｘｍ２  ＝  Ｘｉ＋Ｙｉ×Δｄ
Ｙｍ２  ＝  Ｙｉ
となる。
すなわち、Ｙ座標値については、第２変換イメージ２４と変換イメージ格納メモリ３１とで同じであるが、Ｘ座標値については、ΔｄとＹｉとによって算出されるずれが生じることになる。
【００４５】
次に、変換イメージ格納メモリ内の画素値の算出について具体的に説明する。
第１変換イメージ上の座標（Ｘｍ１、Ｙｍ１）の画素値と、元イメージ上の座標（ｘ、ｙ）の画素値との関係は、
（ｘ、ｙ）＝Ａ−１（Ｘｍ１、Ｙｍ１）
で表現される。すなわち、変換マトリクスＡの逆行列を第１変換イメージ２１の座標値に掛けることにより、元イメージの座標値を求めることができる。
【００４６】
次に、第２変換イメージ上の座標（Ｘｍ２、Ｙｍ２）の画素値と、元イメージ上の座標（ｘ、ｙ）の画素値との関係について説明する。
第２変換イメージ２４の図形２３の部分については、第１変換イメージ２１と同様に、
（ｘ、ｙ）＝Ａ−１（Ｘｍ２、Ｙｍ２）
として算出することができる。ここで、図６において、図形２３の左上端点が、原点座標となるように座標変換が行われているものとする。
ただし、図形２２の部分については、図６で示したように、図形移動に基づいて座標値が変更されているから、図形２２の部分については、元イメージ上の座標との対応をとるために座標変換をする必要がある。ここで、図９に示すように、元イメージ１１の下方に、元イメージと同じ画素値を有する仮想の元イメージ４１が存在すると仮定することにより、第２変換イメージ２４の全ての画素値について、第１変換パターンと同様に処理することができる。
【００４７】
この点を具体的に説明する。図９において、第２変換イメージの白抜きの部分については、変換マトリクスの逆行列Ａ−１を掛け合わせると、真の元イメージ１１の領域内からはずれた領域（仮想の元イメージ４１の領域）に座標変換される。ここで、仮想の元イメージ４１の白抜きの点座標（ｘｖ、ｙｖ）の画素値は、（ｘｖ、ｙｖ−ｈ）の画素値と同一とする。そうすると、第２変換イメージ２４の白抜き点座標（Ｘｍ２、Ｙｍ２）に対応する元イメージの座標は、
Ａ−１（Ｘｍ２、Ｙｍ２）＝（ｘｖ、ｙｖ）＝（ｘ、ｙｖ−ｈ）
として算出できることになる。
【００４８】
上述した例においては、第２変換イメージの逆変換後のＹ座標値が元イメージの座標値範囲を正の方向に超えた場合であったが、上述した線Ｌ１の位置、変換マトリクス、原点座標の設定によっては、逆変換後のＹ座標値が負の方向に超える場合、逆変換後のＸ座標値が正の方向、または、負の方向に越える場合も考えられる。
このような場合を想定し、第２変換イメージ２４の座標（Ｘｍ２、Ｙｍ２）と元イメージ２１の座標（ｘ、ｙ）との関係は、以下の式で算出することができる。
（ｘ、ｙ）＝Ａ−１（Ｘｍ２、Ｙｍ２）
ｘ  ＜  ０のとき、    ｘ  ＝  ｘ  ＋  Ｘ１
ｘ  ＞＝Ｘ１のとき、  ｘ  ＝  ｘ  −  Ｘ１
ｙ  ＜  ０のとき、    ｙ  ＝  ｙ  ＋  Ｙ１
ｙ  ＞＝Ｙ１のとき、  ｙ  ＝  ｙ  −  Ｙ１
ここで、Ｘ１は元イメージの幅画素数であり、Ｙ１は元イメージの高さ画素数である。
【００４９】
ここで、第２変換イメージの座標（Ｘｍ２、Ｙｍ２）と変換イメージ格納メモリ３１の座標（Ｘｉ、Ｙｉ）との関係は、上述したとおり、
Ｘｍ２  ＝  Ｘｉ＋Ｙｉ×Δｄ
Ｙｍ２  ＝  Ｙｉ
であるから、
変換イメージ格納メモリ３１の座標（Ｘｉ、Ｙｉ）と元イメージ２１の座標（ｘ、ｙ）との関係は、
（ｘ、ｙ）＝Ａ−１（Ｘｍ２、Ｙｉ）
Ｘｍ２＝Ｘｉ＋Ｙｉ×Δｄ
ｘ＜  ０のとき、    ｘ＝ｘ＋Ｘ１
ｘ＞＝Ｘ１のとき、  ｘ＝ｘ−Ｘ１
ｙ＜  ０のとき、    ｙ＝ｙ＋Ｙ１
ｙ＞＝Ｙ１のとき、  ｙ＝ｙ−Ｙ１
として求めることができる。
【００５０】
なお、上記式で求められたｘ及びｙの値が小数値を含む値となることもある。元イメージの座標値は自然数であるから、算出された小数値の周辺の座標の画素値に基づいて補間して算出すればよい。補間の方法は公知であるので説明を省略する。また、ｘ及びｙを、単純に整数化してもよい。
【００５１】
なお、上述した変換イメージ格納メモリへの画素値の記憶の処理は、図１０に示すフローチャート（画素値記憶処理）によって実現することができる。なお、詳細な説明については省略する。
【００５２】
以上の処理によって変換イメージ格納メモリ３１に記憶された画素値は、後述する塗りつぶしイメージ処理において用いられる。また、変換イメージ格納処理によって生成された変換イメージ格納メモリ３１の画素値をファイルとして保存し、保存したファイルを別のプロセスで実行するように構成することもできる。
【００５３】
［塗りつぶしイメージ生成処理］
以下、塗りつぶしイメージ生成処理について説明する。以下においては、塗りつぶしイメージを生成するためのメモリ空間が確保されているものとする。また、そのメモリ空間を図形データ格納メモリ３２ということがある。
【００５４】
この処理について概念的に説明する。図１１に示すように、図形データ格納メモリ３２に対し、所定の走査方向の順に画素値を書き込む。このとき、書き込みの元となる画素値は、変換イメージ格納メモリ３１から所定の走査方向に読み出されたものである。また、変換イメージ格納メモリ３１の所定のラインの端まで読み出した場合は、次ライン情報ｔに基いて、次に読み出すラインを決定する。すなわち、２次元メモリの端点まで読み出すと、ｔで示される分だけずれたラインを読み出す。なお、ｔの値は、Δｄの値によって変化する。なお、以下の説明においては、説明の便宜上、ｔが自然数とする。ただし、ｔが自然数でない場合についても同様に処理することができる。
【００５５】
この点について具体的に説明する。この処理は、概念的には、図２に示したように、図形データに対し、第１変換イメージを敷き詰めていることになる。図１２は、図形イメージ１３内に貼り付けられた第１変換イメージの画素の並び順を示したものである。図１３は、変換イメージメモリ上の画素の並び順を示したものである。これらの図が示すとおり、画素（６）が読み出されると、その次に、画素（７）が読み出される。
また、ｔ、ｗ、ｈが少数部を含んだ数値であった場合には、小数部を含んだ数値のまま順次計算を行い、その時々の数値の整数部を、読み出し開始位置の値として設定すれば、前記少数を含んだｔ、ｗ、ｈの整数化を行ってから前記順次計算を行い、前記読み出し開始位置とするよりは、前記読み出し開始位置の誤差は小さくなる。
また、読み出し開始位置について、小数部を含んだ座標値に基づいて補間処理よって求めてもよい。このとき、この座標値に最も近傍する変換イメージメモリ上の座標値を、読み出し開始位置を決定することができる。さらに、複数の近傍画素に基づく加重平均として読み出し開始位置を決定してもよい。
すなわち、できるだけ小数部を含んだ数値のまま計算処理を行う方が読み出し開始位置の精度を高める上では望ましい。
【００５６】
ここで、画素（７）は、変換イメージ格納メモリ３１上では、画素（６）のラインから見て、ｔライン下にずれたラインに存在する。ここで、画素（６）のライン番号をｃとすれば、次に読み出されるライン番号は、（ｃ＋ｔ）となる。なお、（ｃ＋ｔ）が、ｈ以上になる場合は、（ｃ＋ｔ−ｈ）として、次に読み出すラインを決定する。
以上の処理により、変換イメージ格納メモリから読み出されるアドレスと、図形データメモリに書き込まれるアドレスとの対応関係を単純化することができる。これにより、図１１に示したように、図形データメモリに対し走査順に画素値を書き込むことができ、高速な処理が可能となる。
【００５７】
次に、各走査ラインに画素値を書き込んでいく際の、変換イメージ格納メモリにおける読み出し開始位置の決定方法について説明する。本発明においては、走査ラインごとに、図形データメモリの書き込み開始位置に対応する変換イメージ格納メモリの読み出し開始位置を決定する。
【００５８】
具体的な処理について図１４を用いて説明する。ここでは、左上に図形メモリの始点座標があるとし、shape area内を塗りつぶすものとする。また、shape areaに接する長方形内を塗りつぶし対象領域とする。また、塗りつぶし対象領域内におけるshape areaでない領域においては、変換イメージ格納メモリから読み出された画素値は書き込まれない。
【００５９】
以下、説明の便宜上、第２変換イメージを敷き詰めていくものとして説明する。第２変換イメージの起点位置を（ａ、ｂ）とし、塗りつぶし対象領域の起点座標を（Ａ、Ｂ）とする。
【００６０】
この処理は、概念的には、（ａ，ｂ）を起点として第２変換イメージ（以下、平行四辺形ということがある）を敷き詰めていき、塗りつぶしの始点（ここでは、（Ａ、Ｂ））が座標値に含まれる平行四辺形（以下、対象平行四辺形ということがある）を特定する。そして、対象平行四辺形の上端及び左端からの相対座標（Ｓ、Ｌ）を求める。図１４においては、平行四辺形（９）が対象平行四辺形となる。
【００６１】
ここで、Ｓ及びＬは、変換イメージ格納メモリの座標値と等価であるから、Ｓ及びＬが決定されると、変換イメージ格納メモリ上の座標（Ｓ、Ｌ）の画素値が、塗りつぶしの始点に対応する読み出し開始位置となる。
【００６２】
まず、Ｓの算出方法について説明する。起点位置に配置された平行四辺形（１）の下辺に一致させるように順に平行四辺形を配置していき（図１４においては、平行四辺形（２）→平行四辺形（３）の順）、Ｙ座標値としてＢが含まれる平行四辺形を特定する。以下、特定された平行四辺形を起点図形ということがある。図１４においては、平行四辺形（３）が起点図形となる。
【００６３】
そして、Ｙ座標値がＢであるライン上の平行四辺形（３）の左端点を特定し、その左端点の左隣接点のＸ座標値αを決定する。このとき、
α  ＝  ａ＋ａ’
であり、
ａ’＝  （Ｂ−ｂ）×Δｄ
の関係から、
α  ＝  ａ  ＋  （Ｂ−ｂ）×Δｄ
となる。ここで、αが小数値を含む値となることもあるが、整数化しなくてよい。
なお、必要に応じ整数化してもよい。
【００６４】
次に、Offsetを算出する。Offsetは、
Offset ＝  Ａ  −  α
として算出することができる。
【００６５】
図１４に示すとおり、Ｓは、Offsetから平行四辺形（３）及び（５）の幅ｗを引いた値であることがわかる。
すなわち、図１４においては、
Offset  ＝  ２×ｗ  ＋  Ｓ
となる。
これを一般化すれば、起点図形から平行四辺形Ｘ個分ずれた位置に対象平行四辺形があり、平行四辺形の幅をｗとすれば（平行四辺形（３）ではＸ＝１、平行四辺形（５）ではＸ＝２）、
Offset  ＝  ｘ×ｗ  ＋  Ｓ
となり、移項すると、
Ｓ  ＝  Offset −  ｘ×ｗ
となる。この式は、Offsetをｗで割った場合の剰余を示すものであるから、
Ｓ  =   Offset ％ w  （ｍ％ｎは、ｍをｎで割った場合の剰余を表す） 
として求めることができる。
【００６６】
ここで、第２変換イメージの形状、起点（ａ、ｂ）の設定、原点の設定の仕方によっては、算出したＳの値が、負の数になることもありうる。この場合、変換イメージ格納メモリの座標系に変換するために、
Ｓ＝Ｓ＋ｗ
とする。この処理は、左向きのベクトルＳに対して右向きのベクトルｗとを加算するものである。これにより、変換イメージ格納メモリの座標値に変換することができる（図１５参照）。
【００６７】
上述した処理においては、算出されたＳが小数値を含む値として算出されることがある。この場合、Ｓを整数化したＳ’を読み出し開始のＸ座標値とすることができる。また、算出された小数値の周辺の座標の画素値に基づいて補間して算出してもよい。なお、補間処理は公知であるので説明を省略する。
【００６８】
また、上述した処理においては、Ｓを小数値を含んだ形で読み出し開始位置を算出し、その後整数化するので、図形データ格納メモリに書き込まれる画素値の精度を高めることができ、生成される塗りつぶしイメージの画質を向上させることができる。
【００６９】
次に、Ｌの算出方法ついて説明する。
図１４において、Ｌは、対象平行四辺形の上端からの相対座標値である。したがって、対象平行四辺形のＹ座標を求める必要がある。
このとき、平行四辺形（１）にＹ座標方向に接続している平行四辺形（２）及び（３）については、
Ｂ−ｂ  ＝  ｎ×ｈ  ＋  Ｌ
という関係式が成り立つ。ここで、ｎは、平行四辺形（１）から平行四辺形何個分ずれた位置にあるかを示すものである（平行四辺形（２）ではｎ＝１、平行四辺形（３）ではｎ＝２）。
【００７０】
また、上記対象平行四辺形に対し、右側または左側に隣接する平行四辺形（例えば、平行四辺形（４）、平行四辺形（８）等）については、垂直方向のずれを考慮する必要がある。すなわち、図１６及び図１７に示すように、右に１つずれるごとに、平行四辺形の上端のＹ座標値は、ｔだけ原点方向にずれることになる。
【００７１】
ここで、平行四辺形（１）、（２）、（３）の順に隣接されていくラインを起点ラインＬｓとする。そして、対象平行四辺形が、起点ラインＬｓから平行四辺形何個分（Ｎ）ずれた位置にあるかを計算する必要がある。
例えば、ｗが１０、Offsetが１５であれば、平行四辺形１個分ずれていることになり、
ＩＮＴ［１５／１０］＝ＩＮＴ［１．５］＝１となる。  （ＩＮＴ（ｎ）は、ｎの整数部分を表す）
また、ｗが１０、Offsetが２２であれば、
ＩＮＴ［２２／１０］＝ＩＮＴ［２．２］＝２となる
この関係を一般化すれば、Offsetをｗで割った整数値（小数以下切捨て）として求められ、
Ｎ  ＝ＩＮＴ［Offset／ｗ］
となる。
【００７２】
また、第２変換イメージの形状、起点（ａ、ｂ）の設定、原点の設定の仕方によっては、算出したOffsetの値が、負の数になることもありうる。ｗが１０、Offsetが−８であれば、起点図形から平行四辺形１個分原点方向にずれており、
Ｎ  ＝  ＩＮＴ［−８／１０］＝０
となる（図１８参照）。
また、ｗが１０、Offsetが−１６であれば、起点図形から平行四辺形２個分原点方向にずれており、
Ｎ  ＝  ＩＮＴ［−１６／１０］＝−１
となる（図１９参照）。
この関係を一般化すれば、起点図形から平行四辺形Ｎ個分原点方向にずれている場合は、
Ｎ  ＝（Ｎ−１）
とする。
【００７３】
以上によれば、次のように求めることができる。
起点ラインＬｓ上の平行四辺形における上端のＹ座標値は、ｂ＋ｎ×ｈとして求められるから、対象平行四辺形における上端のＹ座標値は、ｂ＋ｎ×ｈ＋ｔ×Ｎとして求められる。これにより、ＢとＬとの関係は、
Ｂ  ＝  ｂ  ＋  ｎ×ｈ  ＋  ｔ×Ｎ  ＋  Ｌ
となり、移項すると、
Ｌ  ＝  Ｂ−ｂ  ＋  ｔ×Ｎ  −  ｎ×ｈ
となる。この式は、（Ｂ−ｂ＋ｔ×Ｎ）をｈで割った剰余を示すものであるから、
Ｌ  ＝  （Ｂ−ｂ＋ｔ×Ｎ）  ％  ｈ
として求めることができる。
【００７４】
ここで、第２変換イメージの形状、起点（ａ、ｂ）の設定、原点の設定の仕方によっては、算出したＬの値が、負の数になることもありうる。この場合、変換イメージ格納メモリの座標系に変換するために、
Ｌ＝Ｓ＋ｈ
とする。この処理は、上向きのベクトルＬに対して下向きのベクトルｈとを加算するものである。これにより、変換イメージ格納メモリの座標値に変換することができる（図２０参照）。
【００７５】
上述した処理においては、算出されたＬが小数値を含む値として算出されることがある。この場合、Ｓを整数化したＬ’を読み出し開始のＹ座標値とすることができる。また、算出された小数値の周辺の座標の画素値に基づいて補間して算出してもよい。なお、補間処理は公知であるので説明を省略する。
【００７６】
また、上述した処理においては、Ｓを小数値を含んだ形で読み出し開始位置を算出し、その後整数化するので、図形データ格納メモリに書き込まれる画素値の精度を高めることができ、生成される塗りつぶしイメージの画質を向上させることができる。
【００７７】
以上説明したとおり、本発明は、塗りつぶしの対象となる図形に対し、走査順に画素値を書き込むことができるので、高速な処理によって塗りつぶし処理を行うことができる。また、メモリ効率を高めることができる。
【００７８】
本発明は上述した実施形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内で種々の改良、変形が可能であることは勿論である。また、上述した画像処理プログラムを記録された記録媒体、上述した画像処理プログラムに係る画像処理方法としても本発明は実現可能である。
【図面の簡単な説明】
【００７９】
【図１】元イメージ、変換マトリクス、図形データのパラメータを用いて図形データを塗りつぶす処理を概念的に示した図である。
【図２】変換イメージを図形データの領域内に貼り付けていく様子を示した図である。
【図３】２次元メモリ空間上に変換イメージ記憶した様子を示した図である。
【図４】変換イメージ格納処理のフローチャートである。
【図５】元イメージの形状と変換イメージの形状との関係を示した図である。
【図６】第１変換イメージから第２変換イメージを生成する様子を示した図である。
【図７】第２変換イメージの座標と変換イメージ格納メモリの座標との対応関係を示した図である。
【図８】２次元メモリ空間上に第２変換イメージを記憶した様子を示した図である。
【図９】第２変換イメージの座標と元イメージの座標との対応関係を示した図である。
【図１０】画素値記憶処理のフローチャートである。
【図１１】図形データ格納メモリに変換イメージメモリの画素値をコピーしていく様子を示した図である。
【図１２】図形データ格納メモリ内の画素値と第１変換イメージの画素値との関係を示した図である。
【図１３】変換イメージ格納メモリ上の画素値の読み出し順序を示した図である。
【図１４】変換イメージ格納メモリ上の読み出し開始位置と図形データ格納メモリの位置との関係を示した図である。
【図１５】第２変換イメージの座標を、変換イメージ変換格納メモリの座標に変換する様子を示した図である。
【図１６】隣接する第２変換イメージの垂直方向のずれを示した図である。
【図１７】隣接する第２変換イメージの垂直方向のずれを示した図である。
【図１８】Offsetと起点図形からのずれの関係を示した図である。
【図１９】Offsetと起点図形からのずれの関係を示した図である。
【図２０】第２変換イメージの座標を、イメージ変換格納メモリの座標に変換する様子を示した図である。
【符号の説明】
【００８０】
１１              元イメージ
１３              図形データ
３１              変換イメージ格納メモリ
３２              図形データ格納メモリ
【図１】
0004492671.tif 000002
【図３】
0004492671.tif 000003
【図４】
0004492671.tif 000004
【図５】
0004492671.tif 000005
【図６】
0004492671.tif 000006
【図７】
0004492671.tif 000007
【図８】
0004492671.tif 000008
【図９】
0004492671.tif 000009
【図１０】
0004492671.tif 000010
【図１１】
0004492671.tif 000011
【図１２】
0004492671.tif 000012
【図１３】
0004492671.tif 000013
【図１４】
0004492671.tif 000014
【図１５】
0004492671.tif 000015
【図１６】
0004492671.tif 000016
【図１７】
0004492671.tif 000017
【図１８】
0004492671.tif 000018
【図１９】
0004492671.tif 000019
【図２０】
0004492671.tif 000020
【図２】
0004492671.tif 000021