以下に、本願の開示する記憶制御プログラム、抽出プログラム、記憶制御方法、抽出方法、記憶制御装置および抽出装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
図1は、本実施例1に係る記憶制御装置の処理の一例を説明するための図である。図1に示すように、記憶制御装置は、圧縮対象となる撮像画像データ10を取得する。たとえば、撮像画像データ10は、物体11aおよび物体11bを撮像した画像データである。図1に示す例では、物体11aは、物体11bよりも前方に位置している。
記憶制御装置は、撮像画像データを複数のブロック10−11〜10−45に分割する。記憶制御装置は、対応情報を基にして、複数のブロック10−11〜10−45のうち、各物体の境界、または、対象となる物体のアウトラインを含むブロックを特定する。
対応情報は、各物体の境界、または、対象となる物体のアウトラインを含むブロックを示す情報である。また、対応情報は、ブロックの領域のうち、対象となる物体の領域の情報と、他の領域の情報とを含む。本実施例1では一例として、対象となる物体を物体11aとして説明を行う。
以下の説明では、特に区別する場合、各物体の境界、または、対象となる物体のアウトラインを含むブロックを「第1種ブロック」と表記する。各物体の境界を含まず、かつ、対象となる物体のアウトラインを含まないブロックを「第2種ブロック」と表記する。
図1に示す例では、第1種ブロックは、ブロック10−12,10−13,10−14,10−22,10−24,10−32,10−34,10−43,10−44となる。第1種ブロックに対応しない他のブロックが、第2種ブロックとなる。
記憶制御装置が、第1種ブロックを符号化(圧縮)する処理の一例について説明する。ここでは、記憶制御装置は、ブロック10−32を符号化する処理について説明する。
記憶制御装置は、ブロック10−32を基にして、前面ディザ画像データ11−32aと、背面ディザ画像データ11−32bとを生成する。
前面ディザ画像データ11−32aは、物体11aを含み、物体11bを含まない画像データである。たとえば、記憶制御装置は、ブロック10−32の領域において、物体11aの領域を残し、他の領域を透過させる処理を行い、この処理を行ったブロック10−32に対してディザリングを実行することで、前面ディザ画像データ11−32aを生成する。
背面ディザ画像データ11−32bは、物体11bを含む画像データである。たとえば、記憶制御装置は、ブロック10−32の領域において、物体11aの領域を除き、除いた領域の画素値を、他の領域(たとえば、物体11bの領域あるいは背景)の画素値で補う処理を行う。記憶制御装置は、この処理を行ったブロック11−32に対してディザリングを実行することで、背面ディザ画像データ11−32bを生成する。
記憶制御装置は、前面ディザ画像データ11−32aに符号α11−32を割り当て、アウトライン情報11−32を生成する。アウトライン情報11−32は、前面ディザ画像データ11−32aに含まれる物体11aのアウトライン(あるいは物体11a,11bの境界)の形状を示し、他の領域を透過するための情報である。また、記憶制御装置は、背面ディザ画像データ11−32bに符号β11−32を割り当てる。
記憶制御装置が、他の第1種ブロックを符号化する処理は、上述したブロック10−32を符号化する処理と同様である。すなわち、記憶制御装置は、各第1種ブロックについて、前面ディザ画像データ、背面ディザ画像データを生成し、符号を割り当て、アウトライン情報を生成する。
記憶制御装置が、第2種ブロックを符号化(圧縮)する処理の一例について説明する。ここでは、記憶制御装置が、ブロック10−11を符号化する処理について説明する。
記憶制御装置は、ブロック10−11に対してそのままディザリングを実行することで、ディザ画像データ11−11を生成する。記憶制御装置は、ディザ画像データ11−11に、符号γ11−11を割り当てる。
記憶制御装置が、他の第2種ブロックを符号化する処理は、上述したブロック10−11を符号化する処理と同様である。
ここで、記憶制御装置は、第1種ブロックの前面ディザ画像データに割り当てる符号と、第2種ブロックのディザ画像データに割り当てる符号とを識別できるように、各符号に特徴を持たせる。たとえば、記憶制御装置は、前面ディザ画像データに割り当てる符号の先頭のnビットを、所定のビット列で統一してもよい。または、記憶制御装置は、第2種ブロックのディザ画像データの符号の先頭のnビットを、所定のビット列で統一してもよい。
記憶制御装置は、予め定義された所定の順番に従って、各ブロック10−11〜10−45に対して、上記の符号化を行い、符号化ファイルF1に、符号、アウトライン情報を順番に格納する。たとえば、符号化ファイルF1は、ヘッダ部と、符号領域と、トレーラ部とを含む。
ヘッダ部は、各種の制御情報を格納する領域である。符号領域は、前面ディザ画像データの符号、第2種ブロックのディザ画像データの符号を格納する領域である。トレーラ部は、アウトライン情報および背面ディザ画像データの符号を格納する領域である。
図2は、本実施例1に係る記憶制御装置の符号化の順番の一例を示す図である。図2に示すような順番で、各ブロックの符号化を行い、かかる順番に従って、各ブロックに割り当てた符号を、符号領域に格納する。図2に示す例では、記憶制御装置は、ジグザグスキャンの順番で、各ブロックの符号化を行う。具体的には、符号化の順番は、ブロック10−11,10−12,10−21,10−31,10−22,10−13,10−14,10−23,10−32,10−41,10−42,10−33,10−24,10−15,10−25,10−34,10−43,10−44,10−35,10−45の順番となる。
たとえば、記憶制御装置は、ブロック(第1種ブロック)10−32を、9番目に符号化する。このため、記憶制御装置は、ブロック10−32に対応する前面ディザ画像データに割り当てた符号α11−32を、符号領域の9番目の領域に格納する。
記憶制御装置は、第1種ブロックの背面ディザ画像データの符号およびアウトライン情報を、トレーラ部に格納する場合には、該当する第1種ブロックが符号化された順番と対応付けるものとする。たとえば、ブロック(第1種ブロック)10−32は、9番目に符号化される。このため、記憶制御装置は、順番「9」と、背面ディザ画像データに割り当てた符号β11−32と、アウトライン情報11−32とを対応づけて、トレーラ部に格納する。
上記のように、記憶制御装置は、撮像画像データ10を複数のブロックに分割し、所定の順番でスキャンして、各ブロックの符号化を行い、符号化を行った順番に、符号を符号化ファイルF1の符号領域に順番に格納する。ここで、記憶制御装置は、符号化対象となるブロックが第1種ブロックである場合に、第2種ブロックの符号と区別可能な符号を割り当て、第1種ブロックに含まれる物体のアウトライン情報を、符号化の順番と対応づけて、トレーラ部に格納する処理を行う。これにより、符号領域に格納された符号を復号して、撮像画像データ10を生成しなくても、符号領域をスキャンすることで、物体のアウトラインを含むブロックを特定でき、特定したブロックに対応するアウトライン情報を、トレーラ部から取得することで、物体のアウトライン(アウトラインベクトル)を容易に再生利用することが可能となる。
続いて、図1に説明した記憶制御装置が生成した符号化ファイルF1を基にして、物体のアウトラインベクトルを抽出する抽出装置の処理の一例について説明する。図3は、本実施例1に係る抽出装置の処理の一例を説明するための図である。たとえば、抽出装置は、抽出画像データ20を生成し、複数のブロック20−11〜20−45に分割する。ブロック20−11〜20−45の数は、図1で説明した撮像画像データ10の各ブロック10−11〜10−45の数と同一とする。
抽出装置は、符号化ファイルF1の符号領域を順番にスキャンし、第1種ブロックの前面ディザ画像データに割り当てられた符号を特定する。抽出装置は、第1種ブロックの前面ディザ画像データに割り当てられた符号が格納された順番をキーにして、物体11aのアウトラインを含むブロックを、ブロック20−11〜20−45から特定する。たとえば、第1種ブロックの前面ディザ画像データに割り当てられた符号が符号領域に格納された順番を、2,5,6,7,9,13,16,17,18とし、図2で説明した順番に各ブロックが符号化されている前提とすると、物体11aのアウトラインを含むブロックは、ブロック20−12,20−13,20−14,20−22,20−24,20−32,20−34,20−43,20−44となる。
また、抽出装置は、順番2,5,6,7,9,13,16,17,18に対応づけられたアウトライン情報を、トレーラ部から取得して、各ブロックに含まれるアウトラインを設定する。たとえば、抽出装置は、順番2,5,6,7,9,13,16,17,18に対応づけられたアウトライン情報をそれぞれ、アウトライン30−12,30−22,30−12,30−14,30−32,30−24,30−34,30−43,30−44とする。
抽出装置は、設定したアウトライン30−12,30−13,30−14,30−22,30−24,30−32,30−34,30−43,30−44を組み合わせたアウトラインを、物体11aのアウトラインベクトルとして抽出する。
このように、抽出装置は、符号領域をスキャンし、物体のアウトラインを含むブロックを特定し、特定したブロックに対応するアウトライン情報を、トレーラ部から取得することで、物体のアウトライン(アウトラインベクトル)を抽出する。かかる処理では、符号化された情報を復号することや、EMアルゴリズムを用いたエッジ検出を行うことなく、物体11aのアウトラインを抽出できる。従って、抽出装置によれば、撮像画像に含まれる物体のアウトラインを容易に特定することができる。
次に、本実施例1に係るシステムの一例について説明する。図4は、本実施例1に係るシステムの一例を示す図である。図4に示すように、このシステムは、カメラ100aと、記憶制御装置100と、抽出装置200を有する。記憶制御装置100は、カメラ100aと、抽出装置200に接続される。本実施例1では一例として、カメラ100aの撮像範囲に、物体11a、物体11bが配置されているものとする。
カメラ100aは、対象物(たとえば、物体11a,11b)を2つの異なる方向から同時に撮像するステレオカメラ(双眼カメラ)または、左右に可動可能な単眼カメラであり、視差により物体のアウトラインを識別することができる。カメラ100aは、第1の方向から撮像した第1の撮像画像データと、第1の方向とは異なる第2の方向から撮像した第2の撮像画像データとを、記憶制御装置100に出力する。
記憶制御装置100は、図1、図2で説明したように、撮像画像データ10を複数のブロックに分割し、各ブロックの符号化を行うことで、符号化ファイルF1を生成する装置である。記憶制御装置100は、符号化ファイルF1を、抽出装置200に送信する。
抽出装置200は、図3で説明したように、符号化ファイルF1をスキャンして、アウトラインベクトルを抽出する装置である。抽出装置200は、抽出したアウトラインベクトルの情報を、図示しない表示装置や、他の装置に出力してもよい。
図4では一例として、記憶制御装置100と抽出装置200とを別々の装置として説明したが、これに限定されるものではない。たとえば、記憶制御装置100および抽出装置200の機能を、単一のサーバが有していてもよいし、クラウド上の複数のサーバが協働して、記憶制御装置100および抽出装置200の機能を実現してもよい。
次に、図4に示した記憶制御装置100の構成の一例について説明する。図5は、本実施例1に係る記憶制御装置の構成を示す図である。図5に示すように、この記憶制御装置100は、通信部110、記憶部140、制御部150を有する。なお、図示を省略するが、この記憶制御装置100は、各種の情報を入力する入力装置や、記憶制御装置100が生成した情報を表示する表示装置等を有していてもよい。
通信部110は、カメラ100aおよび抽出装置200との間でデータ通信を実行する処理部である。通信部110は、カメラ100aから第1の撮像画像データと、第2の撮像画像データとを取得する。また、通信部110は、記憶制御装置100が生成する符号化ファイルF1の情報を、抽出装置200に送信する。たとえば、通信部110は、通信装置に対応する。後述する制御部150は、通信部110を介して、カメラ100a、抽出装置200とデータをやり取りする。
記憶部140は、バッファ140a、対応情報140b、ケヤキ木情報140c、符号化ファイルF1を有する。記憶部140は、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子や、HDD(Hard Disk Drive)などの記憶装置に対応する。
バッファ140aは、カメラ100aに撮像された第1の撮像画像データおよび第2の撮像画像データを格納するバッファである。
対応情報140bは、第1の撮像画像データに含まれる異なる物体間の境界の情報、または、第1の撮像画像データに含まれる物体のアウトラインの情報を有する。たとえば、境界およびアウトラインの情報は、第1の撮像画像データの境界およびアウトラインの位置情報に対応する。
ケヤキ木情報140cは、ディザ画像データに割り当てる符号を定義した辞書情報である。図6Aは、本実施例1に係るケヤキ木情報のデータ構造の一例を示す図である。図6Aに示すように、ケヤキ木情報140cは、ケヤキ木の葉(ディザ画像データ)と、符号とを対応付ける。ディザ画像データは、第1種ブロックから生成される前面ディザ画像データ、背面ディザ画像データ、第2種ブロックから生成されるディザ画像データのいずれかに対応するディザ画像データである。
図6Bは、ケヤキ木とハフマン木とを示す図である。図6Bに示すように、ケヤキ木160は、割り当てた符号と葉とを接続するものである。各葉は、図6Aに示した葉(ディザ画像データ)に対応する。ハフマン木170は節点を有するが、ケヤキ木160には、節点を有しない。ケヤキ木170は、節点を持たないように、ハフマン木170を改良したもので、割り当てた符号数の拡大や、葉を特定する処理を高速化することを目的としたものである。ケヤキ木170は、ニューラル木とも呼ばれる。
符号は、対応するディザ画像データに割り当てる符号を示す。また、符号は、前面ディザ画像データの符号であるのか、背面ディザ画像データの符号であるのか、ディザ画像データの符号であるのかを区別可能な符号であるものとする。本実施例1では一例として、前面ディザ画像データの符号には、先頭にαが付与される。背面ディザ画像データの符号には、先頭にβが付与される。第2種ブロックのディザ画像データの符号には、先頭にγが付与される。
符号化ファイルF1は、図1に示した符号化ファイルF1に対応するものである。
制御部150は、取得部150a、生成部150b、特定部150c、符号化部150d、出力部150eを有する。制御部150は、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などによって実現できる。また、制御部150は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などのハードワイヤードロジックによっても実現できる。
取得部150aは、カメラ100aから、第1の撮像画像データおよび第2の撮像画像データを取得する処理部である。取得部150aは、取得した第1の撮像画像データおよび第2の撮像画像データを、バッファ140aに格納する。
生成部150bは、バッファ140aに格納された第1の撮像画像データおよび第2の撮像画像データを基にして、対応情報140bを生成する処理部である。たとえば、生成部150bは、第1の撮像画像データおよび第2の撮像画像データを用いた、ステレオマッチングの原理により、第1の撮像画像データに含まれる各物体(たとえば、物体11a,11b)を認識する。
たとえば、生成部150bは、物体11aおよび物体11bの認識結果を用いて、第1の撮像画像に含まれる物体11aと物体11bとの境界部分および物体11aのアウトライン部分を特定する。生成部150bは、境界部分の位置情報およびアウトライン部分の位置情報を、対応情報140bとして生成し、対応情報140bを、記憶部140に格納する。なお、生成部150bは、アウトライン部分の抽出対象となる物体を、入力装置から選択的に受けつけてもよい。
特定部150cは、第1の撮像画像データを複数のブロックに分割し、分割した複数のブロックと、対応情報とを比較して、境界またはアウトラインを含む第1種ブロックと、境界およびアウトラインを含まない第2種ブロックを特定する処理部である。特定部150cは、特定結果およびブロックに分割した第1の撮像画像データの情報を、符号化部150dに出力する。
たとえば、特定部150cは、各ブロックについて、ブロック領域の範囲と、対応情報140bの境界またはアウトラインの位置情報とを比較する。特定部150cは、比較対象のブロック領域の範囲に、境界またはアウトラインが含まれる場合には、比較対象のブロックを、第1種ブロックとする。一方、特定部150cは、比較対象のブロック領域の範囲に、境界およびアウトラインが含まれない場合には、比較対象のブロックを、第2種ブロックとする。
符号化部150dは、第1の画像データを符号化する処理部である。以下において、符号化部150dが符号化する第1の撮像画像データを単に、撮像画像データと表記する。なお、撮像画像データは、特定部150cより、複数のブロックに分割された撮像画像データである。
符号化部150dは、所定の順番により各ブロックを符号化する。たとえば、符号化部150dは、図2で説明した撮像画像データ10の各ブロックと同様にして、ジグザグスキャンの順番で、各ブロックの符号化を行う。符号化部150dは、符号化対象となるブロックに符号を割り当て、割り当てた符号を、符号化ファイルF1の符号領域に順番に格納する。ここで、符号化部150dは、特定部150cの特定結果を基にして、符号化対象となるブロックが第1種ブロックであるか、第2種ブロックであるかを判定し、ブロックの種別に応じた符号化を行う。
符号化対象となるブロックが第1種ブロックである場合の符号化部150dの処理の一例について説明する。符号化部150dは、第1種ブロックを基にして、前面ディザ画像データおよび背面ディザ画像データを生成する。ここでは、符号化部150dが、第1種ブロックとなるブロック10−32を符号化する処理について説明する。
符号化部150dは、ブロック10−32を基にして、前面ディザ画像データ11−32aと、背面ディザ画像データ11−32bとを生成する。前面ディザ画像データ11−32aと、背面ディザ画像データ11−32bとに関する説明は、図1で説明した内容と同様である。
符号化部150dは、前面ディザ画像データ11−32aに符号α11−32を割り当て、アウトライン情報11−32を生成する。たとえば、符号化部150dは、未割当の複数の符号α11−nの中から、一つの符号を選択し、選択した符号を前面ディザ画像データ11−32aに割り当てる。符号化部150dは、前面ディザ画像データ11−32aと、符号α11−32とを対応づけた情報を、ケヤキ木情報140cに登録する。符号化部150dは、前面ディザ画像データ11−32aに含まれる物体11aのアウトライン形状の情報を、アウトライン情報11−32とする。
符号化部150dは、背面ディザ画像データ11−32bに符号β11−32を割り当て、たとえば、符号化部150dは、未割当の複数の符号β11−nの中から、一つの符号を選択し、選択した符号を背面ディザ画像データ11−32bに割り当てる。符号化部150dは、背面ディザ画像データ11−32bと、符号β11−32とを対応づけた情報を、ケヤキ木情報140cに登録する。
符号化部150dは、符号化の順番に従って、前面ディザ画像データ11−32aの符号α11−32を、符号化ファイルF1の符号領域に格納する。たとえば、ブロック11−32aは、9番目に符号化されるため、符号領域の9番目に、符号α11−32を格納する。また、符号化部150dは、符号化の順番と、背面ディザ画像データ11−32bの符号β11−32と、アウトライン情報とを対応づけて、トレーラ部に格納する。
符号化部150dは、他の第1種ブロックに対しても上記処理を繰り返し実行する。
符号化対象となるブロックが第2種ブロックである場合の符号化部150dの処理の一例について説明する。符号化部150dは、第2種ブロックを基にして、ディザ画像データを生成する。ここでは、符号化部150dが、第2種ブロックとなるブロック10−11を符号化する処理について説明する。
符号化部150dは、ブロック10−11に対してそのままディザリングを実行することで、ディザ画像データ11−11を生成する。符号化部150dは、ディザ画像データ11−11に、符号γ11−11を割り当てる。たとえば、符号化部150dは、未割当の複数の符号γ11−nの中から、一つの符号を選択し、選択した符号をディザ画像データ11−11に割り当てる。符号化部150dは、ディザ画像データ11−11と、符号γ11−11とを対応づけた情報を、ケヤキ木情報140cに登録する。
他の第2種ブロックを符号化する処理は、上述したブロック10−11を符号化する処理と同様である。
符号化部150dは、予め定義された所定の順番に従って、各ブロック10−11〜10−45に対して、上記の符号化を行い、符号化ファイルF1に、符号、アウトライン情報を順番に格納する。たとえば、符号化部150dは、図2で説明したジグザグスキャンの順番に従い、ブロックを符号化する。なお、符号化部150dは、ケヤキ木情報140cを、符号化ファイルF1のトレーラ部に格納する。
出力部150eは、符号化ファイルF1を読み込み、抽出装置200に出力する処理部である。
次に、本実施例1に係る記憶制御装置100の処理手順の一例について説明する。図7は、本実施例1に係る記憶制御装置の処理手順を示すフローチャートである。図7に示すように、記憶制御装置100の取得部150aは、カメラ100aから第1の撮像画像データおよび第2の撮像画像データを取得する(ステップS101)。
記憶制御装置100の生成部150bは、ステレオマッチングの原理に基づき、対応情報140bを生成する(ステップS102)。記憶制御装置100の特定部150cは、撮像画像データと対応情報140bとを基にして、境界およびアウトラインを特定する(ステップS103)。
記憶制御装置100の符号化部150dは、撮像画像データを複数のブロックに分割する(ステップS104)。符号化部150dは、所定の順番で、未選択のブロックを選択する(ステップS105)。
符号化部150dは、選択したブロックが境界またはアウトラインを含まない場合には(ステップS106,No)、ステップS107に移行する。符号化部150dは、ブロックに対するディザ画像データを生成する(ステップS107)。符号化部150dは、ディザ画像データに符号を割り当てる(ステップS108)。符号化部150dは、符号を符号化ファイルの符号領域に格納し(ステップS109)、ステップS117に移行する。
一方、符号化部150dは、選択したブロックが境界およびアウトラインを含む場合には(ステップS106,Yes)、ブロックに対する前面ディザ画像データを生成する(ステップS110)。符号化部150dは、境界またはアウトラインの形状を抽出し、アウトライン情報を生成する(ステップS111)。
符号化部150dは、ブロックに対する背面ディザ画像データを生成する(ステップS112)。符号化部150dは、前面ディザ画像データに符号を割り当てる(ステップS113)。符号化部150dは、符号を符号化ファイルF1の符号領域に格納する(ステップS114)。
符号化部150dは、背面ディザ画像データに符号を割り当てる(ステップS115)。符号化部150dは、順番と、背面ディザ画像データの符号と、アウトライン情報とを符号化ファイルのトレーラ部に格納し(ステップS116)、ステップS117に移行する。
符号化部150dは、全てのブロックを選択した場合には(ステップS117,Yes)、処理を終了する。一方、符号化部150dは、全てのブロックを選択していない場合には(ステップS117,No)、ステップS105に移行する。
次に、図4に示した抽出装置200の構成の一例について説明する。図8は、本実施例1に係る抽出装置の構成を示す図である。図8に示すように、この抽出装置200は、通信部210、入力部220、表示部230、記憶部240、制御部250を有する。
通信部210は、記憶制御装置100との間でデータ通信を実行する処理部である。通信部210は、記憶制御装置100から、符号化ファイルF1を受信する。たとえば、通信部210は、通信装置に対応する。後述する制御部250は、通信部210を介して、記憶制御装置100とデータをやり取りする。
入力部220は、抽出装置200に各種の情報を入力する入力装置である。入力部220は、キーボードやマウス、タッチパネル等に対応する。
表示部230は、制御部250から出力される情報を表示する表示装置である。表示部230は、液晶ディスプレイ、タッチパネル等に対応する。
記憶部240は、符号化ファイルF1を有する。記憶部240は、RAM、ROM、フラッシュメモリなどの半導体メモリ素子や、HDDなどの記憶装置に対応する。
符号化ファイルF1は、記憶制御装置100により生成されるデータであり、図1に示した符号化ファイルF1に対応するものである。
制御部250は、取得部250a、受付部250b、抽出部250c、生成部250dを有する。制御部250は、CPUやMPUなどによって実現できる。また、制御部250は、ASICやFPGAなどのハードワイヤードロジックによっても実現できる。
取得部250aは、記憶制御装置100から符号化ファイルF1を取得する処理部である。取得部250aは、取得した符号化ファイルF1を記憶部240に格納する。
受付部250bは、撮像画像データに含まれる物体のアウトラインを抽出する指示を受け付ける処理部である。受付部250bは、アウトラインを抽出する指示を受けつけた場合には、制御信号を、抽出部250cに出力する。
抽出部250cは、受付部250bから制御信号を受けつけた場合に、撮像画像データに含まれる物体のアウトラインを抽出する処理部である。本実施例1では一例として、抽出部250cが、符号化ファイルF1を基にして、物体11aのアウトラインを抽出する処理について説明する。
たとえば、抽出部250cは、抽出画像データ20を生成し、複数のブロック20−11〜20−45に分割する。ブロック20−11〜20−45の数は、図1で説明した撮像画像データ10の各ブロック10−11〜10−45の数と同一とする。
抽出部250cは、符号化ファイルF1の符号領域を順番にスキャンし、第1種ブロックの前面ディザ画像データに割り当てられた符号を特定する。抽出部250cは、第1種ブロックの前面ディザ画像データに割り当てられた符号が格納された順番をキーにして、物体11aのアウトラインを含むブロックを、ブロック20−11〜20−45から特定する。
たとえば、第1種ブロックの前面ディザ画像データに割り当てられた符号が符号領域に格納された順番を、2,5,6,7,9,13,16,17,18とし、図2で説明した順番に各ブロックが符号化されている前提とする。この場合には、抽出部250cは、物体11aのアウトラインを含むブロックは、ブロック20−12,20−13,20−14,20−22,20−24,20−32,20−34,20−43,20−44として特定する。
抽出部250cは、順番2,5,6,7,9,13,16,17,18に対応づけられたアウトライン情報を、符号化ファイルF1のトレーラ部から取得して、各ブロックに含まれるアウトラインを設定する。たとえば、順番2,5,6,7,9,13,16,17,18に対応づけられたアウトライン情報をそれぞれ、図3に示した、アウトライン30−12,30−13,30−14,30−22,30−24,30−32,30−34,30−43,30−44とする。
抽出部250cは、設定したアウトライン30−12,30−13,30−14,30−22,30−24,30−32,30−34,30−43,30−44を組み合わせたアウトラインを、物体11aのアウトラインベクトルとして抽出する。抽出部250cは、抽出したアウトラインベクトルの情報を、生成部250dに出力する。
生成部250dは、アウトラインベクトルの情報を基にして、PostScriptデータを生成する処理部である。図9Aは、PostScriptデータを生成する処理を説明するための図である。以下の説明では便宜上、アウトラインを含むブロックを、図9Aに示すブロック90−1〜90−16とする。生成部250dは、抽出部250cから取得したアウトラインベクトルの情報を基にして、外郭ブロックを設定する。たとえば、生成部250dは、複数のブロックを用意し、複数のブロックと、アウトラインベクトルとを比較して、アウトラインベクトルを含むブロック90−1〜90−16を外郭ブロックとして特定する。
生成部250dは、直線と曲線(ベジェ曲線)とを組み合わせることで、各外部ブロック90−1〜90−16を通過する線分91を生成する。たとえば、線分91は、直線91AB、曲線91BC、直線91DC、直線91DAからなる。直線91ABは、接続点Aと接続点Bとを結ぶ直線である。曲線91BCは、接続点Bと接続点Cとを結ぶ曲線であり、制御点α,βおよび制御点(端点)B,Cにより、曲線の形状が決定される。直線91CDは、接続点Cと接続点Dとを結ぶ直線である。直線91DAは、接続点Dと接続点Aとを結ぶ直線である。
生成部250dは、制御点A,B,C,D、制御点α,βを基にして、アウトラインのPostScriptデータを生成する。図9Bは、PostScriptデータの一例を示す図である。図9Bに示すPostScriptデータ95に含まれる「Xa,Ya」は、接続点Aの座標を示すものである。「Xb,Yb」は、接続点Bの座標を示すものである。「Xc,Yc」は、接続点Cの座標を示すものである。「Xd,Yd」は、接続点Dの座標を示すものである。「Xα,Yβ」は、制御点αの座標を示すものである。生成部250dは、生成したPostScriptデータ95を、記憶部140に格納しても良いし、外部の装置に出力しても良い。
また、生成部250dは、生成したアウトラインのPostScriptデータを、符号化ファイルF1のトレーラ部に格納してもよい。図9Cは、PostScriptデータの格納例を示す図である。生成部250dは、図9Cに示すように、図9Bに示したPostScriptデータ95を、符号化ファイルF1のトレーラ部に格納する。たとえば、符号化ファイルF1のトレーラ部にPostScriptデータ95を格納することで、PostScriptデータ95を再利用することが可能となる。PostScriptデータ95を読み出して、利用することで、符号領域に格納された符号を復号しなくても、物体11a等のアウトラインを特定することができる。
次に、本実施例1に係る抽出装置200の処理手順の一例について説明する。図10は、本実施例1に係る抽出装置の処理手順を示すフローチャートである。図10に示すように、抽出装置200の受付部250bは、アウトライン抽出の指示を受け付ける(ステップS201)。
抽出装置200の抽出部250cは、符号化ファイルF1の符号領域の符号を順番にスキャンし、複数のブロックのうち、境界またはアウトラインを含むブロックの符号の順番を特定する(ステップS202)。
抽出部250cは、特定した順番をキーにして、アウトライン情報をトレーラ部から取得する(ステップS203)。抽出部250cは、アウトライン情報に含まれるアウトラインの形状を該当するブロックに配置することで、アウトライン・ブロック(アウトラインベクトル)を抽出する(ステップS204)。
生成部250dは、抽出されたアウトライン・ブロックから直線と曲線の接続点と制御点とを特定する(ステップS205)。生成部250dは、特定された接続点と制御点とを基にして、アウトラインのPostScriptデータを生成する(ステップS206)。生成部250dは、アウトラインのPostScriptデータをトレーラ部に格納する(ステップS207)。
続いて、本実施例1に係る記憶制御装置100の効果について説明する。記憶制御装置100は、撮像画像データ10を複数のブロックに分割し、所定の順番でスキャンして、各ブロックの符号化を行い、符号化を行った順番に、符号を符号化ファイルF1の符号領域に順番に格納する。ここで、記憶制御装置100は、符号化対象となるブロックが第1種ブロックである場合に、第2種ブロックの符号と区別可能な符号を割り当て、第1種ブロックに含まれる物体のアウトライン情報を、符号化の順番と対応づけて、トレーラ部に格納する処理を行う。これにより、符号領域に格納された符号を復号して、撮像画像データ10を生成しなくても、符号領域をスキャンすることで、物体のアウトラインを含むブロックを特定でき、特定したブロックに対応するアウトライン情報を、トレーラ部から取得することで、物体のアウトライン(アウトラインベクトル)を容易に再生利用することが可能となる。
また、記憶制御装置100は、各ディザ画像データに符号を割り当てる場合に、従来のハフマン木の代わりに、ケヤキ木(ニューラル木)を用いる。これにより、区別可能な符号数の増加に対応することができ、画質の劣化を防ぐことができる。また、ケヤキ木は、節点を持たず、符号と葉(ディザ画像データ)とが直接対応付けられるため、高速に符号に対応する葉(ディザ画像データ)を取得することができる。
本実施例1に係る抽出装置200の効果について説明する。抽出装置200は、符号領域をスキャンし、物体のアウトラインを含むブロックを特定し、特定したブロックに対応するアウトライン情報を、トレーラ部から取得することで、物体のアウトライン(アウトラインベクトル)を抽出する。係る処理では、符号化された情報を復号することや、EMアルゴリズムを用いたエッジ検出を行うことなく、物体11aのアウトラインを抽出できる。従って、抽出装置200によれば、撮像画像に含まれる物体のアウトラインを容易に特定することができる。
図11および図12は、本実施例2に係る記憶制御装置の処理の一例を説明するための図である。図11(図12)に示すように、記憶制御装置は、圧縮対象となる撮像画像データ60を取得する。たとえば、撮像画像データ60は、物体11aおよび物体11bを撮像した画像データである。図11に示す例では、物体11aは、物体11bよりも前方に位置している。
記憶制御装置は、撮像画像データ60を複数のブロック60−11〜60−45に分割する。記憶制御装置は、対応情報を基にして、複数のブロック60−11〜60−45のうち、各物体の境界、または、対象となる物体のアウトラインを含むブロックを特定する。
対応情報は、各物体の境界、または、対象となる物体のアウトラインを含むブロックを示す情報である。また、対応情報は、ブロックの領域のうち、対象となる物体の領域の情報と、他の領域の情報とを含む。本実施例2では一例として、対象となる物体を物体11aとして説明を行う。
以下の説明では、特に区別する場合、各物体の境界、または、対象となる物体のアウトラインを含むブロックを「第1種ブロック」と表記する。各物体の境界を含まず、かつ、対象となる物体のアウトラインを含まないブロックを「第2種ブロック」と表記する。
図11に示す例では、第1種ブロックは、ブロック60−12,60−13,60−14,60−22,60−24,60−32,60−34,60−43,60−44となる。第1種ブロックに対応しない他のブロックが、第2種ブロックとなる。
記憶制御装置が、第1種ブロックを符号化(圧縮)する処理の一例について説明する。ここでは、記憶制御装置は、ブロック60−32を符号化する処理について説明する。
記憶制御装置は、ブロック60−32に対してそのままディザリングを実行することで、ディザ画像データ61−32aを生成する。記憶制御装置は、ディザ画像データ61−32aに、符号γ61−32を割り当てる。
また、記憶制御装置は、対応情報を基にして、ブロック60−32の領域のうち、物体11aの領域と、物体11a以外の領域を特定する。記憶制御装置は、ブロック60−32の領域のうち、物体11aの領域の画素値を「1」に設定し、かつ、物体11a以外の領域の画素値を「0」に設定することで、重畳情報61−32bを生成する。重畳情報61−32bにおいて、0と1との境界が、物体11aと物体11bとの境界(物体11aのアウトライン)の形状を示している。なお、1画素に対し複数ビットのビットを割り当てることで、ブロック内に複数物体が存在した場合の重畳とその順序を表現することができる。
記憶制御装置は、重畳情報61−32bに対して、符号δ61−32を割り当てる。
他の第1種ブロックを符号化する処理は、上述したブロック60−32を符号化する処理と同様である。すなわち、記憶制御装置は、各第1種ブロックについて、ディザ画像データおよび重畳情報を生成し、符号を割り当てる。
図12を用いて、記憶制御装置が、第2種ブロックを符号化(圧縮)する処理の一例について説明する。ここでは、記憶制御装置が、ブロック60−11,60−21を符号化する処理について説明する。
図12に示すように、記憶制御装置は、ブロック60−11に対してそのままディザリングを実行することで、ディザ画像データ61−11aを生成する。記憶制御装置は、ディザ画像データ61−11aに、符号γ61−11を割り当てる。
また、記憶制御装置は、ブロック60−11の領域内の画素値を全て「0」に設定することで重畳情報61−11bを生成する。記憶制御装置は、重畳情報61−11bに対して、符号δ61を割り当てる。
記憶制御装置は、ブロック60−21に対してそのままディザリングを実行することで、ディザ画像データ61−21aを生成する。記憶制御装置は、ディザ画像データ61−21aに、符号γ61−21を割り当てる。
また、記憶制御装置は、ブロック60−21の領域内の画素値を全て「0」に設定することで重畳情報61−21bを生成する。記憶制御装置は、重畳情報61−21bに対して、符号δ61を割り当てる。
他の第2種ブロックを符号化する処理は、上述したブロック60−11,60−21を符号化する処理と同様である。なお、第2種ブロックを基に生成される重畳情報は、全て「0」が設定され、割り当てられる符号(符号δ61)も共通となる。このため、各ブロック60−11〜60−45の重畳情報に割り当てられた符号のうち、「符号δ61」以外の符号が、第1種ブロック(第1種ブロックの重畳情報)に対応する符号となる。
記憶制御装置は、予め定義された所定の順番に従って、各ブロック60−11〜60−45に対して、上記の符号化を行い、符号化ファイルF2に、ディザ画像データの符号、重畳情報の符号を順番に格納する。たとえば、符号化ファイルF2は、ヘッダ部と、符号領域と、トレーラ部とを含む。
ヘッダ部は、各種の制御情報を格納する領域である。符号領域は、ディザ画像データの符号を格納する領域である。トレーラ部は、重畳情報の符号を格納する領域である。
記憶制御装置の符号化の順番は、実施例1の図2で説明したジグザグスキャンの順番と同様の順番である。たとえば、符号化の順番は、ブロック60−11,60−12,60−21,60−31,60−22,60−13,60−14,60−23,60−32,60−41,60−42,60−33,60−24,60−15,60−25,60−34,60−43,60−44,60−35,60−45の順番となる。
記憶制御装置は、符号化の順番に従って、各ブロックのディザ画像データに割り当てた符号を、符号化ファイルF2の符号領域に格納する。また、記憶制御装置は、符号化の順番に従って、各ブロックの重畳情報に割り当てた符号を、符号化ファイルF2のトレーラ部の重畳情報専用の領域に格納する。
たとえば、記憶制御装置は、ブロック60−32を、9番目に符号化する。このため、記憶制御装置は、ブロック60−32に対応するディザ画像データに割り当てた符号γ61−32を、符号領域の9番目の領域に格納する。また、ブロック60−32に対応する重畳情報に割り当てた符号δ61−32を、トレーラ部(トレーラ部に設けられた重畳情報専用の領域)の9番目の領域に格納する。
また、記憶制御装置は、重畳情報と符号とを対応づけた情報を、トレーラ部に格納しておく。
上記のように、記憶制御装置は、撮像画像データ60を複数のブロックに分割し、所定の順番でスキャンして、各ブロックの符号化を行い、符号化を行った順番に、符号を符号化ファイルF1の符号領域、トレーラ部に順番に格納する。ここで、記憶制御装置は、ブロックに含まれる物体11aの領域を「1」、他の領域を「0」に設定した重畳情報を生成し、重畳情報に符号を割り当てて、トレーラ部に格納する処理を行う。これにより、トレーラ部に格納された重畳情報の符号をスキャンすることで、物体のアウトラインを含むブロックを特定でき、符号に対応する重畳情報の「1」、「0」の境界を特定することで、物体のアウトライン(アウトラインベクトル)を容易に再生利用することが可能となる。
続いて、図11および図12で説明した記憶制御装置が生成した符号化ファイルF2を基にして、物体のアウトラインベクトルを抽出する抽出装置の処理の一例について説明する。図13は、本実施例2に係る抽出装置の処理の一例を説明するための図である。たとえば、抽出装置は、抽出画像データ70を生成し、複数のブロック70−11〜70−45に分割する。ブロック70−11〜70−45の数は、図11で説明した撮像画像データ60の各ブロック60−11〜60−45の数と同一とする。
抽出装置は、符号化ファイルF2のトレーラ部の重畳情報が割り当てられた領域を順番にスキャンし、領域が全て「0」の重畳情報に対応した符号「δ61」以外の符号を特定する。抽出装置は、特定した符号が格納された順番をキーにして、物体11aのアウトラインを含むブロックを、ブロック70−11〜70−45から特定する。たとえば、重畳情報が割り当てられた領域に格納された順番を、2,5,6,7,9,13,16,17,18とし、図2で説明した順番に各ブロックが符号化されている前提とすると、物体11aのアウトラインを含むブロックは、ブロック70−12,70−13,70−14,70−22,70−24,70−32,70−34,70−43,70−44となる。
また、抽出装置は、特定した符号に対応づけられた重畳情報の「0」、「1」の境界部分を基にして、各ブロックに含まれるアウトラインを設定する。たとえば、抽出装置は、順番2,5,6,7,9,13,16,17,18に対応づけられたアウトライン(境界)をそれぞれ、アウトライン80−12,80−22,80−12,80−14,80−32,80−24,80−34,80−43,80−44とする。
抽出装置は、設定したアウトライン80−12,80−13,80−14,80−22,80−24,80−32,80−34,80−43,80−44を組み合わせたアウトラインを、物体11aのアウトラインベクトルとして抽出する。
このように、抽出装置は、トレーラ部をスキャンし、物体のアウトラインを含むブロックを特定し、特定したブロックに対応する符号の重畳情報の0、1の境界の情報を取得することで、物体のアウトライン(アウトラインベクトル)を抽出する。かかる処理では、符号化された情報を復号することや、EMアルゴリズムを用いたエッジ検出を行うことなく、物体11aのアウトラインを抽出できる。従って、抽出装置によれば、撮像画像に含まれる物体のアウトラインを容易に特定することができる。
次に、本実施例2に係るシステムの一例について説明する。図14は、本実施例2に係るシステムの一例を示す図である。図14に示すように、このシステムは、カメラ100aと、記憶制御装置300と、抽出装置400を有する。記憶制御装置300は、カメラ100aと、抽出装置400に接続される。本実施例2では一例として、カメラ100aの撮像範囲に、物体11a、物体11bが配置されているものとする。
カメラ100aに関する説明は、図4で説明したカメラ100aに関する説明と同様である。
記憶制御装置300は、図11、図12で説明したように、撮像画像データ60を複数のブロックに分割し、各ブロックの符号化を行うことで、符号化ファイルF2を生成する装置である。記憶制御装置300は、符号化ファイルF2を、抽出装置400に送信する。
抽出装置400は、図13で説明したように、符号化ファイルF2をスキャンして、アウトラインベクトルを抽出する装置である。抽出装置400は、抽出したアウトラインベクトルの情報を、図示しない表示装置や、他の装置に出力してもよい。
図14では一例として、記憶制御装置300と抽出装置400とを別々の装置として説明したが、これに限定されるものではない。たとえば、記憶制御装置300および抽出装置400の機能を、単一のサーバが有していてもよいし、クラウド上の複数のサーバが協働して、記憶制御装置300および抽出装置400の機能を実現してもよい。
次に、図14に示した記憶制御装置300の構成の一例について説明する。図15は、本実施例2に係る記憶制御装置の構成を示す図である。図15に示すように、この記憶制御装置は、通信部310、記憶部340、制御部350を有する。なお、図示を省略するが、この記憶制御装置300は、各種の情報を入力する入力装置や、記憶制御装置300が生成した情報を表示する表示装置等を有していてもよい。
通信部310は、カメラ100aおよび抽出装置400との間でデータ通信を実行する処理部である。通信部310は、カメラ100aから第1の撮像画像データと、第2の撮像画像データとを取得する。また、通信部310は、記憶制御装置300が生成する符号化ファイルF2の情報を、抽出装置400に送信する。たとえば、通信部310は、通信装置に対応する。後述する制御部350は、通信部310を介して、カメラ100a、抽出装置400とデータをやり取りする。
記憶部340は、バッファ340a、対応情報340b、ケヤキ木情報340c、重畳管理情報340d、符号化ファイルF2を有する。記憶部340は、RAM、ROM、フラッシュメモリなどの半導体メモリ素子や、HDDなどの記憶装置に対応する。
バッファ340aは、カメラ100aに撮像された第1の撮像画像データおよび第2の撮像画像データを格納するバッファである。
対応情報340bは、第1の撮像画像データに含まれる異なる物体間の境界の情報、または、第1の撮像画像データに含まれる物体のアウトラインの情報を有する。たとえば、境界およびアウトラインの情報は、第1の撮像画像データの境界およびアウトラインの位置情報に対応する。
ケヤキ木情報340cは、ディザ画像データに割り当てる符号を定義した辞書情報である。図16は、本実施例2に係るケヤキ木情報のデータ構造の一例を示す図である。図16に示すように、このケヤキ木情報340cは、葉(ディザ画像データ)と、符号とを対応付ける。ディザ画像データは、第1種ブロックまたは第2種ブロックから生成されるディザ画像データである。符号は、対応するディザ画像データに割り当てる符号を示す。ここで、ケヤキ木およびハフマン木に関する説明は、図6Bで行った説明に対応する。ケヤキ木は、節点を持たないように、ハフマン木を改良したもので、割り当てた符号数の拡大や、葉を特定する処理を高速化することを目的としたものである。
重畳管理情報340dは、重畳情報に割り当てる符号を定義した辞書情報である。図17は、本実施例2に係る重畳管理情報のデータ構造の一例を示す図である。図17に示すように、重畳管理情報340dは、重畳情報と、符号とを対応付ける。重畳情報は、ブロックの領域の内、物体11aの領域の画素値を「1」に設定し、かつ、物体11a以外の領域の画素値を「0」に設定した情報である。なお、ブロック内に、物体11aが存在しない場合には、重畳情報の画素値は、全て「0」となる。
符号は、対応する重畳情報に割り当てる符号を示す。なお、画素値が全て「0」となる重畳情報には、同一の符号が割り当てられる。図12で説明したように、第2種ブロックの重畳情報は、全て画素値が「0」となるため、各第2種ブロックの重畳情報には、同一の符号が割り当てられる。なお、各第1種ブロックの重畳情報には、固有の符号が割り当てられる。
符号化ファイルF2は、図11、図12等に示した符号化ファイルF1に対応するものである。
制御部350は、取得部350a、生成部350b、特定部350c、符号化部350d、出力部350eを有する。制御部350は、CPUやMPUなどによって実現できる。また、制御部350は、ASICやFPGAなどのハードワイヤードロジックによっても実現できる。
取得部350aは、カメラ100aから、第1の撮像画像データおよび第2の撮像画像データを取得する処理部である。取得部350aは、取得した第1の撮像画像データおよび第2の撮像画像データを、バッファ340aに格納する。
生成部350bは、バッファ340aに格納された第1の撮像画像データおよび第2の撮像画像データを基にして、対応情報340bを生成する処理部である。生成部350bが、対応情報340bを生成する処理は、実施例1で説明した生成部150bが、対応情報140bを生成する処理と同様である。
特定部350cは、第1の撮像画像データを複数のブロックに分割し、分割した複数のブロックと、対応情報とを比較して、境界またはアウトラインを含む第1種ブロックと、境界およびアウトラインを含まない第2種ブロックを特定する処理部である。特定部350cは、特定結果およびブロックに分割した第1の撮像画像データの情報を、符号化部350dに出力する。
たとえば、特定部350cは、各ブロックについて、ブロック領域の範囲と、対応情報340bの境界またはアウトラインの位置情報とを比較する。特定部350cは、比較対象のブロック領域の範囲に、境界またはアウトラインが含まれる場合には、比較対象のブロックを、第1種ブロックとする。一方、特定部350cは、比較対象のブロック領域の範囲に、境界およびアウトラインが含まれない場合には、比較対象のブロックを、第2種ブロックとする。
符号化部350dは、第1の撮像画像データを符号化する処理部である。以下において、符号化部350dが符号化する第1の撮像画像データを単に、撮像画像データと表記する。なお、撮像画像データは、特定部350cより、複数のブロックに分割された撮像画像データである。
符号化部350dは、所定の順番により各ブロックを符号化する。たとえば、符号化部350dは、図2で説明した撮像画像データ20(60)の各ブロックと同様にして、ジグザグスキャンの順番で、各ブロックの符号化を行う。符号化部350dは、符号化対象となるブロックに符号を割り当て、割り当てた符号を、符号化ファイルF1の符号領域に順番に格納する。また、符号化部350dは、ブロックの重畳情報を生成し、生成した重畳情報に符号を割り当て、割り当てた符号を、符号化ファイルF2のトレーラ部に格納する。
符号化部350dが、第1種ブロックを符号化する処理の一例について説明する。符号化部350dは、第1種ブロックに対してそのままディザリングを実行することで、ディザ画像データを生成する。また、符号化部350dは、第1種ブロックの領域のうち、物体11aの領域の画素値を「1」、他の領域の画素値を「0」に設定することで、重畳情報を生成する。
符号化部350dは、未割当の複数の符号γ61−nの中から一つの符号を選択し、選択した符号を、第1種ブロックのディザ画像データに割り当てる。符号化部350dは、ディザ画像データと、選択した符号とを対応づけた情報を、ケヤキ木情報340cに登録する。
符号化部350dは、未割当の複数の符号δ61−nの中から一つの符号を選択し、選択した符号を、第1種ブロックの重畳情報に割り当てる。符号化部350dは、重畳情報と、選択した符号とを対応づけた情報を、重畳管理情報340dに登録する。
符号化部350dが、第2種ブロックを符号化する処理の一例について説明する。符号化部350dは、第2種ブロックに対してそのままディザリングを実行することで、ディザ画像データを生成する。また、符号化部350dは、第2種ブロックの全領域の画素値を「0」に設定することで、重畳情報を生成する。
符号化部350dは、未割当の複数の符号γ61−nの中から一つの符号を選択し、選択した符号を、第2種ブロックのディザ画像データに割り当てる。符号化部350dは、ディザ画像データと、選択した符号とを対応づけた情報を、ケヤキ木情報340cに登録する。
符号化部350dは、予め定めておいた所定の符号(たとえば、δ61)を、第2種ブロックの重畳情報に割り当てる。第2種ブロックの重畳情報と、所定の符号とを対応づけた情報を、重畳管理情報340dに登録する。なお、既に、第2種ブロックの重畳情報が、重畳管理情報340dに登録されている場合には、係る処理をスキップする。
符号化部350dは、符号化の順番に従って、符号化を行い、第1種ブロックまたは第2種ブロックの符号を、順番に、符号化ファイルF2の符号領域に格納する。また、符号化部350dは、第1種ブロックまたは第2種ブロックの重畳情報の符号化を、順番に、符号化ファイルF2のトレーラ部に格納する。また、符号化部350dは、符号化が終了した後に、ケヤキ木情報340c、重畳管理情報340dを、符号化ファイルF2のトレーラ部に格納する。
出力部350eは、符号化ファイルF2を読み込み、抽出装置400に出力する処理部である。
次に、本実施例2に係る記憶制御装置300の処理手順の一例について説明する。図18は、本実施例2に係る記憶制御装置の処理手順を示すフローチャートである。図18に示すように、記憶制御装置300の取得部350aは、カメラ100aから第1の撮像画像データおよび第2の撮像画像データを取得する(ステップS301)。
記憶制御装置300の生成部350bは、ステレオマッチングの原理に基づき、対応情報340bを生成する(ステップS302)。記憶制御装置300の特定部350cは、撮像画像データと対応情報340bとを基にして、境界およびアウトラインを特定する(ステップS303)。
記憶制御装置300の符号化部350dは、撮像画像データを複数のブロックに分割する(ステップS304)。符号化部350dは、所定の順番で、未選択のブロックを選択する(ステップS305)。
符号化部350dは、選択したブロックに対するディザ画像データおよび重畳情報を生成する(ステップS306)。符号化部350dは、ディザ画像データに符号を割り当て、符号領域に格納する(ステップS307)。符号化部350dは、重畳情報に符号を割り当て、トレーラ部に格納する(ステップS308)。
符号化部350dは、全てのブロックを選択していない場合には(ステップS309,No)、ステップS305に移行する。一方、符号化部350dは、全てのブロックを選択した場合には(ステップS309,Yes)、処理を終了する。
次に、図14に示した抽出装置400の構成の一例について説明する。図19は、本実施例2に係る抽出装置の構成を示す図である。図19に示すように、この抽出装置400は、通信部410、入力部420、表示部430、記憶部440、制御部450を有する。
通信部410は、記憶制御装置300との間でデータ通信を実行する処理部である。通信部410は、記憶制御装置300から、符号化ファイルF2を受信する。たとえば、通信部410は、通信装置に対応する。後述する制御部450は、通信部410を介して、記憶制御装置300とデータをやり取りする。
入力部420は、抽出装置400に各種の情報を入力する入力装置である。入力部420は、キーボードやマウス、タッチパネル等に対応する。
表示部430は、制御部450から出力される情報を表示する表示装置である。表示部430は、液晶ディスプレイ、タッチパネル等に対応する。
記憶部440は、符号化ファイルF2を有する。記憶部440は、RAM、ROM、フラッシュメモリなどの半導体メモリ素子や、HDDなどの記憶装置に対応する。
符号化ファイルF2は、記憶制御装置300により生成されるデータであり、図11に示した符号化ファイルF2に対応するものである。
制御部450は、取得部450a、受付部450b、抽出部450c、生成部450dを有する。制御部450は、CPUやMPUなどによって実現できる。また、制御部450は、ASICやFPGAなどのハードワイヤードロジックによっても実現できる。
取得部450aは、記憶制御装置300から符号化ファイルF2を取得する処理部である。取得部450aは、取得した符号化ファイルF2を記憶部440に格納する。
受付部450bは、撮像画像データに含まれる物体のアウトラインを抽出する指示を受け付ける処理部である。受付部450bは、アウトラインを抽出する指示を受けつけた場合には、制御信号を、抽出部450cに出力する。
抽出部450cは、受付部450bから制御信号を受けつけた場合に、撮像画像データに含まれる物体のアウトラインを抽出する処理部である。本実施例2では一例として、抽出部450cが、符号化ファイルF2を基にして、物体11aのアウトラインを抽出する処理について説明する。
たとえば、抽出部450cは、抽出画像データ70を生成し、複数のブロック70−11〜70−45に分割する。ブロック70−11〜70−45の数は、図11で説明した撮像画像データ60の各ブロック60−11〜60−45の数と同一とする。
抽出部450cは、符号化ファイルF2のトレーラ部の重畳情報が割り当てられた領域を順番にスキャンし、領域が全て「0」の重畳情報に対応した符号「δ61」以外の符号を特定する。抽出部450cは、特定した符号が格納された順番をキーにして、物体11aのアウトラインを含むブロックを、ブロック70−11〜70−45から特定する。たとえば、重畳情報が割り当てられた領域に格納された順番を、2,5,6,7,9,13,16,17,18とし、図2で説明した順番に各ブロックが符号化されている前提とする。そうすると、物体11aのアウトラインを含むブロックは、図13で説明した、ブロック70−12,70−13,70−14,70−22,70−24,70−32,70−34,70−43,70−44となる。
また、抽出部450cは、トレーラ部に格納された重畳管理情報340dを参照し、特定した符号に対応づけられた重畳情報の「0」、「1」の境界部分を基にして、各ブロックに含まれるアウトラインを設定する。たとえば、抽出部450cは、順番2,5,6,7,9,13,16,17,18に対応づけられたアウトライン(境界)をそれぞれ、図13で説明した、アウトライン80−12,80−13,80−14,80−22,80−24,80−32,80−34,80−43,80−44とする。
抽出部450cは、設定したアウトライン80−12,80−13,80−14,80−22,80−24,80−32,80−34,80−43,80−44を組み合わせたアウトラインを、物体11aのアウトラインベクトルとして抽出する。
生成部450dは、アウトラインベクトルの情報を基にして、PostScriptデータを生成する処理部である。生成部450dが、PostScriptデータを生成する処理は、実施例1で説明した生成部250dが、PostScriptデータを生成する処理に対応する。生成部450dは、生成したPostScriptデータを、記憶部240に格納しても良いし、外部の装置に出力しても良い。また、生成部450dは、生成部250dと同様にして、PostScriptデータ95を、符号化ファイルF1のトレーラ部に格納してもよい。
次に、本実施例2に係る抽出装置400の処理手順の一例について説明する。図20は、本実施例2に係る抽出装置の処理手順を示すフロ−チャートである。図20に示すように、抽出装置400の受付部450bは、アウトライン抽出の指示を受け付ける(ステップS401)。
抽出装置400の抽出部450cは、トレーラ部の重畳情報の符号を順番にスキャンし、複数のブロックのうち、境界またはアウトラインを含むブロックの順番を特定する(ステップS402)。抽出部450cは、符号に対応する重畳情報を取得する(ステップS403)。
抽出部450cは、各重畳情報を基にして、アウトライン・ブロック(アウトラインベクトル)を抽出する(ステップS404)。
生成部450dは、抽出されたアウトライン・ブロックから直線と曲線の接続点と制御点とを特定する(ステップS405)。生成部450dは、特定された接続点と制御点とを基にして、アウトラインのPostScriptデータを生成する(ステップS406)。生成部450dは、アウトラインのPostScriptデータをトレーラ部に格納する(ステップS407)。
次に、本実施例2に係る記憶制御装置300の効果について説明する。記憶制御装置300は、撮像画像データ60を複数のブロックに分割し、所定の順番でスキャンして、各ブロックの符号化を行い、符号化を行った順番に、符号を符号化ファイルF2の符号領域、トレーラ部に順番に格納する。ここで、記憶制御装置300は、ブロックに含まれる物体11aの領域を「1」、他の領域を「0」に設定した重畳情報を生成し、重畳情報に符号を割り当てて、トレーラ部に格納する処理を行う。これにより、トレーラ部に格納された重畳情報の符号をスキャンすることで、物体のアウトラインを含むブロックを特定でき、符号に対応する重畳情報の「1」、「0」の境界を特定することで、物体のアウトライン(アウトラインベクトル)を容易に再生利用することが可能となる。
本実施例2に係る抽出装置400の効果について説明する。抽出装置400は、トレーラ部をスキャンし、物体のアウトラインを含むブロックを特定し、特定したブロックに対応する符号の重畳情報の「0」、「1」の境界の情報を取得することで、物体のアウトライン(アウトラインベクトル)を抽出する。係る処理では、符号化された情報を復号することや、EMアルゴリズムを用いたエッジ検出を行うことなく、物体11aのアウトラインを抽出できる。従って、抽出装置400によれば、撮像画像データに含まれる物体のアウトラインを容易に特定することができる。
次に、上記実施例に示した記憶制御装置100,300と同様の機能を実現するコンピュータのハードウェア構成の一例について説明する。図21は、記憶制御装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
図21に示すように、コンピュータ500は、各種演算処理を実行するCPU501と、ユーザからのデータの入力を受け付ける入力装置502と、ディスプレイ503とを有する。また、コンピュータ500は、記憶媒体からプログラム等を読み取る読み取り装置504と、有線または無線ネットワークを介して収録機器等との間でデータの授受を行うインターフェース装置505とを有する。また、コンピュータ500は、各種情報を一時記憶するRAM506と、ハードディスク装置507とを有する。そして、各装置501〜507は、バス508に接続される。
ハードディスク装置507は、取得プログラム507a、生成プログラム507b、特定プログラム507c、符号化プログラム407d、出力プログラム507eを有する。CPU501は、各プログラム507a〜507eを読み出してRAM506に展開する。
取得プログラム507aは、取得プロセス506aとして機能する。生成プログラム507bは、生成プロセス506bとして機能する。特定プログラム507cは、特定プロセス506cとして機能する。符号化プログラム507dは、符号化プロセス506dとして機能する。出力プログラム507eは、出力プロセス506eとして機能する。
取得プロセス506aの処理は、取得部150a,350aの処理に対応する。生成プロセス506bの処理は、生成部150b,350bの処理に対応する。特定プロセス506cの処理は、特定部150c,350cの処理に対応する。符号化プロセス506dの処理は、符号化部150d,350dの処理に対応する。出力プロセス506eの処理は、出力部150e,350eの処理に対応する。
なお、各プログラム507a〜507eについては、必ずしも最初からハードディスク装置507に記憶させておかなくても良い。例えば、コンピュータ500に挿入されるフレキシブルディスク(FD)、CD−ROM、DVD、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ500が各プログラム507a〜507eを読み出して実行するようにしても良い。
次に、上記実施例に示した抽出装置200,400と同様の機能を実現するコンピュータのハードウェア構成の一例について説明する。図22は、抽出装置と同様の機能を実現するコンピュータのハードウェア構成の一例を示す図である。
図22に示すように、コンピュータ600は、各種演算処理を実行するCPU601と、ユーザからのデータの入力を受け付ける入力装置602と、ディスプレイ603とを有する。また、コンピュータ600は、記憶媒体からプログラム等を読み取る読み取り装置604と、有線または無線ネットワークを介して収録機器等との間でデータの授受を行うインターフェース装置605とを有する。また、コンピュータ600は、各種情報を一時記憶するRAM606と、ハードディスク装置607とを有する。そして、各装置601〜607は、バス608に接続される。
ハードディスク装置607は、取得プログラム607a、受付プログラム607b、抽出プログラム607c、生成プログラム607dを有する。CPU601は、各プログラム607a〜607cを読み出してRAM606に展開する。
取得プログラム607aは、取得プロセス606aとして機能する。受付プログラム607bは、受付プロセス606bとして機能する。抽出プログラム607cは、抽出プロセス606cとして機能する。生成プログラム607dは、生成プロセス606dとして機能する。
取得プロセス606aの処理は、取得部250a,450aの処理に対応する。受付プロセス606bの処理は、受付部250b、450bの処理に対応する。抽出プロセス606cの処理は、抽出部250c,450cの処理に対応する。生成プロセス606dの処理は、生成部250d,450dの処理に対応する。
なお、各プログラム607a〜607dについては、必ずしも最初からハードディスク装置607に記憶させておかなくても良い。例えば、コンピュータ600に挿入されるフレキシブルディスク(FD)、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ600が各プログラム607a〜607dを読み出して実行するようにしても良い。
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)撮像画像と、前記撮像画像に含まれる複数のブロックそれぞれに前記撮像画像の撮影位置からの距離が異なる第1の物体及び第2の物体の境界が含まれるか否かを示す情報を該複数のブロックそれぞれに対応付ける対応情報とを受け付け、
受け付けた前記対応情報に基づき、前記複数のブロックのうち、前記境界が含まれるブロックを特定し、
特定した前記ブロックごとに、受け付けた前記撮像画像のうちの、特定した前記ブロックに対応する画像データに基づき、前記第1の物体を含み、かつ、前記第2の物体を含まない、該ブロックに対応する第1の画像データと、前記第2の物体を含む、該ブロックに対応する第2の画像データとを生成し、
生成した前記第1の画像データ及び前記第2の画像データを識別可能に記憶部に記憶する、
処理をコンピュータに実行させることを特徴とする記憶制御プログラム。
(付記2)カメラの第1カメラに撮像された第1の撮像画像と、前記カメラの第2カメラに撮像された第2の撮像画像とを取得し、前記第1の撮像画像および前記第2の撮像画像を基にして、前記対応情報を生成する処理を更にコンピュータに実行させることを特徴とする付記1に記載の記憶制御プログラム。
(付記3)前記複数のブロックは所定の順番で選択され、選択されたブロックに前記境界が含まれる場合には、前記第1の画像データおよび前記第2の画像データが生成され、選択されたブロックに前記境界が含まれない場合には、第3の画像データが生成され、生成された第1の画像データおよび第2の画像データ、または、前記第3の画像データをそれぞれ識別可能な符号に符号化する処理を更にコンピュータに実行させ、前記記憶する処理は、前記符号を所定の順番で前記記憶部に記憶することを特徴とする付記1または2に記載の記憶制御プログラム。
(付記4)前記第1の画像データと前記第1の画像データであることが識別可能な符号とを対応付け、また、前記第2の画像データと前記第2の画像データであることが識別可能な符号とを対応付けたケヤキ木情報を基にして、前記第1の画像データおよび前記第2の画像データを符号化する処理を更にコンピュータに実行させることを特徴とする付記1、2または3に記載の記憶制御プログラム。
(付記5)特定した前記ブロックごとに、前記ブロックの領域のうち、前記第1の物体の領域に第1の画素値を割り当て、前記第1の物体以外の領域に第2の画素値を割り当てることで、重畳情報を生成し、前記第1の画素値および第2の画素値を含む重畳情報には、固有の符号を割り当て、前記第2の画素値のみを含む各重畳情報には、同一の符号を割り当てることを特徴とする付記1に記載の記憶制御プログラム。
(付記6)撮像画像に含まれる物体のアウトラインを抽出する指示を受け付け、
前記撮像画像に含まれる複数のブロックにそれぞれ対応する複数の画像データをいずれかの種別に対応付けて記憶する記憶部を参照して、前記複数の画像データのうち、特定の種別に対応付けられた一又は複数の画像データを特定し、
特定した前記一又は複数の画像データに基づき、前記物体の前記アウトラインを抽出する、
処理をコンピュータに実行させることを特徴とする抽出プログラム。
(付記7)抽出された前記アウトラインを直線および曲線に分解し、前記直線および前記曲線の形状を示すスクリプト情報を生成し、前記スクリプト情報を記憶部に記憶する処理を更にコンピュータに実行させることを特徴とする付記7に記載の抽出プログラム。
(付記8)撮像画像に含まれる物体のアウトラインを抽出する指示を受け付け、
前記撮像画像に含まれる複数のブロックについて、前記ブロックの領域のうち、第1の物体の領域に第1の画素値を割り当て、第1の物体以外の領域に第2の画素値を割り当てられた重畳情報を記憶する記憶部を参照して、前記複数のブロックのうち、前記第1の物体のアウトラインを含むブロックを特定し、
特定した一又は複数のブロックに基づき、前記第1の物体の前記アウトラインを抽出する、
処理をコンピュータに実行させることを特徴とする抽出プログラム。
(付記9)コンピュータが実行する記憶制御方法であって、
撮像画像と、前記撮像画像に含まれる複数のブロックそれぞれに前記撮像画像の撮影位置からの距離が異なる第1の物体及び第2の物体の境界が含まれるか否かを示す情報を該複数のブロックそれぞれに対応付ける対応情報とを受け付け、
受け付けた前記対応情報に基づき、前記複数のブロックのうち、前記境界が含まれるブロックを特定し、
特定した前記ブロックごとに、受け付けた前記撮像画像のうちの、特定した前記ブロックに対応する画像データに基づき、前記第1の物体を含み、かつ、前記第2の物体を含まない、該ブロックに対応する第1の画像データと、前記第2の物体を含む、該ブロックに対応する第2の画像データとを生成し、
生成した前記第1の画像データ及び前記第2の画像データを識別可能に記憶部に記憶する、
処理を実行することを特徴とする記憶制御方法。
(付記10)カメラの第1カメラに撮像された第1の撮像画像と、前記カメラの第2カメラに撮像された第2の撮像画像とを取得し、前記第1の撮像画像および前記第2の撮像画像を基にして、前記対応情報を生成する処理を更に実行することを特徴とする付記9に記載の記憶制御方法。
(付記11)前記複数のブロックは所定の順番で選択され、選択されたブロックに前記境界が含まれる場合には、前記第1の画像データおよび前記第2の画像データが生成され、選択されたブロックに前記境界が含まれない場合には、第3の画像データが生成され、生成された第1の画像データおよび第2の画像データ、または、前記第3の画像データをそれぞれ識別可能な符号に符号化する処理を更に実行し、前記記憶する処理は、前記符号を所定の順番で前記記憶部に記憶することを特徴とする付記9または10に記載の記憶制御方法。
(付記12)前記第1の画像データと前記第1の画像データであることが識別可能な符号とを対応付け、また、前記第2の画像データと前記第2の画像データであることが識別可能な符号とを対応付けたケヤキ木情報を基にして、前記第1の画像データおよび前記第2の画像データを符号化する処理を更にコンピュータに実行させることを特徴とする付記9、10または11に記載の記憶制御方法。
(付記13)特定した前記ブロックごとに、前記ブロックの領域のうち、前記第1の物体の領域に第1の画素値を割り当て、前記第1の物体以外の領域に第2の画素値を割り当てることで、重畳情報を生成し、前記第1の画素値および第2の画素値を含む重畳情報には、固有の符号を割り当て、前記第2の画素値のみを含む各重畳情報には、同一の符号を割り当てることを特徴とする付記9に記載の記憶制御方法。
(付記14)コンピュータが実行する抽出方法であって、
撮像画像に含まれる物体のアウトラインを抽出する指示を受け付け、
前記撮像画像に含まれる複数のブロックにそれぞれ対応する複数の画像データをいずれかの種別に対応付けて記憶する記憶部を参照して、前記複数の画像データのうち、特定の種別に対応付けられた一又は複数の画像データを特定し、
特定した前記一又は複数の画像データに基づき、前記物体の前記アウトラインを抽出する、
処理を実行することを特徴とする抽出方法。
(付記15)抽出された前記アウトラインを直線および曲線に分解し、前記直線および前記曲線の形状を示すスクリプト情報を生成し、前記スクリプト情報を記憶部に記憶する処理を更にコンピュータに実行させることを特徴とする付記14に記載の抽出方法。
(付記16)コンピュータが実行する抽出方法であって、
撮像画像に含まれる物体のアウトラインを抽出する指示を受け付け、
前記撮像画像に含まれる複数のブロックについて、前記ブロックの領域のうち、第1の物体の領域に第1の画素値を割り当て、第1の物体以外の領域に第2の画素値を割り当てられた重畳情報を記憶する記憶部を参照して、前記複数のブロックのうち、前記第1の物体のアウトラインを含むブロックを特定し、
特定した一又は複数のブロックに基づき、前記第1の物体の前記アウトラインを抽出する、
処理を実行することを特徴とする抽出方法。
(付記17)撮像画像と、前記撮像画像に含まれる複数のブロックそれぞれに前記撮像画像の撮影位置からの距離が異なる第1の物体及び第2の物体の境界が含まれるか否かを示す情報を該複数のブロックそれぞれに対応付ける対応情報とを受け付け、受け付けた前記対応情報に基づき、前記複数のブロックのうち、前記境界が含まれるブロックを特定する特定部と、
特定した前記ブロックごとに、受け付けた前記撮像画像のうちの、特定した前記ブロックに対応する画像データに基づき、前記第1の物体を含み、かつ、前記第2の物体を含まない、該ブロックに対応する第1の画像データと、前記第2の物体を含む、該ブロックに対応する第2の画像データとを生成し、生成した前記第1の画像データ及び前記第2の画像データを識別可能に記憶部に記憶する符号化部と、
を有することを特徴とする記憶制御装置。
(付記18)カメラの第1カメラに撮像された第1の撮像画像と、前記カメラの第2カメラに撮像された第2の撮像画像とを取得し、前記第1の撮像画像および前記第2の撮像画像を基にして、前記対応情報を生成する生成部を更に有することを特徴とする付記17に記載の記憶制御装置。
(付記19)前記符号化部は、前記複数のブロックを所定の順番で選択し、選択したブロックに前記境界が含まれる場合には、前記第1の画像データおよび前記第2の画像データが生成し、選択されたブロックに前記境界が含まれない場合には、第3の画像データが生成し、生成した第1の画像データおよび第2の画像データ、または、前記第3の画像データをそれぞれ識別可能な符号に符号化し、前記符号を所定の順番で前記記憶部に記憶することを特徴とする付記17または18に記載の記憶制御装置。
(付記20)前記符号化部は、前記第1の画像データと前記第1の画像データであることが識別可能な符号とを対応付け、また、前記第2の画像データと前記第2の画像データであることが識別可能な符号とを対応付けたケヤキ木情報を基にして、前記第1の画像データおよび前記第2の画像データを符号化する処理を更にコンピュータに実行させることを特徴とする付記17、18または19に記載の記憶制御装置。
(付記21)前記符号化部は、特定した前記ブロックごとに、前記ブロックの領域のうち、前記第1の物体の領域に第1の画素値を割り当て、前記第1の物体以外の領域に第2の画素値を割り当てることで、重畳情報を生成し、前記第1の画素値および第2の画素値を含む重畳情報には、固有の符号を割り当て、前記第2の画素値のみを含む各重畳情報には、同一の符号を割り当てることを特徴とする付記17に記載の記憶制御装置。
(付記22)撮像画像に含まれる物体のアウトラインを抽出する指示を受け付ける受付部と、
前記撮像画像に含まれる複数のブロックにそれぞれ対応する複数の画像データをいずれかの種別に対応付けて記憶する記憶部を参照して、前記複数の画像データのうち、特定の種別に対応付けられた一又は複数の画像データを特定し、特定した前記一又は複数の画像データに基づき、前記物体の前記アウトラインを抽出する抽出部と、
を有することを特徴とする抽出装置。
(付記23)抽出された前記アウトラインを直線および曲線に分解し、前記直線および前記曲線の形状を示すスクリプト情報を生成し、前記スクリプト情報を記憶部に記憶する生成部を更に有することを特徴とする付記22に記載の抽出装置。
(付記24)撮像画像に含まれる物体のアウトラインを抽出する指示を受け付ける受付部と、
前記撮像画像に含まれる複数のブロックについて、前記ブロックの領域のうち、第1の物体の領域に第1の画素値を割り当て、第1の物体以外の領域に第2の画素値を割り当てられた重畳情報を記憶する記憶部を参照して、前記複数のブロックのうち、前記第1の物体のアウトラインを含むブロックを特定し、特定した一又は複数のブロックに基づき、前記第1の物体の前記アウトラインを抽出する抽出部と、
を有することを特徴とする抽出装置。