以下、本発明を実施するための形態について図面を用いて詳細に説明する。本発明は、画像の中央部のブロック領域(中央ブロック領域)を被写体領域へ向けて移動させる際に、被写体領域内に隙間なく収まるように、移動後のブロック領域(被写体ブロック領域)をスケーリングして設定する。また、本発明は、中央部以外の周辺のブロック領域を被写体領域へ向けて移動させる際に、周辺のブロック領域と被写体ブロック領域との間の隙間をなくすために被写体領域に接するように、移動後の周辺のブロック領域(周辺ブロック領域)をスケーリングして設定する。
これにより、画像の中央部に隙間が生じることはない。このようにして設定された各ブロック領域の特徴量が計算され、当該特徴量を画像検索に用いることで、画像の中央部の隙間及び被写体の位置ずれに影響された検索精度の低下を抑制することができ、高精度の画像検索を実現することが可能となる。
〔実施例1〕
まず、実施例1について説明する。実施例1は、画像の中央部のブロック領域を被写体領域へ向けて移動させた後の被写体ブロック領域を、被写体領域内に隙間なく収まるように設定し、周辺ブロック領域を、中央部に隙間が生じないように設定し、各ブロック領域の特徴量を計算する例である。
図1は、実施例1の画像処理装置の構成例を示すブロック図である。この画像処理装置1は、画像特徴計算部10を備えている。画像特徴計算部10は、ブロック設定部11、被写体領域設定部12、被写体ブロック設定部13、周辺ブロック設定部14及びブロック特徴計算部15を備えている。
画像処理装置1は、1枚の画像Iを入力し、複数のブロック領域を設定し、中央部に隙間が生じないようにブロック領域を再設定し、ブロック領域毎の特徴量を計算し、画像特徴ベクトルVとして出力する。
ブロック設定部11は、画像Iを入力し、画像Iを格子状に切り出し、M×N個のブロック領域(ブロック領域の画像)を初期設定する。M,Nは正の整数であり、画像Iのブロック領域をB(m,n)とする。m=1,・・・,Mであり、n=1,・・・,Nである。そして、ブロック設定部11は、画像Iのブロック領域B(m,n)(を特定するための情報)を被写体領域設定部12に出力する。
図9は、M=4,N=4とした場合のブロック領域B(m,n)の例を示す図である。図9に示すように、ブロック設定部11により、画像Iから16枚のブロック領域B(m,n)が初期設定される。m=1,・・・,4、n=1,・・・,4である。
図10は、ブロック領域B(m,n)の矩形の長さ及び座標を説明する図である。図10に示すように、ブロック領域B(m,n)の横の長さをWBとし、縦の長さをHBとする。また、ブロック領域B(m,n)の左上頂点座標を(xBS(m,n),yBS(m,n))とし、右下頂点座標を(xBE(m,n),yBE(m,n))とする。xBE(m,n)=xBS(m,n)+WBであり、yBE(m,n)=yBS(m,n)+HBである。
ブロック設定部11により、ブロック領域B(m,n)が設定されることで、ブロック領域B(m,n)を特定するための情報として、ブロック領域B(m,n)の横の長さWB、縦の長さHB、左上頂点座標(xBS(m,n),yBS(m,n))及び右下頂点座標(xBE(m,n),yBE(m,n))の情報が生成される。
図1に戻って、被写体領域設定部12は、ブロック設定部11から画像Iのブロック領域B(m,n)を入力し、画像Iの顕著性マップを生成し、画像Iの顕著性マップを用いて、被写体を含む矩形の被写体領域Tを設定する。そして、被写体領域設定部12は、画像Iの被写体領域T(を特定するための情報)及びブロック領域B(m,n)を、被写体ブロック設定部13に出力する。
顕著性マップを生成する処理及び被写体領域Tを設定する処理は既知であり、詳細については、例えば前述の特許文献3を参照されたい。
図11は、被写体領域Tの例、並びに被写体領域Tの矩形の長さ及び座標を説明する図である。図11に示すように、被写体領域設定部12により、矩形枠で囲まれた被写体領域Tが設定される。この被写体領域Tの横の長さをWOとし、縦の長さをH0とする。また、被写体領域Tの左上頂点座標を(xOS,yOS)とし、右下頂点座標を(xOE,yOE)とする。x0E=xOS+WOであり、yOE=yOS+HOである。
被写体領域設定部12により、被写体領域Tが設定されることで、被写体領域Tを特定するための情報として、被写体領域Tの横の長さWO、縦の長さH0、左上頂点座標(xOS,yOS)及び右下頂点座標(xOE,yOE)の情報が生成される。
図1に戻って、被写体ブロック設定部13は、被写体領域設定部12から、画像Iの被写体領域T及びブロック領域B(m,n)を入力する。そして、被写体ブロック設定部13は、ブロック領域B(m,n)のうち、予め設定された中央領域COに含まれるM’×N’個のブロック領域を特定し、これを中央ブロック領域とする。M’,N’は正の整数、M’<M,N’<Nであり、中央ブロック領域をBC(m’,n’)とする。m’=1,・・・,M’であり、n’=1,・・・,N’である。
図12は、中央領域COの例、及び中央領域CO以外の領域の矩形の長さを説明する図である。図12に示すように、中央領域COが予め設定されている。画像Iの横の長さをWとし、縦の長さをHとする。画像Iの左端から中央領域COの左端までの間の横の長さは、画像Iの右端から中央領域COの右端までの間の横の長さと同じであり、rwWとする。また、画像Iの上端から中央領域COの上端までの間の縦の長さは、画像Iの下端から中央領域COの下端までの間の縦の長さと同じであり、rHHとする。rW及びrHは、中央領域CO以外の領域において、それぞれ横及び縦の長さを定めるパラメータである。
図13は、M’=2,N’=2とした場合の中央ブロック領域BC(m’,n’)の例を示す図である。図9に示したブロック領域B(m,n)の個数であるM=4,N=4、及び、図12に示したパラメータrW,rHをrW=rH=0.2とした場合、図13に示すように、被写体ブロック設定部13により、中央ブロック領域BC(m’,n’)が設定される。M’=2(m’=1,2)及びN’=2(n’=1,2)であり、BC(m’,n’)=B(m’+1,n’+1)である。
図14は、中央ブロック領域BC(m’,n’)の矩形の長さを説明する図である。図14に示すように、中央ブロック領域BC(m’,n’)の横の長さは、ブロック領域B(m,n)の横の長さWBと同じであり、中央ブロック領域BC(m’,n’)の縦の長さは、ブロック領域B(m,n)の縦の長さHBと同じである。また、中央ブロック領域BC(m’,n’)の座標は、ブロック領域B(m,n)のうちのいずれかの座標と同じである。図13の例では、中央ブロック領域BC(m’,n’)の座標は、ブロック領域B(m’+1,n’+1)の座標と同じである。
被写体ブロック設定部13により、中央ブロック領域BC(m’,n’)が特定されることで、中央ブロック領域BC(m’,n’)を特定するための情報として、中央ブロック領域BC(m’,n’)の横の長さWB、縦の長さHB、左上頂点座標及び右下頂点座標の情報が生成される。
図1に戻って、被写体ブロック設定部13は、中央ブロック領域BC(m’,n’)を被写体領域Tへ向けて移動させ、被写体領域Tの位置及び大きさに応じて、被写体領域T内に隙間なく収まるように、中央ブロック領域BC(m’,n’)の位置及び大きさを変更し(中央ブロック領域BC(m’,n’)をスケーリングし)、被写体ブロック領域を設定する。この場合、被写体領域T内に隙間なく収まるように設定された被写体ブロック領域は、互いに重なることがあり得る。被写体ブロック領域をBC’(m’,n’)とする。m’=1,・・・,M’であり、n’=1,・・・,N’である。
図15は、被写体ブロック領域BC’(m’,n’)の矩形の長さ及び座標を説明する図である。図15に示すように、被写体ブロック領域BC’(m’,n’)の横の長さをWCとし、縦の長さをHCとする。また、被写体ブロック領域BC’(m’,n’)の左上頂点座標を(xCS(m’,n’),yCS(m’,n’))とする。
つまり、被写体ブロック設定部13は、被写体領域Tの位置(左上頂点座標(xOS,yOS)、右下頂点座標(xOE,yOE))及び大きさ(横の長さWO、縦の長さH0)に応じて、中央ブロック領域BC(m’,n’)の左上頂点座標、横の長さWB及び縦の長さHBを変更する。そして、被写体ブロック設定部13は、被写体ブロック領域BC’(m’,n’)の左上頂点座標(xCS(m’,n’),yCS(m’,n’))を設定すると共に、その横の長さWC及び縦の長さHCを設定する。
被写体ブロック設定部13により、被写体ブロック領域BC’(m’,n’)が設定されることで、被写体ブロック領域BC’(m’,n’)を特定するための情報として、被写体ブロック領域BC’(m’,n’)の横の長さWB、縦の長さHB及び左上頂点座標(xCS(m’,n’),yCS(m’,n’))の情報が生成される。
図1に戻って、被写体ブロック設定部13は、画像Iの被写体ブロック領域BC’(m’,n’)(を特定するための情報)、中央ブロック領域BC(m’,n’)(を特定するための情報)、被写体領域T及びブロック領域B(m,n)を、周辺ブロック設定部14に出力する。
図2は、被写体ブロック設定部13の処理例を示すフローチャートである。被写体ブロック設定部13は、被写体領域設定部12から、画像Iの被写体領域T及びブロック領域B(m,n)を入力する(ステップS201)。
被写体ブロック設定部13は、ブロック領域B(m,n)のうち、予め設定された中央領域COに含まれる中央ブロック領域BC(m’,n’)を特定する(ステップS202)。そして、被写体ブロック設定部13は、中央ブロック領域BC(m’,n’)の数M’,N’にその長さWB,HBを乗算する(ステップS203:M’WB,N’HB)。
被写体ブロック設定部13は、被写体領域Tの長さWO,H0と乗算結果M’WB,N’HBとを比較する(ステップS204)。そして、被写体ブロック設定部13は、この比較結果に応じて、被写体ブロック領域BC’(m’,n’)の横の長さWC及び縦の長さHCを設定し(ステップS205)、その左上頂点座標(xCS(m’,n’),yCS(m’,n’))を設定する(ステップS206)。
具体的には、被写体ブロック設定部13は、被写体ブロック領域BC’(m’,n’)の横の長さWC及び座標値xCS(m’,n’)を設定する際に、ステップS204にてWO≧M’WBの場合、ステップS205において、被写体領域Tの横の長さWO及び中央ブロック領域BC(m’,n’)の数M’を用いて、WC=WO/M’を計算し、被写体ブロック領域BC’(m’,n’)の横の長さWCを求める。これにより、被写体ブロック領域BC’(m’,n’)の横の長さWCは、中央ブロック領域BC(m’,n’)の横の長さWB以上となる。
被写体ブロック設定部13は、ステップS206において、被写体領域Tの左上頂点座標のxOS、パラメータm’及び被写体ブロック領域BC’(m’,n’)の横の長さWCを用いて、xCS(m’,n’)=xOS+(m’−1)WCを計算し、被写体ブロック領域BC’(m’,n’)の左上頂点座標のxCS(m’,n’)を求める。
一方、被写体ブロック設定部13は、ステップS204にてWO<M’WBの場合、ステップS205において、中央ブロック領域BC(m’,n’)の横の長さWBを用いて、WC=WBとし、被写体ブロック領域BC’(m’,n’)の横の長さWCを求める。これにより、被写体ブロック領域BC’(m’,n’)の横の長さWCは、中央ブロック領域BC(m’,n’)の横の長さWBと同じになる。
被写体ブロック設定部13は、ステップS206において、被写体領域Tの左上頂点座標のxOS、パラメータm’、被写体領域Tの横の長さWO及び中央ブロック領域BC(m’,n’)の横の長さWBを用いて、xCS(m’,n’)=xOS+(m’−1)dWを計算し、被写体ブロック領域BC’(m’,n’)の左上頂点座標のxCS(m’,n’)を求める。dW=(WO−WB)/(m’−1)である。
これにより、被写体ブロック領域BC’(m’,n’)の横の長さWC及び座標値xCS(m’,n’)が設定される。
さらに、被写体ブロック設定部13は、被写体ブロック領域BC’(m’,n’)の縦の長さHC及び座標値yCS(m’,n’)を設定する際に、ステップS204にてHO≧N’HBの場合、ステップS205において、被写体領域Tの縦の長さHO及び中央ブロック領域BC(m’,n’)の数N’を用いて、HC=HO/N’を計算し、被写体ブロック領域BC’(m’,n’)の縦の長さHCを求める。これにより、被写体ブロック領域BC’(m’,n’)の縦の長さHCは、中央ブロック領域BC(m’,n’)の縦の長さHB以上となる。
被写体ブロック設定部13は、ステップS206において、被写体領域Tの左上頂点座標のyOS、パラメータn’及び被写体ブロック領域BC’(m’,n’)の縦の長さHCを用いて、yCS(m’,n’)=yOS+(n’−1)HCを計算し、被写体ブロック領域BC’(m’,n’)の左上頂点座標のyCS(m’,n’)を求める。
一方、被写体ブロック設定部13は、ステップS204にてHO<N’HBの場合、ステップS205において、中央ブロック領域BC(m’,n’)の縦の長さHBを用いて、HC=HBとし、被写体ブロック領域BC’(m’,n’)の縦の長さHCを求める。これにより、被写体ブロック領域BC’(m’,n’)の縦の長さHCは、中央ブロック領域BC(m’,n’)の縦の長さHBと同じになる。
被写体ブロック設定部13は、ステップS206において、被写体領域Tの左上頂点座標のyOS、パラメータn’、被写体領域Tの縦の長さHO及び中央ブロック領域BC(m’,n’)の縦の長さHBを用いて、yCS(m’,n’)=yOS+(n’−1)dHを演算し、被写体ブロック領域BC’(m’,n’)の左上頂点座標のyCS(m’,n’)を求める。dH=(HO−HB)/(n’−1)である。
これにより、被写体ブロック領域BC’(m’,n’)の縦の長さHC及び座標値yCS(m’,n’)が設定される。
図2に戻って、被写体ブロック設定部13は、ステップS206から移行して、全ての中央ブロック領域BC(m’,n’)に対するステップS205及びステップS206の処理が完了したか否かを判定する(ステップS207)。すなわち、被写体ブロック設定部13は、全ての被写体ブロック領域BC’(m’,n’)についての設定が完了したか否かを判定する。
被写体ブロック設定部13は、ステップS207において、全ての中央ブロック領域BC(m’,n’)に対する処理が完了していないことを判定した場合(ステップS207:N)、ステップS205へ移行する。
一方、被写体ブロック設定部13は、ステップS207において、全ての中央ブロック領域BC(m’,n’)に対する処理が完了したことを判定した場合(ステップS207:Y)、ステップS208へ移行する。被写体ブロック設定部13は、画像Iの被写体ブロック領域BC’(m’,n’)、中央ブロック領域BC(m’,n’)、被写体領域T及びブロック領域B(m,n)を周辺ブロック設定部14に出力する(ステップS208)。
このように、被写体ブロック設定部13により、中央ブロック領域BC(m’,n’)が被写体領域Tへ向けて移動し、被写体領域Tの位置及び大きさに応じて、中央ブロック領域BC(m’,n’)の位置及び大きさが変更され、被写体ブロック領域BC’(m’,n’)が設定される。尚、図2にて説明した処理は一例であり、本発明はこの処理に限定されるものではない。
図16及び図17は、被写体ブロック領域BC’(m’,n’)の例を示す図である。図16及び図17に示すように、被写体ブロック領域BC’(1,1),BC’(2,1),BC’(1,2),BC’(2,2)の横の長さWCは、図13に示した中央ブロック領域BC(1,1),BC(2,1),BC(1,2),BC(2,2)の横の長さWB以上となる。また、被写体ブロック領域BC’(1,1),BC’(2,1),BC’(1,2),BC’(2,2)の縦の長さHCは、図13に示した中央ブロック領域BC(1,1),BC(2,1),BC(1,2),BC(2,2)のHBと同じになる。
また、被写体ブロック領域BC’(1,1),BC’(2,1),BC’(1,2),BC’(2,2)の左上頂点座標は、それぞれ(xOS,yOS)(xOS+WC,yOS)(xOS,yOS+HO-HB)(xOS+WC,yOS+HO-HB)となる。
このように、被写体領域T内に隙間なく収まり、かつ重なりが許容された状態の被写体ブロック領域BC’(m’,n’)が設定される。これにより、後述するブロック特徴計算部15において、被写体領域Tの全ての領域を反映した特徴量が計算される。したがって、画像検索の際に、被写体領域Tの全ての領域を反映した特徴量が用いられるから、精度の高い検索を実現することができる。
また、被写体ブロック領域BC’(m’,n’)の長さWC,HCは、それぞれ中央ブロック領域BC(m’,n’)の長さWB,HB以上となる。これにより、被写体ブロック領域BC’(m’,n’)は、中央ブロック領域BC(m’,n’)よりも細長い領域に設定されることがないから、後述するブロック特徴計算部15において、本来の画像特徴を反映した特徴量が計算される。したがって、画像検索の際に、本来の画像特徴を反映した特徴量が用いられるから、精度の高い検索を実現することができる。
図1に戻って、周辺ブロック設定部14は、被写体ブロック設定部13から、画像Iの被写体ブロック領域BC’(m’,n’)、中央ブロック領域BC(m’,n’)、被写体領域T及びブロック領域B(m,n)を入力する。そして、周辺ブロック設定部14は、ブロック領域B(m,n)のうち、中央ブロック領域BC(m’,n’)以外のブロック領域を特定し、これを周辺のブロック領域とする。
周辺ブロック設定部14は、周辺のブロック領域B(m,n)を被写体領域T(中央ブロック領域BC(m’,n’))へ向けて移動させ、画像Iの中央部内(中央ブロック領域BC(m’,n’)が存在していた領域内、すなわち周辺のブロック領域B(m,n)と被写体ブロック領域BC’(m’,n’)との間)の隙間をなくすために被写体領域Tに接するように、被写体領域Tの位置に応じて、周辺のブロック領域B(m,n)の大きさを変更し(周辺のブロック領域B(m,n)をスケーリングし)、新たなブロック領域(周辺ブロック領域)を設定する。この場合、周辺ブロック領域は互いに重なることがあり得る。周辺ブロック領域をBD’(m”,n”)とする。m”=1,・・・,M”であり、n”=1,・・・,N”であり、M”=M−M’,N”=N−N’である。
つまり、周辺ブロック設定部14は、周辺のブロック領域B(m,n)と被写体領域Tとの間の位置関係に基づいて、被写体領域Tの位置(左上頂点座標(xOS,yOS)、右下頂点座標(xOE,yOE))に応じて、周辺のブロック領域B(m,n)の座標を変更する。そして、周辺ブロック設定部14は、周辺ブロック領域BD’(m”,n”)の座標を設定する。これにより、周辺ブロック領域BD’(m”,n”)を特定するための情報が生成される。
周辺ブロック設定部14は、画像Iの被写体ブロック領域BC’(m’,n’)及び周辺ブロック領域BD’(m”,n”)(を特定するための情報)をブロック特徴計算部15に出力する。
図3は、周辺ブロック設定部14の処理例を示すフローチャートである。周辺ブロック設定部14は、被写体ブロック設定部13から、画像Iの被写体ブロック領域BC’(m’,n’)、中央ブロック領域BC(m’,n’)、被写体領域T及びブロック領域B(m,n)を入力する(ステップS301)。
周辺ブロック設定部14は、ブロック領域B(m,n)のうち、中央ブロック領域BC(m’,n’)以外の周辺のブロック領域B(m,n)を特定する(ステップS302)。
周辺ブロック設定部14は、周辺のブロック領域B(m,n)の左上頂点座標(xBS(m,n),yBS(m,n))及び右下頂点座標(xBE(m,n),yBE(m,n))、並びに被写体領域Tの左上頂点座標(xOS,yOS)及び右下頂点座標(xOE,yOE)に基づいて、周辺のブロック領域B(m,n)と被写体領域Tとの間の位置関係を示すケースを判定する(ステップS303)。
図18は、周辺のブロック領域B(m,n)と被写体領域Tとの間の位置関係に基づいて判定されるケースを説明する図である。図18において、周辺のブロック領域B(m,n)が被写体領域Tに対し左中央または右中央に位置する場合、ケース1が判定され、上中央または下中央に位置する場合、ケース2が判定される。また、周辺のブロック領域B(m,n)が被写体領域Tに対し左上に位置する場合、ケース3が判定され、右上に位置する場合、ケース4が判定され、左下に位置する場合、ケース5が判定され、右下に位置する場合、ケース6が判定される。
周辺ブロック設定部14は、ステップS303にて判定したケース毎に、周辺のブロック領域B(m,n)が被写体領域Tに接するように、周辺のブロック領域B(m,n)の座標を変更し、周辺ブロック領域BD’(m”,n”)の座標を設定する(ステップS304)。
図19及び図20は、周辺ブロック領域BD’(m”,n”)の座標を設定する処理について説明する図である。以下、図18、図19及び図20を参照して、図3に示したステップS303及びステップS304の処理について具体的に説明する。
<ケース1>
周辺ブロック設定部14は、ステップS303において、周辺のブロック領域B(m,n)の左上頂点座標(xBS(m,n),yBS(m,n))及び右下頂点座標(xBE(m,n),yBE(m,n))、並びに被写体領域Tの左上頂点座標(xOS,yOS)及び右下頂点座標(xOE,yOE)に基づいて、yOS<yBS(m,n)<yOEまたはyOS<yBE(m,n)<yOEを判断した場合、図18に示したケース1を判定する。
周辺ブロック設定部14は、ケース1を判定した場合、ステップS304において、周辺ブロック領域BD’(m”,n”)の左上頂点座標(xBS(m,n),yBS(m,n))及び右下頂点座標(xBE(m,n),yBE(m,n))について、xBE(m,n)<xOSのとき、xBE(m,n)=xOSとすることで、周辺ブロック領域BD’(m”,n”)の左上頂点座標(xBS(m,n),yBS(m,n))及び右下頂点座標(xOS,yBE(m,n))を設定する。また、周辺ブロック設定部14は、xBS(m,n)>xOEのとき、xBS(m,n)=xOEとすることで、周辺ブロック領域BD’(m”,n”)の左上頂点座標(xOE,yBS(m,n))及び右下頂点座標(xBE(m,n),yBE(m,n))を設定する。
尚、周辺ブロック領域BD’(m”,n”)の左上頂点座標(xBS(m,n),yBS(m,n))及び右下頂点座標(xBE(m,n),yBE(m,n))における(m”,n”)及び(m,n)は、同じ意味として記述している。以下、同様である。
図19の<ケース1>の例では、yOS<yBE(m,n)<yOE、xBE(m,n)<xOSであるから、周辺ブロック領域BD’(m”,n”)の左上頂点座標は(xBS(m,n),yBS(m,n))となり、右下頂点座標は(xOS,yBE(m,n))となる。これにより、周辺ブロック領域BD’(m”,n”)は、周辺のブロック領域B(m,n)よりも大きくなり、被写体領域Tに接することとなる。
<ケース2>
周辺ブロック設定部14は、ステップS303において、前記データに基づいて、xOS<xBS(m,n)<xOEまたはxOS<xBE(m,n)<xOEを判断した場合、図18に示したケース2を判定する。
周辺ブロック設定部14は、ケース2を判定した場合、ステップS304において、yBE(m,n)<yOSのとき、yBE(m,n)=yOSとすることで、周辺ブロック領域BD’(m”,n”)の左上頂点座標(xBS(m,n),yBS(m,n))及び右下頂点座標(xBE(m,n),yOS)を設定する。また、周辺ブロック設定部14は、yBS(m,n)>yOEのとき、yBS(m,n)=yOEとすることで、周辺ブロック領域BD’(m”,n”)の左上頂点座標(xBS(m,n),yOE)及び右下頂点座標(xBE(m,n),yBE(m,n))を設定する。
図19の<ケース2>の例では、xOS<xBS(m,n)<xOE、yBS(m,n)>yOEであるから、周辺ブロック領域BD’(m”,n”)の左上頂点座標は(xBS(m,n),yOE)となり、右下頂点座標は(xBE(m,n),yBE(m,n))となる。これにより、周辺ブロック領域BD’(m”,n”)は、周辺のブロック領域B(m,n)よりも大きくなり、被写体領域Tに接することとなる。
<ケース3>
周辺ブロック設定部14は、ステップS303において、前記データに基づいて、xBE(m,n)<xOSかつyBE(m,n)<yOSを判断した場合、図18に示したケース3を判定する。
周辺ブロック設定部14は、ケース3を判定した場合、ステップS304において、xBE(m,n)=xOS,yBE(m,n)=yOSとすることで、周辺ブロック領域BD’(m”,n”)の左上頂点座標(xBS(m,n),yBS(m,n))及び右下頂点座標(xOS,yOS)を設定する。
図19の<ケース3>の例では、xBE(m,n)<xOSかつyBE(m,n)<yOSであるから、周辺ブロック領域BD’(m”,n”)の左上頂点座標は(xBS(m,n),yBS(m,n))となり、右下頂点座標は(xOS,yOS)となる。これにより、周辺ブロック領域BD’(m”,n”)は、周辺のブロック領域B(m,n)よりも大きくなり、被写体領域Tに接することとなる。
<ケース4>
周辺ブロック設定部14は、ステップS303において、前記データに基づいて、xBS(m,n)>xOEかつyBE(m,n)<yOSを判断した場合、図18に示したケース4を判定する。
周辺ブロック設定部14は、ケース4を判定した場合、ステップS304において、xBS(m,n)=xOE,yBE(m,n)=yOSとすることで、周辺ブロック領域BD’(m”,n”)の左上頂点座標(xOE,yBS(m,n))及び右下頂点座標(xBE(m,n),yOS)を設定する。
図20の<ケース4>の例では、xBS(m,n)>xOEかつyBE(m,n)<yOSであるから、周辺ブロック領域BD’(m”,n”)の左上頂点座標は(xOE,yBS(m,n))となり、右下頂点座標は(xBE(m,n),yOS)となる。これにより、周辺ブロック領域BD’(m”,n”)は、周辺のブロック領域B(m,n)よりも大きくなり、被写体領域Tに接することとなる。
<ケース5>
周辺ブロック設定部14は、ステップS303において、前記データに基づいて、xBE(m,n)<xOSかつyBS(m,n)>yOEを判断した場合、図18に示したケース5を判定する。
周辺ブロック設定部14は、ケース5を判定した場合、ステップS304において、xBE(m,n)=xOS,yBS(m,n)=yOEとすることで、周辺ブロック領域BD’(m”,n”)の左上頂点座標(xBS(m,n),yOE)及び右下頂点座標(xOS,yBE(m,n))を設定する。
図20の<ケース5>の例では、xBE(m,n)<xOSかつyBS(m,n)>yOEであるから、周辺ブロック領域BD’(m”,n”)の左上頂点座標は(xBS(m,n),yOE)となり、右下頂点座標は(xOS,yBE(m,n))となる。これにより、周辺ブロック領域BD’(m”,n”)は、周辺のブロック領域B(m,n)よりも大きくなり、被写体領域Tに接することとなる。
<ケース6>
周辺ブロック設定部14は、ステップS303において、前記データに基づいて、xBS(m,n)>xOEかつyBS(m,n)>yOEを判断した場合、図18に示したケース6を判定する。
周辺ブロック設定部14は、ケース6を判定した場合、ステップS304において、xBS(m,n)=xOE,yBS(m,n)=yOEとすることで、周辺ブロック領域BD’(m”,n”)の左上頂点座標(xOE,yOE)及び右下頂点座標(xBE(m,n),yBE(m,n))を設定する。
図20の<ケース6>の例では、xBS(m,n)>xOEかつyBS(m,n)>yOEであるから、周辺ブロック領域BD’(m”,n”)の左上頂点座標は(xOE,yOE)となり、右下頂点座標は(xBE(m,n),yBE(m,n))となる。これにより、周辺ブロック領域BD’(m”,n”)は、周辺のブロック領域B(m,n)よりも大きくなり、被写体領域Tに接することとなる。
これにより、周辺のブロック領域B(m,n)と被写体領域Tとの間の位置関係を示すケースが判定され、被写体領域Tに接して隙間をなくすための周辺ブロック領域BD’(m”,n”)の座標が設定される。
図3に戻って、周辺ブロック設定部14は、ステップS304から移行して、全ての周辺のブロック領域B(m,n)に対するステップS303及びステップS304の処理が完了したか否かを判定する(ステップS305)。すなわち、周辺ブロック設定部14は、全ての周辺ブロック領域BD’(m”,n”)についての設定が完了したか否かを判定する。
周辺ブロック設定部14は、ステップS305において、全ての周辺のブロック領域B(m,n)に対する処理が完了していないことを判定した場合(ステップS305:N)、ステップS303へ移行する。
一方、周辺ブロック設定部14は、ステップS305において、全ての周辺のブロック領域B(m,n)に対する処理が完了したことを判定した場合(ステップS305:Y)、ステップS306へ移行する。周辺ブロック設定部14は、画像Iの被写体ブロック領域BC’(m’,n’)及び周辺ブロック領域BD’(m”,n”)をブロック特徴計算部15に出力する(ステップS306)。
このように、周辺ブロック設定部14により、被写体領域Tの位置に応じて、周辺のブロック領域B(m,n)における複数の頂点のうち被写体領域Tに近い頂点の位置を変更した周辺ブロック領域BD’(m”,n”)が設定される。
これにより、周辺のブロック領域B(m,n)と被写体ブロック領域BC’(m’,n’)との間の隙間がなくなり、かつ重なりが許容された状態の周辺ブロック領域BD’(m”,n”)が生成される。つまり、後述するブロック特徴計算部15において、隙間のない全ての領域を反映した特徴量が計算される。したがって、画像検索の際に、隙間のない全ての領域を反映した特徴量が用いられるから、精度の高い検索を実現することができる。尚、図3にて説明した処理は一例であり、本発明はこの処理に限定されるものではない。
図1に戻って、ブロック特徴計算部15は、周辺ブロック設定部14から画像Iの被写体ブロック領域BC’(m’,n’)及び周辺ブロック領域BD’(m”,n”)を入力する。そして、ブロック特徴計算部15は、被写体ブロック領域BC’(m’,n’)及び周辺ブロック領域BD’(m”,n”)の特徴量を計算し、これらの特徴量からなる画像特徴ベクトルVを生成して出力する。画像特徴ベクトルVを[v(1,1),v(2,1),・・・,v(M,N)]とする。
ブロック特徴計算部15は、画像Iの画像特徴ベクトルV=[v(1,1),v(2,1),・・・,v(M,N)]を出力する。
特徴量(画像特徴量)は、色特徴の例として、RGB平均値ベクトル、色相ヒストグラム等が計算され、モノクロ特徴(テクスチャ特徴)の例として、平均輝度値、エッジ量、エッジ方向ヒストグラム等が計算される。また、色特徴とテクスチャ特徴とを組合せた例として、RGB平均値ベクトル及びエッジ量の組合せ、色相ヒストグラム及びエッジ方向ヒストグラムの組合せ等が計算される。
以上のように、実施例1の画像処理装置1によれば、ブロック設定部11は、画像Iに対してM×N個のブロック領域B(m,n)を初期設定し、被写体領域設定部12は、画像Iについて、被写体を含む矩形の被写体領域Tを設定する。
被写体ブロック設定部13は、ブロック領域B(m,n)のうち、予め設定された中央領域COに含まれる中央ブロック領域BC(m’,n’)を特定する。そして、被写体ブロック設定部13は、中央ブロック領域BC(m’,n’)を被写体領域Tへ向けて移動させ、被写体領域T内に隙間なく収まるように、被写体領域Tの位置及び大きさに応じて、中央ブロック領域BC(m’,n’)を変更した被写体ブロック領域BC’(m’,n’)を設定する。
周辺ブロック設定部14は、ブロック領域B(m,n)のうち、中央ブロック領域BC(m’,n’)以外のブロック領域を周辺のブロック領域B(m,n)として特定する。そして、周辺ブロック設定部14は、周辺のブロック領域B(m,n)と被写体領域T(中央ブロック領域BC(m’,n’))との間の位置関係に基づいて、周辺のブロック領域B(m,n)を被写体領域Tへ向けて移動させ、画像Iの中央部(中央ブロック領域BC(m’,n’)が存在していた領域)内の隙間をなくすために被写体領域Tに接するように、周辺ブロック領域BD’(m”,n”)を設定する。
ブロック特徴計算部15は、被写体ブロック領域BC’(m’,n’)及び周辺ブロック領域BD’(m”,n”)の特徴量を計算し、これらの特徴量からなる画像特徴ベクトルVを生成して出力する。
これにより、画像Iの中央ブロック領域BC(m’,n’)及び周辺のブロック領域B(m,n)を被写体領域Tへ向けて移動させる際に、中央部に隙間が生じないように被写体ブロック領域BC’(m’,n’)及び周辺ブロック領域BD’(m”,n”)を設定することができる。つまり、これらのブロック領域は、被写体領域Tの位置及び大きさにかかわらず、画像I内に重なりが許容された状態で隙間なく設定される。
そして、画像I内で隙間のないこれらのブロック領域から生成された画像特徴ベクトルVを用いることで、高精度の画像検索を実現することが可能となる。具体的には、画像I内におけるブロック領域間の隙間を原因とした検索精度の低下、及び、被写体の位置または大きさの違いを原因とした検索精度の低下を抑制することができる。
〔実施例2〕
次に、実施例2について説明する。実施例2は、実施例1の画像特徴計算部10により計算された画像特徴ベクトルVを用いて、複数の検索対象画像から要求画像に類似する画像を選択する例である。
図4は、実施例2の画像処理装置の構成例を示すブロック図である。この画像処理装置2は、検索対象画像が格納されたHD(ハードディスク)20、前処理部21、検索対象画像の画像特徴ベクトルが格納されたHD22、及び検索処理部23を備えている。
画像処理装置2は、要求画像IQに類似する画像を、複数の検索対象画像I1,・・・,IDの中から選択して出力する。具体的には、画像処理装置2は、複数の検索対象画像I1,・・・,IDの画像特徴ベクトルV1,・・・,VDを計算し、1枚の要求画像IQを入力して要求画像IQの画像特徴ベクトルVQを計算する。そして、画像処理装置2は、要求画像IQと複数の検索対象画像I1,・・・,IDとの間の類似度をそれぞれ計算し、複数の検索対象画像I1,・・・,IDとのうち類似度の高い画像を選択して出力する。
HD20には、D枚の検索対象画像I1,・・・,ID(=Id)が格納されている。Dは検索対象画像数であり、2以上の整数である。パラメータd=1,・・・,Dである。
前処理部21は、図1に示した画像特徴計算部10を備えている。前処理部21は、HD20から検索対象画像I1,・・・,IDを順番に読み出し、検索対象画像I1,・・・,IDの画像特徴ベクトルV1,・・・,VDをそれぞれ計算する。そして、前処理部21は、画像特徴ベクトルV1,・・・,VDをHD22に格納する。
図5は、前処理部21の処理例を示すフローチャートである。前処理部21は、パラメータd=1を設定し(ステップS501)、HD20から検索対象画像Idを読み出す(ステップS502)。
前処理部21は、図1に示した画像特徴計算部10と同様の処理を行い、検索対象画像Idの画像特徴ベクトルVdを計算し(ステップS503)、これをHD22に格納する(ステップS504)。
前処理部21は、パラメータdに1を加算し(ステップS505)、パラメータdが所定の検索対象画像数Dよりも大きいか否かを判定する(ステップS506)。前処理部21は、ステップS506において、パラメータdが検索対象画像数Dよりも大きくないと判定した場合(ステップS506:N)、ステップS502へ移行する。一方、前処理部21は、ステップS506において、パラメータdが検索対象画像数Dよりも大きいと判定した場合(ステップS506:Y)、処理を終了する。
これにより、HD22には、検索対象画像I1,・・・,IDの画像特徴ベクトルV1,・・・,VDが格納される。
図4に戻って、検索処理部23は、画像特徴計算部10、画像類似度計算部30、HD31及び画像選択部32を備えている。検索処理部23は、要求画像IQを入力し、要求画像IQの画像特徴ベクトルVQを計算し、HD22から検索対象画像I1,・・・,IDの画像特徴ベクトルV1,・・・,VDを読み出す。そして、検索処理部23は、要求画像IQの画像特徴ベクトルVQ及び検索対象画像I1,・・・,IDの画像特徴ベクトルV1,・・・,VDに基づいて、両画像間の類似度S(Q,1),・・・,S(Q,D)を計算し、類似度の高いR枚の画像Id1,・・・,IdRを検索結果として出力する。Rは1以上の整数である。
図6は、検索処理部23の処理例を示すフローチャートである。検索処理部23の画像特徴計算部10は、要求画像IQを入力し(ステップS601)、図1に示した画像特徴計算部10と同様の処理を行い、要求画像IQの画像特徴ベクトルVQを計算する(ステップS602)。画像特徴計算部10は、要求画像IQの画像特徴ベクトルVQを画像類似度計算部30に出力する。
画像類似度計算部30は、画像特徴計算部10から要求画像IQの画像特徴ベクトルVQを入力し、パラメータd=1を設定し(ステップS603)、HD22から検索対象画像Idの画像特徴ベクトルVdを読み出す(ステップS604)。そして、画像類似度計算部30は、要求画像IQの画像特徴ベクトルVQ及び検索対象画像Idの画像特徴ベクトルVdに基づいて、両画像間の類似度S(Q,d)を計算し(ステップS605)、これをHD31に格納する。ステップS605の詳細については後述する。
画像類似度計算部30は、パラメータdに1を加算し(ステップS606)、パラメータdが所定の検索対象画像数Dよりも大きいか否かを判定する(ステップS607)。画像類似度計算部30は、ステップS607において、パラメータdが検索対象画像数Dよりも大きくないと判定した場合(ステップS607:N)、ステップS604へ移行する。一方、画像類似度計算部30は、ステップS607において、パラメータdが検索対象画像数Dよりも大きいと判定した場合(ステップS607:Y)、ステップS608へ移行する。
画像選択部32は、HD31から、要求画像IQと検索対象画像I1,・・・,IDとの間の類似度S(Q,1),・・・,S(Q,D)を読み出す。そして、画像選択部32は、検索対象画像I1,・・・,IDのうち、類似度の高いR枚の画像Id1,・・・,IdRを検索結果として選択し、画像Id1,・・・,IdRをHD20から読み出して出力する(ステップS608)。
図7は、図6に示したステップS605の類似度S(Q,d)を計算する処理の詳細を示すフローチャートである。この処理は、画像類似度計算部30により行われる。
要求画像IQの画像特徴ベクトルVQを[vQ(1,1),vQ(2,1),・・・,vQ(M,N)]、検索対象画像Idの画像特徴ベクトルVdを[vd(1,1),vd(2,1),・・・,vd(M,N)]とする。vQ(m,n)は、要求画像IQのブロック領域B(m,n)の画像特徴ベクトルを表し、vd(m,n)は、検索対象画像Idのブロック領域B(m,n)の画像特徴ベクトルを表す。
画像類似度計算部30は、全てのm,n(m=1,・・・,M、n=1,・・・N)について、要求画像IQのブロック領域B(m,n)と検索対象画像Idのブロック領域B(m,n)との間の類似度(ブロック間類似度)s(m,n)を計算する(ステップS701)。
画像類似度計算部30は、要求画像IQのブロック領域B(m,n)と検索対象画像Idのブロック領域B(m,n)との間のブロック間類似度s(m,n)及び所定の重み係数w(m,n)に基づいて、以下の式にて、要求画像IQと検索対象画像Idとの間の類似度S(Q,d)を計算する(ステップS702)。
ここで、w(m,n)は、各ブロック領域の類似度への反映度合を定める重み係数であり、例えば前述の特許文献3に記載されているように、要求画像IQにおける各ブロック領域B(m,n)内の顕著性の高さを尺度とする等して、自動的に定めることも可能である。
画像類似度計算部30は、要求画像IQと検索対象画像Idとの間の類似度S(Q,d)をHD31に格納する(ステップS703)。全ての検索対象画像Idについての処理が行われることで、HD31には、類似度S(Q,1),・・・,S(Q,D)が格納される。
以上のように、実施例2の画像処理装置2によれば、前処理部21は、実施例1と同様の処理にて、検索対象画像I1,・・・,IDの画像特徴ベクトルV1,・・・,VDをそれぞれ計算する。検索処理部23は、実施例1と同様の処理にて、要求画像IQの画像特徴ベクトルVQを計算し、要求画像IQの画像特徴ベクトルVQ及び検索対象画像I1,・・・,IDの画像特徴ベクトルV1,・・・,VDに基づいて、両画像間の類似度S(Q,1),・・・,S(Q,D)を計算し、類似度の高いR枚の画像Id1,・・・,IdRを検索結果として出力する。
これにより、要求画像IQ及び検索対象画像I1,・・・,ID内で隙間のないブロック領域から生成された画像特徴ベクトルVQ,V1,・・・,VDは、要求画像IQ及び検索対象画像I1,・・・,ID内の全ての領域が反映された値となる。したがって、このような画像特徴ベクトルVQ,V1,・・・,VDを用いることで、高精度の画像検索を実現することが可能となる。具体的には、ブロック領域間の隙間を原因とした検索精度の低下、及び、被写体の位置または大きさの違いを原因とした検索精度の低下を抑制することができる。
尚、本発明の実施例1,2による画像処理装置1,2のハードウェア構成としては、通常のコンピュータを使用することができる。画像処理装置1,2は、CPU、RAM等の揮発性の記憶媒体、ROM等の不揮発性の記憶媒体、及びインターフェース等を備えたコンピュータによって構成される。
画像処理装置1に備えたブロック設定部11、被写体領域設定部12、被写体ブロック設定部13、周辺ブロック設定部14及びブロック特徴計算部15の各機能は、これらの機能を記述したプログラムをCPUに実行させることによりそれぞれ実現される。また、画像処理装置2に備えた前処理部21及び検索処理部23の各機能もこれらの機能を記述したプログラムをCPUに実行させることによりそれぞれ実現される。
また、これらのプログラムは、磁気ディスク(フロッピー(登録商標)ディスク、ハードディスク等)、光ディスク(CD−ROM、DVD等)、半導体メモリ等の記憶媒体に格納して頒布することもでき、ネットワークを介して送受信することもできる。