(57)【特許請求の範囲】
【請求項１】
一枚の画像を元画像として、この元画像から異なる複数のサイズの画像を切り出す画像切り出し手段と、
前記画像切り出し手段により切り出した複数の画像を前記元画像と同じサイズにそれぞれ拡大する画像拡大手段と、
前記画像拡大手段により拡大された複数の同じサイズの画像の対応する画素の画素値を加算する画像合成手段と、
を備える画像合成装置。
【請求項２】
被写体を撮像する撮像手段と、
前記撮像手段より発生した被写体像を画像データとして記録する記録手段と、
切り出すサイズの情報が記憶されている情報記録手段と、
を備える請求項１記載の画像合成装置。
【請求項３】
前記画像拡大手段は矩形拡大のアルゴリズムに基づき行われ、拡大前の画像を構成する画素の中から１画素を選択してその値を複製することを特徴とする請求項１の画像合成装置。
【請求項４】
前記画像拡大手段は矩形拡大のアルゴリズムに基づき行われ、拡大前の画像を構成する複数の画素に重み付けを行い、その値を複製することを特徴とする請求項１記載の画像合成装置。
【請求項５】
前記元画像は撮像素子から取り込まれているスルー画像であることを特徴とする請求項１記載の画像合成装置。
【請求項６】
一枚の画像を元画像として、この元画像から異なる複数のサイズの画像を切り出す画像切り出し処理と、
前記画像切り出し手段により切り出した複数の画像を前記元画像と同じサイズにそれぞれ拡大する画像拡大処理と、
前記画像拡大処理により拡大された複数の同じサイズの画像の対応する画素の画素値を加算する画像合成処理からなる画像合成方法。
【請求項７】
一枚の画像を元画像として、この元画像から異なる複数のサイズの画像を切り出す画像切り出し手段と、
前記画像切り出し手段により切り出した複数の画像を前記元画像と同じサイズにそれぞれ拡大する画像拡大手段と、
前記画像拡大手段により拡大された複数の同じサイズの画像の対応する画素の画素値を加算する画像合成手段を実現するための画像合成プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、銀塩カメラの撮影方法の一つである露光間ズームと同等の効果を得た画像を得ることができる画像合成装置、画像合成方法及びプログラムに関するものである。
【０００２】
【従来の技術】
従来、銀塩カメラの撮影方法に、シャッターを開いた状態で光学ズームを行い流れるような光の軌跡を得る露光間ズームがある。露光間ズームを行うには、銀塩カメラを三脚などで固定し、シャッタースピードを長く設定し、シャッターが開いている間に光学ズームを変化させて撮影する。
【０００３】
また、電子撮像装置の一種として、デジタルカメラが広く知られている。近年、デジタルカメラは高画素化が進んでおり銀塩カメラに劣らないレベルの画像が得られるようになってきている。デジタルカメラは、画像を撮影して保存する記録モードと、保存されている画像を再生する再生モードといった機能を持っている。このデジタルカメラの記録モードにおいて画像を撮影する際に銀塩カメラと同じように光学ズームを用いて同等の露光間ズームの効果を得ることができる。
【０００４】
【発明が解決しようとする課題】
しかしながら、従来の銀塩カメラやデジタルカメラにおいて、露光間ズームを行うには、シャッタースピードを長く設定せざるを得ないためにカメラ本体を三脚にしっかり固定しなければならず、さらにその状態で光学ズームを変化させるといった、非常に手間のかかる作業になり手軽に撮影することができなかった。また、ズームレンズが無ければ銀塩カメラやデジタルカメラで露光間ズームを行うことは不可能であった。
【０００５】
本発明は、このような従来の課題に鑑てなされたものであり、１枚の画像データに対して拡大率を連続に変化させた拡大率の異なる複数の画像データを作成し、それらを合成することにより露光間ズームと同等の効果を得た画像を得る画像合成装置、画像合成方法及びプログラムを提供することを目的とするものである。
【０００６】
【課題を解決するための手段】
以上の課題を解決すべく請求項１記載の発明は、一枚の画像を元画像として、この元画像から異なる複数のサイズの画像を切り出す画像切り出し手段と、前記画像切り出し手段により切り出した複数の画像を前記元画像と同じサイズにそれぞれ拡大する画像拡大手段と、前記画像拡大手段により拡大された複数の同じサイズの画像の対応する画素の画素値を加算する画像合成手段とを備えることを特徴としている。
【０００７】
以上のように、請求項１記載の発明によれば、一枚の画像から複数の大きさの画像を切り出し、切り出し前の画像と同じ大きさに拡大した後、これらの画像を合成するようにしたので、手間をかけることなく光学ズームを用いた露光間ズームと同等の画像を得ることができる。
【０００８】
そして、請求項２記載の発明は、被写体を撮像する撮像手段と、前記撮像手段より発生した被写体像を画像データとして記録する記録手段と、切り出すサイズの情報が記憶されている情報記録手段とを備えることを特徴としている。
【０００９】
このように、請求項２記載の発明によれば、撮影した画像を記録し、切り出すサイズの情報に基づき複数の画像を切り出すので、カメラ本体を三脚に固定する必要がなくなり、手持ちの撮影において露光間ズームと同等の効果を得られる。
【００１０】
また、請求項３記載の発明は、画像合成装置における前記画像拡大手段は矩形拡大のアルゴリズムに基づき行われ、拡大前の画像を構成する画素の中から１画素を選択してその値を複製することを特徴としている。
【００１１】
このように、請求項３記載の発明によれば、簡単な整数演算のみで矩形の拡大を行える矩形拡大のアルゴリズムを用いることにより、ＣＰＵに負担をかけることなく、短い時間で画像の拡大、合成を行える。
【００１２】
また、請求項４記載の発明は、前記画像拡大手段は矩形拡大のアルゴリズムに基づき行われ、拡大前の画像を構成する複数の画素に重み付けを行い、その値を複製することを特徴としている。
【００１３】
このように、請求項４記載の発明によれば、矩形拡大のアルゴリズムにおいて、複数の画素を重み付けによって補間処理したことにより鮮明な画像を得ることができる。
【００１４】
また、請求項５記載の発明は、前記元画像は撮像素子から取り込まれているスルー画像であることを特徴としている。
【００１５】
このように、請求項５記載の発明によれば、ユーザーは実際のズーム合成画像を見ながら撮影ができる。
【００１６】
また、請求項６記載の発明は、一枚の画像を元画像として、この元画像から異なる複数のサイズの画像を切り出す画像切り出し処理と、前記画像切り出し手段により切り出した複数の画像を前記元画像と同じサイズにそれぞれ拡大する画像拡大処理と、前記画像拡大処理により拡大された複数の同じサイズの画像の対応する画素の画素値を加算する画像合成処理からなる画像合成方法を特徴としている。
【００１７】
このように、請求項６記載の発明によれば、一枚の画像から複数の大きさの画像を切り出し、切り出し前の画像と同じ大きさに拡大した後、これらの画像を合成する方法にしたので、手間をかけることなく光学ズームを用いた露光間ズームと同等の画像を得ることができる。
【００１８】
また、請求項７記載の発明は、一枚の画像を元画像として、この元画像から異なる複数のサイズの画像を切り出す画像切り出し手段と、前記画像切り出し手段により切り出した複数の画像を前記元画像と同じサイズにそれぞれ拡大する画像拡大手段と、前記画像拡大手段により拡大された複数の同じサイズの画像の対応する画素の画素値を加算する画像合成手段を実現するための画像合成プログラムを特徴としている。
【００１９】
このように、請求項７記載の発明によれば、一枚の画像から複数の大きさの画像を切り出し、切り出し前の画像と同じ大きさに拡大した後、これらの画像を合成するプログラムにしたので、手間をかけることなく光学ズームを用いた露光間ズームと同等の画像を得ることができる。
【００２０】
【発明の実施の形態】
以下本発明の実施の一形態について画像合成装置としてデジタルカメラ１００を用いた場合の実施の形態を図面を参照して説明する。
【００２１】
（第１の実施の形態）
図１にデジタルカメラ１００のブロック図を示す。デジタルカメラ１００は、記録モードと再生モードがある。記録モードでは、レンズ後方に配置されたＣＣＤ１によって取り込まれた画像データがＣＣＤ１を制御しているＣＣＤ制御部２と共に備わったＡ／Ｄ変換器（図示せず）でデジタルデータに変換され、ＹＵＶプロセッサ３に送られる。ＹＵＶプロセッサ３でカラープロセス処理され、デジタルの輝度、色差マルチプレクス信号（ＹＵＶデータ）とがメモリコントローラ５を介して画像メモリ４へと転送される。画像メモリ４はＲＡＭ等のメモリで構成される。
【００２２】
同時に、スルー画像表示を行うためにＹＵＶデータはメモリコントローラ５を介してビデオエンコーダ６にも送られ、ビデオエンコーダ６はＹＵＶデータを周期的に読み出し、これらのデータを元にビデオ信号を発生してビデオ出力部７へ出力すると同時にビデオ信号は表示部１４にも出力される。表示部１４は液晶表示装置など構成される。これにより表示部１４には、現在のＣＣＤ１から取り込んでいる画像情報に基づく画像が表示される。
【００２３】
このように表示部１４に現在画像が表示されている状態で、記録保存を行いたいタイミングでシャッターキー１２を操作すると、キー処理部１１はシャッターキー１２の入力が処理され、ＣＰＵ９は、現在のＣＣＤ１から取り込んでいるＹＵＶデータをメモリコントローラ５を介して画像メモリ４へ転送後、直ちにＣＣＤ１からの画像メモリ４への経路を停止し、記録保存状態に遷移する。この記録保存状態では、ＣＰＵ９が画像メモリ４に書き込まれているＹＵＶデータを圧縮処理し、記録媒体１０に書き込む。記録媒体１０は不揮発性メモリであるフラッシュメモリなどである。不揮発性メモリは着脱可能のものでもよい。そして、ＹＵＶデータの圧縮処理及びフラッシュメモリへの圧縮データの書き込み終了に伴って、ＣＰＵ９は再度ＣＣＤ１から画像メモリ４への経路を起動する。
【００２４】
再生モードでは、ＣＰＵ９はＣＣＤ１から画像メモリ４への経路を停止する。各種キー部１３の操作により記録されている画像から選択をすると、キー処理部１１は入力処理をし、ＣＰＵ９がフラッシュメモリから圧縮データを読み出して、伸長処理を行い、画像メモリ４にＹＵＶデータを展開する。すると、ビデオエンコーダ６は、ＹＵＶデータを元にビデオ信号を発生し、ビデオ出力部７へ出力すると共に表示部１４にも出力し表示を行う。
【００２５】
データ通信部８は撮影され記録された画像や既に記録媒体１０に記録されている画像を外部機器へ、例えばパソコン等へ送信又は外部機器からの画像の受信を行う。通信は無線でも有線（ＵＳＢなど）でもどちらでも良い。
【００２６】
各種キー部１３の操作において、露光間ズームと同等の画像を得るモード、つまりズーム合成撮影モードになっていると、まず画像メモリ４に格納されたシャッターキー１２が押された瞬間の画像データを元画像として複数段階にズームした複数の画像を作成する。そしてこれらの画像を合成することにより露光間ズームによって得られる画像と同等のズーム合成画像を作成する。合成された画像はビデオエンコーダ６を通してビデオ出力部７へ出力されると共に表示部１４にも出力し、記録媒体１０にも記録される。また、元画像はＣＣＤ１から取り込まれた画像だけでなく、既に記録媒体１０に記録された画像や、データ通信部８を通して送られてきた画像でもよく、それらの画像に対してもズーム合成画像を作成することができる。
【００２７】
図２にズーム合成の原理を示す。画像１２はＣＣＤ１から取り込んだ元画像である。画像１３は元画像の一部分を拡大処理した１段階ズームアップの画像である。画像１４は１段階ズームアップの画像を拡大処理した２段階ズームアップの画像である。画像１５は２段階ズームアップの画像を拡大処理した３段階ズームアップの画像である。これらを画像合成すると画像１６のようなズーム合成画像を得ることができる。画像１６で滑らかなズーム合成画像を得るためには画像１２〜画像１５のズームアップ画像の各ズーム比を飛び飛びの値を取ることなく、できるだけ細かく変化するような値を取る必要がある。
【００２８】
次に滑らかなズーム比を得るためのズーム合成に必要なアルゴリズムとなる矩形拡大アルゴリズムについて図３（Ａ）〜図５（Ｂ）で説明する。図３（Ａ）及び図３（Ｂ）はズーム合成に必要な矩形拡大アルゴリズムの基礎となる線分発生アルゴリズムである。線分発生アルゴリズムは（Ｘ０，Ｙ０）から（ＸＮ，ＹＮ）に線分を引く場合に線分を構成するドットをどの座標に置くかを決めるものである。
【００２９】
図３（Ａ）に示すように理想的な直線は（Ｘ０，Ｙ０）と（ＸＮ，ＹＮ）を単純に結んだ直線であるが、デジタル画像においては点を配置できる座標は無限には存在しないので、理想的な直線に最も近い座標上に点を配置していく。始点は（Ｘ０，Ｙ０）であるが、ここは元々座標が存在するのでＸ０の時のＹ座標はＹ０になる。以下、Ｘが１増える毎に理想的な直線でＹは（ＹＮ−Ｙ０）／（ＸＮ−Ｘ０）ずつ増えることになる。Ｘ１の時のＹ座標は理想的にはＹ０＋（ＹＮ−Ｙ０）／（ＸＮ−Ｘ０）であるが図３（Ａ）の×印で示すように最も近いＹ１が選択される。次にＸ０＝０、ＸＮ＝１６、Ｙ０＝０、ＹＮ＝１０として座標が決定される様子を示す。Ｘが１増えたときのＹの増加分は（ＹＮ−Ｙ０）／（ＸＮ−Ｘ０）＝１０／１６＝０．６２５となる。また、（Ｘ０，Ｙ０）においてＹ座標からの誤差（Ｙの誤差）０である。Ｘ１の時のＹの誤差は、０＋０．６２５＝０．６２５である。Ｙの誤差が０．５よりも大きいか否かによってＹ座標が決定される。この場合０．５よりも大きいのでＹ座標は１増えて１（Ｙ１）になる。Ｙ座標が１増えたので、この時Ｙの誤差から１を減算しておくことによりＹの誤差は０．６２５−１＝−０．３７５になる。Ｘ２の時のＹの誤差は、−０．３７５＋０．６２５＝０．２５になる。Ｙの誤差は０．５以下なのでＹ座標は１（Ｙ１）のままである。Ｙの誤差もそのままになる。以下同様に、Ｙの誤差に０．６２５を加算して０．５より大きいか否かを判別していくと、図３（Ａ）で示すような直線（×印）が得られる。
【００３０】
図３（Ｂ）のフローチャートは、上記で説明した動作をコンピュータで処理しやすくするために整数演算のみで実現したものである。上記での説明では、Ｙの誤差の初期値を０として、Ｙの増加分を加えたときに０．５より大きいか否かを判別していたが、まず誤差の初期値を−０．５にして、Ｙの増加分を加えたときに０より大きいか否かによって判別するようにした。ΔＹ＝ＹＮ−Ｙ０、ΔＸ＝ＸＮ−Ｘ０とすると、誤差の初期値は−０．５で誤差はＥｉ＋１＝Ｅｉ＋ΔＹ／ΔＸ＞０で判別する。（この条件を満たしていればＥｉ＋１＝Ｅｉ−１）次に誤差の判別を誤差を２ΔＸ倍したもので行うように変更する。すると、誤差の初期値は−ΔＸになり誤差はＥｉ＋１＊２ΔＸ＝Ｅｉ＊２ΔＸ＋２ΔＹ＞０で判別することになる。（この条件を満たしていればＥｉ＋１＝Ｅｉ−２ΔＸ）
【００３１】
以上のアルゴリズムの動作を図３（Ｂ）のフローチャートに沿って説明する。まず、Ｘの初期座標をＸ０、Ｙの初期座標をＹ０に設定する（Ｓ１）。次に誤差Ｅの初期値を−ΔＸ＝−（ＸＮ−Ｘ０）に設定する（Ｓ２）。座標（Ｘ，Ｙ）に点を描き（Ｓ３）、誤差Ｅに２ΔＹ＝２（ＹＮ−Ｙ０）を加算し（Ｓ４）、誤差Ｅが０よりも大きいか否かを判別し、誤差Ｅが０以下の場合はそのまま抜け、誤差Ｅが０よりも大きければ（Ｓ５）誤差Ｅから２ΔＸを減算し（Ｓ６）、Ｙ座標をインクリメントする（Ｓ７）。次にＸ座標をインクリメントする（Ｓ８）。Ｘ座標がＸＮを超えるまで（Ｓ９）上記の処理を繰り返す。
【００３２】
図４（Ａ）〜図４（Ｃ）には図３（Ａ）及び図３（Ｂ）に示した線分発生アルゴリズムを用いて線分を伸張することができる線分伸張アルゴリズムを示す。図４（Ａ）に示すようにＳ０からＳＮのドットからなる線分ＳをＤ０からＤＮのドットからなる線分Ｄに伸張する。その原理は、図３（Ａ）のＸ座標を伸張先の線分Ｄ、Ｙ座標を元の線分Ｓに置き換えればよい（図４（Ｂ））。
【００３３】
線分伸張アルゴリズムを図４（Ｃ）のフローチャートに沿って説明する。まず、伸張先の線分Ｄの初期画素をＤ０、伸張元の線分Ｓの初期画素をＳ０に設定する（Ｓ１０）。線分Ｓの誤差Ｅの初期値を−ΔＤ＝（ＤＮ−Ｄ０）に設定する（Ｓ１１）。線分ＳのドットＳ（初期状態はＳ０。）を線分ＤのドットＤ（初期状態はＤ０。）にコピーする（Ｓ１２）。誤差Ｅに２ΔＳ＝２（ＳＮ−Ｓ０）を加算して（Ｓ１３）、誤差Ｅが０よりも大きいか否かを判別し、誤差Ｅが０以下ならばそのまま抜け、誤差Ｅが０よりも大きければ（Ｓ１４）誤差Ｅから２ΔＤを減算し（Ｓ１５）同時に伸張元の線分Ｓのドットをインクリメント（次のドットを選択。）する（Ｓ１６）。次に伸張元のＤのドットをインクリメント（次のドットを選択。）する（Ｓ１７）。ＤのドットがＤＮを超えるまで（Ｓ１８）、全てのドットの処理が終了するまで上記の処理を繰り返す。
【００３４】
図５（Ａ）及び図５（Ｂ）に図４（Ａ）〜図４（Ｃ）で示した線分伸張アルゴリズムを応用して２次元に拡張すると矩形の拡大ができる矩形拡大アルゴリズムを示す。図５（Ａ）に示すように横ＸＳ０〜ＸＳＮ、縦ＹＳ０〜ＹＳＮからなる矩形Ｓを横ＸＤ０〜ＸＤＮ、縦ＹＤ０〜ＹＤＮからなる矩形Ｄに拡大する。
【００３５】
縦方向ではラインＹＳ０〜ＹＳＮをラインＹＤ０〜ＹＤＮに水増しするために図４（Ａ）〜図４（Ｃ）で示した線分伸張アルゴリズムを使う。ラインＹＤ０にはラインＹＳ０が、ラインＹＤ１とラインＹＤ２にはラインＹＳ１がコピーされる。ラインが決定するとライン内のドットは図４（Ａ）〜図４（Ｃ）示した線分伸張アルゴリズムを用いて伸張できる。
【００３６】
上記に示す矩形拡大アルゴリズムを図５（Ｂ）のフローチャートで説明する。網掛け以外の部分（Ｓ１９、Ｓ２０、Ｓ３０〜Ｓ３５）がラインを水増しする処理であり、網掛け部分（Ｓ２１〜Ｓ２９）がライン内のドットを伸張する処理である。まず、ラインを水増しするために矩形Ｓの初期ラインをＹＳ０、矩形Ｄの初期ラインをＹＤ０に設定する（Ｓ１９）。ラインを水増しするための誤差ＥＹの初期値を−ΔＹＤ＝−（ＹＤＮ−ＹＤ０）に設定する（Ｓ２０）。この後にライン内のドットの伸張を行う（網掛け部分。）。この網掛け部分（Ｓ２１〜Ｓ２９）は図４（Ｃ）で説明したフローチャートＳ１０〜Ｓ１８に相当し同じであるため説明は省略する。次に誤差ＥＹに２ΔＹＳ＝２（ＹＳＮ−ＹＳ０）を加算する（Ｓ３０）。誤差ＥＹが０よりも大きいか否かを判別し、誤差ＥＹが０以下ならばそのまま抜け、誤差ＥＹが０よりも大きければ（Ｓ３１）誤差ＥＹから２ΔＹＤを減算し（Ｓ３２）、同時に転送元のラインＹＳをインクリメント（次のラインを選択。）する（Ｓ３３）。次に転送先のラインＹＤのをインクリメント（次のラインを選択。）する（Ｓ３４）。ＹＤのラインがＹＤＮを超えるまで（Ｓ３５）、全てのラインの処理が終了するまで上記の処理を繰り返す。
【００３７】
この矩形拡大アルゴリズムを用いれば、任意の大きさの矩形を任意の大きさの矩形に拡大することができるため、元画像に対してズーム比が細かく変化する複数の画像を用意することができる。また、簡単な整数演算のみで矩形の拡大を行うことができるのでＣＰＵ９に負担をかけることなく、短い時間でズーム合成画像を得ることができる。
【００３８】
次に、図６（Ａ）に複数のサイズの画像を切り出すための切り出し画像の情報テーブルを示す。ズーム比を連続して変化させる場合に切り出す元画像の左上の座標と画像サイズをまとめたテーブルである。図６（Ａ）では元画像の大きさは１２８０×９６０である。元画像を１段階ズームアップするときに切り出す画像の左上座標は（４，３）であり、画像サイズは１２７２×９５４である。また、２段階ズームアップするときは切り出す画像の左上座標は（８，６）である。同様に複数段階のズームアップに対する左上座標と画像サイズがテーブルになっている。切り出した各画像は図５（Ａ）及び図５（Ｂ）で示した矩形拡大アルゴリズムによってそれぞれ１２８０×９６０の画像に拡大される。
【００３９】
図６（Ｂ）には切り出した画像の矩形拡大されたイメージを示す。切り出した画像の左上座標は（３２０，２４０）で画像サイズが６４０×４８０である場合、矩形拡大アルゴリズムによって１２８０×９６０の画像に拡大された場合を示す。
【００４０】
図６（Ｂ）に示すように画像の中心をズームアップして複数のズーム画像を得ていたが、画像の中心から任意の方向に一定間隔でズームアップの中心を移動させながらズーム画像を得ることも可能である。また、元画像から複数のズーム画像を作成していたが、前回切り出して矩形拡大した画像からズーム画像を作成しても良い。この場合切り出し画像の左上の座標と画像サイズを一定にすることができるので、図６（Ａ）に示すような切り出し画像の情報テーブルが不必要になる。
【００４１】
さらに、滑らかなズーム合成画像を得るために切り出し画像の情報テーブルの切り出し画像サイズを細かく設定していたが、切り出し画像サイズを粗く設定することにより、光学ズームでは得ることのできない全く新しいズーム合成画像を得ることができる。
【００４２】
図７には拡大された画像の合成方法を説明する。画像データはＲＧＢ３つの成分を持っており複数の画素から構成され、ＲＧＢの各成分毎に０〜２５５の値（８ｂｉｔ）を持っている。図７ではＲＧＢ成分の内、１つの成分の合成について説明する。画像１７と画像１８は合成の対象となる、ある成分の画像であり、画像１９は合成後のある成分の画像である。左上の画素に着目すると、画像１７は１１で画像１８は８であり、単純に加算すると画像１９では１９になる。その右隣の画素では画像１７は９で画像１８は７であり、単純に加算すると画像１９では１６になる。図７にはないが、加算した結果が２５５を超えた場合は２５５以上の値は削り２５５にする。ＲＧＢの各成分についても同様に合成することが可能である。
【００４３】
図８にズーム合成処理のフローチャートを示す。フローチャートにはないが、最初に目的のズームアップの大きさを各種キー部１３により×５、×１０、×２０というように指定しておく。ズーム合成撮影モードでシャッターキー１２が押されて撮影が行われたときは、まずＣＣＤ１から取り込んだ画像を画像メモリ４の一部を元画像バッファとして使用し、そこに格納する（Ｓ３６）。元画像バッファにはズーム合成処理中に、撮影が行われると、ＣＣＤ１から取り込んだ画像が常に格納される。これらの画像を元画像として複数のズーム画像を作成する。同時に画像メモリ４の一部を合成画像バッファとして使用し合成画像バッファにも取り込んだ画像を格納する（初期画像の設定）（Ｓ３７）。合成画像バッファは、ズーム合成処理中に前回のズーム比までの合成画像が格納されていて、新たなズーム比の画像が作成される度に合成画像バッファの画像に合成されていく。合成画像バッファに初期画像の設定が終わると、図６（Ａ）で説明したテーブルに従って、元画像バッファの画像を切り出す（Ｓ３８）。切り出した画像は、矩形拡大処理を行って元画像と同じサイズに拡大する（Ｓ３９）。矩形拡大した画像は、合成画像バッファの画像と合成され、再び合成画像バッファに格納される（Ｓ４０）。目的の大きさまでのズームアップが完了するまでＳ３８からの処理を繰り返し行う（Ｓ４１）。目的の大きさまでのズームアップが完了したらその画像はズーム合成画像として記録媒体１０に保存する。
【００４４】
以上のように撮影した１枚の元画像から連続的に大きさの変化する複数の矩形を切り出し、切り出した複数の矩形を元画像と同じ大きさに矩形拡大した後、これらの合成画像を得るようにしたので、簡単に光学ズームを用いた露光間ズームで撮影した画像と同等の画像を得ることが可能である。また、１枚普通に撮影すればいいので光学ズームを用いるときのようにカメラを三脚で固定する必要がなく、カメラを手で持って撮影することができる。
【００４５】
（第２の実施の形態）
今まで説明したズーム合成処理の矩形拡大アルゴリズムは、拡大後の画像を構成する任意の画素は拡大前の画像を構成する画素の中から理想位置に最も近い１画素を選択してその値をそのままコピーする方法を用いた。次に、拡大後の画像を構成する任意の画素は、拡大前の画像を構成する理想位置周辺の複数の画素に重み付けを行った後、その値をコピーする方法について説明する。図９（Ａ）〜図１０（Ｂ）において、重み付けを用いた矩形拡大アルゴリズムを示す。なお、ズーム合成処理での矩形拡大アルゴリズム以外のデジタルカメラ１００の動作及び切り出し画像の情報テーブル、ズーム合成処理等はすでに説明した第１の実施の形態と同じなので説明は省略する。
【００４６】
図９（Ａ）〜図９（Ｃ）は重み付けを用いた線分伸張アルゴリズムである。図９（Ａ）に示すようにＳ０からＳＮの（ｎ＋１）ドットからなる線分Ｓを、重み付けを用いてＤ０からＤＭの（ｍ＋１）ドットからなる線分Ｄに伸張する。図９（Ｂ）に示すように、まず線分Ｄの始点Ｄ０には線分Ｓの始点Ｓ０がそのままコピーされる。次に線分ＤがＤ０からＤ１に１増えると、理想的な線分Ｓの画素はＳ０（△印）とＳ１（▽印）の間のＳ０からｎ／ｍの位置（○印）になる。しかし、実際にはこの位置に画素は存在しないので画素Ｓ１と画素Ｓ２の値から算出する。Ｓ０からｎ／ｍの位置でＳ１から（ｍ−ｎ）／ｍの位置になるので、画素Ｄ１の値はＤ１＝Ｓ０＊（ｍ−ｎ）／ｍ＋Ｓ１＊ｎ／ｍの式で求められる。
【００４７】
さらに、線分ＤがＤ１からＤ２に１増えると、理想的な線分Ｓの画素はＳ０から２＊ｎ／ｍの位置にあることになる。このとき図９（Ｂ）で示すように２＊ｎ／ｍが１以上のときには、補間に使われる線分Ｓの画素はＳ１（△印）とＳ２（▽印）になり、理想的な線分Ｓの画素はＳ１から（２＊ｎ／ｍ）−１の位置（○印）にあると言える。画素Ｄ２の値はＤ２＝Ｓ１＊２（ｍ−ｎ）／ｍ＋Ｓ２＊（２ｎ−ｍ）／ｍの式で求められる。
【００４８】
これらを一般式で表すと、補間に使われる線分Ｓの画素をＳ（△印）、Ｓ´（▽印）とすれば画素Ｓ（△印）と理想位置（○印）との誤差は、誤差の初期値は０で誤差はＥｉ＋１＝Ｅｉ＋ｎ／ｍ≧１で判別する。（この条件を満たしていればＥｉ＋１＝Ｅｉ−１）Ｅｉ＋１＝Ｅｉ＋ｎ／ｍ≧１を満たしていれば、Ｅから１を減算すると共に補間に使われる画素Ｓ、Ｓ´を更新する。また、Ｓ（△印）とＳ´（▽印）から画素Ｄの値はＤ＝Ｓ＊（１−Ｅ）＋Ｓ´＊Ｅとなる。
【００４９】
図９（Ｃ）のフローチャートは、上記で説明した動作をコンピュータで処理しやすくするために、誤差の判別の部分を整数演算で実現したものである。上記での説明では、誤差の初期値を０として、ｎ／ｍを加えたときに１以上か否かを判別していたが、まず誤差の初期値を−１にして、ｎ／ｍを加えたときに０以上か否かによって判別するようにした。誤差の初期値は−１で誤差はＥｉ＋１＝Ｅｉ＋ｎ／ｍ≧０で判別する。（この条件を満たしていればＥｉ＋１＝Ｅｉ−１）そしてＤ＝Ｓ＊（−Ｅ）＋Ｓ´＊（Ｅ＋１）となる。次に誤差の判別を誤差をｍ倍したもので行うように変更する。すると、誤差の初期値は−ｍになり誤差はＥｉ＋１＊ｍ＝Ｅｉ＊ｍ＋ｎ≧０で判別することになる。（この条件を満たしていればＥｉ＋１＝Ｅｉ−ｍ）そしてＤ＝Ｓ＊（−Ｅ）／ｍ＋Ｓ´＊（Ｅ＋ｍ）／ｍとなる。
【００５０】
以上のアルゴリズムの動作を詳しく図９（Ｃ）のフローチャートに沿って説明する。まず、伸張先の線分Ｄの画素ＤをＤ０、伸張元の線分Ｓの補間に使用する１つ目の画素ＳをＳ０、補間に使用する２つ目の画素Ｓ´をＳ１に初期設定する（Ｓ４２）。次に線分Ｓの誤差Ｅの初期値を−ｍに設定する（Ｓ４３）。Ｄ＝Ｓ＊（−Ｅ）／ｍ＋Ｓ´＊（Ｅ＋ｍ）／ｍをＲＧＢ各成分毎に用いて転送先の画素ＤのＲＧＢ値を求める（Ｓ４４）。誤差Ｅにｎを加算して（Ｓ４５）、誤差Ｅが０よりも大きいか否かを判別し、誤差Ｅが０以下の場合はそのまま抜け、誤差Ｅが０よりも大きければ（Ｓ４６）誤差Ｅからｍを減算し（Ｓ４７）、同時に伸張元の線分Ｓの画素Ｓ、Ｓ´をインクリメント（次の画素を選択）する（Ｓ４８）。次に伸張先の線分Ｄの画素Ｄをインクリメント（次の画素を選択）する（Ｓ４９）。Ｄの画素がＤＭを超えるまで（Ｓ５０）、全ての画素Ｄの処理が終了するまで上記の処理を繰り返す。
【００５１】
次に、図１０（Ａ）及び図１０（Ｂ）に、図９（Ａ）〜図９（Ｃ）で示した重み付けを用いた線分伸張アルゴリズムを使用して矩形の拡大ができる矩形拡大アルゴリズムを示す。図１０（Ａ）に示すように横（ｎｘ＋１）ドット、縦（ｎｙ＋１）ドットからなる矩形を横（ｍｘ＋１）ドット、縦（ｍｙ＋１）ドットからなる矩形に拡大する。横（Ｘ）方向、縦（Ｙ）方向ともに、図９（Ａ）〜図９（Ｃ）で説明した線分伸張アルゴリズムを用いて、伸張元の矩形Ｓの４画素から伸張先の矩形Ｄの１画素の値を計算する。
【００５２】
上記の矩形拡大アルゴリズムを図１０（Ｂ）のフローチャートに沿って説明する。まず、伸張先の矩形Ｄの画素ＤのＹ座標ＹＤをＹＤ０、伸張元の矩形Ｓの補間に使用する１つ目のＹ座標ＹＳをＹＳ０、補間に使用する２つ目のＹ座標ＹＳ´をＹＳ１に初期設定する（Ｓ５１）。Ｙ方向の誤差ＥＹの初期値を−ｍｙに設定する（Ｓ５２）。この後にＸ方向の処理を行う。（網掛け部分）この網掛け部分（Ｓ５３〜Ｓ６１）はＹ座標が固定のまま、Ｘ座標のみが更新される。まず、伸張先の矩形Ｄの画像ＤのＸ座標ＸＤをＸＤ０、伸張元の矩形Ｓの補間に使用する１つ目のＸ座標ＸＳをＸＳ０、補間に使用する２つ目のＸ座標ＸＳ´をＸＳ１に初期設定する（Ｓ５３）。次にＸ方向の誤差ＥＸの初期値を−ｍｘに設定する（Ｓ５４）。この時点の２つのＹ座標ＹＳ、ＹＳ´と２つのＸ座標ＸＳ、ＸＳ´から補間に使用される矩形Ｓの４画素（ＸＳ，ＹＳ）（ＸＳ´，ＹＳ）（ＸＳ，ＹＳ´）（ＸＳ´，ＹＳ´）が決まる。補間の方法は図１１で説明するが、この４点の値から伸張先の矩形Ｄ上の１点（ＸＤ，ＹＤ）の画素のＲＧＢ値がそれぞれ求められる（Ｓ５５）。次に誤差ＥＸにｎｘを加算する（Ｓ５６）。
誤差ＥＸが０よりも大きいか否かを判別し、誤差ＥＸが０以下ならばそのまま抜け、誤差ＥＸが０よりも大きければ（Ｓ５７）誤差ＥＸからｍｘを減算し（Ｓ５８）同時に伸張元のＸ座標ＸＳ、ＸＳ´をインクリメントする（Ｓ５９）。次に伸張先のＸ座標ＸＤをインクリメント（次の画素を選択）する（Ｓ６０）。ＸＤの画素がＸＤＭを超えるまで（Ｓ６１）、全てのＸ座標の処理が終了するまで上記の処理を繰り返す。次に誤差ＥＹにｎｙを加算する（Ｓ６２）。誤差ＥＹが０よりも大きいか否かを判別し、誤差ＥＹが０以下ならばそのまま抜け、誤差ＥＹが０よりも大きければ（Ｓ６３）誤差ＥＹからｍｙを減算し（Ｓ６４）同時に伸張元のＹ座標ＹＳ、ＹＳ´をインクリメントする（Ｓ６５）。次に伸張先のＹ座標ＹＤをインクリメント（次のラインを選択）する（Ｓ６６）。ＹＤのラインがＹＤＭを超えるまで（Ｓ６７）、全てのＹ座標の処理が終了するまで上記の処理を繰り返す。
【００５３】
図１１では重み付けによる画像補間、伸張元の４画素から伸張先の１画素を補間する方法を説明する。図１０（Ａ）及び図１０（Ｂ）に示した矩形拡大アルゴリズムにより、伸張元の４画素Ｓ１（ＸＳ，ＹＳ）、Ｓ２（ＸＳ´，ＹＳ）、Ｓ３（ＸＳ，ＹＳ´）、Ｓ４（ＸＳ´，ＹＳ´）が決まる。さらに、Ｘ方向、Ｙ方向とも重み付けの値が、Ｘ方向はＳ＊（−ＥＸ）／ｍｘ＋Ｓ´＊（ＥＸ＋ｍｘ）／ｍｘであり、Ｙ方向はＳ＊（−ＥＹ）／ｍｙ＋Ｓ´＊（ＥＹ＋ｍｙ）／ｍｙなので、求めるＲＧＢ値は（（Ｓ１＊（−ＥＸ）／ｍｘ＋Ｓ２＊（ＥＸ＋ｍｘ）／ｍｘ）＊（−ＥＹ）／ｍｙ）＋（（Ｓ３＊（−ＥＸ）／ｍｘ＋Ｓ４＊（ＥＸ＋ｍｘ）／ｍｘ）＊（ＥＹ＋ｍｙ）／ｍｙ）で求められる。ＲＧＢそれぞれに対してこの式から算出すればよい。
【００５４】
このように伸張元の画像のうち４画素に対して重み付けによる補間を行って、伸張後の画像の画素の値を決定しているので、鮮明な画像を得ることができる。また、矩形の拡大方法として、縦方向、横方向ともに重み付けによる補間を行ったが、縦方向あるいは横方向のいずれか一方のみを重み付けによる補間を行い、残りの一方は図５（Ａ）及び図５（Ｂ）で示した通常の矩形拡大アルゴリズムを用いてもよい。これにより、ある程度の画質は保ちつつ、ＣＰＵ９の負担を軽くすることができる。
【００５５】
（第３の実施の形態）
次に、図１２に図５（Ａ）及び図５（Ｂ）で示した矩形拡大アルゴリズムと図１０（Ａ）及び図１０（Ｂ）で示した重み付けによる矩形拡大アルゴリズムを使い分けて行う、ズーム合成処理を説明する。
【００５６】
図１２のフローチャートにはないが、最初に目的のズームアップの大きさを各種キー部１３により×５、×１０、×２０というように指定しておく。ズーム合成撮影モードでシャッターキー１２が押されて撮影が行われたときは、まずＣＣＤ１より取り込んだ画像を画像メモリ４の一部を元画像バッファとして使用し、そこに格納する（Ｓ６８）。元画像バッファにはズーム合成処理中に、撮影が行われると、ＣＣＤ１から取り込んだ画像が常に格納される。これらの画像を元画像として複数のズーム画像を作成する。同時に画像メモリ４の一部を合成画像バッファとして使用し、合成画像バッファにも取り込んだ画像を格納する（Ｓ６９）。次に元画像バッファの画像を図６（Ａ）のテーブルに従って切り出す（Ｓ７０）。その画像がズーム比の最も小さな画像（最初の画像）あるいはズーム比の最も大きな画像（最後の画像）ならば（Ｓ７１）、図１０（Ａ）及び図１０（Ｂ）で示した重み付けによる矩形拡大アルゴリズムで処理をし（Ｓ７３）、それ以外の画像ならば重み付けを行わない図５（Ａ）及び図５（Ｂ）で示した矩形拡大アルゴリズムで処理をする（Ｓ７２）。矩形拡大した画像を合成画像バッファの画像と合成する（Ｓ７４）。目的の大きさまでズームアップが完了するまでＳ７０からの処理を繰り返す（Ｓ７５）。目的の大きさまでのズームアップが完了したらその画像はズーム合成画像として記録媒体１０に保存する。
【００５７】
以上のように２種類の矩形拡大アルゴリズムを使い分けることによりズーム開始とズーム終了の両端の画像は鮮明になり、それらの間を埋める動的な画像においてはＣＰＵの負担を軽くすることが可能となる。また、ズーム開始とズーム終了の画像に加え、間を構成するズーム画像のうち一定間隔毎に重み付けを行う矩形拡大アルゴリズムを用いたズーム画像を挿入することにより、ズーム合成画像の画質を高めることも可能である。
【００５８】
（第４の実施の形態）
上述した第１の実施の形態〜第３の実施の形態においては、ズーム合成処理はシャッターキー１２が押されて取り込まれた画像を元画像として合成処理を行ったが、第４の実施の形態として、シャッターキー１２が押される以前のスルー画像を元画像としてズーム合成処理を行う例を示す。デジタルカメラ１００の動作及び切り出し画像の情報テーブル、矩形拡大アルゴリズムはすでに説明した第１の実施の形態〜第３の実施の形態と同じなので説明は省略する。
【００５９】
この実施の形態では、最初に目的のズームアップの大きさを各種キー部１３により×５、×１０、×２０というように指定しておく。ズーム合成撮影モードになっていると、ＣＣＤ１から取り入れられた画像データが表示部１４でスルー画像表示されている状態でズーム合成処理が行われる。すなわち、前述した実施の形態１〜３でシャッターキー１２が操作された後、撮像し記憶する処理の段階で行なっていたズーム合成処理と同様の処理が、シャッターキー１２が操作される以前の撮像準備状態で随時行われ、この結果、ズーム合成された画像は随時ビデオ出力部７へ出力されると同時に表示部１４に出力される。これによって、撮像準備状態の時に常に表示部１４にはズーム合成画像が表示され、ユーザはズーム合成された撮影したい画像を表示部１４で確認しつつシャッターキー１２を押す。シャッターキー１２が押されるとその時、表示部１４に表示されているズーム合成画像が記録媒体１０に保存される。もちろん、この際に前述した実施の形態１〜３と同様にシャッターキー１２が押されたことにより取り込まれた画像を元画像として合成処理を行うようにしてもよい。
【００６０】
以上のように、シャッターキー１２を押す前からスルー画像表示の時点で、ズーム合成処理を行い表示部１４に表示するので、ユーザーはズーム合成画像を見ながら撮影ができる。したがって、ズーム合成画像を見た時点で撮影するかどうか選択ができるため、無駄な撮影記録を回避し、意図した画像が容易に得られる。
【００６１】
【発明の効果】
以上のように、請求項１記載の発明によれば、一枚の画像から複数の大きさの画像を切り出し、切り出し前の画像と同じ大きさに拡大した後、これらの画像を合成するようにしたので、手間をかけることなく光学ズームを用いた露光間ズームと同等の画像を得ることができる。
【００６２】
そして、請求項２記載の発明によれば、撮影した画像を記録し、切り出すサイズの情報に基づき複数の画像を切り出すので、カメラ本体を三脚に固定する必要がなくなり、手持ちの撮影において露光間ズームと同等の効果を得られる。
【００６３】
また、請求項３記載の発明によれば、簡単な整数演算のみで矩形の拡大を行える矩形拡大のアルゴリズムを用いることにより、ＣＰＵに負担をかけることなく、短い時間で画像の拡大、合成を行える。
【００６４】
また、請求項４記載の発明によれば、矩形拡大のアルゴリズムにおいて、複数の画素を重み付けによって補間処理したことにより鮮明な画像を得ることができる。
【００６５】
また、請求項５記載の発明によれば、元画像は撮像素子から取り込まれているスルー画像なので、実際のズーム合成画像を見ながら撮影ができる。
【００６６】
また、請求項６記載の発明によれば、一枚の画像から複数の大きさの画像を切り出し、切り出し前の画像と同じ大きさに拡大した後、これらの画像を合成する方法にしたので、手間をかけることなく光学ズームを用いた露光間ズームと同等の画像を得ることができる。
【００６７】
また、請求項７記載の発明によれば、一枚の画像から複数の大きさの画像を切り出し、切り出し前の画像と同じ大きさに拡大した後、これらの画像を合成するプログラムにしたので、手間をかけることなく光学ズームを用いた露光間ズームと同等の画像を得ることができる。
【図面の簡単な説明】
【図１】本発明装置のブロック図である。
【図２】ズーム合成の原理を示した図である。
【図３】（Ａ）は線分発生アルゴリズムを示した座標図である。
（Ｂ）は線分発生アルゴリズムを示したフローチャートである。
【図４】（Ａ）は線分伸張アルゴリズムを示した構造図である。
（Ｂ）は線分伸張アルゴリズムを示した座標図である。
（Ｃ）は分伸張アルゴリズムを示したフローチャートである。
【図５】（Ａ）は矩形拡大アルゴリズムを示した構造図である。
（Ｂ）は矩形拡大アルゴリズムを示したフローチャートである。
【図６】（Ａ）は切り出し画像の情報テーブルを示した図である。
（Ｂ）は切り出し画像のイメージを示した図である。
【図７】拡大後の画像の合成方法を示した図である。
【図８】ズーム合成処理のフローチャートである。
【図９】（Ａ）は重み付けによる線分伸張アルゴリズムを示した構造図である。
（Ｂ）は重み付けによる線分伸張アルゴリズムを示した座標図である。
（Ｃ）は重み付けによる線分伸張アルゴリズムを示したフローチャートである。
【図１０】（Ａ）は重み付けによる矩形拡大アルゴリズムを示した構造図である。
（Ｂ）は重み付けによる矩形拡大アルゴリズムを示したフローチャートである。
【図１１】重み付けによる画像補間を示した図である。
【図１２】２種類の矩形拡大アルゴリズムによるズーム合成処理のフローチャートである。
【符号の説明】
１  ＣＣＤ
２  ＣＣＤ制御部
３  ＹＵＶプロセッサ
４  画像メモリ
５  メモリコントローラ
６  ビデオエンコーダ
７  ビデオ出力部
８  データ通信部
９  ＣＰＵ
１０  記録媒体
１１  キー処理部
１００  デジタルカメラ
【図１】
0003861641.tif 000002
【図２】
0003861641.tif 000003
【図３】
0003861641.tif 000004
【図４】
0003861641.tif 000005
【図５】
0003861641.tif 000006
【図６】
0003861641.tif 000007
【図７】
0003861641.tif 000008
【図８】
0003861641.tif 000009
【図９】
0003861641.tif 000010
【図１０】
0003861641.tif 000011
【図１１】
0003861641.tif 000012
【図１２】
0003861641.tif 000013