(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-08-30
(45)【発行日】2022-09-07
(54)【発明の名称】画像処理装置、画像処理方法、及びプログラム
(51)【国際特許分類】
G09G 5/00 20060101AFI20220831BHJP
G09G 5/38 20060101ALI20220831BHJP
G09G 5/377 20060101ALI20220831BHJP
G09G 5/36 20060101ALI20220831BHJP
G09G 5/39 20060101ALI20220831BHJP
G06T 11/00 20060101ALI20220831BHJP
【FI】
G09G5/00 550H
G09G5/38 A
G09G5/36 520L
G09G5/00 530H
G09G5/36 520D
G09G5/36 530D
G09G5/00 530M
G06T11/00
(21)【出願番号】P 2021530654
(86)(22)【出願日】2020-07-01
(86)【国際出願番号】 JP2020025905
(87)【国際公開番号】W WO2021006160
(87)【国際公開日】2021-01-14
【審査請求日】2021-07-06
(31)【優先権主張番号】P 2019129580
(32)【優先日】2019-07-11
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】310021766
【氏名又は名称】株式会社ソニー・インタラクティブエンタテインメント
(74)【代理人】
【識別番号】100122275
【氏名又は名称】竹居 信利
(72)【発明者】
【氏名】大江 邦明
【審査官】塚本 丈二
(56)【参考文献】
【文献】特開2003-051029(JP,A)
【文献】特開2010-108389(JP,A)
【文献】特開2003-337958(JP,A)
【文献】特開平05-250468(JP,A)
【文献】特開2006-268649(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G09G 5/00-5/42
G06T 11/00
(57)【特許請求の範囲】
【請求項1】
ビットマップ画像を表す画像データと、所定の方法で定められた初期表示範囲とを受け入れる手段と、
前記初期表示範囲とは異なる目標表示範囲、及び、前記初期表示範囲から目標表示範囲までの時間経過に対応する変化量を示す関数fを設定し、前記設定された目標表示範囲の情報を整数値とするとともに、当該整数値化した目標表示範囲の情報を用いて前記関数fを補正し、当該補正した関数fを用いて所定の時刻Δtごとの前記画像データの表示範囲を非整数を許容して決定する設定手段と
前記設定された目標表示範囲の情報を用いて前記画像データに基づくラスタライズ処理を実行し、整数化された情報で表されるサイズのビットマップ画像を生成するラスタライズ処理手段と、
前記初期表示範囲の領域に前記画像データをラスタライズして得た初期ビットマップ画像または前記目標表示範囲の領域に前記画像データをラスタライズして得た目標ビットマップ画像の少なくとも一方を選択して用いて、所定の時刻Δtごとの前記画像データの表示範囲に拡大縮小した画像を生成し、当該所定の時刻Δtごとに表示する画像を得て、逐次的に表示範囲を変更した画像データのアニメーション描画を行い、アニメーション描画の終了後は、前記ラスタライズ処理手段が生成した、前記目標表示範囲に対応する、整数化された情報で表されるサイズのビットマップ画像を、前記設定手段が設定した目標表示範囲に描画する描画手段と、
を含
み、
前記描画手段は、逐次的に表示範囲を変更した画像データのアニメーション描画を行う所定の時刻Tまでの間、所定の方法で定められる時刻tcまでの0≦t<tcの期間は、前記初期ビットマップ画像を、所定の時刻Δtごとの前記画像データの表示範囲に拡大縮小して、当該所定の時刻Δtごとに表示する画像を得て描画し、当該、時刻tcより後の時刻0<tc≦t≦Tの期間は目標ビットマップ画像を、所定の時刻Δtごとの前記画像データの表示範囲に拡大縮小して、当該所定の時刻Δtごとに表示する画像を得て描画する画像処理装置。
【請求項2】
請求項
1に記載の画像処理装置であって、
前記描画手段は、前記tcを、前記関数fの変化量が最大となる、あるいは所定のしきい値を超える時刻として定める画像処理装置。
【請求項3】
請求項1
または2に記載の画像処理装置であって、
前記設定手段は、目標表示範囲を規定する規定情報を受け入れて、当該受け入れた規定情報に基づいて、整数値によって位置を規定した目標表示範囲を設定し、
前記描画手段は、前記規定情報が表す位置と、前記設定手段が設定した、整数値のサイズまたは位置との差を表す誤差の情報を用いて、前記目標表示範囲に対応する目標ビットマップ画像の表示範囲を定める画像処理装置。
【請求項4】
受入手段によりビットマップ画像を表す画像データと、所定の方法で定められた初期表示範囲とを受け入れ、
設定手段により前記初期表示範囲とは異なる目標表示範囲、及び、前記初期表示範囲から目標表示範囲までの時間経過に対応する変化量を示す関数fを設定し、前記設定された目標表示範囲の情報を整数値とするとともに、当該整数値化した目標表示範囲の情報を用いて前記関数fを補正し、当該補正した関数fを用いて所定の時刻Δtごとの前記画像データの表示範囲を非整数を許容して決定し、
ラスタライズ処理手段により、前記設定された目標表示範囲の情報を用いて前記画像データに基づくラスタライズ処理を実行し、整数化された情報で表されるサイズのビットマップ画像を生成し、
描画手段により前記初期表示範囲の領域に前記画像データをラスタライズして得た初期ビットマップ画像または前記目標表示範囲の領域に前記画像データをラスタライズして得た目標ビットマップ画像の少なくとも一方を選択して用いて、所定の時刻Δtごとの前記画像データの表示範囲に拡大縮小した画像を生成し、当該所定の時刻Δtごとに表示する画像を得て、逐次的に表示範囲を変更した画像データのアニメーション描画を行い、アニメーション描画の終了後は、前記ラスタライズ処理手段が生成した、前記目標表示範囲に対応する、整数化された情報で表されるサイズのビットマップ画像を、前記設定手段が設定した目標表示範囲に描画
し、
前記描画手段により、逐次的に表示範囲を変更した画像データのアニメーション描画を行う所定の時刻Tまでの間、所定の方法で定められる時刻tcまでの0≦t<tcの期間は、前記初期ビットマップ画像を、所定の時刻Δtごとの前記画像データの表示範囲に拡大縮小して、当該所定の時刻Δtごとに表示する画像を得て描画し、当該、時刻tcより後の時刻0<tc≦t≦Tの期間は目標ビットマップ画像を、所定の時刻Δtごとの前記画像データの表示範囲に拡大縮小して、当該所定の時刻Δtごとに表示する画像を得て描画する画像処理方法。
【請求項5】
コンピュータを、
ビットマップ画像を表す画像データと、所定の方法で定められた初期表示範囲とを受け入れる手段と、
前記初期表示範囲とは異なる目標表示範囲、及び、前記初期表示範囲から目標表示範囲までの時間経過に対応する変化量を示す関数fを設定し、前記設定された目標表示範囲の情報を整数値とするとともに、当該整数値化した目標表示範囲の情報を用いて前記関数fを補正し、当該補正した関数fを用いて所定の時刻Δtごとの前記画像データの表示範囲を非整数を許容して決定する設定手段と、
前記設定された目標表示範囲の情報を用いて前記画像データに基づくラスタライズ処理を実行し、整数化された情報で表されるサイズのビットマップ画像を生成するラスタライズ処理手段と、
前記初期表示範囲の領域に前記画像データをラスタライズして得た初期ビットマップ画像または前記目標表示範囲の領域に前記画像データをラスタライズして得た目標ビットマップ画像の少なくとも一方を選択して用いて、所定の時刻Δtごとの前記画像データの表示範囲に拡大縮小した画像を生成し、当該所定の時刻Δtごとに表示する画像を得て、逐次的に表示範囲を変更した画像データのアニメーション描画を行い、アニメーション描画の終了後は、前記ラスタライズ処理手段が生成した、前記目標表示範囲に対応する、整数化された情報で表されるサイズのビットマップ画像を、前記設定手段が設定した目標表示範囲に描画する描画手段と、
として機能させ
、
前記描画手段として機能させる際には、コンピュータに、逐次的に表示範囲を変更した画像データのアニメーション描画を行う所定の時刻Tまでの間、所定の方法で定められる時刻tcまでの0≦t<tcの期間は、前記初期ビットマップ画像を、所定の時刻Δtごとの前記画像データの表示範囲に拡大縮小して、当該所定の時刻Δtごとに表示する画像を得て描画させ、当該、時刻tcより後の時刻0<tc≦t≦Tの期間は目標ビットマップ画像を、所定の時刻Δtごとの前記画像データの表示範囲に拡大縮小して、当該所定の時刻Δtごとに表示する画像を得て描画させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置、画像処理方法、及びプログラムに関する。
【背景技術】
【0002】
パーソナルコンピュータや家庭用ゲーム機、携帯電話機、その他種々の電子機器において、画像データの表示が行われている。ここで表示しようとする画像データとして、例えばベクタデータ等、ラスタライズと呼ばれる処理によってビットマップ画像に変換されてから表示されることを前提としたデータも用いられている。
【0003】
ベクタデータは、描画範囲が拡大・縮小される場合も、それぞれの描画範囲に合わせてラスタライズを行うことで、一つのビットマップ画像を拡大・縮小する場合に比べて品質の劣化の少ない画像データとすることができる。しかしベクタデータのラスタライズは負荷の高い処理であるため、描画範囲のサイズや位置を変化させつつアニメーション描画する際に、変化中の描画範囲に合わせてラスタライズ処理を一々行うことは現実的でない。
【0004】
そこで従来から、ベクタデータについては、当初予定されている表示範囲に合わせたラスタライズ処理を行ってビットマップ画像を得ておき、当該ビットマップ画像を実際の描画範囲のサイズや位置に拡大・縮小、あるいは移動して描画することが行われている。
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、上記従来例の方法では、拡大・縮小の程度等によっては、画像データがぼやけるなど劣化してしまっていた。
【0006】
本発明は上記実情に鑑みて為されたもので、アニメーション描画する際などにおいて、ラスタライズによる処理負荷の上昇を抑制しつつ、描画される画像データの劣化を低減できる画像処理装置、画像処理方法、及びプログラムを提供することを、その目的の一つとする。
【課題を解決するための手段】
【0007】
上記従来例の問題点を解決するための本発明の一態様は、ビットマップ画像を表す画像データと、所定の方法で定められた初期表示範囲とを受け入れる手段と、前記初期表示範囲とは異なる目標表示範囲を設定する設定手段と、前記設定された目標表示範囲の情報を用いて、前記画像データに基づくラスタライズ処理を実行して、整数化された情報で表されるサイズのビットマップ画像を生成するラスタライズ処理手段と、前記ラスタライズ処理手段が生成したビットマップ画像を、前記設定手段が設定した目標表示範囲に描画する描画手段と、を含むこととしたものである。
【発明の効果】
【0008】
本発明によると、アニメーション描画する際などにおいて、ラスタライズによる処理負荷の上昇を抑制しつつ、描画される画像データの劣化を低減できる。
【図面の簡単な説明】
【0009】
【
図1】本発明の実施の形態に係る画像処理装置の構成例を表すブロック図である。
【
図2】本発明の実施の形態に係る画像処理装置の例を表す機能ブロック図である。
【
図3】本発明の実施の形態に係る画像処理装置による描画処理の例を表す説明図である。
【
図4】本発明の実施の形態に係る画像処理装置が行うアニメーションの描画処理の概要例を表す説明図である。
【発明を実施するための形態】
【0010】
本発明の実施の形態について図面を参照しながら説明する。本発明の実施の形態に係る画像処理装置1は、例えばパーソナルコンピュータや家庭用ゲーム機、あるいはスマートフォンやタブレット等の携帯端末であって、
図1に例示するように、制御部11と、記憶部12と、操作部13と、表示部14とを含んで構成されている。
【0011】
制御部11は、CPUやGPU(Graphics Processing Unit)などのプログラム制御デバイスを含んで構成される。この制御部11は、記憶部12に格納されたプログラムに従って動作し、例えばゲーム等のアプリケーションの処理を実行し、また、各種アプリケーションの処理等の過程で、画像データを描画し、表示する処理を実行する。
【0012】
本実施の形態では、この制御部11は、ビットマップ画像を表す画像データと、所定の方法で定められた初期表示範囲の設定とを受け入れ、上記受け入れた画像データが表すビットマップ画像を、上記初期表示範囲とは異なる目標表示範囲に描画して、当該描画の結果を表示する処理を実行する。この処理は例えば初期表示範囲から目標表示範囲に描画範囲を移動させるアニメーション描画の処理などである。
【0013】
本実施の形態の制御部11は、初期表示範囲とは異なる目標表示範囲を設定する。制御部11は、当該設定した目標表示範囲の情報を用いて、処理の対象となった画像データに基づくラスタライズ処理を実行する。制御部11は、このラスタライズ処理により、整数化された情報で表されるサイズのビットマップ画像を生成する。またこの制御部11は、当該生成されたビットマップ画像を、設定された目標表示範囲に描画する処理を実行する。この制御部11の動作については、後に詳しく述べる。
【0014】
記憶部12は、RAM等のメモリデバイスを少なくとも一つ含む。この記憶部12は、制御部11が実行するプログラム、及び当該プログラムによって処理されるデータを格納する。記憶部12はまた、制御部11のワークメモリとしても動作する。ここで、記憶部12に格納されたプログラムは、コンピュータ可読かつ非一時的な記録媒体に格納されて提供されて、この記憶部12に複写されたものであってもよい。
【0015】
操作部13は、キーボードやマウス、あるいはゲームコントローラ等から入力されるユーザの操作を表す情報を受け入れる。そして操作部13は、当該情報を制御部11に出力する。表示部14は、制御部11から入力される指示に従い、画像をディスプレイや、家庭用テレビジョン等に対して出力して表示させる。また、本実施の形態の画像処理装置1は、ネットワーク等を介して他の情報処理装置等と通信を行う通信手段を備えてもよい。
【0016】
本実施の形態の画像処理装置1の制御部11は、記憶部12に格納されたプログラムを実行することで、機能的に、
図2に例示するような構成を実現する。すなわちこの制御部11は、機能的には、設定処理部110と、ラスタライズ処理部111と、描画処理部112とを含んで構成される。ここで制御部11がCPUと、GPUとを備える場合、設定処理部110とラスタライズ処理部111とをCPUにより実現し、描画処理部112をGPUによって実現してもよい。
【0017】
また本実施の形態のここでの例では、記憶部12には描画する画面の情報を保持するためのフレームバッファ210の記憶領域が設定されているものとする。また、画像処理装置1は、アプリケーションやオペレーティングシステム等の処理として、ラスタライズの処理の対象となるベクタデータの指示と、その表示範囲の指示とが得られるものとする。ここでは、このベクタデータが、ビットマップ画像を表す画像データに相当する。
【0018】
以下の例では、画像処理装置1は、アプリケーションやオペレーティングシステム等の処理により、表示範囲の指示を行う。具体的な例として、以下の説明では、画像処理装置1は、
図3(a)に例示するように、フレームバッファ210上で第1の表示範囲(初期表示範囲と呼ぶ)を指示した後、
図3(b)または(c)に例示するように、フレームバッファ210の領域を拡大・縮小(
図3では60%縮小)した、第2の表示範囲(目標表示範囲と呼ぶ)を指示するものとする。
【0019】
さらに、画像処理装置1は、アプリケーションやオペレーティングシステム等の処理として、上記初期表示範囲から上記目標表示範囲まで表示範囲を時間経過とともに徐々に変化させる(アニメーション描画させる)ために、時間経過に対応する変化量を表す関数f(t)を併せて指示してもよい。この関数f(t)は例えば
図4に示される。
図4は、位置の変化量を表す例であり、初期表示範囲に対応する値P0から、目標表示範囲に対応するP1までの時刻0からTまでのΔt(Δt=T/N(Nは予め定めた自然数))ごとの変化量を表す。この
図4の例では、時刻tが「0」に近い時間では比較的急速に変化し、時刻tがTに近づくほど変化量が小さくなるように指定されている。
【0020】
設定処理部110は、ラスタライズして得たビットマップ画像の表示範囲を設定する。具体的にこの設定処理部110は、アプリケーションやオペレーティングシステム等から入力される指示に従い、フレームバッファ210上の所定の領域を表示範囲として設定する。
【0021】
具体的に
図3に例示するように、初期表示範囲が例えば左上隅の位置座標が(8,8)で、高さ16ピクセル(px)、幅24pxのサイズの矩形の領域であるとする場合、入力される指示は、これをそのまま60%縮小したものとなり、
図3(b)に示すように、左上隅の位置座標が(4.8,4.8)、高さ9.6px、幅14.4pxの領域を指示するものとなる。
【0022】
しかしながらこのような小数点以下を含む値(非整数値)で位置やサイズが規定された領域に描画する場合、いわゆるサブピクセルレンダリング等の処理を行うこととなり、画像が劣化した状態となる。そこで本実施の形態の一例では、この設定処理部110は、目標表示範囲を規定する位置(例えば左上隅の座標値)や、サイズ(幅・高さ)の情報を、整数値とする(
図3(c))。小数点以下を含む非整数値を整数値とする方法としては、切り捨て(floor)、四捨五入法(round)、切り上げ法(ceiling)など広く知られた方法を採用してよい。
図3(c)の例では、切り上げを行って、左上隅の位置座標を(5,5)、サイズを高さ10px,幅15pxとした例を示している。
【0023】
この場合、設定処理部110は、関数f(t)も併せて補正する。具体的に関数f(t)は、指示された値では、P0=8(
図4の例はX軸方向についての例を示すものとする)からP1=4.8(
図4破線)となっている。そこで、設定処理部110は、P1を整数値とした値P′1=5を用いて、Δtごとの変化量の各点を、P′1/P1倍する。この結果、f(t)は
図4の実線で示される変化を表すものとなる。
【0024】
ラスタライズ処理部111は、設定処理部110により設定された表示範囲の情報を用い、アプリケーションやオペレーティングシステム等から指示されたベクタデータ(画像データ)をラスタライズしてビットマップ画像を生成する。
【0025】
具体的にこのラスタライズ処理部111は、時刻t=0より以前に、設定処理部110により設定された初期表示範囲(幅・高さ)の指示されたベクタデータのラスタライズを行って、初期表示範囲のサイズのビットマップ画像を生成して、描画処理部112に出力している。また、設定処理部110が目標表示範囲を設定すると、ラスタライズ処理部111は、当該設定された目標表示範囲のサイズ(幅・高さ)の領域に、指示されたベクタデータのラスタライズを行って、目標表示範囲のサイズ(整数化された情報で表されるサイズ)のビットマップ画像を生成し、描画処理部112に出力する。
【0026】
描画処理部112は、設定処理部110が設定(補正)した、関数f(t)に従って、時刻Δtごとのフレームバッファ210上の表示範囲を定める。また描画処理部112は、ラスタライズ処理部111が出力するビットマップ画像(初期表示範囲のサイズに描画されたもの、あるいは目標表示範囲のサイズに描画されたもののいずれかを選択する)を時刻tでの表示範囲のサイズに拡大または縮小し、当該時刻tでの表示範囲のフレームバッファ210上の位置に描画する。ここで時刻tが0<t<Tの間は、サイズが小数点を含む非整数となる場合があるが、アニメーション描画中(サイズが時間とともに変化している間)は、非整数のサイズへの拡大・縮小を行うものとする。
【0027】
また描画処理部112は、拡大・縮小に利用するビットマップ画像を、ラスタライズ処理部111が出力するビットマップ画像のうち、初期表示範囲に描画されたもの(初期ビットマップ画像)、あるいは目標表示範囲に描画されたもの(最終ビットマップ画像)のいずれかを選択するが、この選択は、時刻0≦t<tcの間(tc≦T)は初期ビットマップ画像を選択し、時刻tcより後の時刻0<tc≦t≦Tの期間に最終ビットマップ画像を選択するよう切り替えて、以降は最終ビットマップ画像を選択するようにすればよい。
【0028】
本実施の形態では、描画処理部112は、次のようにして切り替えのタイミングtcを定める。すなわち描画処理部112は、関数f(t)の単位時間Δtごとの値の差分(f(t)-f(t-Δt)、ただし(t≧Δt>0)を求める。つまり描画処理部112は、f(t)を微分する。そして描画処理部112は、当該差分が最大となる(あるいは所定のしきい値を超える)tm(単位時間あたりのf(t)の変化量が最も大きくなる時点)を見出す。
【0029】
ここで描画処理部112は、どのtにおいても差分が同じであれば、tc=Tとする。また描画処理部112は、上記の方法で差分が最大(あるいは所定のしきい値を超える)tmを見出したときには、tc=tmとする。なお、tmが複数見出されたときには、描画処理部112は、そのうちから任意の方法で(例えば最も早い時刻を、あるいは最も遅い時刻を、またはランダムに)選択した時刻tmを用いて、tc=tmとする。
【0030】
本実施の形態のこの例によると、画像の位置やサイズの変化が比較的速いときにビットマップ画像の差し替えを行うことで、ユーザが差し替えによる違和感を感じにくくしている。
【0031】
[動作]
本発明の実施の形態は以上の構成を基本的に備えており、次のように動作する。
【0032】
本実施の形態の画像処理装置1は、アプリケーションやオペレーティングシステム等の処理として、ラスタライズの対象となるベクタデータ(画像データ)の指示と、その表示範囲の指示とを出力するとともに、初期表示範囲から目標表示範囲まで表示範囲の時間変化を表す、関数f(t)を併せて指示する。関数f(t)は位置のX座標値、Y座標値、サイズの幅の値、高さの値ごとに指示される。
【0033】
以下の例では、この関数f(t)はいずれの値に対するものも、
図4に例示したように時刻tが「0」に近い時間では比較的急速に変化し、時刻tがT(アニメーション終了時点)に近づくほど変化量が小さくなるように指定されたものであるとする。
【0034】
画像処理装置1は、このベクタデータに基づく描画の処理として、アプリケーションやオペレーティングシステム等から入力される指示に従い、フレームバッファ210上で、整数値で表される位置及びサイズで規定される所定の領域を表示範囲として設定する。
【0035】
具体的に初期表示範囲が例えば左上隅の位置座標が(8,8)で、高さ16ピクセル(px)、幅24pxのサイズの矩形の領域であるとし、これを60%縮小する場合、左上隅の位置座標を(5,5)、サイズを高さ10px,幅15pxとした例を示している。
【0036】
このとき画像処理装置1は、関数f(t)の各々も併せて補正し、整数値とした値P′1=5を用いて、各f(t)のΔtごとの変化量の各点を、5/(4.8)倍する。
【0037】
また画像処理装置1は、整数値で設定した表示範囲の情報を用い、アプリケーションやオペレーティングシステム等から指示されたベクタデータ(画像データ)をラスタライズしてビットマップ画像を生成する。すなわち画像処理装置1は、時刻t=0より以前には、そのとき設定された初期表示範囲(幅・高さ)の指示されたベクタデータのラスタライズを行って、初期表示範囲のサイズのビットマップ画像を生成している。
【0038】
またこの初期表示範囲とは異なる目標表示範囲が設定されると、画像処理装置1は、当該設定された目標表示範囲のサイズ(幅・高さ)の領域に、指示されたベクタデータのラスタライズを行って、目標表示範囲のサイズのビットマップ画像を生成する。
【0039】
画像処理装置1は、上記設定(補正)した、関数f(t)に従って、時刻Δtごとのフレームバッファ210上の表示範囲を定める。画像処理装置1は、各時刻Δtの時点で描画する、初期表示範囲のサイズのビットマップ画像と、目標表示範囲のサイズのビットマップ画像とのいずれかを選択する。
【0040】
本実施の形態のここでの例では、画像処理装置1は、単位時間あたりのf(t)の変化量が最も大きくなる時点までは初期表示範囲のサイズのビットマップ画像を用いる。また画像処理装置1は、当該時点以後は目標表示範囲のサイズのビットマップ画像を用いて描画を行うこととする。既に述べたように、ここでは、f(t)の単位時間あたりの変化量は、tが0に近いほど大きいものとしたので、画像処理装置1は、アニメーションの描画を開始してすぐの時点(t=Δtの時点)以降、目標表示範囲のサイズのビットマップ画像を用いて描画を行う。
【0041】
すなわちここでの例では、画像処理装置1は、Δtごとに逐次的に、目標表示範囲のサイズのビットマップ画像を、その時刻tでの表示範囲のサイズに拡大または縮小して、当該時刻tでの表示範囲のフレームバッファ210上の位置に描画する。ここで時刻tが0<t<Tの間は、サイズが小数点を含む非整数となる場合があるが、アニメーション描画中(サイズが時間とともに変化している間)は、非整数のサイズへの拡大・縮小を行うものとする。
【0042】
そしてt=Tとなったときには、画像処理装置1は、目標表示範囲のサイズ(整数化されたサイズ)の領域にラスタライズされたビットマップ画像を、目標表示範囲の位置(整数化された位置)に、目標表示範囲のサイズ(整数化されたサイズ)で描画する。これにより、アニメーション描画の終了後(60%縮小後)の画面では、劣化の比較的少ないビットマップ画像が描画された状態となる。
【0043】
また、この目標表示範囲のサイズまでの変化を規定する関数f(t)が、目標表示範囲の位置やサイズに基づいて補正されているので、アニメーション描画中の変化も違和感なく表示されることとなる。
【0044】
[整数化の誤差を補正する例]
なお、上述のように位置・サイズを規定する情報を整数化すると、ラスタライズ処理により得たビットマップ画像が複数ある場合に、個々のビットマップ画像に係る整数化の処理を行った際に、整数化前の値との差が互いに異なっていると、各ビットマップ画像を配列したときに違和感が生じる場合がある。
【0045】
例えば同じ60%縮小を行う場合に、元の位置のX座標が8pxであったビットマップ画像A(縮小後のX座標は非整数の状態で4.8px、四捨五入により整数化したときに5px)と、元の位置のX座標が24pxであったビットマップ画像B(縮小後のX座標は非整数の状態で14.4px、四捨五入により整数化したときに14px)とがある場合、ビットマップ画像Aの整数化の誤差(整数化後の値から整数化前の値を引いた値とする)は-0.2pxであり、ビットマップ画像Bの整数化の誤差は、+0.4pxとなっている。従って、これらが配列されると、画像の間隔が0.6pxだけ広くなって見えることとなり、違和感が生じる場合がある。
【0046】
そこで本実施の形態の一例では、設定処理部110が、ラスタライズしたビットマップ画像の目標表示範囲を規定する位置(例えば左上隅の座標値)や、サイズ(幅・高さ)の情報を、整数化して設定する際に、整数値とした位置及びサイズの情報とともに、整数化前の値と整数化した値との差(誤差)の情報を出力する。
【0047】
具体的な例として、
図3の例を用いて説明すると、左上隅の位置座標が(8,8)、高さ16ピクセル(px)、幅24pxのサイズの矩形の領域を60%縮小して目標表示範囲とする場合、整数化前の左上隅の位置座標は(4.8,4.8)となる。一方、整数化を行って、左上隅の位置座標を(5,5)、サイズを高さ10px,幅14pxとした場合、設定処理部は、位置座標の値の誤差を整数化後の値から整数化前の値を差し引いて(-0.2,-0.2)と求め、上記整数化後の値(目標表示範囲を規定する情報)とともに、この位置の誤差の情報を併せてラスタライズ処理部111及び描画処理部112に出力する。
【0048】
そしてこの例のラスタライズ処理部111は、設定処理部110により設定された目標表示範囲の情報を用い、アプリケーションやオペレーティングシステム等から指示されたベクタデータ(画像データ)をラスタライズしてビットマップ画像を生成する。このラスタライズ処理部111の動作は既に述べたものと同じであるので、ここでの繰り返しての説明は省略する。
【0049】
すなわち、この例のラスタライズ処理部111は、設定された目標表示範囲サイズ(幅・高さ)の領域に、指示されたベクタデータのラスタライズを行ってビットマップ画像を生成し、描画処理部112に出力する。
【0050】
描画処理部112は、設定処理部110が表示範囲を整数化して設定した関数f(t)、及び誤差の情報に従って、ビットマップ画像の、時刻Δtごとのフレームバッファ210上の表示範囲を定める。
【0051】
本実施の形態のここでの例でも、描画処理部112は、ラスタライズ処理部111が出力するビットマップ画像(初期ビットマップ画像、あるいは目標ビットマップ画像のいずれかを選択する)を時刻tでの表示範囲のサイズに拡大または縮小し、当該時刻tでの表示範囲のフレームバッファ210上の位置に描画する。この選択は既に述べたものと同様に行ってよい。
【0052】
本実施の形態のこの例において特徴的なことの一つは、描画処理部112がラスタライズ画像の描画位置を、表示範囲を整数化して設定された関数f(t)に基づいて仮に定めた後、当該仮に定めた位置を、誤差の情報に基づいて補正し、当該補正後の位置にラスタライズ画像を描画することである。
【0053】
つまり、描画処理部112は、補正後の位置を、関数f(t)と、対応する初期表示範囲に関する誤差の情報(時刻t=0での表示範囲の誤差の情報)d0または目標表示範囲に関する誤差の情報d1とを用いて定める。
【0054】
具体的に描画処理部112は、初期ビットマップ画像を選択してフレームバッファ210に描画している間は、左上隅の座標p(x,y)を
p(x,y)=(fx(t),fy(t))-(dx0,dy0)
と定める。ここでfx(t)は、表示範囲の左上隅のx軸方向の位置に関する関数f(t)の値、fy(t)は、表示範囲の左上隅のy軸方向の位置に関する関数f(t)の値を表す。またdx0は、初期表示範囲に係るx軸方向の誤差の情報、dy0は初期表示範囲に係るy軸方向の誤差の情報である:
(dx0,dy0)=(int[fx(0),fy(0)]-(fx(0),fy(0)))
ここでint[X,Y]は、X,Yをそれぞれ所定の方法(切り捨て、四捨五入または切り上げなど)で整数化することを意味する。
【0055】
また描画処理部112は、目標ビットマップ画像を選択してフレームバッファ210に描画している間は、左上隅の座標p(x,y)を
p(x,y)=(fx(t),fy(t))-(dxT,dyT)
と定める。ここでfx(t)は、表示範囲の左上隅のx軸方向の位置に関する関数f(t)の値、fy(t)は、表示範囲の左上隅のy軸方向の位置に関する関数f(t)の値を表す。またdxTは、目標表示範囲に係るx軸方向の誤差の情報、dyTは目標表示範囲にy軸方向の誤差の情報である。つまり、
(dxT,dyT)=(int[fx(T),fy(T)]-(fx(T),fy(T)))
である。
【0056】
図3の例では、初期表示範囲についての誤差の情報は(dx0,dy0)=(0,0)であり、目標表示範囲についての誤差の情報は(dxT,dyT)=(-0.2,-0.2)となる。
【0057】
この例によると、アニメーション描画が終了した時点で、整数化の誤差を考慮した非整数値で表される位置に描画が行われることとなる(所与のビットマップ画像を非整数値で表されるフレームバッファ上の領域に描画する方法はサブピクセル描画の方法として広く知られた方法を採用できる)。この例では、画像処理装置1は、目標表示範囲のサイズ(整数化されたサイズ)の領域にラスタライズされた、目標ビットマップ画像を、目標表示範囲を誤差分だけ補正した位置(非整数の位置)に、目標表示範囲のサイズ(整数化されたサイズ)で描画することとなる。この例では、複数のラスタライズ画像を配置する場合に、その間隔を維持でき、また、整数化された領域にラスタライズされたビットマップ画像を用いるので、アニメーション描画の終了後(60%縮小後)の画面でも、劣化が比較的少ないビットマップ画像を表示できる。
【0058】
[サイズ変化に対応する描画のさらに別の例]
さらに本実施の形態のここまでの例では、サイズを変化させるアニメーション描画を行う際に、描画処理部112が初期ビットマップ画像、あるいは目標ビットマップ画像のいずれかを選択して拡大縮小し、フレームバッファに描画することとしていたが、本実施の形態はこれに限られない。
【0059】
すなわち本実施の形態の一例では、描画処理部112は、少なくともビットマップ画像のサイズを変化させるアニメーション描画中(t=0からt=Tまでアニメーション描画を行う場合、0<t<Tの間)は、初期ビットマップ画像と目標ビットマップ画像とをクロスフェードするように合成して、各時点で定めた表示範囲に描画することとしてもよい。
【0060】
具体的に描画処理部112は、時刻t(0<t<T)において、初期ビットマップ画像と目標ビットマップ画像とを当該時刻tにおける表示範囲のサイズに拡大または縮小し、当該拡大または縮小した後の各ビットマップ画像の対応する画素の画素値C0(x,y)とCT(x,y)とを用いて、合成後のビットマップ画像の、当該時刻tにおける対応する画素の値C(x,y)を、
C(x,y)=(C0(x,y)×(T-t)+CT(x,y)×t)/T
と定める(なお、Cは、一般にはRGB及び透明度を表すアルファチャンネルの値を含む、色空間の値を表すベクトル量である)。
【0061】
このようにする場合に、さらに誤差の情報に基づく位置の補正を行うときには、例えば0≦t<T/2までは表示範囲の左上隅の座標を、
p(x,y)=(fx(t),fy(t))-(dx0,dy0)
とし、T/2≦t≦Tの間は、表示範囲の左上隅の座標を、
p(x,y)=(fx(t),fy(t))-(dxT,dyT)
としてもよい。
【0062】
この例では、初期ビットマップ画像と目標ビットマップ画像との解像度の相違がなまされるため、比較的滑らかに視認されるアニメーション描画が行われることとなる。
【符号の説明】
【0063】
1 画像処理装置、11 制御部、12 記憶部、13 操作部、14 表示部、16 高さ、110 設定処理部、111 ラスタライズ処理部、112 描画処理部、210 フレームバッファ。