(57)【特許請求の範囲】
【請求項１】
第一の画像と第二の画像を画像合成する画像処理装置であって、
前記第一の画像の画素と、前記第二の画像の画素との対応を表す対応テーブルを作成する作成手段と、
前記第二の画像から、前記第二の画像に対応する二値のマスクデータを生成する生成手段と、
前記第一の画像の画素の値を、前記対応テーブルにより参照され、かつ、前記マスクデータにより合成が指示される前記第二の画像の画素の値に置き換えることで、前記第一の画像と前記第二の画像を画像合成する処理手段とを有することを特徴とする画像処理装置。
【請求項２】
前記作成手段は、前記第二の画像のサイズを前記第一の画像のサイズに一致させるように前記対応テーブルを作成することを特徴とする請求項1に記載された画像処理装置。
【請求項３】
前記作成手段は、前記第二の画像の前記縦および横方向の画素数を、前記第一の画像の対応する画素数に一致させるように前記対応テーブルを作成することを特徴とする請求項1に記載された画像処理装置。
【請求項４】
前記処理手段は、前記第一の画像の縦および横方向の少なくとも一方向の画素数が、前記第二の画像の対応する方向の画素数より小さい場合、前記対応テーブルによって参照されない前記第二の画像の画素値に基づき、前記対応テーブルによって参照される前記第二の画像の画素値を補正して前記画像合成を行うことを特徴とする請求項1から請求項3の何れかに記載された画像処理装置。
【請求項５】
前記処理手段による補正は、前記非参照画素の値と、その直前に参照される前記参照画素の値とを平均化するものであることを特徴とする請求項4に記載された画像処理装置。
【請求項６】
第一の画像と第二の画像を画像合成する画像処理方法であって、
前記第一の画像の画素と、前記第二の画像の画素との対応を表す対応テーブルを作成し、
前記第二の画像から、前記第二の画像に対応する二値のマスクデータを生成し、
前記第一の画像の画素の値を、前記対応テーブルにより参照され、かつ、前記マスクデータにより合成が指示される前記第二の画像の画素の値に置き換えることで、前記第一の画像と前記第二の画像を画像合成することを特徴とする画像処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は画像処理方法および装置に関し、例えば、複数の画像を合成する画像処理方法および装置に関するものである。
【０００２】
【従来の技術】
縦および／または横の画素数が異なる（画像サイズが異なる）二枚の画像を合成する場合、両画像の縦と横の画素数が同じになるように、例えば第二の画像のサイズを変更した第三の画像を生成し、その後、第一および第三の画像を合成する必要がある。このように、既に一方の画像に加工が加えられている場合で、さらに、その画像が格納されたメモリ領域に上書することができないような場合には、もう一枚分、すなわち第一から第三の画像にそれぞれ対応する三枚分の画像を格納するメモリ領域を用意する必要がある。
【０００３】
【発明が解決しようとする課題】
しかし、上述した技術においては、次のような問題点がある。つまり、縦および／または横の画素数が異なる（画像サイズが異なる）二枚の画像を合成する場合、使用可能なメモリ領域が限られている状況では、変倍処理に使用するメモリ領域が得られずに画像合成ができない場合がある。
【０００４】
本発明は、上述の問題を解決するためのものであり、利用可能なメモリ領域が小さい場合でも複数の画像を合成することができる画像処理方法および装置を提供することを目的とする。
【０００５】
【課題を解決するための手段】
本発明は、前記の目的を達成する一手段として、以下の構成を備える。
【０００６】
本発明にかかる画像処理装置は、第一の画像と第二の画像を画像合成する画像処理装置であって、前記第一の画像の画素と、前記第二の画像の画素との対応を表す対応テーブルを作成する作成手段と、前記第二の画像から、前記第二の画像に対応する二値のマスクデータを生成する生成手段と、前記第一の画像の画素の値を、前記対応テーブルにより参照され、かつ、前記マスクデータにより合成が指示される前記第二の画像の画素の値に置き換えることで、前記第一の画像と前記第二の画像を画像合成する処理手段とを有することを特徴とする。
【０００７】
本発明にかかる画像処理方法は、第一の画像と第二の画像を画像合成する画像処理方法であって、前記第一の画像の画素と、前記第二の画像の画素との対応を表す対応テーブルを作成し、前記第二の画像から、前記第二の画像に対応する二値のマスクデータを生成し、前記第一の画像の画素の値を、前記対応テーブルにより参照され、かつ、前記マスクデータにより合成が指示される前記第二の画像の画素の値に置き換えることで、前記第一の画像と前記第二の画像を画像合成することを特徴とする。
【０００８】
【発明の実施の形態】
以下、本発明にかかる一実施形態の画像処理装置を図面を参照して詳細に説明する。
【０００９】
［構成］
図１は本発明にかかるデータ処理装置の概略構成を示すブロック図である。データ処理装置は、ＣＰＵ（中央処理ユニット）１、ＲＯＭ（リードオンリメモリ）２、ＲＡＭ（ランダムアクセスメモリ）３、キーボード４、マウス５、表示器６、および、外部記憶装置７により構成され、これらの構成要素はバスライン８により互いに接続されている。なお、システム構成によっては、後述するシステムプログラムや画像処理プログラムなどは、ＲＯＭ２のかわりにハードディスクなどのような外部記憶装置７に格納されていてもよい。
【００１０】
ＣＰＵ１は、例えばマイクロプロセッサであり、本装置各部の動作を制御する。ＲＯＭ２は、システムプログラム２ａ、画像処理プログラム２ｂ１、および、各種の画像処理を指示するなどのために利用されるアプリケーションプログラム２ｂなどを格納する。ＲＡＭ３は、画像が合成される原画像を格納する原画像データ領域３ａ、原画像に重ねる画像を格納する重ね画像データ領域３ｂ、二枚の画像を重ねるための合成処理において必要になる座標変換テーブル領域３ｃ、および、ＣＰＵ１にワークメモリとして使用されるワーク領域３ｆなどにより構成されている。
【００１１】
原画像データ領域３ａに格納される原画像（以後、原画像データ領域３ａに格納された原画像または原画像データを符号３ａで表す場合もある）は、二枚の画像を合成する際の基準になるので、合成後の画像の縦と横の画素数は、原画像３ａの縦と横の画素数になる。原画像３ａは、外部記憶装置７から読み込まれ、原画像データ領域３ａに格納される。なお、原画像３ａに何らかの加工処理を施した後、その処理結果に満足できず、その加工処理をキャンセルまたはアンドゥする場合に備えて、加工処理前の画像データを格納する領域を、原画像データ領域３ａのほかに確保しておいてもよい。また、原画像データ領域３ａに格納される画像は、既に他の何らかの加工処理が施された画像であってもよい。
【００１２】
重ね画像データ領域３ｂに格納される重ね画像（以後、重ね画像データ領域３ｂに格納された重ね画像または重ね画像データを符号３ｂで表す場合もある）は、原画像３ａの縦と横の画素数と同じになるように変倍された後、原画像３ａに合成される。重ね画像３ｂも、原画像３ａと同じように、外部記憶装置７から読込まれる。
【００１３】
画素数の異なる二枚の画像を合成する場合、一方の画像の縦と横の画素数に合わせるために、もう一方の画像の縦および／または横のサイズを変倍しなければならない。その際に必要になるのが、座標変換テーブル領域３ｃに格納される座標変換テーブルである（以後、座標変換テーブルを符号３ｃで表す場合もある）。
【００１４】
キーボード４は、本装置のユーザが、文字、数字、記号などのデータを入力したり、ＣＰＵ１に対して各種の指示を行うためのものである。マウス５は、表示器６上に表示されている各種情報を指示することにより、ＣＰＵ１に対して各種も指示を行うためのものである。マウスの代わりにトラックボール、ペン、またはタッチパネルなどの方式のポインティングデバイスを用いてもよい。表示器６は、例えばＬＣＤなどで構成され、ＣＰＵ１の制御により各種情報を表示する。外部記憶装置７は、例えばハードディスクやフロッピディスクなどのメディアを用いる記憶装置であり、ＣＰＵ１の制御により外部記憶装置７から読出された各種データは、バスライン８を介してＲＡＭ３に格納される。また、外部記憶装置７から読出されたデータが画像データの場合、その画像データはＲＡＭ３に展開される。
【００１５】
［画像合成処理］
以下では、本発明にかかる画像合成処理について詳細に説明する。
【００１６】
図２は本実施形態で扱うフルカラー画像データの構造例を示す図である。画像の一画素はＲ（赤）、Ｇ（緑）、Ｂ（青）それぞれ１バイト（＝８ビット）の計３バイトから構成され、ＲＧＢはそれぞれ０〜２５５の値をもつので、約１６７０万色を表すことができる。それぞれの値は小さいほど低い輝度を表し、ＲＧＢ三成分とも零に近い場合は黒に近い色になる。つまりＲ＝Ｇ＝Ｂ＝０の場合が黒、Ｒ＝Ｇ＝Ｂ＝２５５の場合が白を表す。また、図２中のＷおよびＨは縦と横の画素数を表す。
【００１７】
図３Ａから３Ｃは座標変換テーブル３ｃの例を示す図で、図３Ａは重ね画像が原画像よりも小さい場合の一例であり、図４に示すような画像合成を行う場合に使用する座標変換テーブル３ｃである。また、図３Ｂは、重ね画像が原画像よりも大きい場合の一例であり、図５に示すような画像合成を行う場合に使用する座標変換テーブル３ｃである。また、図３Ｃは、重ね画像の縦方向は原画像の縦方向よりも小さく、重ね画像の横方向は原画像の横方向よりも大きい場合の一例である。
【００１８】
図７は図４に示した画像合成を具体的に説明するための図である。図７は、画素を少なくし、大きく拡大するとともに、あたかも二値画像の合成を行うように示しているが、これらは説明を容易にするための処理であり、実際の処理は多数の多値画素を合成するものである。図７（ａ）は原画像を、同図（ｂ）は重ね画像を、同図（ｃ）はマスクを、同図（ｄ）は合成画像を、それぞれ表している。クロスハッチングが施された値‘１’のマスク画素に対応する重ね画像の画素は原画像に重ねられ、クロスハッチングが施されていない値‘０’のマスク画素に対応する部分は原画像がそのまま残ることを示している。なお、マスクデータは二値データでありデータ量が少なくて済む。また、重ね画像のある特定の色、例えば白色の画素に対応する原画像の画素には、重ね画像の画素を重ねないようにすることもできるが、そうすると、その特定の色を重ねる画像の色として使用することができなくなってしまうので、本実施形態ではマスクデータを使用する。
【００１９】
具体的な画像合成は図３Ａに示した座標変換テーブル３ｃにしたがって行う。この例では、原画像に拡大した重ね画像を重ねることになる。縦（ｙ）方向について、原画像のｙ＝０行およびｙ＝１行には重ね画像のｙ’＝０行が重なり、原画像のｙ＝２行には重ね画像のｙ’＝１行が重なり、…、原画像のｙ＝５行およびｙ＝６行には重ね画像のｙ’＝４行が重なり、…、原画像のｙ＝１０行には重ね画像のｙ’＝８行が重なる。つまり、原画像１１行に対して重ね画像が９行なので、重ね画像のｙ’＝０行およびｙ’＝４行を重複して原画像に重ねている。
【００２０】
また、横（ｘ）方向について、原画像のｘ＝０列およびｘ＝１列には重ね画像のｘ’＝０列が重なり、原画像のｘ＝２列には重ね画像のｘ’＝１列が重なり、…、原画像のｘ＝４列およびｘ＝５列には重ね画像のｘ’＝３列が重なり、…、原画像のｘ＝６列には重ね画像のｘ’＝４列が重なり、…、原画像のｘ＝８列およびｘ＝９列には重ね画像のｘ’＝６列が重なり、…、原画像のｘ＝１０列には重ね画像のｘ’＝７列が重なり、…、原画像のｘ＝１２列およびｘ＝１３列には重ね画像のｘ’＝９列が重なり、…、原画像のｘ＝１５列には重ね画像のｘ’＝１１列が重なる。つまり、原画像１６列に対して重ね画像が１２列なので、重ね画像のｘ’＝０列、ｘ’＝３列、ｘ’＝９列およびｘ’＝１１列を重複して原画像に重ねている。
【００２１】
図８は図５に示した画像合成を具体的に説明するための図である。図８は、図７同様、画素を少なくし、大きく拡大するとともに、あたかも二値画像の合成を行うように示しているが、これらは説明を容易にするための処理であり、実際の処理は多数の多値画素を合成するものである。図８（ａ）は原画像を、同図（ｂ）は重ね画像を、同図（ｃ）はマスクを、同図（ｄ）は合成画像を、それぞれ表している。
【００２２】
具体的な画像合成は図３Ｂに示した座標変換テーブル３ｃにしたがって行う。この例では、原画像に縮小した重ね画像を重ねることになる。縦（ｙ）方向について、原画像のｙ＝０行には重ね画像のｙ’＝０行が重なり、…、原画像のｙ＝２行には重ね画像のｙ’＝２行が重なり、原画像のｙ＝３行には重ね画像のｙ’＝４行が重なり、…、原画像のｙ＝５行には重ね画像のｙ’＝７行が重なり、原画像のｙ＝６行には重ね画像のｙ’＝８行が重なる。つまり、原画像７行に対して重ね画像が９行なので、重ね画像のｙ’＝３行およびｙ’＝６行を削除する。
【００２３】
また、横（ｘ）方向について、原画像のｘ＝０列には重ね画像のｘ’＝０列が重なり、…、原画像のｘ＝４列には重ね画像のｘ’＝５列が重なり、…、原画像のｘ＝７列には重ね画像のｘ’＝８列が重なり、原画像のｘ＝８列には重ね画像のｘ’＝１０列が重なり、原画像のｘ＝９列には重ね画像のｘ’＝１１列が重なる。つまり、原画像１０列に対して重ね画像が１２列なので、重ね画像のｘ’＝４列およびｘ’＝９列を削除する。
【００２４】
しかし、上記のように行や列を削除して画像を合成する場合、例えば、重ね画像のｙ’＝３行およびｙ’＝６行を原画像に重ねないと、ｙ’＝２行とｙ’＝４行の色の差、ｙ’＝６行とｙ’＝７行の色の差がそれぞれ、ｙ＝２行とｙ＝３行、ｙ＝６行とｙ＝７行に反映されることになり、大きな色の差が発生する可能性がある。この大きな色の差の発生を避けるために、重ね画像の中に原画像に重ねられない行や桁、つまり座標変換テーブル３ｃ上で重ね座標ｘ’やｙ’の欄に現れない行や列は、例えば、その直前の行や列との間で画素値の平均をとり、合成画像において隣接する行や列の色の差が大きくならないようにする。なお、重ね画像が原画像よりもかなり大きい場合は、原画像の一行または一列に、重ね画像の三行または三列以上が対応する場合も考えられるが、その場合、それらの行や列をすべて含めて平均化したり、直前の行や列から遠くなるほど重みを軽減する重み付け平均化を行うなどの処理を行う。
【００２５】
図９は図３Ｃに示した画像合成を具体的に説明するための図である。図９は、図７同様、画素を少なくし、大きく拡大するとともに、あたかも二値画像の合成を行うように示しているが、これらは説明を容易にするための処理であり、実際の処理は多数の多値画素を合成するものである。図９（ａ）は原画像を、同図（ｂ）は重ね画像を、同図（ｃ）はマスクを、それぞれ表している。
【００２６】
具体的な画像合成は図３Ｃに示した座標変換テーブル３ｃにしたがって行う。この例では、横方向に縮小し、縦方向に拡大した重ね画像を原画像に重ねることになる。つまり、原画像１４行に対して重ね画像が９行なので、重ね画像のｙ’＝０行、ｙ’＝３行、ｙ’＝５行、ｙ’＝７行およびｙ’＝８行を重複して重ねる。また、原画像１０列に対して重ね画像が１２列なので、重ね画像のｘ’＝２列、ｘ’＝６列およびｘ’＝１０列については、前述したように、直前の列の画素との例えば平均値を原画像に重ねる。
【００２７】
このように、本実施形態によれば、重ね画像の縦の画素数だけが原画像よりも大きかったり、逆に重ね画像の横の画素数だけが原画像よりも大きかったりする場合（例えば、原画像と重ね画像の縦長／横長が逆の場合など）でも、重ね画像を適切に変倍し、上述したように、例えば画素値を平均化しながら合成を行うことができる。
【００２８】
なお、縦と横の画素数がどちらも等しい二つの画像の合成については説明するまでもないが、それら二画像の画素は一対一で対応するから、行および列が一対一で対応する座標変換テーブル３ｃを用意すればよい。
【００２９】
［処理の流れ］
以下、画像合成処理の詳細を説明する。
【００３０】
まず、アプリケーションプログラム２ｂの起動が指示されると、ＲＯＭ２からアプリケーションプログラム２ｂや、画像を合成するための画像処理プログラム２ｂ１などが読出され、ＲＡＭ３のメモリ領域に格納される。ただし、画像処理プログラム２ｂ１は、アプリケーションプログラム２ｂから呼ばれた際に読出すようにすることもでき、ＲＡＭ３のメモリ領域を節約することができる。また、ＲＡＭ３には、原画像データ領域ａ３、重ね画像データ領域３ｂ、座標変換テーブル領域３ｃを確保する必要があるが、それぞれが必要になった時点でメモリ領域を確保するようにすれば、やはりＲＡＭ３のメモリ領域を節約することができる。ＲＡＭ３のメモリ領域の節約は、メモリ領域を使用する他の処理を行う際などに効果的である。
【００３１】
図１０は本発明にかかる画像合成処理の一例を示すフローチャートで、起動されたアプリケーションプログラム２ｂが、各種の初期設定や、画像の呼び出しに関する処理を行った後に実行する処理を示している。。
【００３２】
また、図２に示したように、フルカラー画像データの各画素は、ＲＧＢ各１バイト、合計３バイトの情報をもつ。以下の説明では、各画素ごとの処理はＲＧＢそれぞれ独立に計算して、ＲＧＢをまとめて１画素としているものとする。
【００３３】
編集したい画像が呼び出されと、図１０に示すステップＳ１において、編集画像、つまり原画像と重ね画像がＲＡＭ３の所定領域に格納される。ここで、原画像は例えば図４（ａ）や図５（ａ）に示した画像であり、重ね画像は図４（ｂ）や図５（ｂ）に示した画像である。両画像のデータの形式が異なる、例えば、原画像がフルカラーであり、重ね画像が白黒などの場合は、ステップＳ１において、どちらか一方の画像のデータ形式を他方の画像のデータ形式に一致させる処理を行う。
【００３４】
縦および／または横の画素数が異なる二枚の画像を合成する場合は、一方の画像の画素数に合わせて、他方の画像データの画素数を変倍しなければならない。その時に必要になるのが座標変換テーブルをステップＳ２で作成する。
【００３５】
座標変換テーブルは、原画像の水平方向の座標をｘ、垂直方向の座標をｙ、横画素数をｗ、縦画素数をｈとし、重ね画像の水平方向の座標をｘ’、垂直方向の座標をｙ’、横画素数をｗ’、縦画素数をｈ’とすると、例えば次式で与えられる。
ｘ’  ＝  ｘ  ×（（ｗ’  −  １）  ／  （ｗ  −  １））
ｙ’  ＝  ｙ  ×（（ｈ’  −  １）  ／  （ｈ  −  １））
【００３６】
この式によって、原画像の水平方向（ｘ座標）、垂直方向（ｙ座標）の各座標に対応する、重ね画像の座標を求めることができる。上式によって座標変換テーブル３ｃを求めると、図３Ａから３Ｃに示した座標変換テーブルが求まることになるが、同図に示したｘ’，ｙ’の値は説明を簡単にするために与えたものであり、必ずしも上式の計算結果と一致するものではない。
【００３７】
座標変換テーブルの作成が終了すると、画像合成を行うステップＳ３からＳ６の処理が開始される。座標データ変換テーブルを参照するステップＳ３、参照画素を判定するステップＳ４、画素値を平均化するステップＳ５および画素値を設定するステップＳ６は、原画像３ａのすべての画素に対して行われる。画像合成の詳細は図１１および図１２を用いて説明する。
【００３８】
本実施形態における画像合成は、原画像の縦と横の画素数と、重ね画像の縦と横の画素数との関係によって、二つの処理に分岐する。図４や図７に示した合成例のように、重ね画像の横と縦の画素数がいずれも原画像のそれよりも小さい場合、つまり平均化処理を行わない場合は、図１１のフローチャートに一例を示す処理を行う。また、図５や図９に示した合成例のように、平均化処理を行う場合は、図１２のフローチャートに一例を示す処理を行う。
【００３９】
つまり、画像合成を開始する際に、原画像と重ね画像の縦の画素数Ｈと横の画素数Ｗの比較を行う。そして、（原画像のＷ  ≧  重ね画像のＷ）かつ（原画像のＨ  ≧  重ね画像のＨ）の場合は、図１１に示すフローチャートの処理を行う。
【００４０】
図１１において、まず、原画像のすべての行に対して処理を行うための初期化として、ステップＳ１１で行カウンタｙに「０」をセットする。そして、ステップＳ１２で、すべての行について処理を終えたか否かを調べるために、行カウンタｙが原画像の高さ（縦画素数Ｈ）に達したか否かを判定し、到達（ｙ  ＝  Ｈ）であれば合成処理を終了する。また、未到達（ｙ  ＜  Ｈ）であればステップＳ１３で、ｘ＝０列から処理を行うために、列カウンタｘに「０」をセットし、ステップＳ１４で、すべての列について処理を終えたか否かを調べるために、列カウンタｘが原画像の幅（横画素数Ｗ）に達したか否かを判定する。そして、到達（ｘ  ＝  Ｗ）であればステップＳ１５で行カウンタに「１」を加え、次行を処理するためにステップＳ１２へ進む。
【００４１】
ｘ  ＜  Ｗの場合は、画素（ｘ，ｙ）を注目画素として、以後の合成処理を行う。ステップＳ３の座標変換テーブル参照処理では、画像変換テーブル３ｃから注目画素（ｘ，ｙ）に対応する（ｘ’，ｙ’）を取得する。そして、ステップＳ１６で、重ね画像上の画素（ｘ’，ｙ’）は原画像に重ねるべき画素であるか、重ねてはいけない画素であるかを判定するためにマスク値（ｘ’，ｙ’）を取得する。なお、マスクデータは、ステップＳ１において、重ね画像を呼び出す際にワーク領域３ｆに格納するか、あるいは、マスクデータが必要になる際にワーク領域３ｆに格納するようにすればよい。
【００４２】
そして、ステップＳ１７でマスク値（ｘ’，ｙ’）を判定して、マスク値が‘１’の場合はステップＳ６の画素値設定処理を行い、ステップＳ１８で列カウンタに「１」を加えた後、ステップＳ１４へ戻る。なお、ステップＳ６の画素値設定処理は、原画像の画素（ｘ，ｙ）に、重ね画像の画素（ｘ’，ｙ’）の値を設定するものである。また、マスク値が‘０’の場合はステップＳ６を実行せずにステップＳ１８へ進む。
【００４３】
以上のようにして、原画像のすべての画素に対して合成処理を行うと、ＲＡＭ３の他のメモリ領域を使用することなく、図４に示したような合成画像を得ることができる。
【００４４】
次に、（原画像のＷ  ＜  重ね画像のＷ）または（原画像のＨ  ＜  重ね画像のＨ）の場合は図１２に示すフローチャートの処理を行う。なお、図１２において、ステップＳ４、Ｓ５、Ｓ６ｂ以外の処理は図１１と同じであるから詳細な説明を省略する。また、図１２のステップＳ６ａの処理も、図１１のステップＳ６の処理と同じであるから詳細な説明を省略する。
【００４５】
ステップＳ３で（ｘ’，ｙ’）を取得した後、ステップＳ４の参照画素判定処理で、重ね画像の複数の画素を平均化するか否かを判定する。そして、平均化する場合はステップＳ５で画素値平均化処理を行い、ステップＳ６ｂで原画像の画素（ｘ，ｙ）に得られた平均値を設定する。
【００４６】
図１３は画素値平均化処理の一例を示すフローチャートで、参照画素判定処理において、重ね画像上で参照すべき画素が何画素あり、それらはどの画素かは座標変換テーブル３ｃから分かるので、それら参照すべき画素ついて処理を行う。
【００４７】
まず、ステップＳ２１からＳ２３で、マスク値‘１’をもつ参照画素を計数するマスクカウンタ、参照画素の数を計数する画素数カウンタおよび画素値の合計を「０」に初期化する。以下、重ね画像上の参照画素すべてについて、ステップＳ２４の判定により、ステップＳ２５からＳ２９の処理を繰り返す。
【００４８】
ステップＳ２５では、重ね画像上の参照画素の一つに注目して、その画素に対応するマスク値が‘１’か否かを判定する。‘１’であればステップＳ２６で画素値の合計に注目参照画像の値を加え、ステップＳ２７でマスクカウンタに「１」を、ステップＳ２８で画素数カウンタに「１」を加えてステップＳ２４へ戻る。また、マスク値が‘０’の場合は、ステップＳ２９で画素値の合計に原画像の注目画素（ｘ，ｙ）の値を加え、ステップＳ２８で画素数カウンタに「１」を加えてステップＳ２４へ戻る。画素値の合計に原画像の注目画素（ｘ，ｙ）の値を加えるのは、マスクデータのオフの部分には、元の画像の画素値が生きるからである。このようにして、画素数カウンタには画素値を合計した画素の数が、マスクカウンタにはマスク値が‘１’の参照画素の数がそれぞれ格納される。
【００４９】
すべての参照画素について処理が終了すると、ステップＳ３０でマスクカウンタが零か否かを判定し、零であれば原画像に重ねる画素はないということなので、ステップＳ３２で原画像の注目画素の値を設定する画素値として処理を終了する。また、この場合、原画像の注目画素に新たな画素値を設定する必要もないので、例えば、フラグを立てて、画素値設定処理Ｓ６ｂにそれを伝えてもよい。また、マスクカウンタが零でなければ、ステップＳ３１で画素値の合計を画素数カウンタの値で割ることにより画素値の平均を求め、それを原画像の注目画素の値を設定する画素値として処理を終了する。
【００５０】
このように、本実施形態によれば、座標変換テーブルにより実質的に重ね画像を変倍して原画像に重ねるので、変倍画像を生成するためのメモリ領域を必要としない。従って、合成する二枚の画像を格納するメモリ領域だけで、新たなメモリ領域を必要とせずに、縦および／または横の画素数が異なる（サイズが異なる）二枚の画像を合成することができる。
【００５１】
【他の実施形態】
なお、本発明は、複数の機器（例えばホストコンピュータ，インタフェイス機器，リーダ，プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機，ファクシミリ装置など）に適用してもよい。
【００５２】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成されることは言うまでもない。この場合、記憶媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。プログラムコードを供給するための記憶媒体としては、例えば、フロッピディスク，ハードディスク，光ディスク，光磁気ディスク，ＣＤ−ＲＯＭ，ＣＤ−Ｒ，磁気テープ，不揮発性のメモリカード，ＲＯＭなどを用いることができる。
【００５３】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００５４】
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００５５】
また、上記の実施形態では、原画像にサイズを合わせる例を説明したが、重ね画像の方にサイズを合わせることも可能である。その場合は、原画像と重ね画像との関係を逆にし、原画像のマスクデータを生成して、上記と同様の処理を行えばよい。
【００５６】
また、上記も実施形態では、マスクデータとして二値データを採用したが、白黒多値データをマスクデータにすれば、より表現力のある合成を行うことが可能である。その場合は、マスク値が１００％を表す場合は、重ね画像の対応する画素値をそのまま原画像に設定し、マスク値が３０％を表す場合は、重ね画像の対応する画素値に０．３を掛けた値と、原画像の対応する画素値に０．７を掛けた値とを平均化して、原画像に設定するなどの処理を行う。
【００５７】
また、上記の実施形態では、図９に示したように、原画像がポートレートで、重ね画像がランドスケープの場合（その逆の場合も）、重ね画像を変倍してポートレートにする例を説明したが、重ね画像を９０度回転した後に変倍すれば、重ね画像の歪みを低減することができる。図６は重ね画像を９０度回転させた後に画像合成を行った例を示す図である。
【００５８】
ただし、合成する二枚の画像を格納するメモリ領域以外に新たなメモリ領域を使用しないことを前提として、画像の回転を実現するには、変換テーブルを作成する処理において、重ね画像上の参照座標を９０度回転したものを仮想的に設定した変換テーブルを作成し、以後、重ね画像の座標を参照する場合は仮想的に設定した座標を参照するようにすればよい。すなわち、重ね画像の左上座標を（ｈ’−１，０）に、右上座標を（０，０）に、左下座標を（ｗ’−１，ｈ’−１）に、右下座標を（ｗ−１，０）に対応付けて考える。
【００５９】
なお、本実施形態によれば、重ね画像のデザインにより、重ね画像を回転したり、回転せずに原画像に合成することができるのは言うまでもない。また、回転する、回転しないを重ね画像のデザインによって分ける場合、例えば、重ね画像のデータ名に一定の規則性をもたせ、回転可能な重ね画像のデータ名には回転可能であることを表す文字や記号または文字列や記号列を加える方法もある。
【００６０】
本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明したフローチャートに対応するプログラムコードを格納することになるが、簡単に説明すると、図１４のメモリマップ例に示す各モジュールを記憶媒体に格納することになる。すなわち、少なくとも「対応テーブル作成」および「画像合成」の各モジュールのプログラムコードを記憶媒体に格納すればよい。
【００６１】
【発明の効果】
以上説明したように、本発明によれば、利用可能なメモリ領域が小さい場合でも複数の画像を合成することができる画像処理方法および装置を提供することができる。
【図面の簡単な説明】
【図１】本発明にかかるデータ処理装置の概略構成を示すブロック図、
【図２】本実施形態で扱うフルカラー画像データの構成例を示す図、
【図３Ａ】座標変換テーブルの例を示す図、
【図３Ｂ】座標変換テーブルの例を示す図、
【図３Ｃ】座標変換テーブルの例を示す図、
【図４】本実施形態による画像合成の一例を示す写真、
【図５】本実施形態による画像合成の一例を示す写真、
【図６】本実施形態による画像合成の一例を示す写真、
【図７】本実施形態による画像合成を説明する図、
【図８】本実施形態による画像合成を説明する図、
【図９】本実施形態による画像合成を説明する図、
【図１０】本実施形態の画像合成処理を説明するフローチャート、
【図１１】本実施形態の画像合成処理を説明するフローチャート、
【図１２】本実施形態の画像合成処理を説明するフローチャート、
【図１３】図１２に示す画素値平均化処理の詳細を説明するフローチャート、
【図１４】本発明にかかるプログラムコードが格納された記憶媒体のメモリマップ例を示す図である。
【図１】
0003634535.tif 000002
【図２】
0003634535.tif 000003
【図３Ａ】
0003634535.tif 000004
【図３Ｂ】
0003634535.tif 000005
【図３Ｃ】
0003634535.tif 000006
【図４】
0003634535.tif 000007
【図５】
0003634535.tif 000008
【図６】
0003634535.tif 000009
【図７】
0003634535.tif 000010
【図８】
0003634535.tif 000011
【図９】
0003634535.tif 000012
【図１０】
0003634535.tif 000013
【図１１】
0003634535.tif 000014
【図１２】
0003634535.tif 000015
【図１３】
0003634535.tif 000016
【図１４】
0003634535.tif 000017