【課題を解決するための手段】
【0021】
本発明の第1の側面は,コンピュータグラフィックス用のぼかし画像データを得るためのシステムに関する。
【0022】
本発明のシステムの例は,グラフィック処理用のチップやソフトウェアを搭載したコンピュータにより実現できる。そして,このコンピュータは,画像処理用のハードウェアを有する。そして,メインメモリに格納されたメインプログラムからの処理を制御部が受ける。制御部は,適宜記憶部に記憶されたデータを読み出し,入力されたデータを用いて,演算部に演算処理を行わせる。この演算部における演算処理には後述するぼかし画像処理も含まれる。そして,演算処理結果を適宜記憶部に記憶させるほか,モニタなどへ出力する。以下説明する,本発明の各機能や手段は,回路,チップ,及びコアといったハードウェアにより実装してもよいし,演算処理回路等とソフトウェアとの協働により実現されるものであってもよい。
【0023】
ぼかし画像データを得る画素の座標を(x,y)とする。座標(X,Y)における入力画像データをi(X,Y)とする。座標(x,y)におけるぼかし画像データをI
Blur(x,y)とする。ぼかし画像は,基本的には,画面に存在する全ての画素について求める。後述するように,ぼかし画像データは,たとえば,赤(R)などの色味や透明度など,コンピュータグラフィックスに必要な情報をぼかしたデータである。座標(x,y)から,x座標が所定値異なり,y座標が所定値異なる点を,(X
r,Y
t),(X
r,Y
b),(X
l,Y
t)及び(X
l,Y
b)とする。l(エル)>rとする。b>tとする。ある点(X,Y)について,以下の式Iを満たす値をsat(X,Y)とする。以下の式IIを満たす値をSat(x,y)とする。X
l−X
rをw,Y
b−Y
tをhとする。I
Blur(x,y)を,以下の式IIIで表される値とする。
【0024】
式IIIは,以下のとおりである。
I
Blur(x,y)=Sat(x,y)/w×h ・・・・式III
ここで,Sat(x,y)=sat(X
r,Y
t)−sat(X
r,Y
b)−sat(X
l,Y
t)+sat(X
l,Y
b)・・・・式IIである。
なお,yの座標値において,tはトップ,bはボトム(底)を意味する。
【0025】
このシステムは,ハードウェアのみにより実装されてもよい。また,このシステムは,ハードウェアとソフトウェアにより実装されてもよい。このシステムが,ハードウェアとソフトウェアにより実装される場合,このシステムは,入出力部,制御部,演算部,及び記憶部を有する。それらの要素はバスなどで情報を授受できるように接続されている。そして,記憶部には制御プログラムが記憶されている。そして,所定の入力情報が入力部から入力されると,制御部は,記憶部に記憶された制御プログラムを読み出して,適宜記憶部から情報を読み出し,演算部で演算処理を行う。そして,演算処理した結果を記憶部に記憶する。また,演算処理した結果を入出力部から出力する。
【0026】
このシステムは,入力画像データi(X,Y)を受け取るための入力画像データ入力手段を有する。
【0027】
このシステムは,入力画像データ入力手段が受け取った入力画像データi(X,Y)を用いて式Iで示されるsatの値を求めるためのsat演算手段を有する。具体的にはsat演算手段は,i(X,0)を用いて,sat(0,0)から順に,sat(X,0)の値を求める。この際は,sat(X−1,0)とi(X,0)を読み出して,加算することで,この値を求めることができる。2行目以降は,i(X,Y),sat(X−1,Y),sat(X,Y−1),及びsat(X−1,Y−1)の値を読み出して,加算処理や符号変換処理(+を−にする処理)を行って,sat値を求める。
【0028】
式Iは,以下のとおりである。
sat(X,Y)=i(X,Y)+sat(X−1,Y)+sat(X,Y−1)−sat(X−1,Y−1)・・・・式I
ただし,式Iにおいて,X−1が−1である場合は,sat(X−1,Y),及びsat(X−1,Y−1)を0とする。Y−1が−1である場合は,sat(X,Y−1)及びsat(X−1,Y−1)を0とする。
【0029】
このシステムは,sat演算手段が求めた行ごとのsat演算結果を記憶するためのキャッシュを有する。キャッシュは,第1のキャッシュ及び第2のキャッシュを含む。第1のキャッシュは,フロントキャッシュ及びバックキャッシュを含む。第2のキャッシュは,フロントキャッシュ及びバックキャッシュを含む。これらのキャッシュは,たとえばフラグにより指定される。
【0030】
このシステムは,キャッシュから,sat(X
r,Y
t),sat(X
r,Y
b),sat(X
l,Y
t)及びsat(X
l,Y
b)の値を読み出して,Sat(x,y)の値を求めるためのSat演算手段を有する。Sat(x,y)の値は,式IIのとおりである。よって,sat(X
r,Y
t),sat(X
r,Y
b),sat(X
l,Y
t)及びsat(X
l,Y
b)の値を読み出して加算処理や符号変換処理(+を−にする処理)を行って,Sat値を求める。
【0031】
このシステムは,Sat演算手段が求めたSat(x,y)の値,w及びhを用いて,I
Blur(x,y)を
求めるぼかし画像データ取得手段を有する。I
Blur(x,y)は,式IIIで求められる。よって,Sat(x,y),w及びhを読み出して,乗算器及び1/x回路を用いることで,I
Blur(x,y)の値を求めることができる。
【0032】
このシステムは,以下のようにしてI
Blur(x,y)の値を求めることができる。
【0033】
まず,sat演算手段は,1行目の入力画像データi(X,0)を用いて,1行目のsat値であるsat(X,0)を求める。そして,第1のキャッシュのフロントキャッシュは,1行目のsat演算結果であるsat(X,0)を記憶する。
【0034】
次に,sat演算手段は,2行目の入力画像データi(X,1)と,第1のキャッシュのフロントキャッシュが記憶した1行目のsat演算結果であるsat(X,0)を用いて,2行目のsat値であるsat(X,1)を求める。そして,第1のキャッシュのバックキャッシュは,2行目のsat演算結果であるsat(X,1)を記憶する。
【0035】
次に,sat演算手段は,3行目の入力画像データi(X,2)と,第1のキャッシュのバックキャッシュが記憶した2行目のsat演算結果であるsat(X,1)を用いて,3行目のsat値であるsat(X,3)を求める。そして,第1のキャッシュのフロントキャッシュは,3行目のsat演算結果であるsat(X,2)を用いて記憶情報を更新する。
【0036】
このようにして,Sat値を求めるために用いないsatデータを順次消去する。また,フロントキャッシュ及びバックキャッシュを交互に更新することで,少ないメモリ容量を用いて,効率的に必要な情報を更新できる。
【0037】
以下同様の演算を繰り返し,(Y
t−2)行目のsat演算結果であるsat(X,Y
t−1)を,第1のキャッシュのフロントキャッシュ及び第1のキャッシュのバックキャッシュのいずれかが記憶する。
【0038】
同様の演算とは,sat演算手段が,m行目の入力画像データi(X,m−1)と,第1のキャッシュのバックキャッシュが記憶した(m−1)行目のsat演算結果であるsat(X,m−2)を用いて,m行目のsat値であるsat(X,m−1)を求める。そして,いずれかのキャッシュは,m行目のsat演算結果であるsat(X,m−1)を用いて記憶情報を更新する。この作業をmがY
t−2となるまで繰り返す。
【0039】
そして,(Y
t−1)行目のsat演算結果であるsat(X,Y
t)を,第1のキャッシュのフロントキャッシュ及び第1のキャッシュのバックキャッシュのうち,sat(X,Y
t−1)を記憶していない方が記憶する。
【0040】
続いて,sat演算手段は,Y
t行目の入力画像データi(X,Y
t+1)と,キャッシュから読み出したsat(X,Y
t)とを用いて,Y
t行目のsat演算結果であるsat(X,Y
t+1)を求める。第2のキャッシュのフロントキャッシュは,Y
t行目のsat演算結果であるsat(X,Y
t+1)を記憶する。
【0041】
次に,sat演算手段は,Y
t+1行目の入力画像データi(X,Y
t+2)と,第2のキャッシュのフロントキャッシュから読み出したsat(X,Y
t+1)とを用いて,Y
t+1行目のsat演算結果であるsat(X,Y
t+2)を求める。第2のキャッシュのバックキャッシュは,Y
t+1行目のsat演算結果であるsat(X,Y
t+2)を記憶する。
【0042】
次に,sat演算手段は,Y
t+2行目の入力画像データi(X,Y
t+3)と,第2のキャッシュのバックキャッシュから読み出したsat(X,Y
t+2)とを用いて,Y
t+2行目のsat演算結果であるsat(X,Y
t+3)を求める。第2のキャッシュのフロントキャッシュは,Y
t+2行目のsat演算結果であるsat(X,Y
t+3)を用いて記録情報を更新する。
【0043】
このシステムは,以下同様の演算を繰り返す。そして,(Y
b−2)行目のsat演算結果であるsat(X,Y
b−1)を,第2のキャッシュのフロントキャッシュ及び第2のキャッシュのバックキャッシュのいずれかが記憶する。
【0044】
(Y
b−1)行目のsat演算結果であるsat(X,Y
b)のうち少なくともX=0からX=X
lを,第2のキャッシュのフロントキャッシュ及び第2のキャッシュのバックキャッシュのうち,sat(X,Y
b−1)を記憶していない方が記憶する,
【0045】
式Iは,以下のとおりである。
sat(X,Y)=i(X,Y)+sat(X−1,Y)+sat(X,Y−1)−sat(X−1,Y−1)・・・・式I
ただし,式Iにおいて,X−1が−1である場合は,sat(X−1,Y),及びsat(X−1,Y−1)を0とする。Y−1が−1である場合は,sat(X,Y−1)及びsat(X−1,Y−1)を0とする。
【0046】
式IIは,以下のとおりである。
Sat(x,y)=sat(X
r,Y
t)−sat(X
r,Y
b)−sat(X
l,Y
t)+sat(X
l,Y
b)・・・・式II
【0047】
式IIIは,以下のとおりである。
I
Blur(x,y)=Sat(x,y)/w×h ・・・・式III
【0048】
本発明の好ましい態様は,i(x,y)は,色を示すR,G又はBのいずれかの値である,上記に記載のシステムである。
【0049】
本発明の好ましい態様は,i(x,y)は,色を示すR,G又はBのいずれかの値であるか,透明度を示すα(アルファ)値である,上記に記載のシステムである。
【0050】
本発明の好ましい態様は,第1のキャッシュのフロントキャッシュ及び第1のキャッシュのバックキャッシュのうちsat(X,Y
t−1)を記憶したキャッシュを,Y
t行目のsat演算処理からI
Blur(x,y)を求める処理までの間,ぼかし画像データを得る以外の処理のためのキャッシュとして利用する上記に記載のシステムである。
【0051】
本発明の第2の側面は,係数決定部11と,ぼかし画像取得部12とを有するコンピュータグラフィックス用のぼかし画像データを得るためのシステムに関する。そして,ぼかし画像取得部12は,先に説明したシステムと同様の動作を行う。
【0052】
ぼかし画像データを得る画素の座標を(x,y)とし,
座標(x,y)における入力画像データをi(x,y)とし,
座標(x,y)におけるぼかし画像データをI
Blur(x,y)とし,
座標(x,y)から,x座標が所定値異なり,y座標が所定値異なる点を,(X
r,Y
t),(X
r,Y
b),(X
l,Y
t)及び(X
l,Y
b)とし,
l(エル)>rとし,b>tとし,
ある点(X,Y)について,以下の式Iaを満たす値をsat(X,Y)とし,
以下の式IIを満たす値をSat(x,y)とし,
X
l−X
rをw,Y
b−Y
tをhとする。
【0053】
I
Blur(x,y)を,以下の式III又は式IIIaで表される値とする。
【0054】
すると,ぼかし画像取得部12は,
座標(X,Y)における入力画像データi(X,Y)を受け取るとともに,係数決定部11からぼかし係数w(X,Y)を受け取るための入力画像データ入力手段20と,
入力画像データ入力手段が受け取った入力画像データi(X,Y)を用いて式Iaで示されるsatの値を求めるためのsat演算手段21と,
sat演算手段が求めた行ごとのsat演算結果を記憶するためのキャッシュ22,23と,
キャッシュから,sat(X
r,Y
t),sat(X
r,Y
b),sat(X
l,Y
t)及びsat(X
l,Y
b)の値を読み出して,Sat(x,y)の値を求めるためのSat演算手段24と,
Sat演算手段が求めたSat(x,y)の値を用いて,I
Blur(x,y)を用いるぼかし画像データ取得手段25と,を有する。
【0055】
キャッシュは,第1のキャッシュ22及び第2のキャッシュ23を含み,
第1のキャッシュは,フロントキャッシュ22a及びバックキャッシュ22bを含み,
第2のキャッシュは,フロントキャッシュ23a及びバックキャッシュ23bを含む。
【0056】
sat演算手段は,
1行目の入力画像データi(X,0)を用いて,1行目のsat値であるsat(X,0)を求め,
第1のキャッシュのフロントキャッシュは,
1行目のsat演算結果であるsat(X,0)を記憶する。
【0057】
sat演算手段は,
2行目の入力画像データi(X,1)と,第1のキャッシュのフロントキャッシュが記憶した1行目のsat演算結果であるsat(X,0)を用いて,2行目のsat値であるsat(X,1)を求め,
第1のキャッシュのバックキャッシュは,
2行目のsat演算結果であるsat(X,1)を記憶する。
【0058】
sat演算手段は,
3行目の入力画像データi(X,2)と,第1のキャッシュのバックキャッシュが記憶した2行目のsat演算結果であるsat(X,1)を用いて,3行目のsat値であるsat(X,3)を求め,
第1のキャッシュのフロントキャッシュは,3行目のsat演算結果であるsat(X,2)を用いて記憶情報を更新する。
【0059】
以下同様の演算を繰り返し,(Y
t−2)行目のsat演算結果であるsat(X,Y
t−1)を,第1のキャッシュのフロントキャッシュ及び第1のキャッシュのバックキャッシュのいずれかが記憶する。
【0060】
(Y
t−1)行目のsat演算結果であるsat(X,Y
t)を,第1のキャッシュのフロントキャッシュ及び第1のキャッシュのバックキャッシュのうち,sat(X,Y
t−1)を記憶していない方が記憶する。
【0061】
sat演算手段は,
Y
t行目の入力画像データi(X,Y
t+1)と,キャッシュから読み出したsat(X,Y
t)とを用いて,Y
t行目のsat演算結果であるsat(X,Y
t+1)を求め,
第2のキャッシュのフロントキャッシュは,
Y
t行目のsat演算結果であるsat(X,Y
t+1)を記憶する。
【0062】
sat演算手段は,
Y
t+1行目の入力画像データi(X,Y
t+2)と,第2のキャッシュのフロントキャッシュから読み出したsat(X,Y
t+1)とを用いて,Y
t+1行目のsat演算結果であるsat(X,Y
t+2)を求め,
第2のキャッシュのバックキャッシュは,
Y
t+1行目のsat演算結果であるsat(X,Y
t+2)を記憶する。
【0063】
sat演算手段は,
Y
t+2行目の入力画像データi(X,Y
t+3)と,第2のキャッシュのバックキャッシュから読み出したsat(X,Y
t+2)とを用いて,Y
t+2行目のsat演算結果であるsat(X,Y
t+3)を求め,
第2のキャッシュのフロントキャッシュは,
Y
t+2行目のsat演算結果であるsat(X,Y
t+3)を用いて記録情報を更新する。
【0064】
以下同様の演算を繰り返し,
(Y
b−2)行目のsat演算結果であるsat(X,Y
b−1)を,第2のキャッシュのフロントキャッシュ及び第2のキャッシュのバックキャッシュのいずれかが記憶する。
【0065】
(Y
b−1)行目のsat演算結果であるsat(X,Y
b)のうち少なくともX=0からX=X
lを,第2のキャッシュのフロントキャッシュ及び第2のキャッシュのバックキャッシュのうち,sat(X,Y
b−1)を記憶していない方が記憶する
【0066】
sat(X,Y)=w(X,Y)×i(X,Y)+sat(X−1,Y)+sat(X,Y−1)−sat(X−1,Y−1)・・・・式Ia
ただし,式Iaにおいて,X−1が−1である場合は,sat(X−1,Y),及びsat(X−1,Y−1)を0とし,Y−1が−1である場合は,sat(X,Y−1)及びsat(X−1,Y−1)を0とする。
【0067】
Sat(x,y)=sat(X
r,Y
t)−sat(X
r,Y
b)−sat(X
l,Y
t)+sat(X
l,Y
b)・・・・式II
【0068】
I
Blur(x,y)=Sat(x,y)/w×h ・・・・式III
I
Blur(x,y)=Sat(x,y)/W ・・・・式IIIa
【数5】
【0069】
この側面の好ましい態様は,係数決定部11が,
入力画像データi(X,Y)の奥行きz(X,Y)又は深さd(X,Y)に関する情報が入力される入力手段と,
第1の閾値A及び第2の閾値Bが入力される閾値入力手段と,
奥行きz(X,Y)又は深さd(X,Y)と第1の閾値A及び第2の閾値Bとを比較する比較演算手段と,
比較演算手段の比較結果に応じて,係数w(X,Y)を決定する係数決定手段とを有し,
係数決定手段は,奥行きz(X,Y)又は深さd(X,Y)が第1の閾値A以上の場合は,w(X,Y)を0とし,
奥行きz(X,Y)又は深さd(X,Y)が第2の閾値B以下の場合は,w(X,Y)を1とし,
奥行きz(X,Y)又は深さd(X,Y)が第2の閾値Bより大きく第1の閾値Aより小さい場合は,w(X,Y)を0から1の間の値とするように演算処理を行うものである。
【0070】
入力手段に入力画像データi(X,Y)の奥行きz(X,Y)又は深さd(X,Y)に関する情報が入力される。一方,閾値入力手段に第1の閾値A及び第2の閾値Bが入力される。比較演算手段が,奥行きz(X,Y)又は深さd(X,Y)と第1の閾値A及び第2の閾値Bとを比較する。係数決定手段が,比較演算手段の比較結果に応じて,係数w(X,Y)を決定する。そして,係数決定手段は,奥行きz(X,Y)又は深さd(X,Y)が第1の閾値A以上の場合は,w(X,Y)を0とする。係数決定手段は,奥行きz(X,Y)又は深さd(X,Y)が第2の閾値B以下の場合は,w(X,Y)を1とする。係数決定手段は,奥行きz(X,Y)又は深さd(X,Y)が第2の閾値Bより大きく第1の閾値Aより小さい場合は,w(X,Y)を0から1の間の値とするように演算処理を行う。たとえば,A−z/A−BかA−d/A−Bをw(X,Y)としてもよいし,w(X,Y)の値をルックアップテーブルから読み出してもよい。
【0071】
この側面の好ましい態様は,係数決定部11が,
入力画像データi(X,Y),及びコンピュータブラフィックスにおける対象物の識別番号が入力されるとともに,ぼかし画像処理の対象となる対象物に関する情報が入力される対象物入力手段と,
ぼかし画像処理の対象となる対象物に関する情報,対象物の識別番号及び入力画像データi(X,Y)を用いて,ぼかし画像処理の対象となる対象物を把握し,このぼかし画像対象となる対象物に関するぼかし係数w(X,Y)を1とする係数決定手段とを有する,
システムである。
【0072】
対象物入力手段に,入力画像データi(X,Y),及びコンピュータブラフィックスにおける対象物の識別番号が入力されるとともに,ぼかし画像処理の対象となる対象物に関する情報が入力される。係数決定手段は,ぼかし画像処理の対象となる対象物に関する情報,対象物の識別番号及び入力画像データi(X,Y)を用いて,ぼかし画像処理の対象となる対象物を把握し,このぼかし画像対象となる対象物に関するぼかし係数w(X,Y)を1とする。
【0073】
この側面の好ましい態様は,
係数決定部11は,
入力画像データi(X,Y),及びコンピュータブラフィックスにおける対象物の識別番号が入力されるとともに,ぼかし画像処理の対象となる対象物に関する情報が入力される対象物入力手段と,
対象物入力手段により特定された対象物の画素データ部分についてマスク領域を得るマスク領域取得手段と,
マスク領域取得手段が取得したマスク領域の新たな画像データを得るマスク領域の画像データ取得手段と,
マスク領域の係数w(x,y)を1と決定する係数決定手段と,
を有し,
ぼかし画像取得部12は,
係数決定部11が決定したマスク領域に関して,
係数w(x,y)=1を受け取るとともに,新たな画像データを入力画像データとして受け取り,
対象物のマスクのぼかし画像を得る,
システムである。
【0074】
対象物入力手段には,入力画像データi(X,Y),及びコンピュータブラフィックスにおける対象物の識別番号が入力されるとともに,ぼかし画像処理の対象となる対象物に関する情報が入力される。マスク領域取得手段は,対象物入力手段により特定された対象物の画素データ部分についてマスク領域を得る。このマスク領域は,グラフィック上の対象物の位置を示す領域である。画像データ取得手段は,マスク領域取得手段が取得したマスク領域の新たな画像データを得る。たとえば,対象物をぼんやりと光らせたい場合は,マスクの色情報として光の色情報をデータベース等から読み出せばよい。係数決定手段は,マスク領域の係数w(x,y)を1と決定する。ぼかし画像取得部12は,係数決定部11が決定したマスク領域に関して,係数w(x,y)=1を受け取るとともに,新たな画像データを入力画像データとして受け取る。そして,対象物のマスクのぼかし画像を得る。こうすると,対象物の周辺までを含むぼかし画像を得ることができる。たとえば対象物をぼんやり光らせたい場合,対象物とその周辺を光らせるマスクを得ることができる。そして,このマスクと原画像とを合成すると,対象物がぼんやり光った画像を得ることができる。
【0075】
本発明は,コンピュータを上記のシステムとして機能させるためのプログラムをも提供する。また,本発明は,そのようなプログラムを記憶したコンピュータにより読み取り可能な情報記録媒体をも提供する。