以下に、本願の開示する画像処理装置、画像処理プログラムおよび画像処理方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
本実施例に係るTVの構成の一例について説明する。図1は、本実施例に係るTVの構成の一例を示す図である。図1に示すように、このTV50は、チューナー51、モニタ52、通信部53、リモコン受信部54、TV制御部55、画像処理装置100を有する。チューナー51、モニタ52、通信部53、リモコン受信部54、TV制御部55、画像処理装置100は、接続線60によって相互に電気的に接続される。TV50は、ネットワーク10を介して図示しない各種のサーバに接続される。その他の構成は、周知のTVと同様であるため、ここでは説明を省略する。
チューナー51は、アンテナ5を利用してテレビ放送を受信する装置である。チューナー51は、テレビ放送の情報を、TV制御部55に出力する。
モニタ52は、TV制御部55から出力されるテレビ放送の情報を表示する表示装置である。また、モニタ52は、画像処理装置100から出力される情報を表示する。画像処理装置100から出力される情報には、テレビ番組のCM等で表示される検索窓のキーワードのWeb検索結果等が含まれる。
通信部53は、ネットワーク10を介して図示しない各種のサーバとデータ通信を実行する処理部である。後述する画像処理装置100は、通信部53を介して、外部のサーバ等とデータをやり取りする。通信部53は、例えば、NIC(Network Interface Card)等の通信装置に対応する。
リモコン受信部54は、利用者の操作するリモコン(リモートコントローラ)からの情報を受信する装置である。リモコン受信部54は、受信した情報を、TV制御部55に出力する。なお、リモコン受信部54は、検索窓に表示されたキーワードに関する検索要求を受け付けた場合には、検索要求を、画像処理装置100に出力する。
TV制御部55は、TV50全体を制御する装置である。例えば、TV制御部55は、チューナー51が受信する各テレビ番組の情報のうち、リモコンによって指定されたチャンネルの番組をモニタ52に出力して表示させる。また、TV制御部55は、モニタ52に表示させているテレビ番組の映像データを、画像処理装置100に出力する。
画像処理装置100は、テレビ番組で表示される検索窓を抽出する装置である。また、画像処理装置100は、検索窓に含まれるキーワードをWeb検索し、検索結果をモニタ52に表示させる。
図1に示した画像処理装置100の構成の一例について説明する。図2は、本実施例に係る画像処理装置の構成を示す図である。図2に示すように、この画像処理装置100は、インタフェース部110、記憶部120、制御部130を有する。
インタフェース部110は、例えば、TV制御部55との間でデータ通信を実行する処理部である。また、インタフェース部110は、通信部53を介して、ネットワーク10上のサーバとデータ通信を実行する。後述する制御部130は、インタフェース部110を介して、TV制御部55、サーバ等とデータをやり取りする。
記憶部120は、画像データ121、エッジ画像データ122、直線テーブル123、黒画素連結領域テーブル124、検索窓領域データ125を記憶する。記憶部120は、例えば、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子などの記憶装置に対応する。
画像データ121は、テレビ番組の映像データから抽出された静止画像のデータである。図3は、画像データの一例を示す図である。
エッジ画像データ122は、画像データ121からエッジを抽出されることで生成される画像データである。図4は、エッジ画像データの一例を示す図である。なお、画像122bは、エッジ画像122の領域122aを拡大したものである。
直線テーブル123は、エッジ画像データ122から抽出される水平方向の直線の情報を保持するテーブルである。図5は、直線テーブルのデータ構造の一例を示す図である。図5に示すように、この直線テーブル123は、直線識別情報と、始点座標と、終点座標とを対応付ける。直線識別情報は、エッジ画像データ122から抽出される水平方向の直線を一意に識別する情報である。始点座標は、水平方向の直線の始点座標を示す。終点座標は、水平方向の直線の終点座標を示す。
黒画素連結領域テーブル124は、エッジ画像データのエッジを連結させた黒画素連結領域の情報を保持するテーブルである。例えば、黒画素連結領域は、矩形に近似される。図6は、黒画素連結領域テーブルのデータ構造の一例を示す図である。図6に示すように、この黒画素連結領域テーブル124は、黒画素識別情報と、左上矩形座標と、右下矩形座標とを対応付ける。黒画素識別情報は、黒画素連結領域を一意に識別する情報である。左上矩形座標は、黒画素連結領域の左上隅の座標を示す。右下矩形座標は、黒画素連結領域の右下隅の座標を示す。
検索窓領域データ125は、後述する検索窓検出部133によって検出された画像データ121上の検索窓の領域を示す情報を含む。例えば、検索窓領域データ125は、画面データ121上の検索窓の座標に対応する。
制御部130は、取得部131、変換部132、検索窓検出部133、文字認識処理部134、Web検索部135を有する。制御部130は、例えば、ASIC(Application Specific Integrated Circuit)や、FPGA(Field Programmable Gate Array)などの集積装置に対応する。また、制御部130は、例えば、CPUやMPU(Micro Processing Unit)等の電子回路に対応する。
なお、制御部130は、リモコン受信部54から検索要求を取得したことを契機にして、処理を開始しても良い。
取得部131は、TV制御部55から映像データを取得する処理部である。取得部131は、取得した映像データから、静止画像となる画像データを抽出し、抽出した画像データを記憶部120に記憶させる。
変換部132は、画像データ121からエッジを抽出することにより、エッジ画像データ122を生成する処理部である。例えば、変換部132は、画像データ121をグレースケール(Grayscale)画像データに変換する。そして、変換部132は、グレースケール画像データに対して、Canny Edge等のアルゴリズムを適用することで、エッジ画像データ122を生成する。
検索窓検出部133は、検索窓を検出する処理部である。検索窓検出部133は、直線抽出部133aと、黒画素連結領域抽出部133bと、判定部133cとを有する。
直線抽出部133aは、エッジ画像データ122から水平方向の直線を抽出する処理部である。直線抽出部133aは、抽出した直線の情報を直線テーブル123に登録する。
直線抽出部133aの処理を具体的に説明する。直線抽出部133aは、エッジ画像データ122から小線分抽出した後に、各小線分を統合することで、水平方向の直線を得る。小線分を抽出する処理について説明する。
図7は、直線抽出部の処理を説明するための図である。直線抽出部133aは、エッジ画像データ122に対して、32画素幅の短冊領域を設定する。直線抽出部133aは、各短冊領域のy座標毎に、黒画素の横投影ヒストグラムp(i)を作成する。iはy座標を示す。例えば、短冊領域のy座標(y1)について、黒画素の画素数が30画素の場合には、p(y1)の値は、30となる。
直線抽出部133aは、下記の直線抽出条件1〜3の何れか一つの条件を満たす場合に、y座標iの短冊幅の小線分を抽出する。直線抽出条件1は、p(i)の値が30以上という条件である。直線抽出条件2は、p(i)の値と、p(i+1)の値とを加算した値が、30以上という条件である。直線抽出条件3は、p(i)の値と、p(i+1)の値と、p(i−1)の値とを加算した値が30以上という条件である。エッジの直線が水平方向から若干ずれた場合でも、係る直線を、直線抽出条件2,3によって救済することができる。
例えば、図7の短冊領域1aのあるy座標iについて、直線抽出条件1〜3の何れか一つの条件を満たす場合に、直線抽出部133aは、短冊領域1a内のy座標i上の直線1bを抽出する。直線抽出部133aは、他の短冊領域についても同様の処理を繰り返し実行することで、小線分を抽出する。
直線抽出部133aは、小線分を抽出した後に、各小線分を横方向に統合することで、水平方向の直線を得る。例えば、直線抽出部133aは、各小線分の始点座標および終点座標を比較し、横方向に連続する各小線分を統合する。図8は、直線抽出部が抽出した各直線の一例を示す図である。直線抽出部133aは、統合した各直線の情報を、直線テーブル123に登録する。
図2の説明に戻る。黒画素連結領域抽出部133bは、エッジ画像データ122に含まれる各エッジを連結することで黒画素連結領域を抽出する処理部である。例えば、黒画素連結領域抽出部133bは、エッジ画像データ122に対して、ラベリングを実行し、同じラベルの塊の外接矩形を求める。黒画素連結領域抽出部133bは、外接矩形で近似した黒画素連結領域の情報を、黒画素連結領域テーブル124に登録する。
図9は、黒画素連結領域抽出部の処理を説明するための図である。図9に示すように、黒画素連結領域抽出部133bがラベリング処理を実行することで、複数の外接矩形が抽出される。
判定部133cは、直線テーブル123および黒画素連結領域テーブル124を基にして、検索窓の領域を判定する処理部である。判定部133cは、判定した検索窓の領域の情報を、検索窓領域データ125に登録する。以下において、判定部133cの処理を具体的に説明する。判定部133cは、直線と黒画素連結領域とを対応付ける処理、直線のペアを判定する処理、検索窓を構成する直線のペアを判定する処理を実行する。また、判定部133は、候補領域を抽出する処理を実行する。
判定部133cが、直線と黒画素連結領域とを対応付ける処理について説明する。図10は、判定部の処理を説明するための図(1)である。まず、判定部133cは、直線との距離が同一となる黒画素連結領域の組みを判定し、それぞれを対応付ける。例えば、図10に示す例では、直線2aと、黒画素連結領域3a,3b,3c,3d,3e,3fとの距離がそれぞれ同一となる。このため、判定部133cは、直線2aと、黒画素連結領域3a〜3fを対応付ける。また、直線2aと、黒画素連結領域4a,4b,4c,4d,4eとの距離がそれぞれ同一となる。このため、判定部133cは、直線2aと、黒画素連結領域4a〜4fとを対応付ける。
判定部133cは、対応付けた直線の直線識別情報と、各黒画素連結領域の黒画素識別情報とを対応付けて、対応管理情報に登録する。図11は、判定部が生成する対応管理情報の一例を示す図である。
判定部133cが直線のペアを判定する処理について説明する。例えば、判定部133cは、直線テーブル123および黒画素連結領域テーブル124を基にして、各直線の長さの差が所定の閾値未満でy方向に重複し、且つ、各直線間に黒画素連結領域が存在する場合に、係る各直線をペアとする。判定部133cは、各直線のペアの情報をペア管理情報に登録する。ここでは図示を省略するが、ペア管理情報は、ペアとなる各直線の直線識別情報が対応付けられる情報である。
判定部133cが検索窓を構成する直線のペアを判定する処理について説明する。図12は、判定部の処理を説明するための図(2)である。判定部133cは、上記対応付けた直線のペアを選択し、選択した直線に対応付けられた黒画素連結領域が所定の条件を満たす場合に、選択した直線のペアを、検索窓を構成する直線のペアとして判定する。具体的に、式(1)に示す条件を満たす場合に、選択した直線のペアを、検索窓を構成する直線のペアとして判定する。式(1)の閾値は、利用者が適宜設定する値である。
直線ペアに対応付けられた黒画素連結領域のうち、直線ペアで共通する黒画素連結領域の数/直線ペアに対応付けられた黒画素連結領域の数(ただし、重複する黒画素連結領域は、1つとカウントする)>閾値・・・(1)
式(1)の内容を、図12を用いて説明する。図12では、直線2aと直線2bとが直線ペアとなっている。直線2aには、黒画素連結領域4a,4b,4c,4d,4eが対応付けられている。直線2bには、黒画素連結領域4a,4b,4c,4e,4fが対応付けられている。また、直線ペアで共通する黒画素連結領域は、黒画素連結領域4a,4b,4c,4eとなる。このため、図12に示す例では、直線ペアに対応付けられた黒画素連結領域のうち、直線ペアで共通する黒画素連結領域の数は「4」となり、直線ペアに対応付けられた黒画素連結領域の数は「6」となる。すなわち、直線ペアに黒画素連結領域4f、4dが更に対応付けられる。
判定部が候補領域を抽出する処理について説明する。図13は、判定部の処理を説明するための図(3)である。図13に示す直線ペア2a,2bは、上記の処理により、検索窓を構成する直線のペアとして判定されたものとする。判定部133cは、直線ペア2a,2b内の領域にある黒画素連結領域4a〜4fを囲む領域3aを候補領域として抽出する。
図14は、判定部の処理を説明するための図(4)である。判定部133cは、抽出した2つの候補領域がほぼ同じy座標を持ち、隣接し、且つ、線分、黒画素連結領域のy方向位置がほぼ同じ場合に、2つの候補領域を統合する。例えば、図14に示す例では、2つの候補領域3a,3bの左上および右下のy座標の差が閾値未満であり、かつ、直線2aおよび直線2cのy座標の差が閾値未満であり、かつ、直線2bおよび直線2dのy座標の差が閾値未満とする。また、黒画素連結領域4a〜4fの重心のy方向位置と、黒画素連結領域4g〜4lの重心のy方向位置との差が閾値未満であるとする。この場合には、判定部133cは、候補領域3a,3bを統合して、候補領域3cを生成する。
図15は、判定部の処理を説明するための図(5)である。ここでは、候補領域3d,3eを用いて説明する。判定部133cは、候補領域3dの左端から左方向に32画素の地点を開始点とし、右方向に縦方向の黒画素投影ヒストグラムでピーク点を検索し、ピーク点を候補領域の左端とする。また、候補領域3dの右端から右方向に32画素の地点を開始点とし、左方向に縦方向の黒画素投影ヒストグラムでピーク点を検索し、ピーク点を候補領域の右端とする。判定部133cが係る処理を実行することで、候補領域3dの領域は、候補領域3fとなる。判定部133cは、候補領域3eについても同様の処理を実行することで、候補領域3eの領域は、候補領域3gとなる。
図16は、判定部の処理を説明するための図(6)である。ここでは、候補領域3h,3iを用いて説明する。判定部133cは、候補領域の4辺の1画素内部の領域を走査して、白画素から黒画素あるいは黒画素から白画素に変化する回数を計数する。判定部133cは、変化する回数が閾値以上の場合には、対応する候補領域を削除する。例えば、候補領域3hについて、候補領域の4辺の1画素内部の領域を走査すると、変化する回数が閾値未満となる。このため、判定部133cは、候補領域3hを残す。これに対して、候補領域3iについて、候補領域の4辺の1画素内部の領域を走査すると、変化する回数が閾値以上となる。このため、判定部133cは、候補領域3iを削除する。
図17は、判定部の処理を説明するための図(7)である。判定部133cは、座標が類似する各候補領域を統合する。ここでは、候補領域3j,3kを用いて説明する。また、候補領域3jのx座標のうち、最小のx座標をxmin1とし、最大のx座標をxmax1とする。候補領域3jのy座標のうち、最小のy座標をymin1とし、最大のy座標をymax1とする。また、候補領域3kのx座標のうち、最小のx座標をxmin2とし、最大のx座標をxmax2とする。候補領域3jのy座標のうち、最小のy座標をymin2とし、最大のy座標をymax2とする。
判定部133cは、式(2)に示す条件を満たす場合に、候補領域3j,3kを統合する。例えば、判定部133cは、候補領域3j,3kを統合することで、候補領域3lを生成する。
|xmin1−xmin2|+|xmax1−xmax2|+|ymin1−ymin2|+|ymax1−ymax2|<閾値・・・(2)
図18は、判定部の処理を説明するための図(8)である。判定部133cは、候補領域内で、左右端点から一定距離離れているところで、縦方向の黒画素投影ヒストグラムのピーク点が存在する場合には、候補領域を分割する。ここでは、候補領域3mを用いて説明する。例えば、候補領域3m内で、縦方向の黒画素投影ヒストグラムのピーク点6aが存在する場合には、判定部133cは、候補領域3mを、ピーク点6aの位置を基準として、候補領域3n,3oに分割する。
図19は、判定部の処理を説明するための図(9)である。判定部133cは、候補領域に含まれる黒画素連結領域に対して文字認識をそれぞれ実行する。判定部133cは、各文字認識結果の確信度の平均値が閾値未満の場合に、候補領域を削除する。ここでは、候補領域3p,3qを用いて説明する。なお、黒画素連結領域に対して文字認識を実行する技術や、確信度を算出する技術は、如何なる従来技術を利用しても良い。判定部133cは、例えば、候補領域3pに対して文字認識を実行し、各文字認識結果の確信度の平均値が、閾値以上の場合には、候補領域3pを残す。
なお、判定部133cは、各文字認識結果の確信度の平均値が閾値以上の場合であっても、候補領域に特定の文字が含まれている場合には、候補領域を削除する。例えば、文字認識で認識された文字に「検」、「索」または「Q」の文字が含まれる場合に、候補領域を削除する。例えば、検索の意味を示す虫眼鏡マークに対する文字認識結果が「Q」となる場合がある。候補領域3qに対して文字認識を実行すると、「検」、「索」の文字が含まれるので、判定部133cは、候補領域3qを削除する。なお、判定部133cは、「検」、「索」または「Q」を含む候補領域の座標を記録しておく。
図20は、判定部の処理を説明するための図(10)である。判定部133cは、上記処理によって、候補領域が複数存在する場合に、以下に説明する処理を実行しても良い。判定部133cは、「検」、「索」または「Q」の文字が含まれる領域が存在した場合には、係る領域の左右にある最も近い領域を検索窓として検出する。例えば、図10に示す例では、領域3rに、「検索」が含まれており、領域3rの左右に最も近い領域は候補領域3sとなる。このため、判定部133cは、候補領域3rを検索窓の領域として検出する。判定部133cは、検出した検索窓の情報を検索窓領域データ125に登録する。
図2の説明に戻る。文字認識処理部134は、検索窓の領域に対して文字認識を実行し、文字認識結果となるキーワードをWeb検索部135に出力する処理部である。文字認識処理部134は、検索窓領域データに登録された検索窓の座標を基にして、エッジ画像データ上の検索窓の領域を特定し、特定した領域に対して文字認識を実行する。領域に対して文字認識を実行する処理は、如何なる従来技術を用いても良い。
Web検索部135は、文字認識処理部134から取得するキーワードに対してWeb検索を実行する処理部である。例えば、Web検索部135は、ネットワーク10に接続されたサーバにアクセスして、Web検索を実行する。Web検索部135は、検索結果を、モニタ52に表示する。
次に、本実施例に係る画像処理装置100の処理手順について説明する。図21は、本実施例に係る画像処理装置の処理手順を示すフローチャートである。例えば、図21に示す処理は、検索要求を受け付けたことを契機にして実行される。
図21に示すように、画像処理装置100は、映像データから1フレームの画像データを取得し(ステップS101)、検索窓領域検出処理を実行する(ステップS102)。
画像処理装置100は、検索窓領域に対して文字認識処理を実行し(ステップS103)、Web検索を実行する(ステップS104)。そして、画像処理装置100は、検索結果を出力する(ステップS105)。
次に、図21に示した検索窓領域検出処理について説明する。図22は、本実施例に係る検索窓領域検出処理の処理手順を示すフローチャートである。図22に示すように、画像処理装置100は、画像データ121からエッジ画像データ122を生成する(ステップS110)。画像処理装置100は、黒画素連結領域を抽出する(ステップS111)。
画像処理装置100は、エッジ画像データから水平方向の直線を抽出する(ステップS112)。画像処理装置100は、直線ペア抽出処理を実行する(ステップS113)。画像処理装置100は、直線ペアのうち、直線ペア間に黒画素が存在するペアのみを選択する(ステップS114)。画像処理装置100は、選択した直線ペアが1つであるか否かを判定する(ステップS115)。画像処理装置100は、選択した直線ペアが1つの場合には(ステップS115,Yes)、ステップS121に移行する。
一方、画像処理装置100は、選択した直線ペアが2つ以上の場合には(ステップS115,No)、ステップS116に移行する。画像処理装置100は、黒画素連結領域と直線ペアとの位置関係に基づいて、直線ペアを選択する処理を実行する(ステップS116)。画像処理装置100は、選択した直線ペアが1つであるか否かを判定する(ステップS117)。画像処理装置100は、選択した直線ペアが1つの場合には(ステップS117,Yes)、ステップS121に移行する。
一方、画像処理装置100は、選択した直線ペアが2つ以上の場合には(ステップS117,No)、ステップS118に移行する。画像処理装置100は、直線ペア間の領域に対して文字認識を実行し、文字認識の確信度を基にして直線ペアを選択する処理を実行する(ステップS118)。画像処理装置100は、選択した直線ペアが1つであるか否かを判定する(ステップS119)。画像処理装置100は、選択した直線ペアが1つの場合には(ステップS119,Yes)、ステップS121に移行する。
一方、画像処理装置100は、選択した直線ペアが2つ以上の場合には(ステップS119,No)、特定文字を基にして、直線ペアを選択する(ステップS120)。画像処理装置100は、直線ペアの領域座標を抽出する(ステップS121)。
次に、図22のステップS113に示した直線ペア抽出処理について説明する。図23は、直線ペア抽出処理の処理手順を示すフローチャートである。図23に示すように、画像処理装置100は、iに1を設定する(ステップS130)。画像処理装置100は、iの値に1を加算した値をjに設定する(ステップS131)。
画像処理装置100は、i番目の直線と、j番目の直線とを選択する(ステップS132)。画像処理装置100は、i番目の直線とj番目の直線とがほぼ同じ長さで、y方向に重複するか否かを判定する(ステップS133)。画像処理装置100は、i番目の直線とj番目の直線とがほぼ同じ長さでない、または、y方向に重複しない場合には(ステップS133,No)、ステップS136に移行する。
一方、画像処理装置100は、i番目の直線とj番目の直線とがほぼ同じ長さで、y方向に重複する場合には(ステップS133,Yes)、ステップS134に移行する。画像処理装置100は、直線ペア間に黒画素が存在するか否かを判定する(ステップS134)。画像処理装置100は、直線ペア間に黒画素が存在しない場合には(ステップS134,No)、ステップS136に移行する。
一方、画像処理装置100は、直線ペア間に黒画素が存在する場合には(ステップS134,Yes)、直線ペアを記録する(ステップS135)。
画像処理装置100は、jの値が「N−1」の値未満であるか否かを判定する(ステップS136)。Nは、直線の総数である。画像処理装置100は、jの値が「N−1」の値未満である場合には(ステップS136,Yes)、jの値に1を加算した値を、jに設定し(ステップS137)、ステップS132に移行する。
一方、画像処理装置100は、jの値が「N−1」の値未満でない場合には(ステップS136,No)、iの値が「N−1」の値未満であるか否かを判定する(ステップS138)。画像処理装置100は、iの値が「N−1」の値未満である場合には(ステップS138,Yes)、iの値に1を加算した値を、iに設定し(ステップS139)、ステップS131に移行する。
一方、画像処理装置100は、iの値が「N−1」の値未満でない場合には(ステップS138,No)、直線ペア抽出処理を終了する。
次に、図22のステップS116に示した黒画素連結領域と直線ペアとの位置関係に基づいて直線ペアを選択する処理について説明する。図24は、黒画素連結領域と直線ペアとの位置関係に基づいて直線ペアを選択する処理手順を示すフローチャートである。
図24に示すように、画像処理装置100は、iに1を設定する(ステップS150)。画像処理装置100は、iの値に1を加算した値をjに設定する(ステップS151)。画像処理装置100は、i番目の直線と、j番目の直線とを選択する(ステップS152)。
画像処理装置100は、i番目の直線とj番目の直線との間の距離が一定の矩形を選択する(ステップS153)。画像処理装置100は、式(1)の条件を満たすか否かを判定する(ステップS154)。式(1)の条件を満たさない場合には(ステップS155,No)、ステップS157に移行する。
一方、画像処理装置100は、式(1)の条件を満たす場合には(ステップS155,Yes)、条件を満たす直線ペアを記録する(ステップS156)。画像処理装置100は、jの値が「N−1」の値未満であるか否かを判定する(ステップS157)。Nは、直線の総数である。画像処理装置100は、jの値が「N−1」の値未満である場合には(ステップS157,Yes)、jの値に1を加算した値を、jに設定し(ステップS158)、ステップS152に移行する。
一方、画像処理装置100は、jの値が「N−1」の値未満でない場合には(ステップS157,No)、ステップS159に移行する。画像処理装置100は、iの値が「N−1」の値未満であるか否かを判定する(ステップS159)。画像処理装置100は、iの値が「N−1」の値未満である場合には(ステップS159,Yes)、iの値に1を加算した値を、iに設定し(ステップS160)、ステップS151に移行する。
一方、画像処理装置100は、iの値が「N−1」の値未満でない場合には(ステップS159,No)、黒画素連結領域と直線ペアとの位置関係に基づいて直線ペアを選択する処理を終了する。
次に、図22のステップS118に示した直線ペア間の領域に対して文字認識を実行し、文字認識の確信度を基にして直線ペアを選択する処理について説明する。図25は、直線ペア間の領域に対して文字認識を実行し、文字認識の確信度を基にして直線ペアを選択する処理手順を示すフローチャートである。
図25に示すように、画像処理装置100は、iに1を設定する(ステップS180)。画像処理装置100は、i番目の直線ペアの内側に対して文字認識を実行し、各文字の確信度の平均値を算出する(ステップS181)。
画像処理装置100は、認識結果の文字がノイズ文字でなく、かつ、平均値が閾値以上か否かを判定する(ステップS182)。画像処理装置100は、認識結果の文字がノイズ文字である場合、または、平均値が閾値未満の場合には(ステップS182,No)、ステップS184に移行する。
一方、画像処理装置100は、認識結果の文字がノイズ文字でなく、かつ、平均値が閾値以上の場合には(ステップS182,Yes)、i番目の直線ペアを記録する(ステップS183)。画像処理装置100は、iの値が「N−1」の値未満であるか否かを判定する(ステップS184)。画像処理装置100は、iの値が「N−1」の値未満の場合には(ステップS184,Yes)、iの値に1を加算した値を、iに設定し(ステップS185)、ステップS181に移行する。
一方、画像処理装置100は、iの値が「N−1」の値未満でない場合には(ステップS184,No)、処理を終了する。
次に、図22のステップS120に示した特定文字を基にして直線ペアを選択する処理について説明する。図26は、特定文字を基にして直線ペアを選択する処理手順を示すフローチャートである。
図26に示すように、画像処理装置100は、iに1を設定する(ステップS190)。画像処理装置100は、i番目の直線ペアの領域の上下端の延長線に囲まれる範囲で、画像端までの領域、かつ、i番目の直線ペア以外の領域を文字認識する(ステップS191)。画像処理装置100は、文字認識結果に「検索」等の特定文字が存在するか否かを判定する(ステップS192)。
画像処理装置100は、文字認識結果に「検索」等の特定文字が存在しない場合には(ステップS192,No)、ステップS195に移行する。一方、画像処理装置100は、文字認識結果に「検索」等の特定文字が存在する場合には(ステップS192,Yes)、ステップS193に移行する。
画像処理装置100は、候補領域から「検索」等の特定文字までの距離が最も近いか否かを判定する(ステップS193)。画像処理装置100は、候補領域から「検索」等の特定文字までの距離が最も近くない場合には(ステップS193,No)、ステップS195に移行する。
画像処理装置100は、画像処理装置100は、候補領域から「検索」等の特定文字までの距離が最も近い場合には(ステップS193,Yes)、最も近い候補領域を記憶する(ステップS194)。
画像処理装置100は、iの値が「N−1」の値未満であるか否かを判定する(ステップS195)。画像処理装置100は、iの値が「N−1」の値未満である場合には(ステップS195,Yes)、iの値に1を加算した値を、iに設定し(ステップS196)、ステップS191に移行する。一方、画像処理装置100は、iの値が「N−1」の値未満でない場合には(ステップS195,No)、処理を終了する。
次に、本実施例に係る画像処理装置100の効果について説明する。画像処理装置100は、エッジ画像データ122を基にして、水平方向の複数の直線を抽出し、複数の直線の組の間に所定の範囲内の画素連結領域を有する直線の組み合わせを判定する。このように、画像処理装置100が判定した直線の組み合わせは、検索窓を構成する矩形の上側の直線と下側の直線であるといえ、精度良く検索窓を検出することができる。また、画像処理装置100は、水平方向以外の直線を抽出しないので、ノイズとなる直線を抽出することを防ぐことができると共に、処理負荷を軽減することもできる。
また、画像処理装置100は、直線毎に該直線との距離が同一の複数の黒画素連結領域を対応付け、直線毎に対応付けられた黒画素連結領域をそれぞれ比較し、比較した各黒画素連結領域の一部が一致する直線の組み合わせを判定する。このように、検索窓にはキーワードに相当する黒画素が存在するという特性をいかして、画像処理装置100が判定を行うことで、キーワードを含む検索窓を精度良く検出することができる。
また、画像処理装置100は、更に、直線の組みの間の領域を候補領域として文字認識を実行し、文字認識結果の確信度を基にして、候補領域が検索窓であるか否かを判定する。このため、複数の候補領域の中から、検索窓に相当する領域を精度よく抽出することができる。
また、画像処理装置100は、候補領域に特定文字が含まれる場合に、該特定文字を含む候補領域に対して水平方向に存在する他の候補領域を選択し、選択した候補領域が検索窓であるか否かを判定する。通常、検索窓の横には「検索」などの特定文字が表示される場合がある。このため、該特定文字を含む候補領域に対して水平方向に存在する他の候補領域を選択することで、複数の候補領域の中から、検索窓に相当する領域を精度よく抽出することができる。
また、画像処理装置100は、検索窓に含まれる文字に関連する情報を、ネットワーク上から検索し、検索結果を表示させるので、利用者が煩雑な操作を行わなくても、テレビ番組のCMで検索窓に表示されたキーワードに関する詳しい情報を利用者に通知することができる。
ところで、上述した画像処理装置100の実施例は上記のものに限られない。このため、以下では、画像処理装置100のその他の実施例について説明する。画像処理装置100は、例えば、デジタルカメラが撮影した検索窓を含む画像データを取得し、取得した画像データから検索窓の領域を検出しても良い。係る画像データから検索窓を検出する処理は、上記の画像処理装置とほぼ同じであるが、線分と黒画素連結領域との対応付ける処理が一部異なるので、以下において説明する。
図27は、画像処理装置のその他の実施例を説明するための図である。画像処理装置100は、デジタルカメラが撮影したテレビ画像の画像データからエッジ画像を抽出し、横方向の直線を抽出する。例えば、画像処理装置100は、水平方向を基準として、直線の角度が所定の角度以内の直線を抽出する。これは、デジタルカメラで画像データを撮影した場合には、検索窓の水平方向の直線が斜めに写ってしまうことを考慮した処理である。図27に示す例では、画像処理装置100は、直線2cおよび2dを抽出する。また、画像処理装置100が、直線ペアを選択する場合には、各直線の長さの差が所定の閾値未満でy方向に重複し、且つ、各直線間に黒画素連結領域が存在する場合に、係る各直線をペアとする。
画像処理装置100は、直線と黒画素連結領域とを対応付ける場合には、黒画素連結領域の矩形の隅と、直線との距離がそれぞれ同一となる黒画素連結領域を対応付ける。例えば、黒画素連結領域4h,4i,4j,4k,4mの左上隅と、直線2cとの距離は同一である。このため、直線2cと、黒画素連結領域4h,4i,4j,4k,4mとを対応付ける。また、黒画素連結領域4h,4i,4j,4l,4mの左下隅と、直線2dとの距離は同一である。このため、直線2dと、黒画素連結領域4h,4i,4j,4l,4mとを対応付ける。
画像処理装置100は、直線2cと直線2dとの関係が、上記実施例で示した式(1)の条件を満たす場合に、直線2cと直線2dとの直線ペアを、検索窓の候補領域として判定する。その他の処理は、上記実施例と同様である。画像処理装置がこのような処理を実行することで、デジタルカメラで撮影した画像からでも検索窓を精度良く検出することができる。
また、上記実施例では、画像処理装置100が、TV50に内蔵されている場合について説明したが、これに限定されるものではない。例えば、ネットワーク10のサーバ装置内に、画像処理装置100と同様の機能を設けてもよい。例えば、TV制御部55は、検索要求を取得した場合に、映像データをサーバに送信し、サーバ装置は、上記画像処理装置100と同様の処理を実行して、検索窓を抽出し、検索窓のキーワードの検索結果を、TV制御部55に通知しても良い。TV制御部55は、通知された検索結果を、モニタ52に表示させる。また、例えばデジタルカメラ、スマートフォン、携帯電話等の携帯型カメラを備えた装置において、画像処理装置100と同様の機能を設けてもよい。この場合は、ハードウェア構成は、画像取得部、画像処理装置、通信部、モニタとなり、画像取得部で取得された画像が画像処理装置に入力され、画像処理装置で検索窓内のテキストを取得して、それを通信部へ送り、インターネット検索を行い、その結果を通信部で取得し、モニタに表示することになる。
次に、上記の実施例に示した画像処理装置100と同様の機能を実現する画像処理プログラムを実行するコンピュータの一例を説明する。図28は、制御プログラムを実行するコンピュータの一例を示す図である。
図28に示すように、コンピュータ200は、各種演算処理を実行するCPU201と、ユーザからのデータの入力を受け付ける入力装置202と、ディスプレイ203を有する。また、コンピュータ200は、記憶媒体からプログラム等を読取る読み取り装置204と、ネットワークを介して他のコンピュータとの間でデータの授受を行うインタフェース装置205とを有する。また、コンピュータ200は、各種情報を一時記憶するRAM206と、ハードディスク装置207を有する。そして、各装置201〜207は、バス208に接続される。
ハードディスク装置207は、例えば、直線抽出プログラム207a、判定プログラム207bを有する。CPU201は、各プログラム207a,207bを読み出してRAM206に展開する。
直線抽出プログラム207aは、直線抽出プロセス206aとして機能する。判定プログラム207bは、判定プロセス206bとして機能する。
例えば、直線抽出プロセス206aは、直線抽出部133aに対応する。判定プロセス206bは、判定部133cに対応する。
なお、各プログラム207a,207bについては、必ずしも最初からハードディスク装置207に記憶させておかなくてもよい。例えば、コンピュータ200に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ200がこれらから各プログラム207a,207bを読み出して実行するようにしてもよい。
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)画像からエッジを抽出したエッジ画像を基にして、水平方向の複数の直線を抽出する直線抽出部と、
前記エッジ画像内のエッジを連結させた黒画素連結領域を抽出し、前記複数の直線の組みの間に所定の範囲内の黒画素連結領域を有する直線の組み合わせを判定する判定部と
を有することを特徴とする画像処理装置。
(付記2)前記判定部は、直線毎に該直線との距離が同一の複数の黒画素連結領域を対応付け、直線毎に対応付けられた黒画素連結領域をそれぞれ比較し、比較した各黒画素連結領域の一部が一致する直線の組み合わせを判定することを特徴とする付記1に記載の画像処理装置。
(付記3)前記判定部は、直線毎に該直線と黒画素連結領域の所定の隅との距離が同一となる複数の黒画素連結領域を対応付けることを特徴とする付記2に記載の画像処理装置。
(付記4)前記判定部は、更に、直線の組みの間の領域を検索窓候補領域として文字認識を実行し、文字認識結果の確信度を基にして、前記検索窓候補領域が検索窓であるか否かを判定することを特徴とする付記1、2または3に記載の画像処理装置。
(付記5)前記判定部は、前記検索窓候補領域に特定文字が含まれる場合に、該特定文字を含む検索窓候補領域に対して水平方向に存在する他の検索窓候補領域を選択し、選択した検索窓候補領域が検索窓であるか否かを判定することを特徴とする付記4に記載の画像処理装置。
(付記6)前記判定部が判定した検索窓に含まれる文字に関連する情報を、ネットワーク上から検索する検索部を更に有することを特徴とする付記4または5に記載の画像処理装置。
(付記7)コンピュータに、
画像からエッジを抽出したエッジ画像を基にして、水平方向の複数の直線を抽出し、
前記エッジ画像内のエッジを連結させた黒画素連結領域を抽出し、前記複数の直線の組みの間に所定の範囲内の黒画素連結領域を有する直線の組み合わせを判定する
各処理を実行させることを特徴とする画像処理プログラム。
(付記8)前記判定する処理は、直線毎に該直線との距離が同一の複数の黒画素連結領域を対応付け、直線毎に対応付けられた黒画素連結領域をそれぞれ比較し、比較した各黒画素連結領域の一部が一致する直線の組み合わせを判定することを特徴とする付記7に記載の画像処理プログラム。
(付記9)前記判定する処理は、直線毎に該直線と黒画素連結領域の所定の隅との距離が同一となる複数の黒画素連結領域を対応付けることを特徴とする付記7に記載の画像処理プログラム。
(付記10)前記判定する処理は、更に、直線の組みの間の領域を検索窓候補領域として文字認識を実行し、文字認識結果の確信度を基にして、前記検索窓候補領域が検索窓であるか否かを判定することを特徴とする付記7、8または9に記載の画像処理プログラム。
(付記11)前記判定する処理は、前記検索窓候補領域に特定文字が含まれる場合に、該特定文字を含む検索窓候補領域に対して水平方向に存在する他の検索窓候補領域を選択し、選択した検索窓候補領域が検索窓であるか否かを判定することを特徴とする付記10に記載の画像処理プログラム。
(付記12)判定した検索窓に含まれる文字に関連する情報を、ネットワーク上から検索する処理を更に実行させることを特徴とする付記10または11に記載の画像処理プログラム。
(付記13)コンピュータが実行する画像処理方法であって、
画像からエッジを抽出したエッジ画像を基にして、水平方向の複数の直線を抽出し、
前記エッジ画像内のエッジを連結させた黒画素連結領域を抽出し、前記複数の直線の組みの間に所定の範囲内の黒画素連結領域を有する直線の組み合わせを判定する
各処理を実行することを特徴とする画像処理方法。
(付記14)前記判定する処理は、直線毎に該直線との距離が同一の複数の黒画素連結領域を対応付け、直線毎に対応付けられた黒画素連結領域をそれぞれ比較し、比較した各黒画素連結領域の一部が一致する直線の組み合わせを判定することを特徴とする付記13に記載の画像処理方法。
(付記15)前記判定する処理は、直線毎に該直線と黒画素連結領域の所定の隅との距離が同一となる複数の黒画素連結領域を対応付けることを特徴とする付記13に記載の画像処理方法。
(付記16)前記判定する処理は、更に、直線の組みの間の領域を検索窓候補領域として文字認識を実行し、文字認識結果の確信度を基にして、前記検索窓候補領域が検索窓であるか否かを判定することを特徴とする付記13、14または15に記載の画像処理方法。
(付記17)前記判定する処理は、前記検索窓候補領域に特定文字が含まれる場合に、該特定文字を含む検索窓候補領域に対して水平方向に存在する他の検索窓候補領域を選択し、選択した検索窓候補領域が検索窓であるか否かを判定することを特徴とする付記16に記載の画像処理方法。
(付記18)判定した検索窓に含まれる文字に関連する情報を、ネットワーク上から検索する処理を更に実行することを特徴とする付記16または17に記載の画像処理方法。