(57)【特許請求の範囲】
【請求項１】
画像情報に基づく画像全体の移動量を検出する第１の検出手段と、
上記画像情報に基づく現フレームの画像における、上記画像情報に基づく前フレームの画像の所定の領域と対応する上記移動量に応じた画像領域を検出し、該画像領域内の動きがあったとされる領域の画素数を検出する第２の検出手段と、
上記画像全体の移動量が小さいときには上記画素数を第１の閾値と比較し、上記画像全体の移動量が大きいときには上記画素数を上記第１の閾値より大きな値の第２の閾値と比較することにより、上記現フレームの画像内の動きを検出する第３の検出手段と
を具える画像処理装置。
【請求項２】
上記第２の検出手段は、
上記現フレームの画像における上記画像領域内の各画素の輝度レベルと、上記前フレームの画像における上記所定の領域内の対応する画素の輝度レベルとの差分を算出し、該差分が所定の閾値よりも大きい画素が集まっている領域の画素数を検出する
請求項１に記載の画像処理装置。
【請求項３】
上記第１の検出手段は、
上記画像情報に基づく現フレームの分割画像と、上記画像情報に基づく前フレームの対応する位置の分割画像とのマッチングスコアを画素単位でずらしながら算出し、算出結果に基づいて上記画像全体の移動量を検出する
請求項１に記載の画像処理装置。
【請求項４】
画像情報に基づく画像全体の移動量を検出する第１のステップと、
上記画像情報に基づく現フレームの画像における、上記画像情報に基づく前フレームの画像の所定の領域と対応する上記移動量に応じた画像領域を検出し、該画像領域内の動きがあったとされる領域の画素数を検出する第２のステップと、
上記画像全体の移動量が小さいときには上記画素数を第１の閾値と比較し、上記画像全体の移動量が大きいときには上記画素数を上記第１の閾値より大きな値の第２の閾値と比較することにより、上記現フレームの画像内の動きを検出する第３のステップと
を具える画像処理方法。
【請求項５】
上記第２のステップは、
上記現フレームの画像における上記画像領域内の各画素の輝度レベルと、上記前フレームの画像における上記所定の領域内の対応する画素の輝度レベルとの差分を算出し、該差分が所定の閾値よりも大きい画素が集まっている領域の画素数を検出する
請求項４に記載の画像処理方法。
【請求項６】
上記第１のステップでは、
上記画像情報に基づく現フレームの分割画像と、上記画像情報に基づく前フレームの対応する位置の分割画像とのマッチングスコアを画素単位でずらしながら算出し、算出結果に基づいて上記画像全体の移動量を検出する
請求項４に記載の画像処理方法。
【請求項７】
行動を自律的に決定して発現するロボット装置において、
外部を撮像する撮像手段と、
上記撮像手段から出力される画像情報に基づく画像全体の移動量を検出する第１の検出手段と、
上記画像情報に基づく現フレームの画像における、上記画像情報に基づく前フレームの画像の所定の領域と対応する上記移動量に応じた画像領域を検出し、該画像領域内の動きがあったとされる領域の画素数を検出する第２の検出手段と、
上記画像全体の移動量が小さいときには上記画素数を第１の閾値と比較し、上記画像全体の移動量が大きいときには上記画素数を上記第１の閾値より大きな値の第２の閾値と比較することにより、上記現フレームの画像内の動きを検出する第３の検出手段と
を具え、
第３の検出手段の検出結果を上記行動に反映させる
ロボット装置。
【請求項８】
上記第２の検出手段は、
上記現フレームの画像における上記画像領域内の各画素の輝度レベルと、上記前フレームの画像における上記所定の領域内の対応する画素の輝度レベルとの差分を算出し、該差分が所定の閾値よりも大きい画素が集まっている領域の画素数を検出する
請求項７に記載のロボット装置。
【請求項９】
上記第１の検出手段は、
上記画像情報に基づく現フレームの分割画像と、上記画像情報に基づく前フレームの対応する位置の分割画像とのマッチングスコアを画素単位でずらしながら算出し、算出結果に基づいて上記画像全体の移動量を検出する
請求項７に記載のロボット装置。
【請求項１０】
行動を自律的に決定して発現するロボット装置の制御方法において、
上記ロボットに搭載された撮像手段により外部を撮像すると共に、当該撮像手段から出力される画像情報に基づく画像全体の移動量を検出する第１のステップと、
上記画像情報に基づく現フレームの画像における、上記画像情報に基づく前フレームの画像の所定の領域と対応する上記移動量に応じた画像領域を検出し、該画像領域内の動きがあったとされる領域の画素数を検出する第２のステップと、
上記画像全体の移動量が小さいときには上記画素数を第１の閾値と比較し、上記画像全体の移動量が大きいときには上記画素数を上記第１の閾値より大きな値の第２の閾値と比較することにより、上記現フレームの画像内の動きを検出する第３のステップと、
上記第３のステップでの検出結果を上記ロボット装置の上記行動に反映させる第４のステップと
を具えるロボット装置の制御方法。
【請求項１１】
上記第２のステップは、
上記現フレームの画像における上記画像領域内の各画素の輝度レベルと、上記前フレームの画像における上記所定の領域内の対応する画素の輝度レベルとの差分を算出し、該差分が所定の閾値よりも大きい画素が集まっている領域の画素数を検出する
請求項１０に記載のロボット装置の制御方法。
【請求項１２】
上記第１のステップでは、
上記画像情報に基づく現フレームの分割画像と、上記画像情報に基づく前フレームの対応する位置の分割画像とのマッチングスコアを画素単位でずらしながら算出し、算出結果に基づいて上記画像全体の移動量を検出する
請求項１０に記載のロボット装置の制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は画像処理装置及び方法並びにロボット装置及びその制御方法に関し、例えば４足歩行型のロボット装置に適用して好適なものである。
【０００２】
【従来の技術】
近年、ユーザからの指令や周囲の環境に応じて行動を行う４足歩行型のペットロボットが本願特許出願人によって開発されている。
【０００３】
かかるペットロボットは、ＣＣＤ（Charge Coupled Device ）カメラやマイクロホンを搭載しており、当該ＣＣＤカメラによって撮像した周囲の状況や、マイクロホンにより集音したユーザからの指令音及び周囲音等に基づいて周囲の状況やユーザからの指令の有無を判断し、この判断結果に基づいて自律的に行動を決定してこれを発現するようになされたものである。
【０００４】
【発明が解決しようとする課題】
ところで画像処理によって画像内の動体を検出する方法としては、従来から種々の方法が提案され、実用化されている。そしてこれらの方法は、大きく分けて、画像フレーム間で画素の差分をとる第１の方法と、時空間フィルタを用いて画像上の任意の点におけるオプティカルフローを求める第２の方法と、フレーム間で小領域のマッチングを行い、その領域の動きを求める第３の方法の３つに分けることができる。この場合、これらのいずれの方法も画像を撮像するためのカメラが固定されており、検出された動きが外界の動きであることが前提となっている。
【０００５】
しかしながら例えば上述のペットロボットのように、それぞれ多自由度関節を有するロボットでは、搭載されたＣＣＤカメラが当該ロボットの動作に伴って大きくかつ複雑に動いてしまう。
【０００６】
このためかかるペットロボットにおいて、上述のような第１〜第３の方法によって画像内の動体を検出しようとすると、フレーム間で画像全体が大きく動くことから実際に動体を撮像していてもその動きを検出することは困難であった。またこれとは逆に、周囲に動きがなくとも自己の動作によって動体を誤検出する問題もあった。
【０００７】
そしてペットロボットにおいて、上述のように動体を精度良く検出し得ないと、実際には周囲に動体が存在しないにも係わらずあたかも動体があるかのような行動を発現したり、逆に周囲に動体が存在しているにも係わらず動体がないかのような行動を発現するなど、発現される行動が不自然となる問題があった。
【０００８】
従ってかかるペットロボットにおいて、自己の動作の有無に係わりなく、周囲に存在する動体を精度良く検出し得るようにすることができれば、不自然な行動が発現されるのを未然に防止して、そのエンターテイメント性をより向上させ得るものと考えられる。
【０００９】
本発明は以上の点を考慮してなされたもので、画像内の動体を精度良く検出し得る画像処理装置及び方法並びにエンターテイメント性を向上させ得るロボット装置及びその制御方法を提案しようとするものである。
【００１０】
【課題を解決するための手段】
かかる課題を解決するため本発明においては、画像処理装置において、画像情報に基づく画像全体の移動量を検出する第１の検出手段と、画像情報に基づく現フレームの画像における、画像情報に基づく前フレームの画像の所定の領域と対応する移動量に応じた画像領域を検出し、該画像領域内の動きがあったとされる領域の画素数を検出する第２の検出手段と、画像全体の移動量が小さいときには画素数を第１の閾値と比較し、画像全体の移動量が大きいときには画素数を第１の閾値より大きな値の第２の閾値と比較することにより、現フレームの画像内の動きを検出する第３の検出手段とを設けるようにした。この結果この画像処理装置では、画像全体の動きが小さいときには小さな動きも敏感に検出でき、画像全体の動きが大きいときには感度を下げて動きの誤検出を低減することができるので、画像全体の動きの有無に係わりなく、画像内の動体を精度良く検出することができる。
【００１１】
また本発明においては、画像処理方法において、画像情報に基づく画像全体の移動量を検出する第１のステップと、画像情報に基づく現フレームの画像における、画像情報に基づく前フレームの画像の所定の領域と対応する移動量に応じた画像領域を検出し、該画像領域内の動きがあったとされる領域の画素数を検出する第２のステップと、画像全体の移動量が小さいときには画素数を第１の閾値と比較し、画像全体の移動量が大きいときには画素数を第１の閾値より大きな値の第２の閾値と比較することにより、現フレームの画像内の動きを検出する第３のステップとを設けるようにした。この結果この画像処理方法によれば、画像全体の動きが小さいときには小さな動きも敏感に検出でき、画像全体の動きが大きいときには感度を下げて動きの誤検出を低減することができるので、画像全体の動きの有無に係わりなく、画像内の動体を精度良く検出することができる。
【００１２】
さらに本発明においては、行動を自律的に決定して発現するロボット装置において、外部を撮像する撮像手段と、撮像手段から出力される画像情報に基づく画像全体の移動量を検出する第１の検出手段と、画像情報に基づく現フレームの画像における、画像情報に基づく前フレームの画像の所定の領域と対応する移動量に応じた画像領域を検出し、該画像領域内の動きがあったとされる領域の画素数を検出する第２の検出手段と、画像全体の移動量が小さいときには画素数を第１の閾値と比較し、画像全体の移動量が大きいときには画素数を第１の閾値より大きな値の第２の閾値と比較することにより、現フレームの画像内の動きを検出する第３の検出手段とを設け、第３の検出手段の検出結果を行動に反映させるようにした。この結果このロボット装置では、画像全体の動きが小さいときには小さな動きも敏感に検出でき、画像全体の動きが大きいときには感度を下げて動きの誤検出を低減することができるので、自己の動作に伴う撮像手段の動きの有無に係わりなく、当該撮像手段から出力される画像情報に基づく画像内の動体を精度良く検出して、当該検出結果を反映した行動を行うことができる。
【００１３】
さらに本発明においては、ロボット装置の制御方法において、ロボットに搭載された撮像手段により外部を撮像すると共に、当該撮像手段から出力される画像情報に基づく画像全体の移動量を検出する第１のステップと、画像情報に基づく現フレームの画像における、画像情報に基づく前フレームの画像の所定の領域と対応する移動量に応じた画像領域を検出し、該画像領域内の動きがあったとされる領域の画素数を検出する第２のステップと、画像全体の移動量が小さいときには画素数を第１の閾値と比較し、画像全体の移動量が大きいときには画素数を第１の閾値より大きな値の第２の閾値と比較することにより、現フレームの画像内の動きを検出する第３のステップと、第３のステップでの検出結果をロボット装置の行動に反映させる第４のステップとを設けるようにした。この結果このロボット装置の制御方法によれば、画像全体の動きが小さいときには小さな動きも敏感に検出でき、画像全体の動きが大きいときには感度を下げて動きの誤検出を低減することができるので、ロボット装置の動作に伴う撮像手段の動きの有無に係わりなく、当該撮像手段から出力される画像情報に基づく画像内の動体を精度良く検出して、当該検出結果を反映した行動をロボット装置に行わせることができる。
【００１４】
【発明の実施の形態】
以下図面について、本発明の一実施の形態を詳述する。
【００１５】
（１）本実施の形態によるペットロボットの構成
図１において、１は全体として本実施の形態によるペットロボットを示し、胴体部ユニット２の前後左右にそれぞれ脚部ユニット３Ａ〜３Ｄが連結されると共に、胴体部ユニット２の前端部及び後端部にそれぞれ頭部ユニット４及び尻尾部ユニット５が連結されることにより構成されている。
【００１６】
胴体部ユニット２には、図２に示すように、ＣＰＵ（Central Processing Unit ）１０、ＤＲＡＭ（Dynamic Random Access Memory）１１、フラッシュＲＯＭ（Read Only Memory）１２、ＰＣ（Personal Computer ）カードインターフェース１３及び信号処理回路１４が内部バス１５を介して相互に接続されることにより形成されたコントロール部１６と、このペットロボット１の動力源としてのバッテリ１７とが収納されている。また胴体部ユニット２には、ペットロボット１の向きや動きの加速度を検出するための角加速度センサ１８及び加速度センサ１９なども収納されている。
【００１７】
また頭部ユニット４には、外部の状況を撮像するためのＣＣＤカメラ２０と、ユーザからの「撫でる」や「叩く」といった物理的な働きかけにより受けた圧力を検出するためのタッチセンサ２１と、前方に位置する物体までの距離を測定するための距離センサ２２と、外部音を集音するためのマイクロホン２３と、鳴き声等の音声を出力するためのスピーカ２４と、ペットロボット１の外見上の「目」に相当する図示しないＬＥＤ（Light Emitting Diode）となどがそれぞれ所定位置に配設されている。
【００１８】
さらに各脚部ユニット３Ａ〜３Ｄの関節部分や、脚部ユニット３Ａ〜３Ｄ及び胴体部ユニット２の各連結部分、頭部ユニット４及び胴体部ユニット２の連結部分、並びに尻尾部ユニット５の尻尾５Ａ（図１）の付け根部分などにはそれぞれ自由度数分のアクチュエータ２５（２５1、２５2、２５3……）及びポテンショメータ２６（２６1、２６2、２６3……）が配設されている。
【００１９】
そしてこれら角速度センサ１８、加速度センサ１９、タッチセンサ２１、距離センサ２２、マイクロホン２３、スピーカ２４、ＬＥＤ、各アクチュエータ２５及び各ポテンショメータ２６は、それぞれハブ２７（２７1〜２７n）を介してコントロール部１６の信号処理回路１４にツリー状に接続されている。またＣＣＤカメラ２０及びバッテリ１７は、それぞれ信号処理回路１４と直接接続されている。
【００２０】
このとき信号処理回路１４は、角速度センサ１８、加速度センサ１９、タッチセンサ２１、距離センサ２２及び各ポテンショメータ２６等の各種センサからそれぞれハブ２７を介して供給されるセンサデータや、ＣＣＤカメラ２０から供給される画像データ及びマイクロホン２３から与えられる音声データを順次取り込み、これらをそれぞれ内部バス１５を介してＤＲＡＭ１１内の所定位置に順次格納する。また信号処理回路１４は、バッテリ１７から供給されるバッテリ残量を表すバッテリ残量データを順次取り込み、これをＤＲＡＭ１１内の所定位置に格納する。
【００２１】
そしてこのようにＤＲＡＭ１１に格納された各センサデータ、画像データ、音声データ及びバッテリ残量データは、この後ＣＰＵ１０がこのペットロボット１の動作制御を行う際に利用される。
【００２２】
実際上ＣＰＵ１０は、ペットロボット１の電源が投入された初期時、胴体部ユニット２の図示しないＰＣカードスロットに装填されたメモリカード２８又はフラッシュＲＯＭ１２に格納された制御プログラムをＰＣカードインターフェース１３を介して又は直接読み出し、これをＤＲＡＭ１１に展開する。
【００２３】
またＣＰＵ１０は、この後上述のように信号処理回路１４よりＤＲＡＭ１１に順次格納される各種センサデータ、画像データ、音声データ及びバッテリ残量データに基づいて自己及び周囲の状況や、ユーザからの指示及び働きかけの有無などを判断する。
【００２４】
さらにＣＰＵ１０は、この判断結果及びＤＲＡＭ１１に展開した制御プログラムに基づいて続く行動を決定すると共に、当該決定結果に応じた第１の駆動信号を生成してこれを必要なアクチュエータ２５に送出することにより、頭部ユニット４を上下左右に振らせたり、尻尾部ユニット５の尻尾５Ａを動かせたり、各脚部ユニット３Ａ〜３Ｄを駆動させて歩行させるなどの行動を行わせる。
【００２５】
またこの際ＣＰＵ１０は、必要に応じて音声信号や第２の駆動信号を生成し、これらを信号処理回路１４を介してスピーカ２４や「目」のＬＥＤに与えることにより、当該音声信号に基づく音声を外部に出力させたり、第２の駆動信号に基づいて当該ＬＥＤを点灯、消灯又は点滅させる。
【００２６】
このようにしてこのペットロボット１においては、自己及び周囲の状況や、ユーザからの指示及び働きかけ等に応じて自律的に行動し得るようになされている。
【００２７】
なお信号処理回路１４の具体構成を図３に示す。この図３からも明らかなように、信号処理回路１４は、ＤＭＡ（Direct Memory Access）コントローラ３０、ＤＳＰ（Digital Signal Processor）３１、ペリフェラルインターフェース３２、タイマ３３、ＦＢＫ／ＣＤＴ（Filter Bank/Color Detection ）３４、ＩＰＥ（Inner Product Engin ）３５、シリアルバスホストコントローラ３６、シリアルバス３７がバス３８及び当該バス３８の使用権の調停を行うバスアービタ３９を順次介してバス４０に接続されると共に、当該バス４０がそれぞれＤＲＡＭインターフェース４１、ホストインターフェース４２及びＲＯＭインターフェース４３を介してＤＲＡＭ１１（図２）、ＣＰＵ１０（図２）及びフラッシュＲＯＭ１２（図２）と接続され、かつペリフェラルインターフェース３２にパラレルポート４４、バッテリマネージャ４５及びシリアルポート４６が接続されることにより構成されている。
【００２８】
この場合図２について上述した角速度センサ１８、加速度センサ１９、タッチセンサ２１、距離センサ２２、マイクロホン２３、スピーカ２４、各アクチュエータ２５及び各ポテンショメータ２６等のデバイスは、それぞれハブ２７（２７1〜２７n）を介してシリアルホストコントローラ３６と接続されると共に、ＣＣＤカメラ２０（図２）はＦＢＫ／ＣＤＴ３４と接続され、かつバッテリ１７（図２）はバッテリマネージャ４５と接続されている。
【００２９】
そしてシリアルホストコントローラ３６は、接続された各デバイスのうち、角速度センサ１８、加速度センサ１９、タッチセンサ２１、距離センサ２２及び各ポテンショメータ２６等の各センサからそれぞれ与えられるセンサデータを順次取り込み、データの転送を司るバスマスタとして機能するＤＭＡコントローラ３０の制御のもとに、これらセンサデータをバス３８、バスアービタ３９、バス４０及びＤＲＡＭインターフェース４１を順次介してＤＲＡＭ１１に与えて記憶させる。
【００３０】
またシリアルホストコントローラ３６は、マイクロホン２３から与えられる音声データをＤＳＰ３１に送出すると共に、当該ＤＳＰ３１は、供給されるホストコントローラ３６から与えられる音声データに対して所定のデータ処理を施し、その処理結果でなる音声データを、ＤＭＡコントローラ３０の制御のもとに、バス３８、バスアービタ３９、バス４０及びＤＲＡＭインターフェース４１を順次介してＤＲＡＭ１１に転送し、これを当該ＤＲＡＭ１１内の所定の記憶領域に格納する。
【００３１】
またＦＢＫ／ＣＤＴ３４は、ＣＣＤカメラ２０から供給される画像データを色認識を行いながら複数の解像度に分けて取り込み、得られた画像データを、ＤＭＡコントローラ３０の制御のもとに、バス３８、バスアービタ３９、バス４０及びＤＲＡＭインターフェース４１を順次介してＤＲＡＭ１１（図２）に転送し、これを後述のように当該ＤＲＡＭ１１内の指定された記憶領域に格納する。
【００３２】
さらにバッテリマネージャ４５は、バッテリ１７から通知されるエネルギ残量を表すバッテリ残量データを、ＤＭＡコントローラ３０の制御のもとに、ペリフェラルインターフェース３２、バス３８、バスアービタ３９、バス４０及びＤＲＡＭインターフェース４１を順次介してＤＲＡＭ１１に転送し、これを当該ＤＲＡＭ１１内の所定の記憶領域に格納する。
【００３３】
一方、信号処理回路１４は、上述のようにＣＰＵ１０（図２）からバス１５を介して与えられる各アクチュエータ２５を駆動するための第１の駆動信号や、音声信号及びＬＥＤを駆動するための第２の駆動信号をホストインターフェース４２を介して入力する。
【００３４】
そして信号処理回路１４は、これらをバス４０、バスアービタ３９、バス３８及びシリアルバスホストコントローラ３６並びに対応するハブ２７（２７1〜２７n）（図２）を順次介して対応するアクチュエータ２５（２５1、２５2、２５3……）（図２）や、スピーカ２４又はＬＥＤに送出する。
【００３５】
このようにして信号処理回路１４においては、各センサ、ＣＣＤカメラ２０、マイクロホン２３、スピーカ、各アクチュエータ２５などの各デバイスと、ＣＰＵ１０との間において、ＣＰＵ１０がペットロボット１の行動を制御するために必要な各種信号処理を行い得るようになされている。
【００３６】
なおＩＰＥ３５は、画像間のマッチング処理を高速に行うことができる２次元ディジタルフィルタであり、後述のように２画像を１画素ずつずらしながら、各ずらし位置におけるこれら２画像間の相関性を表すマッチングスコアを所定の演算式に基づいて順次計算し得るようになされている。
【００３７】
またシリアルバス３７は、パーソナルコンピュータ（ＰＣ）などのリモートコンピュータに接続するためのインターフェースであり、パラレルポート４４及びシリアルポート４６は、当該リモートコンピュータと接続するためのコネクタである。さらにタイマ３３は、ペットロボット１の内部の時計としての役割を果たすものである。
【００３８】
（２）ペットロボット１における画像データの転送方法
ここではＣＣＤカメラ２０（図２）から入力される画像データをＤＲＡＭ１１（図２）に転送する転送方法について説明する。図４に示すように、ＣＣＤカメラ２０から出力された画像データは、信号処理回路１４（図２）のＦＢＫ／ＣＤＴ３４に入力され、当該ＦＢＫ／ＣＤＴ３４において所定の画像処理が施された後、ＤＭＡコントローラ３０（図３）の制御のもとに、バスアービタ３９（図３）及びＤＲＡＭインターフェース４１（図３）を順次介してＤＲＡＭ１１に転送される。
【００３９】
ところでＤＭＡコントローラ３０は、バスアービタ３９及びＤＲＡＭインターフェース４１を順次介してＤＲＡＭ１１からＣＰＵ１０（図２）によって生成されたＤＭＡリストを読み出し、当該ＤＭＡリストに記述された画像データの転送先や転送先に関する情報に基づいて画像データの転送を行うようになされている。
【００４０】
従ってこのペットロボット１においては、ＣＰＵ１０がＤＭＡリストを書き換えることによって、ＤＭＡコントローラ３０がＤＢＫ／ＣＤＴ３４から出力される画像データをＤＲＡＭ１１上の任意の位置に転送することができる。このようにペットロボット１では、画像データをＤＲＡＭ１１に転送して展開することにより、ＣＰＵ１０のキャッシュ機能を有効に利用して高速なデータ処理を行い得るようになされている。
【００４１】
以下、ペットロボット１における画像データの転送方法についてＦＢＫ／ＣＤＴ３４の構成を示す図４を用いながら具体的に説明する。
【００４２】
ＣＣＤカメラ２０から出力された画像データは、８ビットのパラレルデータ、クロック信号及び同期信号からなり、ＦＢＫ／ＣＤＴ３４の入力画像インターフェース５０に入力されて所定のフォーマットに変換された後、フィルタ演算部５１に供給される。
【００４３】
ところでＣＰＵ１０は、ＤＲＡＭ１１に記憶されている制御プログラムに基づいて各種フィルタ係数を決定し、当該決定したフィルタ係数をパラメータ記憶部５２に与えてこれを記憶させるようになされている。
【００４４】
そしてフィルタ演算部５１は、このパラメータ記憶部５２に記憶されているフィルタ係数を用いて入力画像インターフェース５０から与えられる画像データにフィルタ演算を施すことにより、当該画像データの色認識を行いながら複数の解像度の画像データを生成する。
【００４５】
フィルタ演算部５１の後段には、それぞれ１ライン分の画像データを記憶できる記憶容量を有する２つのバッファ５３Ａ、５３Ｂが設けられており、フィルタ演算部５１は、生成した画像データを１ライン毎に交互にバッファ５３Ａ、５３Ｂに送出してこれを記憶させる。
【００４６】
その際ＤＭＡインターフェース５４は、２つのバッファ５３Ａ、５３Ｂのうちの一方のバッファ５３Ａ、５３Ｂに１ライン分の画像データを記憶させている間に他方のバッファ５３Ａ、５３Ｂから１ライン分の画像データを読み出し、当該読み出した１ライン分の画像データをＤＭＡコントローラ３０の指示に基づいてＤＲＡＭ１１に転送することにより、複数の画像データを順次ＤＲＡＭ１１に転送する。なおバッファ５３Ａ、５３Ｂは、それぞれ１ライン分の記憶容量を持つだけでなので、記憶容量が少なく、簡易な構成のＦＢＫ／ＣＤＴ３４を実現している。
【００４７】
ところでこのような画像データの転送は、バスマスタとして機能するＤＭＡコントローラ３０によって行われる。すなわちＤＭＡインターフェース５４は、２つのバッファ５３Ａ、５３Ｂのうちいずれか一方が１ライン分の画像データを記憶すると、ＤＭＡコントローラ３０に対してＤＭＡリクエストと呼ばれる転送要求信号を送出する。
【００４８】
そしてＤＭＡコントローラ３０は、ＤＭＡリクエストが供給されると、まずバス３８（図３）の使用権を獲得し、次いでＣＰＵ１０によって通知されるアドレスを基にＤＲＡＭ１１から対応するＤＭＡリストを読み出す。
【００４９】
そしてＤＭＡコントローラ３０は、このＤＭＡリストに基づいて画像データの転送先であるＤＲＡＭ１１上のアドレスを順次生成し、バス３８に対して書込み信号を発行する。ＦＢＫ／ＣＤＴ３４は、このバス３８に対する書込み信号に同期して、一方のバッファ５３Ａ、５３Ｂに蓄積されている画像データを読み出してバス３８に順次送出する。
【００５０】
このＦＢＫ／ＣＤＴ３４から出力された画像データは、ＦＢＫ／ＣＤＴ３４から出力されると同時にＤＲＡＭ１１に書き込まれることから、画像データの転送は非常に高速に行われる。ところで、画像データの転送先に関する設定は、ＤＭＡリストによって行われることから、ＤＭＡコントローラ３０は画像データをＤＲＡＭ１１上の任意の位置に転送し得るようになされている。
【００５１】
そしてＦＢＫ／ＣＤＴ３４は、かかるバッファ５３Ａ、５３Ｂに蓄積されていた１ライン分の画像データの転送を終了すると、ＤＭＡコントローラ３０に対するＤＭＡリクエストを取り下げて画像データの転送を打ち切る。これを受けてＤＭＡコントローラ３０は、ＤＭＡリクエストが取り下げられたタイミングまでに転送した画像データのデータ量などの情報をＤＭＡリストに書き込み、この後バス３８を解放する。そしてＤＭＡコントローラ３０は、再びＤＭＡリクエストが供給されると、上述のＤＭＡリストをＤＲＡＭ１１から読み出して前回の続きの転送を行う。
【００５２】
このようにしてこのペットロボット１では、画像データを高速に転送処理することができるようになされている。
【００５３】
（３）ペットロボット１における画像処理方法
次に、このペットロボット１における画像処理方法について説明する。これに際して、まずペットロボッ１の制御プログラムのソフトウェア構成について説明する。
【００５４】
このペットロボット１には、以下のような機能を有するオペレーティング・システムが搭載されている。
１．複数のタスクを実行可能
２．タスク間でデータの転送が可能
３．タスク間でメモリ（ＤＲＡＭ１１）を共有することができる
【００５５】
具体的にはオペレーティング・システムとしてアペリオス（Ａperios）（ソニー株式会社、商標）が用いられ、このオペレーティング・システム上における各オブジェクト間の通信方式として、例えば特願平11-006491 号に開示された通信方式が用いられている。
【００５６】
図５は、このペットロボット１における制御プログラムのソフトウェア構成を示すものである。この図５において、デバイス・ドライバ・レイヤ６０は、かかる制御プログラムの最下位層に位置し、複数のデバイス・ドライバからなるデバイス・ドライバ・セット６１によって構成されている。
【００５７】
この場合各デバイス・ドライバは、ＣＣＤカメラ２０（図２）やタイマ３３（図３）等の通常のコンピュータで用いられるハードウェアに直接アクセスすることを許されたオブジェクトであり、対応するハードウェアからの割り込みを受けて処理を行う。
【００５８】
またロボティック・サーバ・オブジェクト６２は、デバイス・ドライバ・レイヤ６０の上位層に位置し、例えば上述の各センサやアクチュエータ２５（２５1、２５2、２５3……）（図２）等のハードウェアにアクセスするためのインターフェースを提供するソフトウェア群でなるバーチャル・ロボット６３と、電源の切り換えなどを管理するソフトウェア群でなるパワーマネイジャ６４と、他の種々のデバイス・ドライバを管理するソフトウェア群でなるデバイス・ドライバ・マネージャ６５と、ペットロボット１の機構を管理するソフトウェア群でなるデザインド・ロボット６６とから構成されている。
【００５９】
マネージャ・オブジェクト６７は、オブジェクト・マネージャ６８及びサービス・マネージャ６９から構成されている。この場合オブジェクト・マネージャ６８は、ロボティック・サーバ・オブジェクト６２、ミドル・ウェア・レイヤ７０及びアプリケーション・レイヤ７１に含まれる各ソフトウェア群の起動や終了を管理するソフトウェア群であり、サービス・マネージャ６９は、メモリカード２８（図２）に格納されたコネクションファイルに記述されている各オブジェクト間の接続情報に基づいて各オブジェクトの接続を管理するソフトウェア群である。
【００６０】
ミドル・ウェア・レイヤ７０は、ロボティック・サーバ・オブジェクト６２の上位層に位置し、画像処理や音声処理などのこのペットロボット１の基本的な機能を提供するソフトウェア群から構成されている。またアプリケーション・レイヤ７１は、ミドル・ウェア・レイヤ７０の上位層に位置し、当該ミドル・ウェア・レイヤ７０を構成する各ソフトウェア群によって処理された処理結果に基づいてペットロボット１の行動を決定するためのソフトウェア群から構成されている。
【００６１】
マネージャ・オブジェクト６７は、オブジェクト・マネージャ及びサービス・マネージャによって構成されており、このうちオブジェクト・マネージャは、ロボティック・サーバ・オブジェクト・ミドル・ウェア・レイヤ及びアプリケーション・レイヤを構成するソフトウェア群の起動や終了を管理するソフトウェア群でなり、サービス・マネージャは、メモリカードに記憶されているコネクションファイルに記述された各オブジェクト間の接続情報に基づいて各オブジェクトの接続を管理するソフトウェア群である。
【００６２】
以下、かかる構成の制御プログラムに基づいてペットロボット１の内部において行われる画像処理について、色検出、動き検出及び障害物検出といった複数の画像処理のタスクを同時に実行する場合を例に、図６及び図７を用いて図８を参照しながら説明する。
【００６３】
図６及び図７は、かかる画像処理のシステム起動時からの手順（以下、これを画像処理手順ＲＴ１と呼ぶ）を示すものであり、ペットロボット１の電源が投入されるとこの画像処理手順ＲＴ１が開始され、続くステップＳＰ２において、コントロール部１６（図２）のＣＰＵ１０がデバイス・ドライバ・セット６１（図５）を構成する図８に示すＦＢＫ／ＣＤＴドライバ６１Ａを起動してＦＢＫ／ＣＤＴ３４を初期化する。
【００６４】
続くステップＳＰ３において、ＣＰＵ１０は、ロボティック・サーバ・オブジェクト６２（図５）を起動する。このときバーチャル・ロボット６３（図５）も起動する。そしてバーチャル・ロボット６３は、起動後、図８に示すように、画像データを記憶するための共有メモリ８０を複数個ＤＲＡＭ１１（図２）上に生成し、この後ＦＢＫ／ＣＤＴドライバ６１Ａに対して画像サイズのような画像の属性に関する情報を設定する。
【００６５】
またＣＰＵ１０は、ロボティック・サーバ・オブジェクト６２（図５）の起動が終了すると、ミドル・ウェア・レイヤ７０（図５）を構成している画像処理オブジェクトを順次起動する。因に、生成された共有メモリ８０の記憶容量は、バーチャル・ロボット６３（図５）の指示に応じて容易に変更が可能である。
【００６６】
続くステップＳＰ４において、バーチャル・ロボット６３は、ＤＲＡＭ１１上に生成した複数の共有メモリ８０のうち所望の共有メモリ８０のアドレスをＦＢＫ／ＣＤＴドライバ６１Ａに通知すると共に、当該通知したアドレスの共有メモリ８０に画像データを転送することを要求するリード要求をＦＢＫ／ＣＤＴドライバ６１Ａに発行する。
【００６７】
そしてＦＢＫ／ＣＤＴドライバ６１Ａは、リード要求を受け取ると、続くステップＳＰ５において、指定された共有メモリ８０に画像データを転送するためのＤＭＡリスト８１を生成してＤＲＡＭ１１（図２）に記憶する。その際ＦＢＫ／ＣＤＴドライバ６１Ａは、ＤＲＡＭ１１に記憶されたＤＭＡリスト８１のアドレスをＤＭＡコントローラ３０（図３）に通知した後、ＦＢＫ／ＣＤＴ３４に対して画像データを出力することを許可する。
【００６８】
続くステップＳＰ６において、ＦＢＫ／ＣＤＴ３４は、ＦＢＫ／ＣＤＴドライバ６１Ａからの画像データの出力許可を受けて１フィールド分の画像データを指定された共有メモリ８０に転送すると、ＦＢＫ／ＣＤＴドライバ６１Ａに対して割り込みを発生させ、割込みハンドラと呼ばれるソフトウェアを起動させる。そしてステップＳＰ７において、この割込みハンドラは、バーチャル・ロボット６３に対して画像データの転送が終了したことを通知する。
【００６９】
このときバーチャル・ロボット６３は、続くステップＳＰ８において、必要なフィールド数分の画像データが転送されたか否かを判断する。そしてバーチャル・ロボット６３は、このステップＳＰ８において否定結果を得るとステップＳＰ９に進んで次に転送すべき共有メモリ８０のアドレスをＦＢＫ／ＣＤＴドライバ６１Ａに渡してリード要求を発行した後、ステップＳＰ５に戻ってこの後ステップＳＰ８において肯定結果を得るまでステップＳＰ５−ＳＰ６−ＳＰ７−ＳＰ８−ＳＰ９−ＳＰ５のループを繰り返す。
【００７０】
一方ＣＰＵ１０は、ステップＳＰ８において肯定結果を得るとステップＳＰ１０に進んで、ミドル・ウェア・レイヤ７０（図５）を構成する各画像処理オブジェクトが起動し終えるのを待ち受け、やがて画像処理オブジェクトが起動し終えると、ステップＳＰ１１に進む。
【００７１】
そしてマネージャ・オブジェクト６７のサービス・マネージャ６９は、ミドル・ウェア・レイア７０の各画像処理オブジェクトの起動が終えると、続くステップＳＰ１１において、これら画像処理オブジェクトに対してそれぞれ接続相手先の画像処理オブジェクトを通知し、各画像処理オブジェクト間で通信路を開く。
【００７２】
例えばサービス・マネージャ６９は、図８において明らかなように、色検出用画像処理オブジェクト８２及びエッジ検出用画像処理オブジェクト８４をバーチャル・ロボット６３に接続する。またサービス・マネージャ６９は、重心計算用画像処理オブジェクト８５を色検出用画像処理オブジェクト８２に接続すると共に、重心計算用画像処理オブジェクト８６を動き検出用画像処理オブジェクト８３に接続する。
【００７３】
さらにサービス・マネージャ６９は、障害物検出用画像処理オブジェクト８７及び座標変換用画像処理オブジェクト８８をエッジ検出用画像処理オブジェクト８４に階層的に接続する。因に、このような各画像処理オブジェクト間の接続は変更が可能であり、各画像処理オブジェクトの接続関係を変更することで様々な処理を行い得る。
【００７４】
続くステップＳＰ１２において、サービス・マネージャ６９は、各画像処理オブジェクト間の接続が終了すると、当該各画像処理オブジェクトにスタート信号を送出する。これを受けて各画像処理オブジェクトは、続くステップＳＰ１３において、コネクションファイルに記述された接続情報に基づいて下位層にある接続先の画像処理オブジェクトにデータ要求信号を送出する。
【００７５】
ところで色検出用画像処理オブジェクト８２、動き検出用画像処理オブジェクト８３及びエッジ検出用画像処理オブジェクト８４は、ＦＢＫ／ＣＤＴ３４から順次供給される画像データを、それぞれ異なるフィード間隔で読み出すようになされており、バーチャル・ロボット６３は、供給される画像データのうち、各画像処理オブジェクトがそれぞれ読み出すべき画像データを把握している。
【００７６】
従ってバーチャル・ロボット６３は、続くステップＳＰ１４において、各画像処理オブジェクトからデータ要求信号を受け取ると、各画像処理オブジェクトがそれぞれ読み出すべき画像データが格納されている共有メモリ８０に割り当てられているＩＤ（Identification）（すなわちアドレス情報）を各画像処理オブジェクトにそれぞれ通知する。その際バーチャル・ロボット６３は、内部の参照回数計測カウンタを用いて、各画像処理オブジェクトに通知したＩＤのそれぞれに対して、通知した画像処理オブジェクトの数をカウントしてそのカウント値を記憶しておく。
【００７７】
このときバーチャル・ロボット６３は、参照回数計測カウンタによるカウント値が「０」でないＩＤの共有メモリ８０には、ＦＢＫ／ＣＤＴ３４から供給される画像データを上書きせずに、カウント数が「０」の共有メモリ８０に画像データを上書きして順次記憶していくことにより、各画像処理オブジェクトが読み出す可能性のある画像データを誤って消去することを回避している。
【００７８】
続いてステップＳＰ１５において、各画像処理オブジェクトは、通知されたＩＤが割り当てられている共有メモリ８０から画像データを読み出す。その際、各画像処理オブジェクトは、それぞれ同一の共有メモリ８０に記憶されている画像データを読み出す場合もある。しかしながら共有メモリ８０は、読み出し専用のメモリであることから、各画像処理オブジェクトはそれぞれ互いに干渉することなく画像データの読み出しを行い得る。
【００７９】
次いでステップＳＰ１６において、各画像処理オブジェクトは、それぞれ必要な数だけ画像データを読み出したか否か判断し、その結果として必要な数だけ画像データを読み出していないと判断した場合にはステップＳＰ１７に進む。
【００８０】
そして各画像処理オブジェクトは、コネクションファイルに記述された接続情報に基づいて、次の画像データを要求するためのデータ要求信号をそれぞれバーチャル・ロボット６３に送出する。そしてバーチャル・ロボット６３は、続くステップＳＰ１８において、データ要求信号を受け取ると、データ要求信号を送出した画像処理オブジェクトに通知したＩＤに対応して記憶されている参加回数測定カウンタのカウント数をデータ要求信号が供給されるごとに減算する。
【００８１】
そしてバーチャル・ロボット６３は、そのカウント数が「０」になったときに、当該カウントが「０」になったＩＤが割り当てられている共有メモリ８０に記憶されている画像データの保護を解除し、ステップＳＰ１４に戻って同じ動作を繰り返す。
【００８２】
さらに各画像処理オブジェクトは、やがてステップＳＰ１６において肯定結果を得ると、ステップＳＰ１９に進んで各画像処理オブジェクトが画像データを所望の共有メモリ８０から読み出し、これら読み出した画像データに対してそれぞれ所定の画像処理を施し、その処理結果を上位層のオブジェクトに送出する。
【００８３】
例えば色検出用画像処理オブジェクト８２は、読み出した画像データから色の検出を行い、その処理結果を重心計算用画像処理オブジェクト８５に送出して検出した色の位置を算出させる。また動き検出用画像処理オブジェクト８３は、画像データから動き領域の検出を行い、その処理結果を重心計算用画像処理オブジェクト８６に送出して検出した動き領域の位置や大きさを算出させる。
【００８４】
さらにエッジ検出用画像処理オブジェクト８４は画像データからエッジの検出を行い、その処理結果を障害物検出用画像処理オブジェクト８７に送出して障害物の位置を算出させた後、座標変換用画像処理オブジェクト８８において障害物の位置を座標変換させる。そしてＣＰＵ１０は、この後ステップＳＰ２０に進んでこの処理（画像処理手順ＲＴ１）を終了する。
【００８５】
このように各画像処理オブジェクトは、ＤＲＡＭ１１上に生成された共有メモリ８０から画像データを読み出すようになされていることから、ＣＣＤカメラ２０に依存しない汎用的な画像処理オブジェクトを実現することができ、従って複数の汎用的な画像処理オブジェクトを組み合わせることで、様々な画像処理を容易に行い得るようになされている。
【００８６】
（４）ペットロボット１における動体検出のアルゴリズム
次にこのペットロボット１における動体検出方法について説明する。
【００８７】
このペットロボット１では、図９（Ａ）に示す１つ前のフレームの画像（以下、これを前フレーム画像と呼ぶ）９０の画像データ及び図９（Ｂ）に示す現在のフレームの画像（以下、これを現フレーム画像と呼ぶ）９１の画像データに基づいて、現フレーム画像９１内の前フレーム画像９０の中心部分９０Ａと相関の高い画像領域９１Ａを検出するようにしてペットロボット１の動作に伴う画像全体の動き量（以下、これを画像全体の移動量と呼ぶ）を検出し、当該検出結果を利用して図９（Ｃ）のように画像内の動きのある部分のみを抽出することにより動体を精度良く検出し得るようになされている。
【００８８】
この場合このような一連の処理は、図１０に示す動体検出処理手順ＲＴ２に従って、ミドル・ウェア・レイア７０（図５）の動き検出用画像処理オブジェクト８３（図８）、重心計算用画像処理オブジェクト８６（図８）及び信号処理回路１４（図２）内のＩＰＥ３５（図３）によって行われる。以下、このようなペットロボット１における動体検出方法について説明する。
【００８９】
動体検出処理手順ＲＴ２は、動き検出用画像処理オブジェクト８３の起動によりステップＳＰ３０において開始される。そして続くステップＳＰ３１において、動き検出用画像処理オブジェクト８３は、ＤＲＡＭ１１上の指定された共有メモリ８０から画像データを取り込んでこれを保存すると共に、続くステップＳＰ３２において、かかる画像データの取り込みが１回目であるか否かを判断する。
【００９０】
そして動き検出用画像処理オブジェクト８３は、このステップＳＰ３２において肯定結果を得ると再びステップＳＰ３１に戻り、この後ステップＳＰ３１及びステップＳＰ３２を繰り返す。
【００９１】
さらに動き検出用画像処理オブジェクト８３は、やがてステップＳＰ３２において肯定結果を得るとステップＳＰ３３に進んで、図１１（Ａ）に示すように、前フレーム画像９２の中心領域（前フレーム画像９２から上下左右の所定幅を除いた画像領域部分）９２Ａをテンプレートとして、当該中心領域９２Ａを上下左右に４分割したときの左上、右上、左下及び右下の各分割領域（以下、これらを第１〜第４のテンプレート分割領域９２Ａ1〜９２Ａ4と呼ぶ）の画像データを順次ＩＰＥ３５に転送する。
【００９２】
また動き検出用画像処理オブジェクト８３は、続くステップＳＰ３４において、図１１（Ｃ）に示すように、現フレーム画像９３全体を検索画像として、当該現フレーム画像９３を所定画素数分だけ上又は下及び左又は右にオーバーラップさせながら上下左右に４分割したときの左上、右上、左下及び右下の各分割領域（以下、これらを第１〜第４の検索画像分割領域９３Ａ1〜９３Ａ4と呼ぶ）の画像データをＩＰＥ３５に転送する。
【００９３】
従ってこの例では、図１１（Ｃ）における第２の横線ｌx2及び第２の縦線ｌy2によって区切られる現フレーム画像９３の左上の画像領域（第１の検索画像分割領域９３Ａ1）と、第２の横線ｌx2及び第１の縦線ｌy1によって区切られる現フレーム画像９３の右上の画像領域（第２の検索画像分割領域９３Ａ2）と、第１の横線ｌx1及び第２の縦線ｌy2によって区切られる現フレーム画像９３の左下の画像領域（第３の検索画像分割領域９３Ａ3）と、第１の横線ｌx1及び第１の縦線ｌy1によって区切られる現フレーム画像９３の右下の画像領域（第４の検索画像分割領域９３Ａ4）の各画像領域の画像データがＩＰＥ３５に転送される。
【００９４】
続くステップＳＰ３５において、ＩＰＥ３５は、前フレーム画像９２の中心領域９２Ａに基づく第１〜第４のテンプレート分割領域９２Ａ1〜９２Ａ4と、現フレーム画像９３の対応する位置の第１〜第４の検索画像分割領域９３Ａ1〜９３Ａ4とのマッチング処理を行う。
【００９５】
具体的にＩＰＥ３５は、第１のテンプレート分割領域９２Ａ1及び第１の検索画像分割領域９３Ａ1について、これらを縦方向や横方向に１画素単位でずらしながら、当該ずらした位置（以下、これをずらし位置と呼ぶ）における次式
【００９６】
【数１】
0004618470.tif 000002
【００９７】
で与えられるマッチングスコアを順次演算すると共に、かくして得られたマッチングスコアをＤＲＡＭ１１に順次ＤＭＡ転送してこれを記憶させる。
【００９８】
またＩＰＥ３５は、これと同様にして第２のテンプレート分割領域９２Ａ2及び第２の検索画像分割領域９３Ａ2、第３のテンプレート分割領域９２Ａ3及び第３の検索画像分割領域９３Ａ3、並びに第４のテンプレート分割領域９２Ａ4及び第４の検索画像分割領域９３Ａ4について、これらをそれぞれ縦方向又は横方向に１画素単位でずらしながら、各ずらし位置における（１）式で与えられるマッチングスコアを順次演算すると共に、かくして得られたマッチングスコアをＤＲＡＭ１１に順次ＤＭＡ転送してこれを記憶させる。
【００９９】
そして動き検出用画像処理オブジェクト８３は、全てのマッチングスコアの値が算出されると、次式
【０１００】
【数２】
0004618470.tif 000003
【０１０１】
で与えられる演算を実行することにより、各ずらし位置における第１〜第４のテンプレート分割領域９２Ａ1〜９２Ａ4についての４つのマッチングスコアを加算したスコア（以下、これを総合マッチングスコアと呼ぶ）を算出する。
【０１０２】
ここで現フレーム画像９３における上述のようにして算出された総合マッチングスコアの値が最も小さい画像領域が前フレーム画像９２の中心領域９２Ａと最も相関が高い領域部分であり、従って前フレーム画像９２の中心領域９２Ａの中心位置からこの画像領域の中心位置までの距離がペットロボット１の動きに伴う前フレーム及び現フレーム間における画像全体の移動量となる。
【０１０３】
そこで動き検出用画像処理オブジェクト８３は、続くステップＳＰ３６において、ステップＳＰ３５において得られた各加算結果に基づいて、図１２に示すように、現フレーム画像９３のうちの総合マッチングスコアの値が最も小さい前フレーム画像９２の中心領域９２Ａと同じ大きさの画像領域（すなわち最も相関が高い領域部分であり、図１２において破線で囲まれた部分）９３Ｂの中心位置（ｘC2，ｙC2）を記憶すると共に、当該中心位置（ｘC2，ｙC2）から現フレーム画像９３の中心位置（ｘC1，ｙC1）までの間の距離及び方向を算出するようにして、前フレーム及び現フレーム間における画像全体の移動量を検出する。
【０１０４】
続くステップＳＰ３７において、動き検出用画像処理オブジェクト８３は、ステップＳＰ３６において検出したかかる画像領域９３Ｂについての総合マッチングスコアが予め定められた所定の閾値よりも小さいか否かを判断することにより、その画像領域９３Ｂと、前フレーム画像９２の中心領域９２Ａとの相関が所定レベルよりも低いか否かを判断する。
【０１０５】
ここでこのステップＳＰ３７において否定結果を得ることは、前フレーム及び現フレーム間において、現フレーム画像９３のかかる画像領域９３Ｂ内に動きや輝度変化などが生じなかった、又は生じたがその動きや輝度変化などが小さかったことを意味し、このとき動き検出用画像処理オブジェクト８３は、ステップＳＰ４１に進む。
【０１０６】
これに対してステップＳＰ３７において肯定結果を得ることは、前フレーム及び現フレーム間において、現フレーム画像９３のかかる画像領域９３Ｂ内にある程度の動きや輝度変化が生じたことを意味する。そしてこのとき動き検出用画像処理オブジェクト８３は、ステップＳＰ３８に進んで、ステップＳＰ３６において検出した画像全体の移動量を利用しながら、前フレーム画像９２の中心領域９２Ａ内の各画素の輝度レベルと、現フレーム画像９３のかかる画像領域９３Ｂ内の対応する画素の輝度レベルとの差分を順次計算する。
【０１０７】
この結果このような処理によって、前フレーム画像９２の中心領域９２Ａと、現フレーム画像９３のかかる画像領域９３Ｂとの差分画像のデータが得られ、このデータ（以下、これを差分データと呼ぶ）が重心計算用画像処理オブジェクト８６（図８）に出力される。
【０１０８】
重心計算用画像処理オブジェクト８６は、続くステップＳＰ３９において、動き検出用画像処理オブジェクト８３から与えられる差分データに基づいて、差分データの値が予め設定された所定の閾値よりも大きい画素が集まっている領域、すなわち画像内の動きのあった領域（以下、これを動き領域と呼ぶ）を検出すると共に、その動き領域の画素数をカウントし、さらに当該動き領域の重心位置を検出する。
【０１０９】
そして重心計算用画像処理オブジェクト８６は、この後ステップＳＰ４０において、上述のステップＳＰ３６において検出した現フレーム画像９３の画像領域９３Ｂが、前フレーム画像９２を現フレーム画像とした１つ前の処理において検出した位置と同じ位置にあるか否かを判断する。
【０１１０】
ここで画像領域９３Ｂが同じ位置にあることは、前フレーム及び現フレーム間において画像全体の動きが小さいことを意味し、このとき重心計算用画像処理オブジェクト８６は、現フレーム画像９３内のかかる動き領域の画素数を予め設定された第１の閾値ＴＨSTと比較する。これに対して画像領域９３Ｂが同じ位置にないことは、前フレーム及び現フレーム間において画像全体の動きが大きいことを意味し、このとき重心計算用画像処理オブジェクト８６は、かかる動き領域の画素数を予め設定された第２の閾値ＴＨMV（＞ＴＨST）と比較する。このように重心計算用画像処理オブジェクト８６は、かかる動き領域の画素数が第１又は第２の閾値ＴＨST、ＴＨMVよりも大きいか否かを判断することによって画像内に動きがあったか否かを判断する。
【０１１１】
なおこのようにステップＳＰ３６において検出した現フレーム画像９３の画像領域９３Ｂの位置に応じて比較する閾値を分けたことにより、第１の閾値ＴＨSTを小さめに設定することによってペットロボット１に動きがないときには小さな動きも敏感に検出することができ、第２の閾値ＴＨMVを大きめに設定することによってペットロボットに動きがあるときには感度を下げて動きの誤検出を低減することができる。
【０１１２】
続くステップＳＰ４１において、ＣＰＵ１０は、ステップＳＰ４０における動きの有無の判断結果を10フレーム分取得したか否かを判断する。そして否定結果を得るとステップＳＰ３１に戻り、この後ステップＳＰ４１において肯定結果を得るまでステップＳＰ３１〜ステップＳＰ４１を繰り返す。
【０１１３】
そしてやがてステップＳＰ４１において肯定結果を得ると、重心計算用画像処理オブジェクト８６は、フレーム数のカウント値をリセットした後ステップＳＰ４２に進んで、ステップＳＰ４０における過去10フレーム分の動きの有無の判断結果に基づいて実際に外部に動きがあったか否かを判断する。具体的には、重心計算用画像処理オブジェクト８６は、例えばかかる10フレームのうちの半分以上のフレームにおいて動きが検出された場合には真に動きがあったと判断し、これに対して半分以上のフレームにおいて動きが検出されなかった場合には動きがなかったと判断する。
【０１１４】
そして重心計算用画像処理オブジェクト８６は、真に動きがあったと判断した場合には、ステップＳＰ３９において検出した最新のフレーム画像（過去10フレームのうちの最後のフレーム）内における動き領域の重心位置をアプリケーション・レイヤ７１内の対応するモジュールに通知した後ステップＳＰ３１に戻り、これに対して動きがなかった判断した場合には何の通知も行うことなくこの後ステップＳＰ３１に戻る。
【０１１５】
このようにしてこのペットロボット１においては、自身の動きに伴う画像全体の動きを考慮しながら画像内の動体を精度良く検出し得るようになされている。
【０１１６】
（５）動体検出結果の行動への反映
次に上述のようにして得られた動体検出結果が実際にペットロボット１の行動にどのように反映されるかについて説明する。
【０１１７】
動体検出処理手順ＲＴ２（図１０）のステップＳＰ４２において真に動きがあったと判断された場合、この判断結果は図１３に示すアプリケーション・レイヤ７１内の行動決定モジュール１００に通知される。
【０１１８】
この行動決定モジュール１００は、ＤＲＡＭ１１に格納される各センサデータに基づいて外部及び内部の状態を認識すると共に、当該認識結果及び重心計算用画像処理オブジェクト８６（図８）から与えられる通知等に基づいてペットロボット１の行動を決定するモジュールであり、「喜び」、「悲しみ」、「驚き」、「恐怖」、「嫌悪」及び「怒り」の合計６つの情動について、各情動ごとにその情動の強さを表すパラメータを保持している。
【０１１９】
そして行動決定モジュール１００は、これら各情動のパラメータの値を、それぞれ認識した外部及び内部の状態や、重心計算用画像処理オブジェクト８６から与えられる通知等に基づいて所定周期で順次更新すると共に、これら各情動のパラメータの値と、認識した外部及び内部の状態とに基づいて次の行動を決定し、当該決定結果に基づく行動指令をミドル・ウェア・レイヤ７０の動作生成モジュール１０１又は追尾モジュール１０２に送出する。
【０１２０】
また動作生成モジュール１０１及び追尾モジュール１０２は、与えられる行動指令を基づいて、その行動を行うために対応する各アクチュエータ２５に与えるべきサーボ指令値を生成し、これらを上述の駆動信号としてロボティック・サーバ・オブジェクト６２のバーチャルロボット６３及び信号処理回路１４を順次介して対応する各アクチュエータ２５に送出する。
【０１２１】
この結果、例えば突然に動きが検出された場合には、その刺激によって行動生成モジュール７１内の「驚き」のパラメータが上昇することにより、行動生成モジュール７１によって次の行動として「驚き」の感情表出の行動が決定される。そしてこのようにして決定された行動に応じた行動指令が動作生成モジュール７０に与えられ、当該動作生成モジュール７０においてその行動指令に基づくサーボ指令値等が生成されて、これが対応するアクチュエータ２５等に上述の駆動信号として与えられることにより、驚きを表す行動が発現される。
【０１２２】
また行動生成モジュール１００において動体の動きを追尾するような行動が決定された場合には、当該決定された行動に応じた指令が追尾モジュール１０２に与えられ、当該追尾モジュール１０２においてその行動指令に基づくサーボ指令値等が生成されて、これが対応するアクチュエータ２５等に上述の駆動信号として与えられることにより、ペットロボット１が動体に興味を示して頭をそちらに向けたり、歩いて追いかけたりする行動が発現される。
【０１２３】
このようにしてこのペットロボット１においては、動きの検出結果を自己の行動に反映し得るようになされている。
【０１２４】
なおこのペットロボット１の場合、追尾モジュール１０２は、行動決定モジュール１００から一旦行動指令を受け取った後は、必要な情報を行動決定モジュール１００を介すことなく重心計算用画像処理オブジェクト８６から取得するようになされており、これにより追尾などの高速なタスクを確実に行い得るようになされている。
【０１２５】
（６）本実施の形態の動作及び効果
以上の構成において、このペットロボット１では、フレーム間における画像全体の移動量を検出し、当該移動量を考慮したマッチング処理により画像内の動体を検出する。
【０１２６】
従ってこのペットロボット１では、ペットロボット１の動作に伴う動体の誤検出を未然にかつ効率良く防止しながら、動体を精度良く検出することができる。
【０１２７】
またこのペットロボット１では、１台のＣＣＤカメラ２０だけで動体の検出を行えるため、ペットロボット１全体としての構成を簡易化することができる。
【０１２８】
以上の構成によれば、フレーム間における画像全体の移動量を検出し、当該移動量を考慮したマッチング処理により画像内の動体を検出するようにしたことにより、ペットロボット１の動作に伴う動体の誤検出を未然にかつ効率良く防止しながら、動体を精度良く検出することができる。かくするにつき動体の誤検出に起因する不自然な行動を未然に防止して、エンターテイメント性を向上させ得るペットロボットを実現できる。
【０１２９】
（７）他の実施の形態
なお上述の実施の形態においては、本発明を４足歩行型のペットロボット１に適用するようにした場合について述べたが、本発明はこれに限らず、これ以外の装置に搭載されるこの他種々の画像処理装置や４足歩行型以外のペットロボット又はペットロボット以外のロボット等に広く適用することができる。
【０１３０】
また上述の実施の形態においては、ＣＣＤカメラ２０から出力される画像情報（画像データ）に基づく画像全体の移動量を検出する第１の検出手段を、ソフトウェア構成の動き検出用画像処理オブジェクト８３と、ハードウェア構成のＩＰＥ３５とによって構成するようにした場合について述べたが、本発明はこれに限らず、これらを全てソフトウェア構成又はハードウェア構成とするようにしても良く、第１の検出手段の構成としては、この他種々の構成を広く適用することができる。
【０１３１】
さらに上述の実施の形態においては、かかる第１の検出手段の検出結果を考慮した所定の動き検出処理により、画像内の動きを検出する第２の検出手段として、ソフトウェア構成の動き検出用画像処理オブジェクト８３及び重心計算用画像処理オブジェクト８６と、ハードウェア構成のＩＰＥ３５とによって構成するようにした場合について述べたが、本発明はこれに限らず、これらを全てソフトウェア構成又はハードウェア構成とするようにしても良く、第２の検出手段の構成としては、この他種々の構成を広く適用することができる。
【０１３２】
さらに上述の実施の形態においては、前フレーム及び現フレーム間の画像全体の移動量を検出する手法として、前フレーム画像９２及び現フレーム画像９３をそれぞれ４分割し、前フレーム画像９２の分割領域（第１〜第４のテンプレート分割領域９２Ａ1〜９２Ａ4）と、現フレーム画像９３の対応する分割領域（第１〜第４の検索画像分割領域９３Ａ1〜９３Ａ4）とをマッチング処理するようにした場合について述べたが、本発明はこれに限らず、前フレーム画像９２及び現フレーム画像９３を分割することなく、又は４分割以外の数に分割してマッチング処理を行うようにしても良い。
【０１３３】
【発明の効果】
上述のように本発明によれば、画像全体の動きが小さいときには小さな動きも敏感に検出でき、画像全体の動きが大きいときには感度を下げて動きの誤検出を低減することができるので、画像全体の動きの有無に係わりなく、画像内の動体を精度良く検出し得る画像処理装置及び方法を実現できる。
【０１３４】
また本発明によれば、ロボット装置及びその制御方法において、画像全体の動きが小さいときには小さな動きも敏感に検出でき、画像全体の動きが大きいときには感度を下げて動きの誤検出を低減することができるので、ロボット装置の動作に伴う撮像手段の動きの有無に係わりなく、当該撮像手段から出力される画像情報に基づく画像内の動体を精度良く検出して、当該検出結果を反映した行動を行うことができ、かくしてエンターテイメント性を向上させ得るロボット装置及びその制御方法を実現できる。
【図面の簡単な説明】
【図１】本実施の形態によるペットロボットの構成を示す斜視図である。
【図２】ペットロボットの回路構成を示すブロック図である。
【図３】信号処理回路の構成を示すブロック図である。
【図４】ペットロボットにおける画像データの転送方法の説明に供するブロック図である。
【図５】制御プログラムのソフトウェア構成を示す概念図である。
【図６】画像処理手順を示すフローチャートである。
【図７】画像処理手順を示すフローチャートである。
【図８】ペットロボットにおける画像処理方法の説明に供するブロック図である。
【図９】ペットロボットにおける動き検出の概要説明に供する概念図である。
【図１０】動体検出処理手順を示すフローチャートである。
【図１１】ペットロボットにおける動体検出手順の概要説明に供する概念図である。
【図１２】ペットロボットにおける画像全体の移動量検出の仕方の説明に供する概念図である。
【図１３】動体検出結果を行動に反映させるための説明に供するブロック図である。
【符号の説明】
１……ペットロボット、１０……ＣＰＵ、１１……ＤＲＡＭ、１４……信号処理回路、２０……ＣＣＤカメラ、３４……ＦＢＫ／ＣＤＴ、３５……ＩＰＥ、６１Ａ……ＦＢＫ／ＣＤＴドライバ、６３……バーチャル・ロボット、８３……動き検出画像処理オブジェクト、８６……重心計算用画像処理オブジェクト、９２……前フレーム画像、９２Ａ……中心領域、９２Ａ1〜９２Ａ4……テンプレート分割領域、９３……現フレーム画像、９３Ａ1〜９３Ａ4……検索画像分割領域、９３Ｂ……画像領域、１００……行動決定モジュール、１０１……動作生成モジュール、１０２……追尾モジュール、ＲＴ２……動体検出処理手順。
【図１】
0004618470.tif 000004
【図２】
0004618470.tif 000005
【図３】
0004618470.tif 000006
【図４】
0004618470.tif 000007
【図５】
0004618470.tif 000008
【図６】
0004618470.tif 000009
【図７】
0004618470.tif 000010
【図８】
0004618470.tif 000011
【図９】
0004618470.tif 000012
【図１０】
0004618470.tif 000013
【図１１】
0004618470.tif 000014
【図１２】
0004618470.tif 000015
【図１３】
0004618470.tif 000016