特許第5689871号(P5689871)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社ディジタルメディアプロフェッショナルの特許一覧

<>
  • 特許5689871-ぼかし画像取得装置及び方法 図000011
  • 特許5689871-ぼかし画像取得装置及び方法 図000012
  • 特許5689871-ぼかし画像取得装置及び方法 図000013
  • 特許5689871-ぼかし画像取得装置及び方法 図000014
  • 特許5689871-ぼかし画像取得装置及び方法 図000015
  • 特許5689871-ぼかし画像取得装置及び方法 図000016
  • 特許5689871-ぼかし画像取得装置及び方法 図000017
  • 特許5689871-ぼかし画像取得装置及び方法 図000018
  • 特許5689871-ぼかし画像取得装置及び方法 図000019
  • 特許5689871-ぼかし画像取得装置及び方法 図000020
  • 特許5689871-ぼかし画像取得装置及び方法 図000021
  • 特許5689871-ぼかし画像取得装置及び方法 図000022
  • 特許5689871-ぼかし画像取得装置及び方法 図000023
  • 特許5689871-ぼかし画像取得装置及び方法 図000024
  • 特許5689871-ぼかし画像取得装置及び方法 図000025
  • 特許5689871-ぼかし画像取得装置及び方法 図000026
  • 特許5689871-ぼかし画像取得装置及び方法 図000027
  • 特許5689871-ぼかし画像取得装置及び方法 図000028
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5689871
(24)【登録日】2015年2月6日
(45)【発行日】2015年3月25日
(54)【発明の名称】ぼかし画像取得装置及び方法
(51)【国際特許分類】
   G06T 15/00 20110101AFI20150305BHJP
   G06T 5/20 20060101ALI20150305BHJP
【FI】
   G06T15/00 501
   G06T5/20
【請求項の数】10
【全頁数】35
(21)【出願番号】特願2012-506859(P2012-506859)
(86)(22)【出願日】2011年3月25日
(86)【国際出願番号】JP2011001755
(87)【国際公開番号】WO2011118224
(87)【国際公開日】20110929
【審査請求日】2013年11月1日
(31)【優先権主張番号】特願2010-71461(P2010-71461)
(32)【優先日】2010年3月26日
(33)【優先権主張国】JP
(73)【特許権者】
【識別番号】502401703
【氏名又は名称】株式会社ディジタルメディアプロフェッショナル
(74)【代理人】
【識別番号】100116850
【弁理士】
【氏名又は名称】廣瀬 隆行
(72)【発明者】
【氏名】シュミット ベンジャミン
(72)【発明者】
【氏名】スティーブン オルニー
【審査官】 大室 秀明
(56)【参考文献】
【文献】 特開2004−185611(JP,A)
【文献】 特開2010−009599(JP,A)
【文献】 特開2007−028348(JP,A)
【文献】 特開2005−293061(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 1/00−1/40
G06T 3/00−5/50
G06T 9/00−11/40
G06T15/00−17/00
G06T17/10−17/30
H04N 1/40−1/409
H04N 1/46−1/48
H04N 1/52
H04N 1/60
(57)【特許請求の範囲】
【請求項1】
ぼかし画像データを得る画素の座標を(x,y)とし,
前記座標(x,y)における入力画像データをi(x,y)とし,
前記座標(x,y)におけるぼかし画像データをIBlur(x,y)とし,
前記座標(x,y)から,x座標が所定値異なり,y座標が所定値異なる点を,(X,Y),(X,Y),(X,Y)及び(X,Y)とし,
l(エル)>rとし,b>tとし,
ある点(X,Y)について,以下の式Iを満たす値をsat(X,Y)とし,
以下の式IIを満たす値をSat(x,y)とし,
−Xをw,Y−Yをhとし,
前記IBlur(x,y)を,以下の式IIIで表される値としたときに,

座標(X,Y)における入力画像データi(X,Y)を受け取るための入力画像データ入力手段(20)と,
前記入力画像データ入力手段が受け取った入力画像データi(X,Y)を用いて式Iで示されるsatの値を求めるためのsat演算手段(21)と,
前記sat演算手段が求めた行ごとのsat演算結果を記憶するためのキャッシュ(22,23)と,
前記キャッシュから,sat(X,Y),sat(X,Y),sat(X,Y)及びsat(X,Y)の値を読み出して,式IIで示されるSat(x,y)の値を求めるためのSat演算手段(24)と,
前記Sat演算手段が求めたSat(x,y)の値,前記w及び前記hを用いて,IBlur(x,y)を求めるぼかし画像データ取得手段(25)と,
を有する,
コンピュータグラフィックス用のぼかし画像データを得るためのシステムであって,

前記キャッシュは,第1のキャッシュ(22)及び第2のキャッシュ(23)を含み,
前記第1のキャッシュは,フロントキャッシュ(22a)及びバックキャッシュ(22b)を含み,
前記第2のキャッシュは,フロントキャッシュ(23a)及びバックキャッシュ(23b)を含み,

前記sat演算手段は,
1行目の入力画像データi(X,0)を用いて,1行目のsat値であるsat(X,0)を求め,
前記第1のキャッシュのフロントキャッシュは,
前記1行目のsat演算結果であるsat(X,0)を記憶し,

前記sat演算手段は,
2行目の入力画像データi(X,1)と,前記第1のキャッシュのフロントキャッシュが記憶した1行目のsat演算結果であるsat(X,0)を用いて,2行目のsat値であるsat(X,1)を求め,
前記第1のキャッシュのバックキャッシュは,
前記2行目のsat演算結果であるsat(X,1)を記憶し,

前記sat演算手段は,
3行目の入力画像データi(X,2)と,前記第1のキャッシュのバックキャッシュが記憶した2行目のsat演算結果であるsat(X,1)を用いて,3行目のsat値であるsat(X,)を求め,
前記第1のキャッシュのフロントキャッシュは,3行目のsat演算結果であるsat(X,2)を用いて記憶情報を更新し,

以下同様の演算を繰り返し,

(Y−2)行目のsat演算結果であるsat(X,Y−1)を,前記第1のキャッシュのフロントキャッシュ及び前記第1のキャッシュのバックキャッシュのいずれかが記憶し,

(Y−1)行目のsat演算結果であるsat(X,Y)を,前記第1のキャッシュのフロントキャッシュ及び前記第1のキャッシュのバックキャッシュのうち,前記sat(X,Y−1)を記憶していない方が記憶し,

前記sat演算手段は,
行目の入力画像データi(X,Y+1)と,前記キャッシュから読み出した前記sat(X,Y)とを用いて,Y行目のsat演算結果であるsat(X,Y+1)を求め,
前記第2のキャッシュのフロントキャッシュは,
前記Y行目のsat演算結果であるsat(X,Y+1)を記憶し,

前記sat演算手段は,
+1行目の入力画像データi(X,Y+2)と,前記第2のキャッシュのフロントキャッシュから読み出した前記sat(X,Y+1)とを用いて,Y+1行目のsat演算結果であるsat(X,Y+2)を求め,
前記第2のキャッシュのバックキャッシュは,
前記Y+1行目のsat演算結果であるsat(X,Y+2)を記憶し,

前記sat演算手段は,
+2行目の入力画像データi(X,Y+3)と,前記第2のキャッシュのバックキャッシュから読み出した前記sat(X,Y+2)とを用いて,Y+2行目のsat演算結果であるsat(X,Y+3)を求め,
前記第2のキャッシュのフロントキャッシュは,
前記Y+2行目のsat演算結果であるsat(X,Y+3)を用いて記録情報を更新し,

以下同様の演算を繰り返し,

(Y−2)行目のsat演算結果であるsat(X,Y−1)を,前記第2のキャッシュのフロントキャッシュ及び前記第2のキャッシュのバックキャッシュのいずれかが記憶し,

(Y−1)行目のsat演算結果であるsat(X,Y)のうち少なくともX=0からX=Xを,前記第2のキャッシュのフロントキャッシュ及び前記第2のキャッシュのバックキャッシュのうち,前記sat(X,Y−1)を記憶していない方が記憶し,

前記Sat演算手段(24)は,
前記第1のキャッシュのうちのフロントキャッシュとバックキャッシュのいずれか一方に記憶されているsat(X,Y−1)の値と,いずれか他方に記憶されているsat(X,Y)の値,及び,
前記第2のキャッシュのうちのフロントキャッシュとバックキャッシュのいずれか一方に記憶されているsat(X,Y)の値と,いずれか他方に記憶されているsat(X,Y−1)の値に基づいて,
式IIで示されるSat(x,y)の値を求めるための演算を行う,

システム。

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とする。

Sat(x,y)=sat(X,Y)−sat(X,Y)−sat(X,Y)+sat(X,Y)・・・・式II

Blur(x,y)=Sat(x,y)/w×h ・・・・式III
【請求項2】
前記i(x,y)は,色を示すR,G又はBのいずれかの値である,請求項1に記載のシステム。
【請求項3】
前記i(x,y)は,色を示すR,G又はBのいずれかの値であるか,透明度を示すα(アルファ)値である,請求項1に記載のシステム。
【請求項4】
前記第1のキャッシュのフロントキャッシュ及び前記第1のキャッシュのバックキャッシュのうち前記sat(X,Y−1)を記憶したキャッシュを,Y行目のsat演算処理から前記IBlur(x,y)を求める処理までの間,ぼかし画像データを得る以外の処理のためのキャッシュとして利用する,請求項1に記載のシステム。
【請求項5】
係数決定部11と,ぼかし画像取得部12とを有するコンピュータグラフィックス用のぼかし画像データを得るためのシステムであって,
ぼかし画像データを得る画素の座標を(x,y)とし,
前記座標(x,y)における入力画像データをi(x,y)とし,
前記座標(x,y)におけるぼかし画像データをIBlur(x,y)とし,
前記座標(x,y)から,x座標が所定値異なり,y座標が所定値異なる点を,(X,Y),(X,Y),(X,Y)及び(X,Y)とし,
l(エル)>rとし,b>tとし,
ある点(X,Y)について,以下の式Iaを満たす値をsat(X,Y)とし,
以下の式IIを満たす値をSat(x,y)とし,
−Xをw,Y−Yをhとし,
前記IBlur(x,y)を,以下の式III又は式IIIaで表される値としたときに,
前記ぼかし画像取得部12は,
座標(X,Y)における入力画像データi(X,Y)を受け取るとともに,前記係数決定部11からぼかし係数w(X,Y)を受け取るための入力画像データ入力手段(20)と,
前記入力画像データ入力手段が受け取った入力画像データi(X,Y)を用いて式Iaで示されるsatの値を求めるためのsat演算手段(21)と,
前記sat演算手段が求めた行ごとのsat演算結果を記憶するためのキャッシュ(22,23)と,
前記キャッシュから,sat(X,Y),sat(X,Y),sat(X,Y)及びsat(X,Y)の値を読み出して,式IIで示されるSat(x,y)の値を求めるためのSat演算手段(24)と,
前記Sat演算手段が求めたSat(x,y)の値を用いて,IBlur(x,y)を求めるぼかし画像データ取得手段(25)と,
を有する,
コンピュータグラフィックス用のぼかし画像データを得るためのシステムであって,

前記キャッシュは,第1のキャッシュ(22)及び第2のキャッシュ(23)を含み,
前記第1のキャッシュは,フロントキャッシュ(22a)及びバックキャッシュ(22b)を含み,
前記第2のキャッシュは,フロントキャッシュ(23a)及びバックキャッシュ(23b)を含み,

前記sat演算手段は,
1行目の入力画像データi(X,0)を用いて,1行目のsat値であるsat(X,0)を求め,
前記第1のキャッシュのフロントキャッシュは,
前記1行目のsat演算結果であるsat(X,0)を記憶し,

前記sat演算手段は,
2行目の入力画像データi(X,1)と,前記第1のキャッシュのフロントキャッシュが記憶した1行目のsat演算結果であるsat(X,0)を用いて,2行目のsat値であるsat(X,1)を求め,
前記第1のキャッシュのバックキャッシュは,
前記2行目のsat演算結果であるsat(X,1)を記憶し,

前記sat演算手段は,
3行目の入力画像データi(X,2)と,前記第1のキャッシュのバックキャッシュが記憶した2行目のsat演算結果であるsat(X,1)を用いて,3行目のsat値であるsat(X,3)を求め,
前記第1のキャッシュのフロントキャッシュは,3行目のsat演算結果であるsat(X,2)を用いて記憶情報を更新し,

以下同様の演算を繰り返し,

(Y−2)行目のsat演算結果であるsat(X,Y−1)を,前記第1のキャッシュのフロントキャッシュ及び前記第1のキャッシュのバックキャッシュのいずれかが記憶し,

(Y−1)行目のsat演算結果であるsat(X,Y)を,前記第1のキャッシュのフロントキャッシュ及び前記第1のキャッシュのバックキャッシュのうち,前記sat(X,Y−1)を記憶していない方が記憶し,

前記sat演算手段は,
行目の入力画像データi(X,Y+1)と,前記キャッシュから読み出した前記sat(X,Y)とを用いて,Y行目のsat演算結果であるsat(X,Y+1)を求め,
前記第2のキャッシュのフロントキャッシュは,
前記Y行目のsat演算結果であるsat(X,Y+1)を記憶し,

前記sat演算手段は,
+1行目の入力画像データi(X,Y+2)と,前記第2のキャッシュのフロントキャッシュから読み出した前記sat(X,Y+1)とを用いて,Y+1行目のsat演算結果であるsat(X,Y+2)を求め,
前記第2のキャッシュのバックキャッシュは,
前記Y+1行目のsat演算結果であるsat(X,Y+2)を記憶し,

前記sat演算手段は,
+2行目の入力画像データi(X,Y+3)と,前記第2のキャッシュのバックキャッシュから読み出した前記sat(X,Y+2)とを用いて,Y+2行目のsat演算結果であるsat(X,Y+3)を求め,
前記第2のキャッシュのフロントキャッシュは,
前記Y+2行目のsat演算結果であるsat(X,Y+3)を用いて記録情報を更新し,

以下同様の演算を繰り返し,

(Y−2)行目のsat演算結果であるsat(X,Y−1)を,前記第2のキャッシュのフロントキャッシュ及び前記第2のキャッシュのバックキャッシュのいずれかが記憶し,

(Y−1)行目のsat演算結果であるsat(X,Y)のうち少なくともX=0からX=Xを,前記第2のキャッシュのフロントキャッシュ及び前記第2のキャッシュのバックキャッシュのうち,前記sat(X,Y−1)を記憶していない方が記憶し,

前記Sat演算手段(24)は,
前記第1のキャッシュのうちのフロントキャッシュとバックキャッシュのいずれか一方に記憶されているsat(X,Y−1)の値と,いずれか他方に記憶されているsat(X,Y)の値,及び,
前記第2のキャッシュのうちのフロントキャッシュとバックキャッシュのいずれか一方に記憶されているsat(X,Y)の値と,いずれか他方に記憶されているsat(X,Y−1)の値に基づいて,
式IIで示されるSat(x,y)の値を求めるための演算を行う,

システム。

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とする。

Sat(x,y)=sat(X,Y)−sat(X,Y)−sat(X,Y)+sat(X,Y)・・・・式II

Blur(x,y)=Sat(x,y)/w×h ・・・・式III
Blur(x,y)=Sat(x,y)/W ・・・・式IIIa
【数9】
【請求項6】
請求項5に記載のシステムであって,
前記係数決定部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の間の値とするように演算処理を行う,
システム。
【請求項7】
請求項5に記載のシステムであって,
前記係数決定部11は,
入力画像データi(X,Y),及びコンピュータブラフィックスにおける対象物の識別番号が入力されるとともに,ぼかし画像処理の対象となる対象物に関する情報が入力される対象物入力手段と,
前記ぼかし画像処理の対象となる対象物に関する情報,前記対象物の識別番号及び前記入力画像データi(X,Y)を用いて,ぼかし画像処理の対象となる対象物を把握し,このぼかし画像対象となる対象物に関するぼかし係数w(X,Y)を1とする係数決定手段とを有する,
システム。
【請求項8】
請求項5に記載のシステムであって,
前記係数決定部11は,
入力画像データi(X,Y),及びコンピュータブラフィックスにおける対象物の識別番号が入力されるとともに,ぼかし画像処理の対象となる対象物に関する情報が入力される対象物入力手段と,
前記対象物入力手段により特定された対象物の画素データ部分についてマスク領域を得るマスク領域取得手段と,
前記マスク領域取得手段が取得したマスク領域の新たな画像データを得るマスク領域の画像データ取得手段と,
前記マスク領域の係数w(x,y)を1と決定する係数決定手段と,
を有し,
前記ぼかし画像取得部12は,
前記係数決定部11が決定したマスク領域に関して,
前記係数w(x,y)=1を受け取るとともに,前記新たな画像データを入力画像データとして受け取り,
前記対象物のマスクのぼかし画像を得る,
システム。
【請求項9】
ぼかし画像データを得る画素の座標を(x,y)とし,
前記座標(X,Y)における入力画像データをi(X,Y)とし,
前記座標(x,y)におけるぼかし画像データをIBlur(x,y)とし,
前記座標(x,y)から,x座標が所定値異なり,y座標が所定値異なる点を,(X,Y),(X,Y),(X,Y)及び(X,Y)とし,
l(エル)>rとし,b>tとし,
ある点(X,Y)について,以下の式Iを満たす値をsat(X,Y)とし,
以下の式IIを満たす値をSat(x,y)とし,
−Xをw,Y−Yをhとし,
前記IBlur(x,y)を,以下の式IIIで表される値としたときに,

コンピュータを,
前記入力画像データi(X,Y)を受け取るための入力画像データ入力手段と,
前記入力画像データ入力手段が受け取った入力画像データi(X,Y)を用いて式Iで示されるsatの値を求めるためのsat演算手段と,
前記sat演算手段が求めた行ごとのsat演算結果を記憶するためのキャッシュと,
前記キャッシュから,sat(X,Y),sat(X,Y),sat(X,Y)及びsat(X,Y)の値を読み出して,式IIで示されるSat(x,y)の値を求めるためのSat演算手段と,
前記Sat演算手段が求めたSat(x,y)の値,前記w及び前記hを用いて,IBlur(x,y)を用いるぼかし画像データ取得手段と,
を有する,
コンピュータグラフィックス用のぼかし画像データを得るためのシステムであって,

前記キャッシュは,第1のキャッシュ及び第2のキャッシュを含み,
前記第1のキャッシュは,フロントキャッシュ及びバックキャッシュを含み,
前記第2のキャッシュは,フロントキャッシュ及びバックキャッシュを含み,

前記sat演算手段は,
1行目の入力画像データi(X,0)を用いて,1行目のsat値であるsat(X,0)を求め,
前記第1のキャッシュのフロントキャッシュは,
前記1行目のsat演算結果であるsat(X,0)を記憶し,

前記sat演算手段は,
2行目の入力画像データi(X,1)と,前記第1のキャッシュのフロントキャッシュが記憶した1行目のsat演算結果であるsat(X,0)を用いて,2行目のsat値であるsat(X,1)を求め,
前記第1のキャッシュのバックキャッシュは,
前記2行目のsat演算結果であるsat(X,1)を記憶し,

前記sat演算手段は,
3行目の入力画像データi(X,2)と,前記第1のキャッシュのバックキャッシュが記憶した2行目のsat演算結果であるsat(X,1)を用いて,3行目のsat値であるsat(X,3)を求め,
前記第1のキャッシュのフロントキャッシュは,3行目のsat演算結果であるsat(X,2)を用いて記憶情報を更新し,

以下同様の演算を繰り返し,

(Y−2)行目のsat演算結果であるsat(X,Y−1)を,前記第1のキャッシュのフロントキャッシュ及び前記第1のキャッシュのバックキャッシュのいずれかが記憶し,

(Y−1)行目のsat演算結果であるsat(X,Y)を,前記第1のキャッシュのフロントキャッシュ及び前記第1のキャッシュのバックキャッシュのうち,前記sat(X,Y−1)を記憶していない方が記憶し,

前記sat演算手段は,
行目の入力画像データi(X,Y+1)と,前記キャッシュから読み出した前記sat(X,Y)とを用いて,Y行目のsat演算結果であるsat(X,Y+1)を求め,
前記第2のキャッシュのフロントキャッシュは,
前記Y行目のsat演算結果であるsat(X,Y+1)を記憶し,

前記sat演算手段は,
+1行目の入力画像データi(X,Y+2)と,前記第2のキャッシュのフロントキャッシュから読み出した前記sat(X,Y+1)とを用いて,Y+1行目のsat演算結果であるsat(X,Y+2)を求め,
前記第2のキャッシュのバックキャッシュは,
前記Y+1行目のsat演算結果であるsat(X,Y+2)を記憶し,

前記sat演算手段は,
+2行目の入力画像データi(X,Y+3)と,前記第2のキャッシュのバックキャッシュから読み出した前記sat(X,Y+2)とを用いて,Y+2行目のsat演算結果であるsat(X,Y+3)を求め,
前記第2のキャッシュのフロントキャッシュは,
前記Y+2行目のsat演算結果であるsat(X,Y+3)を用いて記録情報を更新し,

以下同様の演算を繰り返し,

(Y−2)行目のsat演算結果であるsat(X,Y−1)を,前記第2のキャッシュのフロントキャッシュ及び前記第2のキャッシュのバックキャッシュのいずれかが記憶し,

(Y−1)行目のsat演算結果であるsat(X,Y)のうち少なくともX=0からX=Xを,前記第2のキャッシュのフロントキャッシュ及び前記第2のキャッシュのバックキャッシュのうち,前記sat(X,Y−1)を記憶していない方が記憶し,

前記Sat演算手段は,
前記第1のキャッシュのうちのフロントキャッシュとバックキャッシュのいずれか一方に記憶されているsat(X,Y−1)の値と,いずれか他方に記憶されているsat(X,Y)の値,及び,
前記第2のキャッシュのうちのフロントキャッシュとバックキャッシュのいずれか一方に記憶されているsat(X,Y)の値と,いずれか他方に記憶されているsat(X,Y−1)の値に基づいて,
式IIで示されるSat(x,y)の値を求めるための演算を行う,

システムとして機能させるためのプログラム。

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とする。

Sat(x,y)=sat(X,Y)−sat(X,Y)−sat(X,Y)+sat(X,Y)・・・・式II

Blur(x,y)=Sat(x,y)/w×h ・・・・式III
【請求項10】
請求項9に記載のプログラムを記憶したコンピュータにより読み取り可能な情報記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は,コンピュータグラフィックスにおける,ぼかした画像を取得するための装置及び方法に関する。
【背景技術】
【0002】
特開2006−72829号公報には,エリア総和テーブル(Summed−area tables)を用いてぼかした画像を取得するシステムが開示されている。
【0003】
エリア総和テーブルを用いて,ぼかした画像を求める場合は,入力された画像に基づいてエリア総和テーブル(SAT)を求める。ある画素の座標(x,y)におけるSATの値をsat(x,y)とする。入力された画素の画素データをi(x,y)とする。すると,sat(x,y)は,以下の式1で求められる値となる。
【0004】
【数1】
【0005】
上記の式1は,以下の式2と同義である。
【0006】
【数2】
【0007】
なお,任意のx,及びyについて,sat(−1,y),sat(x,−1),及びsat(−1,−1)を0(ゼロ)とする。
【0008】
4×4画素からなる仮想的な画像の元データとエリア総和テーブル(SAT)の例は,以下の表1のとおりである。
【0009】
【表1】
【0010】
エリア総和テーブル(SAT)を用いて,ぼかした画像を得る場合,上記のとおり,元の画像と同じ大きさのSATを演算により求め,求めたSATを一度記憶部に記憶する必要があった(特開2006−72829号公報の段落[0022]を参照)。表1は,4×4画素からなる仮想的な画像の例である。しかしながら,実際の画像は,表1よりもはるかに画素が大きい。このため,SATを記憶するために多くのメモリが必要となり,そして,SATから情報を読み出すためにも時間のロスが起こる。
【0011】
図1は,エリア総和テーブルの概念を説明するための図である。図中,点は,座標(x、y)の画素を意味する。図1における黒丸で示される点(x,y)のぼかし画像データを求めるためのSat(x,y)は,次の式3のように表現することができる。
【0012】
Sat(x,y)=
【数3】
【0013】
そして,図1における座標(X,Y),(X,Y),(X,Y),及び(X,Y)の中心に存在する点(x,y)のぼかし画像データは,以下の式4で与えられることとなる。なお,式4において,w=X−Xであり,h=Y−Yである。
【0014】
【数4】
【0015】
エリア総和テーブル(SAT)を用いた場合,w及びh(これらをフィルタ度Wとも表現する)を適宜調整して任意の平均画像を得ることができる。
【0016】
図2に,エリア総和テーブル(SAT)を用いたぼかし画像の例を示す。図2(a)は,W=1の画像(元の画像)を示す。図2(b)は,W=5のぼかし画像を示す。図2(c)は,W=15のぼかし画像を示す。図2(d)は,W=30のぼかし画像を示す。図2に示されるように,SATを用いることでぼかしの程度を容易に調整して,ぼかし画像を得ることができる。
【先行技術文献】
【特許文献】
【0017】
【特許文献1】特開2006−72829号公報
【発明の概要】
【発明が解決しようとする課題】
【0018】
上記のとおり,エリア総和テーブル(SAT)を用いて,ぼかした画像を得る場合,元の画像と同じ大きさのSATを一度記憶部に記憶する。
【0019】
一方,動画の全部又は一部をリアルタイムにぼかすニーズが発生した。先に説明したSATを用いたぼかし処理では,動画のある画像全体についてSATを求め続けなければならない。このため,動画のぼかし画像を,従来のSATを用いて求めると,多大な記憶容量を必要とするという問題がある。
【0020】
そこで,本発明は,コンピュータグラフィックスにおいて,必要とされる記憶容量を軽減できる,ぼかした画像を取得するための装置及び方法を提供することを目的とする。
【課題を解決するための手段】
【0021】
本発明の第1の側面は,コンピュータグラフィックス用のぼかし画像データを得るためのシステムに関する。
【0022】
本発明のシステムの例は,グラフィック処理用のチップやソフトウェアを搭載したコンピュータにより実現できる。そして,このコンピュータは,画像処理用のハードウェアを有する。そして,メインメモリに格納されたメインプログラムからの処理を制御部が受ける。制御部は,適宜記憶部に記憶されたデータを読み出し,入力されたデータを用いて,演算部に演算処理を行わせる。この演算部における演算処理には後述するぼかし画像処理も含まれる。そして,演算処理結果を適宜記憶部に記憶させるほか,モニタなどへ出力する。以下説明する,本発明の各機能や手段は,回路,チップ,及びコアといったハードウェアにより実装してもよいし,演算処理回路等とソフトウェアとの協働により実現されるものであってもよい。
【0023】
ぼかし画像データを得る画素の座標を(x,y)とする。座標(X,Y)における入力画像データをi(X,Y)とする。座標(x,y)におけるぼかし画像データをIBlur(x,y)とする。ぼかし画像は,基本的には,画面に存在する全ての画素について求める。後述するように,ぼかし画像データは,たとえば,赤(R)などの色味や透明度など,コンピュータグラフィックスに必要な情報をぼかしたデータである。座標(x,y)から,x座標が所定値異なり,y座標が所定値異なる点を,(X,Y),(X,Y),(X,Y)及び(X,Y)とする。l(エル)>rとする。b>tとする。ある点(X,Y)について,以下の式Iを満たす値をsat(X,Y)とする。以下の式IIを満たす値をSat(x,y)とする。X−Xをw,Y−Yをhとする。IBlur(x,y)を,以下の式IIIで表される値とする。
【0024】
式IIIは,以下のとおりである。
Blur(x,y)=Sat(x,y)/w×h ・・・・式III
ここで,Sat(x,y)=sat(X,Y)−sat(X,Y)−sat(X,Y)+sat(X,Y)・・・・式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,Y),sat(X,Y),sat(X,Y)及びsat(X,Y)の値を読み出して,Sat(x,y)の値を求めるためのSat演算手段を有する。Sat(x,y)の値は,式IIのとおりである。よって,sat(X,Y),sat(X,Y),sat(X,Y)及びsat(X,Y)の値を読み出して加算処理や符号変換処理(+を−にする処理)を行って,Sat値を求める。
【0031】
このシステムは,Sat演算手段が求めたSat(x,y)の値,w及びhを用いて,IBlur(x,y)を求めるぼかし画像データ取得手段を有する。IBlur(x,y)は,式IIIで求められる。よって,Sat(x,y),w及びhを読み出して,乗算器及び1/x回路を用いることで,IBlur(x,y)の値を求めることができる。
【0032】
このシステムは,以下のようにしてIBlur(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−2)行目のsat演算結果であるsat(X,Y−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−2となるまで繰り返す。
【0039】
そして,(Y−1)行目のsat演算結果であるsat(X,Y)を,第1のキャッシュのフロントキャッシュ及び第1のキャッシュのバックキャッシュのうち,sat(X,Y−1)を記憶していない方が記憶する。
【0040】
続いて,sat演算手段は,Y行目の入力画像データi(X,Y+1)と,キャッシュから読み出したsat(X,Y)とを用いて,Y行目のsat演算結果であるsat(X,Y+1)を求める。第2のキャッシュのフロントキャッシュは,Y行目のsat演算結果であるsat(X,Y+1)を記憶する。
【0041】
次に,sat演算手段は,Y+1行目の入力画像データi(X,Y+2)と,第2のキャッシュのフロントキャッシュから読み出したsat(X,Y+1)とを用いて,Y+1行目のsat演算結果であるsat(X,Y+2)を求める。第2のキャッシュのバックキャッシュは,Y+1行目のsat演算結果であるsat(X,Y+2)を記憶する。
【0042】
次に,sat演算手段は,Y+2行目の入力画像データi(X,Y+3)と,第2のキャッシュのバックキャッシュから読み出したsat(X,Y+2)とを用いて,Y+2行目のsat演算結果であるsat(X,Y+3)を求める。第2のキャッシュのフロントキャッシュは,Y+2行目のsat演算結果であるsat(X,Y+3)を用いて記録情報を更新する。
【0043】
このシステムは,以下同様の演算を繰り返す。そして,(Y−2)行目のsat演算結果であるsat(X,Y−1)を,第2のキャッシュのフロントキャッシュ及び第2のキャッシュのバックキャッシュのいずれかが記憶する。
【0044】
(Y−1)行目のsat演算結果であるsat(X,Y)のうち少なくともX=0からX=Xを,第2のキャッシュのフロントキャッシュ及び第2のキャッシュのバックキャッシュのうち,sat(X,Y−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,Y)−sat(X,Y)−sat(X,Y)+sat(X,Y)・・・・式II
【0047】
式IIIは,以下のとおりである。
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−1)を記憶したキャッシュを,Y行目のsat演算処理からIBlur(x,y)を求める処理までの間,ぼかし画像データを得る以外の処理のためのキャッシュとして利用する上記に記載のシステムである。
【0051】
本発明の第2の側面は,係数決定部11と,ぼかし画像取得部12とを有するコンピュータグラフィックス用のぼかし画像データを得るためのシステムに関する。そして,ぼかし画像取得部12は,先に説明したシステムと同様の動作を行う。
【0052】
ぼかし画像データを得る画素の座標を(x,y)とし,
座標(x,y)における入力画像データをi(x,y)とし,
座標(x,y)におけるぼかし画像データをIBlur(x,y)とし,
座標(x,y)から,x座標が所定値異なり,y座標が所定値異なる点を,(X,Y),(X,Y),(X,Y)及び(X,Y)とし,
l(エル)>rとし,b>tとし,
ある点(X,Y)について,以下の式Iaを満たす値をsat(X,Y)とし,
以下の式IIを満たす値をSat(x,y)とし,
−Xをw,Y−Yをhとする。
【0053】
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,Y),sat(X,Y),sat(X,Y)及びsat(X,Y)の値を読み出して,Sat(x,y)の値を求めるためのSat演算手段24と,
Sat演算手段が求めたSat(x,y)の値を用いて,IBlur(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−2)行目のsat演算結果であるsat(X,Y−1)を,第1のキャッシュのフロントキャッシュ及び第1のキャッシュのバックキャッシュのいずれかが記憶する。
【0060】
(Y−1)行目のsat演算結果であるsat(X,Y)を,第1のキャッシュのフロントキャッシュ及び第1のキャッシュのバックキャッシュのうち,sat(X,Y−1)を記憶していない方が記憶する。
【0061】
sat演算手段は,
行目の入力画像データi(X,Y+1)と,キャッシュから読み出したsat(X,Y)とを用いて,Y行目のsat演算結果であるsat(X,Y+1)を求め,
第2のキャッシュのフロントキャッシュは,
行目のsat演算結果であるsat(X,Y+1)を記憶する。
【0062】
sat演算手段は,
+1行目の入力画像データi(X,Y+2)と,第2のキャッシュのフロントキャッシュから読み出したsat(X,Y+1)とを用いて,Y+1行目のsat演算結果であるsat(X,Y+2)を求め,
第2のキャッシュのバックキャッシュは,
+1行目のsat演算結果であるsat(X,Y+2)を記憶する。
【0063】
sat演算手段は,
+2行目の入力画像データi(X,Y+3)と,第2のキャッシュのバックキャッシュから読み出したsat(X,Y+2)とを用いて,Y+2行目のsat演算結果であるsat(X,Y+3)を求め,
第2のキャッシュのフロントキャッシュは,
+2行目のsat演算結果であるsat(X,Y+3)を用いて記録情報を更新する。
【0064】
以下同様の演算を繰り返し,
(Y−2)行目のsat演算結果であるsat(X,Y−1)を,第2のキャッシュのフロントキャッシュ及び第2のキャッシュのバックキャッシュのいずれかが記憶する。
【0065】
(Y−1)行目のsat演算結果であるsat(X,Y)のうち少なくともX=0からX=Xを,第2のキャッシュのフロントキャッシュ及び第2のキャッシュのバックキャッシュのうち,sat(X,Y−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,Y)−sat(X,Y)−sat(X,Y)+sat(X,Y)・・・・式II
【0068】
Blur(x,y)=Sat(x,y)/w×h ・・・・式III
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】
本発明は,コンピュータを上記のシステムとして機能させるためのプログラムをも提供する。また,本発明は,そのようなプログラムを記憶したコンピュータにより読み取り可能な情報記録媒体をも提供する。
【発明の効果】
【0076】
本発明によれば,コンピュータグラフィックスにおいて,必要とされる記憶容量を軽減できる,ぼかした画像を取得するための装置及び方法を提供することができる。
【図面の簡単な説明】
【0077】
図1】Sat(x,y)を求めるための4点を示す概念図。
図2図2に,エリア総和テーブル(SAT)を用いたぼかし画像の例を示す。図2(a)は,W=1の画像(元の画像)を示す。図2(b)は,W=5のぼかし画像を示す。図2(c)は,W=15のぼかし画像を示す。図2(d)は,W=30のぼかし画像を示す。
図3図3は,ぼかし画像データを説明するための概念図である。
図4図4は,第2の実施態様に係るシステムのブロック図である。
図5図5は,本発明のぼかし画像生成システムを実装するための回路図である。
図6図6は,本発明のぼかし画像生成システムを実装するための回路図である。
図7図7は,本発明のぼかし画像技術を得るためのハードウェア構成を示すブロック図である。
図8図8は,ポストエフェクトコアを説明するためのブロック図である。
図9図9は,P,Pxy,及びPのピクセル位置を説明するための図である。
図10図10は,ぼかし演算処理を実現するためのハードウェア実装のブロック図である。
図11図11(a)は,あるシーンのうち,視点の近くにある対象のみを抽出した画像を示す。図11(b)は図11(a)のマスクを用いたぼやかし画像を示す図である。図11(c)は,閾値A及び閾値Bを用いたスムーズマスクを示す図である。
図12図12は,図11(c)のマスクを用いて,マスク対象をぼやかさず,画像を合成したものを示す図である。
図13図13は,実施例4におけるグローイング処理を施す前の原画像である。
図14図14は,灯篭オブジェクトのステンシル値を有する入力画像領域を集約したものを示す図である。
図15図15は,実施例4において得られた画像を示す。
図16図16はサムライの画像を得るためのものである。
図17図17は,ぼかされたマスクを示す図である。
図18図18は実施例5において得られた画像を示す図である
【発明を実施するための形態】
【0078】
第1の実施態様
以下,本発明の第1の実施態様について説明する。
【0079】
図3は,ぼかし画像データを説明するための概念図である。各升目は画素を表す。図中三角で示される部分が,ぼかし画像データを得るための画素である。図3中三角で示される部分が,図1における点(x,y)に相当する。また,図3中,白丸(オープンサークル)で示される点が,図1における座標(X,Y),(X,Y),(X,Y),及び(X,Y)に相当する。すると,Sat(x,y)は,式IIIのとおり求めることができる。
【0080】
Blur(x,y)=Sat(x,y)/w×h ・・・・式III
Sat(x,y)=sat(X,Y)−sat(X,Y)−sat(X,Y)+sat(X,Y)・・・・式II
【0081】
一方,座標(X,Y),(X,Y),(X,Y),及び(X,Y)のsat(x,y)は,式Iのとおり求めることができる。式Iは,ある画像(x,y)のsatを,その画像(x,y)の入力データ(i(x,y)),及びその画素よりx座標が1つ小さい座標のsatデータ(sat(x−1,y)),その画素よりy座標が1つ小さい座標のsatデータ(sat(x,y−1))及びその画素よりx座標が1つ小さくy座標も1つ小さい座標のsatデータ(sat(x−1,y−1))を用いて求めることができることを示す。
【0082】
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とする。
【0083】
すなわち、図3の座標(X,Y),(X,Y),(X,Y),及び(X,Y)のsat(x,y)は,それぞれの座標の入力データ,左の座標のsat,上の座標のsat,及び上斜め左の座標のsatを用いて求めることができる。それぞれの座標の左の座標,上の座標,及び上斜め左の座標は、図3において黒丸(クローズドサークル)で示した通りである。
【0084】
そうであれば,ぼかし画像データを得るために,白丸及び黒丸の存在する4行のみのデータ(satデータ及び入力データ)が存在すれば,Sat(x,y)を求めることができる。
【0085】
ここで,画像(x,y)が左よりの場合,(X,Y)及び(X,Y)が存在しない場合がある。このような場合は,sat(X,Y)及びsat(X,Y)を0とすればよい。もちろん,画像(x,y)が左よりでかつ上よりの場合,(X,Y)が存在しない場合もある。その場合は,sat(X,Y)も0とすればよい。
【0086】
すなわち,式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とする。なお,式Iでは,x=0及びy=0が左上の点の座標である。よって,左上の座標がx=1,Y=1の場合は,x=0又はy=0の場合のsatを0とすればよい。
【0087】
なお,たとえば,ぼかし度を示す値Wがコンピュータに入力された場合,このぼかし度を用いてwとhの値が求められるようにしてもよい。すなわち,Wが大きいほど,広い領域においてぼかし画像処理を行うようにしてもよい。このWと,w及びhの関係はたとえば,1次元のルックアップテーブルに記憶しておき,入力されたWに基づいてw及びhを求めてもよい。また,演算処理で必要なw×hの値も合わせてルックアップテーブルに格納しておき,演算の際にwとhとを乗算せずに乗算値をルックアップテーブルから読み出してもよい。
【0088】
次に,図3の三角で示される点のぼかし画像データを得る工程を説明する。
【0089】
この点は,色(R,G,B)及び透明度(α)といった値を有するものであるから,これらの値のぼかした値を得る。そして,画面の全体か又は少なくとも一定領域の点について,同様にぼかし画像データを得ることでぼかし画像を得ることができる。
【0090】
まず,入力データi(x,y)(y=0)を用いて,1行目のsat(x,y)を求める。ここで,y=0である。xは,0〜右端の画素のx座標である。そして,求めた1行目のsat(x,0)を,第1のキャッシュのフロントキャッシュに記憶する。
【0091】
i(x,y)は,たとえば,座標(x,y)における赤Rの値R(x,y)であってもよいし,緑G(x,y)であってもよいし,青B(x,y)であってもよいし,透明度α(x,y)であってもよい。
【0092】
次に,入力データi(x,1)及び1行目のsat(x,0)を用いて,2行目のsat(x,1)を求める。そして,求めた2行目のsat(x,1)を,第1のキャッシュのバックキャッシュに記憶する。
【0093】
この動作は,たとえば,コンピュータが,sat(1,1)を求める演算を行う場合,入力されたi(1,1)を記憶部に記憶する。そして,i(1,1),sat(0,1),sat(1,0),及びsat(0,0)を記憶部から読みだす。そして,加算演算及び減算演算(符号逆転演算及び加算演算)を行って,sat(1,1)=i(1,1)+sat(0,1)+sat(1,0)−sat(0,0)を求める演算処理を行い記憶部に格納する。このようにすれば,sat(1,1)を求めることができる。これ以外のsat(x,1)値についても同様にして求めることができる。
【0094】
この動作は,たとえば,コンピュータが,sat(0,1)を求める演算を行う場合,入力されたi(0,1)を記憶部に記憶する。そして,i(0,1),sat(−1,1),sat(0,0),及びsat(−1,0)を記憶部から読みだす。sat(−1,1)及びsat(−1,0)が0であるから,この値を記憶しておいて,i(0,1),sat(−1,1),sat(0,0),及びsat(−1,0)を加算又は減算して,sat(0,1)を求めてもよい。
【0095】
次に,入力データi(x,2)及び2行目のsat(x,1)を用いて,3行目のsat(x,2)を求める。そして,求めた3行目のsat(x,2)を,第1のキャッシュのフロントキャッシュに記憶する。この際,3行目のsat(x,2)を1行目のsat(x,0)に上書きするため,1行目のsat(x,0)に関するデータは,第1のキャッシュのフロントキャッシュから消去される。
【0096】
図3の例では,3行目のsat(x,2)に,sat(X,Y)及びsat(X,Y)が存在する。よって,sat(X,Y)及びsat(X,Y)の値は,第1のキャッシュのフロントキャッシュから読み出せる。
【0097】
次に,入力データi(x,3)及び3行目のsat(x,2)を用いて,4行目のsat(x,3)を求める。求めたsat(x,3)を第2のキャッシュのフロントキャッシュに記憶する。なお,この例では,sat(x,1)を今後使用しない。このため,第1のキャッシュのバックキャッシュを消去し,次の行のぼかし画像を求めるまでの間,他の作業のメモリ空間として利用してもよい。
【0098】
同様の処理を繰り返し,y座標が(Y−1)の行までsatを求めたとする。そして,このsat(x,Y−1)の値が,第2のキャッシュのフロントキャッシュに記憶されたとする。場合によっては,sat(x,Y−1)の値が,第2のキャッシュのバックキャッシュに記憶される。以下では,sat(x,Y−1)の値が,第2のキャッシュのフロントキャッシュに記憶されたとして,動作説明を続ける。
【0099】
なお同様の処理とは,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−2となるまで繰り返す。
【0100】
次に,入力データi(x,Y)及びsat(x,Y−1)を用いて,(X,Y)及び(X,Y)の属する行目のsat(x,Y)を,sat(x,Y)まで求める。ここで,Sat(x,y)を求めるために,(x,Y+1)以降のsat(x,Y)を求める必要はない。もっとも,(x,Y+1)以降のsat(x,Y)を求めておいて,後の演算に用いてもよい。そして,求めたsat(x,Y)を,第2のキャッシュのバックキャッシュに記憶する。この際,sat(x,Y)を上書きするため,sat(x,Y−2)に関するデータが,第2のキャッシュのバックキャッシュから消去される。
【0101】
先に説明した通り,sat(X,Y)及びsat(X,Y)の値は,第1のキャッシュのフロントキャッシュから読み出せる。sat(X,Y)及びsat(X,Y)は,第2のキャッシュのバックキャッシュから読み出せる。
【0102】
そこで,本発明のぼかし画像生成システムは,これらのキャッシュから,sat(X,Y),sat(X,Y),sat(X,Y)及びsat(X,Y)を読み出す。そして,たとえば,符号変換器及び加算器を用いて,式IIに従ってSat(x,y)を求める演算処理を行う。なお,この演算は,制御プログラムの指令を受けた制御部が,キャッシュからsat(X,Y),sat(X,Y),sat(X,Y)及びsat(X,Y)を読み出して,演算部にsat(X,Y)−sat(X,Y)−sat(X,Y)+sat(X,Y)を求めさせるようにすることで行ってもよい。以下同様である。
【0103】
さらに,w及びhの値は,あらかじめ記憶部に記憶されているので,式IIIに従って,座標(x,y)におけるぼかし画像データを求めることができる。
【0104】
ぼかし画像データの例は,たとえば,色を示すR,G,及びBのそれぞれのデータと,透明度を示すα(アルファ)のデータである。
【0105】
次に,図3の三角で示される点(x,y)の横の点(x,y+1)のぼかし画像データを求めることを考える。
【0106】
この場合,sat(X+1,Y),sat(X+1,Y),sat(X+1,Y)及びsat(X+1,Y)の値,w及びhの値を用いれば,点(x,y+1)のぼかし画像データが得られることになる。sat(X+1,Y),sat(X+1,Y)及びsat(X+1,Y)は,既に求められているため,適宜キャッシュからよみだせばよい。sat(X+1,Y)の値も既に求められてキャッシュに記憶されている場合は,sat(X+1,Y)の値を読み出せばよい。一方sat(X+1,Y)の値が求められていない場合,式2に従って,i(X+1,Y),sat(X,Y),sat(X+1,Y−1)及びsat(X,Y−1)を用いて,sat(X+1,Y)の値を求め,第2のキャッシュのバックキャッシュに記憶すればよい。
【0107】
次に,図3の三角で示される点(x,y)の次の行のぼかし画像データを求めることを考える。
【0108】
図3に示す例では,まず,4行目のsat(x,3)を求める。sat(x,3)は,入力データi(x,3)及び3行目のsat(x,2)を用いて求めることができる。すなわち,3行目のsat(x,2)は,第1のキャッシュのフロントキャッシュに記憶されている。そして,本発明のぼかし画像生成システムは,入力されたi(x,3)及びキャッシュから読み出したsat(x,2)を用いて,4行目のsat(x,3)を求める。そして,求めた4行目のsat(x,3)を第1のキャッシュのバックキャッシュに記憶する。
【0109】
(X,Y+1)及び(X,Y+1)の属する行目のsat(x,Y+1)も先に説明したと同様にして求めることができる。すると,点(x,y)の次の行のぼかし画像データも先に説明したと同様にして求めることができることがわかる。
【0110】
第2の実施態様
本発明の第2の実施態様について説明する。第2の実施態様は,マスク技術を更に用いたものである。第2の実施態様では,たとえば,注目(フォーカス)対象となっていない対象のぼかし画像を得ることができる。たとえば,後述するぼかし係数が0のものは,ぼかし画像処理に参加しない点である。このぼかし係数は,たとえば画像のアルファチャネルなどの記憶領域に格納できる。以下の説明では,ぼかし係数をw(x,y)と表現する。
【0111】
図4は,第2の実施態様に係るシステムのブロック図である。図4に示されるように,このシステムは,係数決定部11と,ぼかし画像取得部12とを有する。このシステムは,通常の描画装置における各種構成を適宜採用できる。ぼかし画像取得部12は,入力画像データ入力手段20と,sat演算手段21と,キャッシュ22,23と,Sat演算手段24と,ぼかし画像データ取得手段25と,を有する。そして,キャッシュは,第1のキャッシュ22及び第2のキャッシュ23を含み,第1のキャッシュ22は,フロントキャッシュ22a及びバックキャッシュ22bを含み,第2のキャッシュ23は,フロントキャッシュ23a及びバックキャッシュ23bを含む。図4中符号27は出力手段を示す。図4に示されるものはあくまで必要な要素を示すものであり,このシステムは,通常のコンピュータグラフィック装置に用いられる要素を適宜採用できる。そして,各手段は,回路,チップ又はコアといったハードウェアにより実装されてもよいし,ハードウェアとソフトウェアとの協働により実装されてもよい。
【0112】
係数決定部は,以下の式Iaにおけるw(x,y)を決定するための要素である。ぼかし画像取得部は,先に説明した第1の実施態様に係る要素を適宜用いることができる。
【0113】
たとえば,グラフィックス全体をぼかす場合は,すべての(x,y)についてwを1とすればよい。また,wの値を小さくすることで,入力されたもとの画像データの影響を小さくすることができる。

【0114】
ぼかし係数wを用いれば,式Iを式Iaのように表現できる。
【0115】
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とする。
【0116】
この場合も,式IIは変わらない。
Sat(x,y)=sat(X,Y)−sat(X,Y)−sat(X,Y)+sat(X,Y)・・・・式II
【0117】
この実施態様2においては,ぼかし画像値であるIBlur(x,y)を,以下の式III又は式IIIaのように表現する。式IIIとするか,式IIIaとするかは,適宜システムに入力される情報により選択可能とされていればよい。
【0118】
Blur(x,y)=Sat(x,y)/w×h ・・・・式III
Blur(x,y)=Sat(x,y)/W ・・・・式IIIa
【0119】
【数6】
【0120】
すなわち,式IIIaでは,式IIIにおけるw×hを,幅w及び高さhの四角領域に含まれる全ての値の和に置き換えた。すなわち,Wは,(X,Y),(X,Y),(X,Y)及び(X,Y)の4点を頂点とする四角内に含まれるw(x,y)の値の和である。ぼかし係数wが全ての点で1の場合は,Wはw×hと同じ値をとるため,式IIIaは式IIIと同じになる。
【0121】
Wを求めるためには,上記の四角内に含まれるw(x,y)の値を加算すればよい。たとえば,ぼかしの重みが5の場合,ある点からx座標が−5〜+5,y座標が+5〜−5の領域についてのwの和を求めればよい。
【0122】
もしある点がぼかし画像処理に参加しない点であれば,wは0となるため,その点はsat演算に参加しないこととなる。
【0123】
なお,wが0の場合,w(x,y)×i(x,y)も0となる。すると,式IIIaの値が0/0となるが,この場合はその値を0とすればよい。
【0124】
第3の実施態様
次に第3の実施態様について説明する。この実施態様は,奥行き値z又は画素の深さに応じてぼかし処理を変化させるものである。すなわち,図4における係数決定部11に各画素の奥行き値z又は深さdに関する値が入力される。そして,このシステムは,メモリに閾値A及び閾値Bのいずれか又は両方を記憶している。係数決定部11は,メモリから閾値A及び閾値Bの値のいずれか又は両方を読み出して,奥行き値z又は深さdと比較する。そのうえで,たとえば,ルックアップテーブルからwの値を読み出して,w(x,y)としてもよい。また,w(x,y)が0から1の場合は,その値をもとめる演算処理を行ってもよい。
【0125】
ある距離の閾値Aが与えられたとする。するとこの閾値を超える深さの値を有するものは注目から外れものであり,完全にぼやかし処理の対象となる。ある距離の閾値Bが与えられたとする。するとこの閾値より近いものは完全に注目される対象となる。この2つの閾値の間の物体については,注目から注目しないものへの遷移が起こるといえ,すなわち全くぼかさないものから完全にぼかすものへの遷移が起こるといえる。
【0126】
通常のコンピュータグラフィックスでは,物体はカラーバッファ(色画像)と深さバッファ(カメラからの深さ情報を有する)を含むフレームバッファにレンダリングされる。カメラからの可視領域は,前のクリッピング面(front clipping face)及び遠いクリッピング面(far clipping face)により定義される。先に説明したとおり,この例では閾値A及びBという2つの閾値を用いた。この2つの閾値が,前のクリッピング面および遠いクリッピング面に相当する。
【0127】
これを実現するためには,1次元のルックアップテーブルを用いて実現できる。このルックアップテーブルは,深さの値がAより大きい場合は,wを1とする。深さの値がBより小さい場合は,wを0とする。深さの値がB以上A以下の(Bより大きくAより小さい)場合はたとえば,wは0より大きく1より小さい値とすればよい。閾値A及びBをメモリに記憶する。そしてメモリに記憶したA又はBの値を読み出して,前のモジュールから入力された深さの値と,A及びBを比較する。そして,深さの値がAより大きい場合は,wを1とする。深さの値がBより小さい場合は,wを0とする。深さの値がB以上A以下の(Bより大きくAより小さい)場合はたとえば,wは0より大きく1より小さい値で連続的に変化するものとすればよい。たとえば,閾値Bから閾値Aまでの加重平均値を0から1までの数値に割り当てればよい。
【0128】
深さが閾値Bから閾値Aの中間をとる場合は,ぼかし係数wとして0から1までの中間の値をとるものとすればよい。このぼかし係数wの集合であるマスク値は,プレプロセッシングモジュールにて求めてもよい。
【0129】
wの値が求まった後の処理は,第2の実施態様と同様である。
【0130】
第4の実施態様
第4の実施態様は,グローイング処理をもたらすものである。すなわち,あるグラフィック中に含まれる対象物を特定して,ぼかし画像を取得するものである。
【0131】
この態様では,たとえば係数決定部11にコンピュータグラフィックに含まれる対象物の識別番号が入力される。これがステンシル値である。そして,ステンシルバッファから入力された対象物の識別番号に応じて,ぼかし処理を施すか否かを決定する。すなわち,係数決定部11には,ぼかし処理対象物に関する情報が入力される。そして,その対象物の識別番号を用いて,ぼかし対象となるものかぼかし対象とならないものか決定する。たとえば,ぼかし対象とならないものを示すi(x,y)については,wを0とする。または,ぼかし対象とならないものについては,ぼかし画像取得部12を素通りさせて,次のモジュールへデータが送られるようにしてもよい。
【0132】
一方,この実施態様では,ぼかし対象となるものに関する情報が係数決定部11に入力されてもよい。その場合,係数決定部11は,その対象物の識別番号を用いて,ぼかし対象となるものかぼかし対象とならないものか決定する。たとえば,ぼかし対象となるものを示すi(x,y)については,wを1とする。このようにして特定の対象のみをぼかすことができる。
【0133】
この場合は,w(x,y)=1の部分が完全にぼかし対象となる部分である。この部分をマスクとして扱うことができる。一方,ぼかし対象となるもの以外の部分については,たとえば,第1の実施態様から第3の実施態様のシステム構成を適宜利用してぼかし画像を取得できる。
【0134】
第5の実施態様は,シルエットを得る画像処理を行うことができるシステムに関する。
【0135】
第4の実施態様に関するグローイングオブジェクトの描画方法を用いることで,あるオブジェクトのシルエットを簡単に得ることができる。オブジェクトの識別番号を入手できれば,マスクデータを得ることができる。そして,第5の態様では,そのマスク自体をぼかす。ぼかした領域は,もともとの対象よりもぼかし処理のため少し大きくなる。このためぼかし処理を施した領域には,もとのオブジェクトの識別番号と異なる識別番号を有することとなるものが含まれる。
【0136】
いったん,シルエットマスクを生成した後,マスクをぼかし処理を施し,色値とぼかしたマスクとを調整する。これによれば,たとえば,ゲームにおいて主人公や武器の周辺を光らせるといった画像処理を容易に行うことができることとなる。
【0137】
係数決定部11にコンピュータグラフィックに含まれる対象物の識別番号が入力される。そして,画像データが入力された場合に,この対象物の識別番号を用いて,対象物を示す画像データを特定する。その特定した画像データの(x,y)の集合がマスクである。そして,そのマスクの色,透明度,輝度等の設定値を適宜読み出す。そのうえで,新たな対象物のマスク画像データを,ぼかし画像取得部12へと出力する。すると,ぼかし画像取得部12は,マスク画像データのぼかし画像を取得し,次のモジュールへと出力する。次のモジュールでは,画像合成処理を行う。この際,ぼかし画像処理により,対象物の周辺についても画像データが得られることとなるので,その部分については原画像の色データと,ぼかし画像処理が施されたマスクデータの色データとを足し合わせる等の画像処理を行う。これにより,このシステムはシルエット処理を施した画像を得ることができることとなる。
【実施例1】
【0138】
実施例1は,第1の実施態様に基づく画像生成システムの例に関する。
【0139】
図5及び図6は,本発明のぼかし画像生成システムを実装するための回路図である。なお,この回路をソフトウェアでも実装できる。
【0140】
図5中,RBXは,x軸方向のぼかしサイズ((w−1)/2)である。RBYは,y軸方向のぼかしサイズ((h−1)/2)である。RTXは,入力画像の幅(W又はW−1)である。RTYは,入力画像の高さ(H又はH−1)である。RTBXは,RTXとRTYとの和である。
【0141】
図5及び図6に示される本発明のぼかし画像生成システムにより,ぼかし画像を得るための動作について説明する。
【0142】
図5の回路は,(X,Y),(X,Y),(X,Y)及び(X,Y)の座標を求める。また図5の回路は,sat(X,Y),sat(X,Y),sat(X,Y),及びsat(X,Y)の座標を求める。つまり,(X,Y),(X,Y),(X,Y)及び(X,Y)のいずれかが,もともとの画像にない仮想的な座標である場合は,その座標のsatの値を0としたり,他の座標のsatにより求めることができる。
【0143】
たとえば,Xを求める場合,座標(x,y)のxに,x軸方向のぼかし幅RBX(図3の場合では2:((5−1)/2))を加えることで求めることができる。
【0144】
そして,求めた値をクリッピング回路でクリッピングする。すなわち,クリッピング回路は,加算値とRTXとを比較して,加算値が0以上RTX以下の場合は,加算値をそのままXPとして出力する。また,クリッピング回路は,加算値がRTX以上の場合は,RTXをXPとして出力する。クリッピング回路は,加算値が0以下の場合は,0をXPとして出力する。
【0145】
また,上記とは別のクリッピング回路は,加算値とRTBXとを比較して,加算値が0以上RTBX以下の場合は,加算値をそのままXAPとして出力する。また,クリッピング回路は,加算値がRTBX以上の場合は,RTBXをXAPとして出力する。クリッピング回路は,加算値が0以下の場合は,0をXAPとして出力する。
【0146】
同様にして,図5に示す回路は,XP,XAP,XM,XAM,YM及びYPを出力する。
【0147】
次に,図6に示す回路によりぼかし画像が得られる。図中,flagはフラグを意味し,キャッシュを指定する。図中LLは下の左,LRは下の右,ULは上の左,URは上の右を示す。
【0148】
たとえば,図3の4つの白丸のうち,下の左の点(白丸LL)におけるsatを求めることを考える。この場合の,白丸LLのx座標は,XPである。すると,白丸LLにおけるsatは,白丸LLにおける入力値(TGBA),白丸LLの左の座標のsat,上の座標のsat,及び斜め左上のsatを用いて求めることができる。白丸LLの左の点及び斜め左上の点の座標は,XP−1である。これら3点のsatの値は,キャッシュに記憶されている。よって,フラグによりバックキャッシュ又はフロントキャッシュを指定して,XP及XP−1の値を用いて,キャッシュ上の番地を指定することで,計算に必要なsatの値を読み出すことができる。
【0149】
値i及びsatの加減算は,式2に従って行えばよく,図5に示される加算器及び減算器を用いて実現できる。なお,減算器は,符号変換回路と加算器とを用いて実現してもよい。
【0150】
また,sat(X,Y),sat(X,Y),sat(X,Y),及びsat(X,Y)を用いてSat(x,y)を求めることも,式3に従って行えばよく,図5に示される加算器及び減算器を用いて実現できる。
【0151】
さらに,w及びhの乗算値w×hは,図6に示されるように,乗算器を用いて求められる。そして,インバース回路(1/x)で,1/w×hを求める。そして,乗算器でSat(x,y)と1/w×hとを乗算することで,Sat(x,y)/w×hを求めることができる。R,G,B及びαについてのSat(x,y)/w×hの値が,点(x,y)におけるぼかし画像として出力される。
【実施例2】
【0152】
第2の実施態様
本発明の第2の実施態様に基づく実施例2について説明する。第2の実施態様は,マスク技術を更に用いたものである。第2の実施態様では,たとえば,注目対象となっていない点のぼかし画像を得ることができる。たとえば,後述するぼかし係数が0のものは,ぼかし画像処理に参加しない点である。このぼかし係数は,たとえば画像のアルファチャネルなどの記憶領域に格納できる。以下の説明では,ぼかし係数をw(x,y)と表現する。
【0153】
図7は,本発明のぼかし画像技術を得るためのハードウェア構成を示すブロック図である。ぼかし画像処理を行うモジュールは,PostEffect(ポストエフェクト)コアに搭載されている。
【0154】
図7において,スレイブI/Fは,コマンド等やデータの送受信を行うためのインターフェイスモジュールである。このインターフェイスは,他のシステムの構成要素と情報の授受を行う。マスターバス調停回路(Arbiter)は,外部メモリへとアクセスすることと,記憶部において書き込み及び読み出しのコンフリクトが起こらないように調整するための回路である。外部メモリの例は,色バッファや深さバッファである。ブロック/線変換回路は,メモリデータの記憶フォーマットを変換するためのモジュールである。画面制御回路は,モニタに出力される画像情報を制御するためのモジュールである。ポストエフェクトコアは,画像処理を行うとともに,ぼかし画像処理モジュールを含むモジュールである。
【0155】
図8は,ポストエフェクトコアを説明するためのブロック図である。スレイブI/Fモジュールは,たとえば図7のスレイブI/Fを含む他のモジュールからのコマンドを受け取る。そして,スキャンラインアルゴリズムに従って,X,Y座標を生成する。たとえば,入力画像の各ラインを順に処理し,それぞれのライン状の各点を順次生成する。
【0156】
その都度,P,Pxy,及びPを生成する。ここでtは,トップを意味し,xyは現在地の座標を意味し,bは底を意味する。図9は,P,Pxy,及びPのピクセル位置を説明するための図である。P,Pxy,及びP図9に示される通りである。さらに,更なるテクスチャのアクセスをようする場合は付加的な座標Txyを生成してもよい。
【0157】
次のモジュールは,色,深さ,ステンシル読み出し回路である。このモジュールは,上記のP,Pxy,及びPを利用した処理を行う。このモジュールは,マスターバス調停回路と協働して,様々なメモリにアクセスする。そして,典型的にはRGB及びアルファ(A)の値,ステンシル及び深さの値を読み出す。読みだした値をぼかしモジュールへと伝える。
【0158】
ぼかし演算モジュールから出力されたぼかし処理の結果はポストプロセッシングモジュールの入力として用いられる。このモジュールは様々な演算処理を施す。その例は,ブレンディング,アルファ,深さまたはステンシルテスト,色を輝度に変換する処理である。演算処理後,出力される色情報は,書き出しメモリに格納される。このメモリは,マスターバス調停回路を用いて,得られた色情報をメモリに格納する。
【0159】
図10は,ぼかし演算処理を実現するためのハードウェア実装のブロック図である。このモジュールは,Pxy及びTxyを処理せず,単に次のモジュールであるポストプロセッシング回路へと渡す。
【0160】
先に説明した4つのローカルメモリーは,図10のSRAM0t,SRAM1t,SRAM0b,及びSRAM1b(これらをまとめてSRAMとも表記する)に相当する。SRAM0t,及びSRAM1tは,トップに関連する演算に関連し,SRAM0b,及びSRAM1bはボトム(底)に関する等式と関連したものである。
【0161】
式Iの計算に必要な情報が,これらのSRAMから読みだされ,入力値i(x,y)は前のモジュールからの入力として得られる。sat(X,Y)及びsat(X,Y)は,2つの合算モジュールの出力として得られ,sat(X,Y)及びsat(X,Y)は,SRAMから読みだすことで得ることができる。これらの値は,次に合算モジュール及び割り算モジュールにて,式II及び式IIIの演算が行われる。その演算結果であるBxyを次のモジュールへ伝える。
【0162】
次に,本発明の第2の実施態様に基づく演算処理について説明する。この演算処理では,すでにPt及びPbが以下の演算処理前に求められている。式Iaを再掲すると以下のとおりとなる。
【0163】
sat(x,y)=w(x,y)×i(x,y)+sat(x−1,y)−sat(x,y−1)−sat(x−1,y−1)・・・・式Ia
【0164】
w(x,y)の値は,たとえば,トップ及びボトム入力の2度計算される。w(x,y)は,深さ,アルファ,ステンシルテスト,色から輝度への変換,適切なスイッチ選択を用いたテスクチャ入力などに基づいて求めればよい。i(x,y)の典型的な初期値はRGBAの入力値である。モジュールによる演算の後は,R’G’B’Wが出力される。ここで,R’G’及びB’は,入力RGB値の修正された値であり,Wは重み値である。求められたものは,合算モジュールにて使用される。合算モジュール及び除算モジュールでは,重み値は,以下の式と等しいものとして求められる。
【0165】
【数7】
【0166】
Wは,sat演算の結果得られる値であり,合算モジュールの出力である。また,Wは,SRAMの読み出し結果であってもよい。
【実施例3】
【0167】
深さに基づきぼかし係数を変化させる態様
この実施例は,第3の実施態様に基づくものである。この実施例3では,奥行き値zまたはカメラからの距離(深さ)dに基づいて,ぼかし処理を変化させるものである。フィールド効果の深さは,以下のようにして求めることができる。かなり深いフィールドの場合は,たとえば,以下のようにしてかなり深いフィールドを定義する。カメラを用いてシーンが得られたとする。ある距離の閾値Aが与えられたとする。するとこの閾値を超える深さの値を有するものは注目から外れものであり,完全にぼやかし処理の対象となる。ある距離の閾値Bが与えられたとする。するとこの閾値より近いものは完全に注目される対象となる。この2つの閾値の間の物体については,注目から注目しないものへの遷移が起こるといえ,すなわち全くぼかさないものから完全にぼかすものへの遷移が起こるといえる。
【0168】
通常のコンピュータグラフィックスでは,物体はカラーバッファ(色画像)と深さバッファ(カメラからの深さ情報を有する)を含むフレームバッファにレンダリングされる。カメラからの可視領域は,前のクリッピング面(front clipping face)及び遠いクリッピング面(far clipping face)により定義される。先に説明したとおり,この例では閾値A及びBという2つの閾値を用いた。この2つの閾値が,前のクリッピング面および遠いクリッピング面に相当する。
【0169】
これを実現するためには,1次元のルックアップテーブルを用いて実現できる。このルックアップテーブルは,深さの値がAより大きい場合は,wを1とする。深さの値がBより小さい場合は,wを0とする。深さの値がB以上A以下の(Bより大きくAより小さい)場合はたとえば,wは0より大きく1より小さい値とすればよい。閾値A及びBをメモリに記憶する。そしてメモリに記憶したA又はBの値を読み出して,前のモジュールから入力された深さの値と,A及びBを比較する。そして,深さの値がAより大きい場合は,wを1とする。深さの値がBより小さい場合は,wを0とする。深さの値がB以上A以下の(Bより大きくAより小さい)場合はたとえば,wは0より大きく1より小さい値で連続的に変化するものとすればよい。たとえば,閾値Bから閾値Aまでの加重平均値を0から1までの数値に割り当てればよい。
【0170】
深さが閾値Bから閾値Aの中間をとる場合は,ぼかし係数wとして0から1までの中間の値をとるものとすればよい。このぼかし係数wの集合であるマスク値は,プレプロセッシングモジュールにて求めてもよい。
【0171】
図11(a)は,あるシーンのうち,視点の近くにある対象のみを抽出した画像を示す。この黒色部分がブール関数マスクである。この画像は,それぞれの画素データの深さの値を読み出す一方,閾値を読み出し,これらを比較すればよい。そして,その深さの値が所定の値以下のもののみ抽出すればよい。そして,深さの値が所定の値以下のもののみの集合が,図11(a)に示されるブール関数マスクとなる。
【0172】
図11(b)は図11(a)のマスクを用いたぼやかし画像を示す図である。図11(c)は,閾値A及び閾値Bを用いたスムーズマスクを示す図である。
【0173】
図12は,図11(c)のマスクを用いて,マスク対象をぼやかさず,画像を合成したものを示す図である。
【実施例4】
【0174】
グローイング
以下の例では,コンピュータグラフィックの描画対象は,色像を記憶するカラーバッファと,物体の識別番号と関連したステンシル値を記憶するステンシルバッファとを含むフレームバッファにレンダリングされるとする。
【0175】
図13は,実施例4におけるグローイング処理を施す前の原画像である。図13の例では,3つの灯篭がグローイングオブジェクトとして含まれている。この実施例においては,3つの灯篭の回りにグローイング効果をもたらすものである。
【0176】
この方法の最初のステップは,マスクを定義することである。灯篭オブジェクトのステンシル値を有するものについては,wの値を1とする。この例では,第1の実施態様のぼかし技術と,第2の実施態様のぼかし技術とを併用することで,灯篭のみをぼかすことができる。
【0177】
図14は,灯篭オブジェクトのステンシル値を有する入力画像領域を集約したものを示す図である。この灯篭オブジェクト画像にぼかし処理を施し,原画像とブレンディングしたものが図15である。図15は,実施例4において得られた画像を示す。
【実施例5】
【0178】
シルエット
上記のグローイングオブジェクトの描画方法を用いることで,あるオブジェクトのシルエットを簡単に得ることができる。オブジェクトの識別番号を入手できれば,マスクデータを得ることができる。オブジェクトのマスクデータとして光に関する画像データを用いる。そして,この態様では,そのマスク自体をぼかす。ぼかした領域は,もともとの対象よりもぼかし処理のため少し大きくなる。このためぼかし処理を施した領域には,もとのオブジェクトの識別番号と異なる識別番号を有することとなるものが含まれる。ポストプロセッシングにおいては,たとえば,異なるオブジェクト識別番号を有するフラグメントのみをメモリに出力するようにすればよい。図16はその結果を示す。図16はサムライの画像を得るためのものである。図16に示されるように,サムライの輪郭であるシルエットのみを得ることができている。この出力値は,まさにオブジェクトの識別番号テストに基づくブーリアン関数値(Boolean value)である。
【0179】
いったん,シルエットマスクを生成した後,マスクをぼかし処理を施す。図17は,ぼかされたマスクを示す図である。その後,マスクと原画像を調整する。図18は実施例5において得られた画像を示す図である。
【産業上の利用可能性】
【0180】
本発明は,ぼかし画像を得るためのシステムである。よって,コンピュータグラフィックスの分野において利用されうる。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18