(58)【調査した分野】(Int.Cl.,DB名)
前記メタデータとともに前記1以上の特徴について前記1以上の被写体を解析することが、前記画像における複数の個々の被写体を識別することを備え、前記1以上の潜在的なワークフローを特定することが、前記画像における前記複数の個々の被写体に基づいて複数の個別のワークフローを特定することを備える、請求項1に記載のシステム。
前記1以上の潜在的なワークフローを特定することが、前記受信された画像のみに基づいて、又は前記受信された画像及び前記メタデータのみに基づいて、前記1以上のワークフローの少なくとも1つを動的に作成することを備える、請求項1に記載のシステム。
前記1以上の被写体が複数の被写体を備え、前記メタデータとともに前記1以上の特徴について前記1以上の被写体を解析することが、前記画像における前記複数の被写体のうちの少なくとも2つの間の関係を特定することを備える、請求項1に記載のシステム。
前記実行可能な命令がさらに、前記マイクロプロセッサに、第1のコンピュータフォーマットにおいてソフトウェアオブジェクトを作成させ、該ソフトウェアオブジェクトを第2のコンピュータフォーマットにフォーマットするアプリケーションプログラミングインタフェース(API)に前記ソフトウェアオブジェクトを送信させ、該ソフトウェアオブジェクトは特定のワークフローサーバにおける特定のワークフローサービスを識別する、請求項1に記載のシステム。
前記1以上のワークフローの前記1つを選択する前記入力が複数のワークフローの選択であり、前記送信された情報が、コンピュータネットワーク上の複数の異なるワークフローサーバにおける前記複数の個別のワークフローを開始する、請求項1に記載のシステム。
前記メタデータが、前記画像の位置及び前記画像を撮る人の名前を備え、前記特定された1以上の潜在的なワークフローが、前記画像の前記位置及び前記画像を撮る人の前記名前に基づく、請求項1に記載のシステム。
前記メタデータとともに前記1以上の特徴について前記1以上の被写体を解析することが、前記画像の角度又は前記画像からの距離に基づいて前記画像を解析することを備える、請求項1に記載のシステム。
前記メタデータが、前記画像を撮る前記通信デバイスの速度を備え、前記特定された1以上の潜在的なワークフローが、前記画像を撮る前記通信デバイスの前記速度に基づく、請求項1に記載のシステム。
【発明を実施するための形態】
【0014】
図1は、画像を解析してワークフローを識別するための第1の例示のシステム100のブロック図である。第1の例示のシステム100は、通信デバイス101A〜101N、ネットワーク110、ワークフローシステム120及びワークフローサーバ130A〜130Nを備える。なお、各通信デバイス101A〜101Nは、専用のワークフローサーバ130を必要としない。ワークフローサーバの符号付けは、便宜的なものである。
【0015】
通信デバイス101は、パーソナルコンピュータ(PC)、電話機、携帯電話、パーソナルデジタルアシスタント(PDA)、タブレットデバイス、ノートブックデバイス、スマートフォン及び/又はスマートテレビなど、ネットワーク110上で通信可能な任意のユーザ通信デバイスであってもよいし、それを含んでいてもよい。
図1に示すように、任意数の通信デバイス101A〜101Nが、1つの通信デバイス101のみを含んでネットワーク110に接続され得る。
【0016】
通信デバイス101Aは、プロセッサ102A、カメラ103A、加速度計104A、磁力計105A、グローバル測位衛星(GPS)システム106A、クロック107A、ブラウザ108A及びマイクロフォン109Aを備える。プロセッサ102Aは、同様のデバイスを用いて人を含む他者へのメッセージベースの通信及び/又はそのようなメッセージを用いて自動的に相互作用するサービスなどのためのソフトウェアとともに、マイクロプロセッサ、デジタルシグナリングプロセッサ(DPS)、マイクロコントローラ、マルチコアプロセッサ、特定用途向けプロセッサ、ネットワーク通信のためのインタフェースなど、情報を処理することができる任意のハードウェアプロセッサであればよい。
【0017】
カメラ103Aは、画像を撮影することができる任意のハードウェアカメラ103であってもよいし、それを含んでいてもよい。カメラ103Aは、写真及び/又は動画などの画像を撮影することができる。
【0018】
加速度計104Aは、微小機械加速度計、圧電加速度計、ピエゾ抵抗加速度計及び/又は容量加速度計などのような加速度を特定することができる任意のハードウェア素子であればよい。加速度計104Aは、通信デバイス101Aの速度/移動を特定するのに使用され得る。加速度計104Aは、画像が撮影される時の通信デバイス101Aの速度を特定するのにカメラ103Aとともに使用され得る。例えば、通信デバイス101Aは、写真が撮られる時に移動している自動車にあってもよい。カメラ103Aが画像を撮影する時に、通信デバイス101Aの速度は画像に関連付けられるメタデータとして記憶され得る。画像が動画の場合、メタデータは動画の時間にわたるサンプルとなり得る。
【0019】
磁力計105Aは、地球磁場を用いて方向を特定することができる任意のハードウェア素子であってもよいし、それを含んでいてもよい。磁力計105Aは、画像が撮影される時にカメラ103Aの方向(例えば、北)を特定するのにカメラ103Aとともに使用され得る。カメラ103Aが画像を撮影する時にカメラ103Aが向く方向は、画像に関連付けられてメタデータとして記憶され得る。画像が動画である場合、メタデータは動画の時間にわたるサンプルとなり得る。
【0020】
GPSシステム106Aは、GPS信号を検出して通信デバイス101Aの位置を特定可能な任意のハードウェアであってもよいし、それを含んでいてもよい。さらに、セルラ又はWiFi信号の三角測量及び/又はネットワーク110への接続に基づいて特定され得る。カメラ103Aが画像を撮影するとき、通信デバイス101Aの位置は、画像に関連付けられたメタデータとして記憶され得る。画像が動画である場合、メタデータは動画の時間にわたるサンプルとなり得る。
【0021】
クロック107Aは、画像が撮られる時の時刻及び日付を特定するのに使用され得る任意のクロック107であってもよいし、それを含んでいてもよい。カメラ103Aが画像を撮影する時の時刻及び日付は、画像に関連付けられたメタデータとして記憶され得る。画像が動画である場合、メタデータは動画の時間にわたるサンプルとなり得る。
【0022】
ブラウザ108Aは、ウェブサーバ124とともに作用することができる任意のブラウザ108であってもよいし、それを含んでいてもよい。例えば、ブラウザ108Aは、Firefox(登録商標)、MicrosoftExplorer(登録商標)、Safari及び/又はGoogleChrome(登録商標)などであればよい。
【0023】
マイクロフォン109Aは、画像が撮られる時に音情報を捕捉するのに使用され得る任意のマイクロフォンであってもよいし、それを含んでいてもよい。画像が撮られる時の音情報は、映像中など、時間にわたるものであってもよい。音情報は、画像に関連付けられたメタデータとして記憶され得る。例えば、画像/映像が撮られる時に、発砲の音がメタデータとして(例えば、MP3ファイルとして)捕捉及び記憶され得る。音情報は、静止画に関連付けられる期間に対するものであってもよいし、時系列の一例の画像に対するものであってもよい。例えば、静止画が撮られる場合、画像が撮られる前及び/又は後の期間の音がメタデータとして記憶され得る。
【0024】
不図示であるが、通信デバイス101Aは、カメラ103Aから画像までの距離を検出することができる他の要素(例えば、レーダー)を備え得る。カメラ103Aが画像を撮影する時に、通信デバイス101Aからの距離は画像に関連付けられたメタデータとして記憶され得る。画像が動画である場合、メタデータは動画の時間にわたるサンプルとなり得る。
【0025】
代替的に、画像に関連してカメラ103Aの角度を特定するのに他のシステムが採用されてもよい。角度検出は、種々のタイプの画像処理を用いて実現され得る。カメラ103Aが画像を撮影する時の角度は、画像に関連付けられたメタデータとして記憶され得る。画像が動画である場合、メタデータは動画の時間にわたるサンプルとなり得る。
【0026】
高度計が、画像が撮られる時の通信デバイス101の高度を特定するのに使用され得る。画像が撮られる時の高度は、画像に関連付けられたメタデータとして記憶され得る。画像が動画である場合、メタデータは動画の時間にわたるサンプルとなり得る。
【0027】
温度計が、画像が撮られる時の温度(例えば、40度)を特定するのに使用され得る。画像が撮られる時の温度は、画像に関連付けられたメタデータとして記憶され得る。画像が動画である場合、メタデータは動画の時間にわたるサンプルとなり得る。
【0028】
図1において、通信デバイス101B〜101Nには、要素102〜108を示していない。ただし、通信デバイス101B〜101Nは、要素102〜108及び/又は上記の追加的な要素の一部又は全部を備え得る。
【0029】
ネットワーク110は、インターネット、ワイドエリアネットワーク(WAN)、ローカルエリアネットワーク(LAN)、ボイスオーバーIPネットワーク(VoIP)、公衆交換電話網(PSTN)、パケット交換ネットワーク、回路交換ネットワーク、セルラネットワーク、これらの組合せなどのような電子通信を送信及び受信することができる通信機器の任意の集合であってもよいし、それを含んでいてもよい。ネットワーク110は、イーサネット、インターネットプロトコル(IP)、セッション開始プロトコル(SIP)、総合通信デジタル網(ISDN)などのような様々な電子プロトコルを用いることができる。したがって、ネットワーク110は、パケット及び/又は回路交換通信を介してメッセージを搬送するように構成された電子通信ネットワークである。
【0030】
ワークフローシステム120は、サーバ、サーバのクラスタ及び/又は通信システムなどのような任意のハードウェアシステムであってもよいし、それを含んでいてもよい。ワークフローシステム120は、画像解析に基づいてワークフローを識別するのに使用される。
【0031】
ワークフローシステム120は、プロセッサ121、画像プロセッサ122、ワークフローインタフェース123及びウェブサーバ124をさらに備える。プロセッサ121は、プロセッサ102と同じであっても異なっていてもよい。プロセッサ121は、複数の通信デバイス101との複数の通信セッションをサポートすることができるものであればよい。
【0032】
画像プロセッサ122は、ニューラルネットワークなど、画像を処理して異なる被写体及び被写体に関連付けられた特徴、被写体に関連付けられた動作、又は被写体(特徴)に関連付けられたイベントを特定することができるハードウェア及び/又はソフトウェアプロセッサであってもよいし、それを含んでいてもよい。被写体は、車、人、標識、デバイス(例えば、テレビ、プリンタ、コンピュータなど)、衣類、家、日用品、建物、ドア、道、山及び/又は乗り物など、画像における任意の種類の対象物であればよい。被写体に関連付けられた特徴は、その色、そのメーカ(製造者)、型式(タイプ)若しくは状態(新品/損傷/破壊)又は他の任意の視認可能な区別マークであればよい。動作は、人が走っている若しくは人が見つめている、蛇口が水漏れしている、又は家が燃えている、のような被写体が行っている何かであればよい。動作は、画像から被写体に対応付けられ得る視認可能な状態である。イベントは画像から推測され得る仮想の被写体であり、例えば、野球場に配置された野球選手の集合は野球の試合のイベントにかかわるものである。さらに、演壇の話者を見る観客の集合は、講演イベントにいるものである。これらは全て、画像解析から抽出され得る情報の例にすぎず、全ての被写体、特徴、動作又はイベントの包括的なものを意味するものではない。画像プロセッサ122は、種々の画像処理技術を用いて画像を処理して被写体を識別し得る。例えば、画像プロセッサ122は、画像ベースの分離、エッジベースの分離、領域ベースの分離、種領域成長アルゴリズム及び/又はウォーターシェドアルゴリズムなどを用いて画像における個別の被写体を識別し得る。
【0033】
画像プロセッサ122は、識別された被写体、特徴、及び画像に関連付けられたメタデータを採用して画像に基づいて可能なワークフローを特定する。ワークフローは、通信デバイス101のユーザを補助するのに使用される処理である。例えば、ワークフローは、配管工が水漏れするシャワーヘッドを修理すること、写真を緊急911サービスに送信すること、工場に在庫品を注文すること、牽引トラックを呼ぶこと、タイヤを修理するマニュアルを取得すること、レストランのメニューを取得すること及び/又は商品を購入することなどとなり得る。
【0034】
ワークフローインタフェース123は、ワークフローサーバ130でワークフローを実行する情報を送信するのに使用されるアプリケーションプログラミングインタフェース(API)である。ワークフローインタフェース123は、あるコンピュータフォーマットにおける情報をそれぞれのワークフローサーバ130によって使用可能なフォーマットに変換することができる。
【0035】
ウェブサーバ124は、Apacheウェブサーバ、MicrosoftのIISウェブサーバ、nginx及び/又はGWSなどのようなブラウザ108と作用することができる任意のウェブサーバ124であればよい。ウェブサーバ124は、通信デバイス101によって使用されるアプリケーションをホストしてワークフローを識別することができる。
【0036】
ワークフローサーバ130A〜130Nは、コンタクトセンタ、プロジェクト管理システム、作業追跡システム、検索エンジン、在庫注文システム、工場制御システム、緊急911サービス、消防監視サービス、警察/消防警報システム、自動車修理システム、牽引サービスシステム及び/又はガーデニングサービスアプリケーションなどのような、ワークフローを処理することができる任意のハードウェアサーバであってもよいし、それを含んでいてもよい。ワークフローサーバ130A〜130Nは、ワークフローサーバ130でワークフローを開始するのに使用され得るソフトウェアオブジェクトをワークフローシステム120に送信させることを可能とするアプリケーションプログラミングインタフェース(API)を備え得る。
【0037】
図2は、ワークフローシステム120の例示的実施形態のブロック図である。要素121〜124に加えて、ワークフローシステム120は、ワークフロー登録サービス226、ワークフロービルダ227及びワークフローエグゼキュータ228をさらに備え得る。ワークフロー登録サービス226は、(例えば、ワークフローサーバ130上で)ワークフローサービスがワークフローシステム120に登録することを可能とする任意のソフトウェア/ファームウェアであってもよいし、それを含んでいてもよい。ワークフローサービスが登録されると、画像プロセッサ122はワークフローサービスにアクセスしてワークフローAPI224を介してワークフローを実行することができる。
【0038】
ワークフロービルダ227は、画像における被写体の識別に基づいて新たなワークフローを自動的に構築することができる任意のソフトウェア/ファームウェアであってもよいし、それを含んでいてもよい。ワークフロービルダ227は、画像における同様の被写体の識別に基づいて他のユーザによる後のアクセスについて記憶され得るワークフローを構築し得る。
【0039】
ワークフローエグゼキュータ228は、ワークフロービルダ227によって作成される新たに作成されたワークフローを実行するのに使用される。ワークフローエグゼキュータ228は、ウェブ検索及び/又はデータベース検索などのような特定のタイプのワークフローを実行するアプリケーションであればよい。
【0040】
画像プロセッサ122はまた、オブジェクトビルダ223を備えていてもよい。オブジェクトビルダ223は、ソフトウェアオブジェクトを構築することができる任意のソフトウェア/ファームウェアであってもよいし、それを含んでいてもよい。ソフトウェアオブジェクトは、ワークフローサーバ130に送信され得るデータを供給してワークフローを実行するのに使用され得る。
【0041】
ワークフローインタフェース123はまた、ワークフローAPI224を備えていてもよい。ワークフローAPI224によって、異なるプロトコル/コンピュータフォーマットを使用し得る異なるワークフローサーバ130A〜130Nにワークフローシステム120がアクセスできるようになる。例えば、画像プロセッサ122は、ワークフローサーバ130の特定のフォーマットに変換される1つのフォーマットにおいてソフトウェアオブジェクトを供給し得る。
【0042】
図3は、例示的画像300の図である。画像300は、静止画、完全な映像及びその間のいずれかであればよい。例えば、カメラ103は、ショットの1秒前及び1秒後を撮影することができる。あるいは、カメラは、時系列の一連の画像又は完全な動画映像を撮影することができる。このように、画像300は、上述のいずれかを備え得る。
【0043】
図3において、画像300は、通信デバイス101におけるカメラ103によって撮影された店舗の写真(静止画)である。画像300は、被写体310A〜310Nを備える。被写体310Aは、ABC家電製品会社についての店舗の被写体である。被写体310Bは、ドアの被写体である。被写体310Cは、ブランドXYZテレビのTVセールを示す標識の被写体である。被写体310Dは、XYZモデル4テレビ受像機のテレビの被写体である。被写体301Eは、人の被写体である。被写体310Nは、歩道の被写体である。ひび330が、歩道の被写体310Nにある。
【0044】
図4は、潜在的なワークフロー420A〜420Nのリスト410の例示的表示の図である。潜在的なワークフロー420A〜420Nのリスト410は、
図3の画像300に基づく。潜在的なワークフロー420Aは、22番街にABC家電製品会社についてのウェブサイトを表示するものである。潜在的なワークフロー420Bは、XYZモデル4テレビ受像機の情報を表示することである。潜在的なワークフロー420Cは、XYZモデル4テレビ受像機を販売する他の店舗のリストを表示することである。潜在的なワークフロー420Dは、強盗発生中メッセージを911サービスに送信するものである。潜在的なワークフロー420Nは、モデル4の2枚ガラスドアの情報を表示することである。
【0045】
ユーザはまた、他の選択肢430〜431も提供される。選択肢430は、追加のワークフロー420を表示することである。選択肢431は、処理を取り消すことである。
【0046】
画像300がカメラ103によって撮影されると、メタデータが画像300に関連付けられる。例えば、日付(2017年4月27日金曜日)、時刻午後9時30分、位置(例えば、GPS座標)、カメラ103が向いている方向及び/又はカメラ103の速度などである。画像プロセッサ122は、画像300を解析して被写体310A〜310Nを識別する。画像プロセッサ122はまた、被写体310A〜310Nに関連付けられた特徴を識別して潜在的なワークフロー420A〜420Nを識別する。識別された被写体310A〜310N/特徴は、潜在的なワークフロー420A〜420Nを特定するようにメタデータとともに解析される。
【0047】
例えば、画像プロセッサ122は、ABC家電製品会社について店舗の被写体310Aを識別する。画像300が撮影された時の位置及びカメラ103が向く方向に基づいて、画像プロセッサ122はABC家電製品会社の店舗の位置がニューヨークシティの東22番街306であることを特定する。この情報に基づいて、画像プロセッサ122は、ニューヨークシティの東22番街306のABC家電製品会社についてウェブページを表示する潜在的なワークフロー420Aを特定する。
【0048】
同様に、画像プロセッサ122は、XYZモデル4テレビ受像機(310D)のテレビ受像機の被写体に基づいて、XYZモデル4テレビ受像機の情報を提供する潜在的なワークフロー420Bを特定する。例えば、時刻午後9時30分に基づいて、画像プロセッサ122は、閉店していることを(例えばウェブ検索を行うことによって)特定することができる。同様に、潜在的なワークフロー420Cが、時刻及びその潜在的なワークフロー420Bとの関係に基づいて特定される。
【0049】
画像プロセッサ122は、人の被写体310Eを識別する。画像プロセッサ122は、人の被写体310Eについての特徴(人がしゃがんでいること)を特定する。メタデータに基づいて、画像プロセッサ122は、メタデータを用いてABC家電製品店が閉店していること(金曜日の午後7時に閉店する)を特定する。人がしゃがんでいること(隠れようとしていること)及び閉店していることに基づいて、画像プロセッサ122は、潜在的なワークフロー420Dを特定する。
【0050】
画像プロセッサ122は、ドアの被写体310Bに基づいて、ドアの被写体がモデル4Bの2枚ガラスドアであることを特定する。例えば、同様の外観のドアを見つけるウェブ検索を行うことによる。画像プロセッサ122は、潜在的なワークフロー420Nがモデル4Bの2枚パンドアについての情報を表示することであることを特定する。
【0051】
同様の処理が、歩道の被写体310Nについても完了する。例えば、(クラック330に基づくと)ワークフロー420は、歩道を補修することである。一方、
図4において、歩道の被写体310Nについての潜在的なワークフローの信頼スコアはより低い(すなわち、これがユーザの求めているものである可能性は低い)ため、歩道の被写体310Nについてのいずれの潜在的なワークフロー420も示されない。ユーザは、選択肢をクリックして、歩道の被写体310Nについてのワークフロー420を得るように追加のワークフロー430を表示することができる。
【0052】
図5は、画像300を解析してワークフロー420を識別するための処理のフロー図である。例示として、通信デバイス101、ブラウザ108、ワークフローシステム120、画像プロセッサ122、ワークフローインタフェース123、ウェブサーバ124、オブジェクトビルダ223、ワークフローAPI224、ワークフロー登録サービス226、ワークフロービルダ227及びワークフローエグゼキュータ228は、メモリ又はディスクのようなコンピュータ可読記憶媒体に記憶されたプログラム命令を実行することによって
図5〜8の方法及びここに記載される処理を実行するコンピュータ又はマイクロプロセッサなどの記憶プログラム制御によるエンティティである。
図5〜8に記載される方法は特定の順序で図示されるが、当業者であれば、
図5〜8におけるステップは異なる順序で実施され、及び/又はマルチスレッド環境で実施され得ることを認識するはずである。またさらに、種々のステップが、実施に基づいて省略又は追加され得る。
【0053】
処理は、ステップ500で開始する。ユーザは、ステップ502において、通信デバイス101上のカメラ103を用いて画像300を撮影する。ただし、画像300は、通信デバイス101においてカメラ103によって撮影されなくてもよい。例えば、ユーザは、ウェブページからの表示画像を採用してもよい。画像300が撮られると、メタデータが画像300に関連付けられる。例えば、メタデータは、画像が撮られる日付/時刻、角度、位置、速度、距離、方向、高度及び/又は温度などを備え得る。上記のタイプのメタデータに加えて、画像300に関連付けられる他のタイプのメタデータは、画像300を撮る人の名前、画像300が撮られる時に人が着ている服装のタイプ(例えば、寒いであろうことを示す厚着)及び/又は通信デバイス101の電話番号などを含み得る。
【0054】
画像300/メタデータは、ステップ504において、ワークフローシステム120に送信される。画像300/メタデータは、種々の態様で送信され得る。例えば、ユーザは、ワークフローシステム120の公知のアドレスに写真を送信する通信デバイス101A上に表示されたボタンをクリックし得る。画像300は、マルチメディアサービス(MMS)及び/又はリッチクライアントサービス(RCS)などを用いてワークフローシステム120に送信され得る。
【0055】
ワークフローシステム120は、ステップ506において、画像300/メタデータを受信する。画像プロセッサ122は、ステップ508において、メタデータとともに(例えば、上述したような)被写体310/特徴/動作/イベントについての画像300を解析する。画像プロセッサ122は、ステップ510において、潜在的なワークフロー420(例えば、ワークフロー420A〜420N)を特定する。画像プロセッサ122は、ステップ512において、ワークフローインタフェース123を介して潜在的なワークフロー420のリスト410を送信する。例えば、潜在的なワークフロー420のリスト410は、ウェブサーバ124を介してブラウザ108に、又はテキスト/RCSメッセージとして通信デバイス101に送信され得る。潜在的なワークフロー420のリスト410は、画像300の受信のみに基づいて、又は画像300及びメタデータに基づいて特定され得る。
【0056】
通信デバイス101は、ステップ514において、潜在的なワークフロー420のリスト410を受信する。通信デバイス101は、ステップ516において、潜在的なワークフロー420のリスト410を表示する。ユーザは、ワークフロー420の1つを選択する。通信デバイス101は、ステップ518において、ワークフロー420の選択を受信する。一実施形態では、ユーザは、複数のワークフロー420を選択し得る(例えば、ワークフロー420A及び420B)。通信デバイス101は、ステップ520において、選択されたワークフロー420をワークフローシステム120に送信する。ワークフローシステム120は、ステップ522において、選択されたワークフロー420を受信する。画像プロセッサ122は、ステップ524において、ワークフロー420に関連付けられたデータを(ワークフローサーバ130についてのワークフローAPI224を用いて)ワークフローインタフェース123を介してワークフローサーバ130に送信する。
【0057】
選択されたワークフロー420を開始するデータは、ワークフロー420のタイプに基づいて変わり得る。例えば、ユーザがワークフロー420Dを選択した場合、ワークフローサーバ130はニューヨークシティにおける警察署に対する911サービスとなり得る。データは、画像300、日付/時刻、位置、画像300を撮る人の名前、通信デバイス101の電話番号、及び東22番街306の住所で潜在的な強盗があり得ることを示すメッセージを含み得る。
【0058】
ワークフローサーバ130は、ステップ526において、ワークフローデータを受信する。ワークフローサーバ130はステップ528においてワークフロー420を開始し、処理はステップ530で終了する。例えば、ユーザがワークフロー420Dを選択した場合、ワークフロー420Dの開始はニューヨーク警察署に作業項目を送信するものであってもよい。これによって、ニューヨーク警察署は東22番街306のABC家電製品店に警官を派遣することができる。
【0059】
図5の処理には、特定のタイプのワークフロー420又はそのワークフロー420をどのように利用するかをユーザが知る必要がないという効果がある。ワークフロー420を特定することは、画像300を送信することの他に任意のユーザ入力を必要としない。例えば、ユーザは、誰がドア310Bを作ったか、ドア310Bがモデル4Bの2枚ガラスドアであること、製造者は誰か、及び/又はどのようにしてドア310Bについての情報を得るかなどを知らなくてもよい。ワークフローシステム120は、ワークフローシステム120への画像300の単なる送信によってこの能力を作り出す。
【0060】
ユーザが、ステップ518において追加のワークフロー430を選択したいと思う(例えば、ユーザが求めているものがワークフローのリスト410にない)場合、選択されたワークフローをステップ520において送信するのではなく、通信デバイス101はメッセージをワークフローシステム120(不図示)に送信して潜在的なワークフローの次のリスト410を取得する。ワークフローシステム120は、ステップ510において、ワークフローの次のリスト410(当初に信頼スコアの下位であったもの(
図7のステップ720及び722参照))を特定する。ワークフローシステム120は、ステップ512において、ワークフローの次のリスト410を送信し、
図6に示すように、処理は継続する。
【0061】
図6は、ワークフローサーバ130においてワークフロー420を開始するのに使用されるソフトウェアオブジェクトの作成のための処理のフロー図である。
図6の処理は、ステップ524、526及び528の例示的実施形態である。選択されたワークフロー420をステップ522において受信した後、オブジェクトビルダ223は、ステップ600において、ワークフローAPI224/ワークフローインタフェース123によって使用され得るソフトウェアオブジェクトを構築する。例えば、ワークフローAPI224は、以下に示すようなオブジェクトビルダ223によって作成されたJavaソフトウェアオブジェクトを用いることができる。
public static int send_workflow(string sparam 1, string sparam 2, int workflow_type)
【0062】
オブジェクトビルダ223は、sparam1において文字列「ABC家電製品会社」を、sparam2において文字列「ニューヨークシティ東22番街306」を、workflow_typeについて1を提供する(1は、ウェブ検索ワークフロー420を示す)。オブジェクトビルダ223は、ステップ602において、ソフトウェアオブジェクトをワークフローAPI224に渡す。ワークフローAPI224は、ステップ604において、必要であればソフトウェアオブジェクトのフォーマットを変更する。例えば、ワークフローサーバ130がXMLを用いる場合、フォーマットされたXMLタグは、以下のようになり得る。
search parameter 1 = “ABC Appliance Company”
search parameter 2 = “306 East 22
nd Street, New York City”
【0063】
ワークフローインタフェース123は、ステップ606において、フォーマットされたデータをワークフローサーバ130に送信する。workflow_typeパラメータは、ワークフロー420の実行を扱うことができる特定のワークフローサーバ130を識別するのに使用される。例えば、workflow_typeパラメータが1である場合、ワークフローサーバ130Aが選択され得る。workflow_typeパラメータが2である場合、ワークフローサーバ130Nが選択され得る。ワークフローサーバ130は、ステップ608において、フォーマットされたデータを受信する。そして、ワークフローサーバ130は、ステップ610においてワークフロー420を開始する。
【0064】
ワークフローサーバ130は、ステップ612において(必要であれば)ワークフロー420についてのステータスアップデートを送信する。ステータスアップデートは、ワークフローの進行を示すことができる。例えば、ワークフローがホテルにおける水漏れするシャワーヘッドを修理することである場合、ステータスアップデートメッセージは、配管工が通知を受けたこと及び/又はシャワーヘッドが修理されたことなどとなり得る。ワークフローサーバ130は、ステップ614において、ワークフロー420が完了したかを判定する。ステップ614においてワークフロー420が完了している場合、ステップ616においてワークフローサーバ130における処理は終了する。あるいは、ステップ614においてワークフロー420が完了していない場合、処理は、必要であれば追加のステータスアップデートメッセージが送信され得るステップ612に戻る。
【0065】
ステップ612においてステータスアップデートが送信された場合、ステップ618においてワークフローシステム120はステータスアップデートを受信する。あるいは、ステータスアップデートは、通信デバイス101に直接送信されてもよい。ワークフローシステム120(ワークフローエグゼキュータ228)は、ステップ620においてワークフロー420についてのステータスアップデートを送信する。通信デバイス101は、ステップ622において、ステータスアップデートを受信する。ステップ624において通信デバイス101はステータスアップデートを表示し、ステップ626において処理は終了する。
【0066】
図7は、画像300を解析してワークフロー420を識別するための処理のフロー図である。
図7の処理は、
図5におけるステップ508/510の例示的実施形態である。ステップ506において画像300/メタデータを受信した後、ステップ700において画像プロセッサ122は画像300(もしあれば)に関連付けられたメタデータを取得する。画像プロセッサ122は、ステップ702において、画像300における1以上の被写体310を識別する。識別された各被写体310について、処理は、ステップ704〜718を実施する。一実施形態では、ユーザが求めているものに対して一致しそうにない被写体を削除する1以上の規則に基づいて被写体がスクリーニングされてもよい。
【0067】
各被写体について、画像プロセッサ122は、ステップ704において、何らかの特徴(すなわち、動作又はイベント)について被写体310を解析する。例えば、ワークフロー420Dについて、画像プロセッサ122は、人310Eが隠れようとしていること(動作)又は歩道の被写体310Nがひび330を有すること(特徴)を特定し得る。画像プロセッサ122は、被写体310が複数の特徴(動作)を有し得ることを特定し得る。例えば、映像において、人が走って躓くこともあり得る。
【0068】
画像プロセッサ122は、ステップ706において、被写体310間に関係があるかを判定する。例えば、
図3において、画像プロセッサ122は、店舗の被写体310A、標識の被写体310C及びテレビ受像機の被写体310Dの間に関係があると判定し得る。画像プロセッサ122は、歩道の被写体310Nは被写体310A〜310Eとは顕著な関係を有さないと判定し得る。
【0069】
各被写体について、画像プロセッサ122は、ステップ708において、画像300における被写体310の位置を特定する。通常、画像300が撮られる場合、ユーザは最も重要な被写体310を画像300の中心に配置する。一実施形態では、より高い信頼スコア(ステップ710参照)が、画像300の中心に配置される被写体310に与えられる。したがって、被写体310が画像300の中心に配置されずに画像300の縁付近にある場合には、画像300の縁付近の被写体310には、より低い信頼スコアが与えられ得る。
【0070】
各被写体310について、画像プロセッサ122は、ステップ710において信頼スコアを計算する。信頼スコアは、画像300における被写体並びにメタデータ、被写体310の特徴(すなわち、被写体の特徴、動作、イベント)、関係及び/又は位置の一部又は全部を用いて計算される。一実施形態では、信頼スコアは、メタデータ、被写体310の特徴、関係及び/又は位置の1以上を用いない。信頼スコアは、1以上の規則に基づいていてもよい。例えば、画像300における異なるタイプのメタデータ、特徴、位置及び関係には、各タイプのワークフロー420についての規則に基づく異なる重み付けが与えられてもよい。
【0071】
画像プロセッサ122は、ステップ712において、被写体310についてのワークフロー420があるかを判定する。例えば、被写体が位置(例えば、ユタ州ソルトレイクシティ4番街123のホリデイイン(登録商標))において水漏れしているシャワーヘッドである場合、画像プロセッサ122は、ステップ712において、ユタ州ソルトレイクシティ4番街123のホリデイイン(登録商標)において水漏れしているシャワーヘッドを扱うことができるワークフローサーバ130におけるワークフロー420があるか(例えば、ホリデイイン(登録商標)は(
図8に記載するような)配管工サービスを扱うサービスを登録しているか)を判定する。ステップ712において一致がある場合、ワークフロー420はステップ718においてワークフローのリスト410に入れられ、処理はステップ720に進む。
【0072】
あるいは、ステップ712において一致がない場合、画像プロセッサ122は、ステップ714においてワークフロー420が作成され得るかを判定する。例えば、画像プロセッサ122は、特定の被写体310についての必要な情報を取得する固有のウェブ検索ワークフロー420を構築可能であってもよい。ステップ714においてワークフロー420が作成可能でない場合、処理はステップ720に進む。あるいは、ステップ714においてワークフロー420が作成可能である場合、ステップ716において画像プロセッサ122は動的にワークフロー420を作成する。ステップ716のワークフロー420は、画像300(被写体及び/又は特徴)のみに基づいて、又は画像及びメタデータに基づいて作成され得る。そして、ステップ718においてワークフロー420はワークフローリスト410に入れられ、その後ステップ720に進む。
【0073】
そして、ワークフローリスト410は、ステップ720において、各被写体310についての信頼スコアに基づいて整理される。そして、ステップ722において、規定の信頼スコア閾値以下に入るワークフロー420は除去される。例えば、閾値は(0〜1.0の範囲における)0.5である場合、信頼度閾値0.5以下の信頼スコアを有するいずれのワークフロー420も初期リストから外される。一方、ユーザは、(例えば、追加のワークフロー420を見る選択肢430を選択することによって)追加のワークフロー420を参照することを選ぶことができる。そして、処理はステップ512に進む。あるいは、規定数のワークフロー420(例えば、上位5つのワークフロー)が選択され得る。
【0074】
図8は、コンピュータネットワーク110上の異なるワークフローサーバ130でのワークフロー420の登録のための処理のフロー図である。処理は、ステップ800で開始する。ワークフローサーバ130Aは、ステップ802において、ワークフローサービスを登録する登録要求をワークフロー登録サービス226に送信する。登録要求は、画像プロセッサ122がワークフロー420をワークフローサーバ130Aに送信することを可能とする情報を備え得る。ステップ802の登録要求は、画像プロセッサ122がステップ524/606のワークフロー420についてのデータを送信することを可能とする情報(例えば、どのようにデータをフォーマットするか)を含んでいてもよい。例えば、登録情報は、ワークフローサーバ130AのURL及び他の情報についてのフォーマットを備え得る。登録サービス226は、ステップ804において、登録要求を受信する。登録サービス226は、ステップ806において登録情報を記憶する。
【0075】
ワークフローサーバ130Nは、ステップ808において、ワークフロー420の登録要求を登録サービス226に送信する。登録サービス226は、ステップ810において、ステップ808の登録要求を受信する。登録サービス226は、ステップ812において、登録情報を記憶する。処理は、ステップ814で終了する。
【0076】
図8の処理は、2つのワークフロー420の登録を記載するだけである。ただし、任意数のワークフロー420が登録され得る。例えば、ステップ802/808の登録メッセージは、同じメッセージにおける複数のワークフロー420を登録し得る。あるいは、追加のワークフローサーバ130が、ワークフロー420を登録し得る。
【0077】
登録され得るワークフロー420のタイプは、任意数の異なるタイプのワークフロー420を備え得る。例えば、
図8の登録ワークフロー420は、配管工サービス、工場のための在庫注文サービス、緊急サービス(例えば、警察、消防など)、牽引トラックサービス、修理マニュアルサービス、レストラン位置サービス、道路補修サービス、信号機修理サービス及び/又はウェブ検索サービスなどを備え得る。
【0078】
ここに記載するプロセッサの例は、これに限定されることなく、クアルコム(登録商標)スナップドラゴン(登録商標)800及び801、4G LTEインテグレーション及び64ビットコンピューティングを有するクアルコム(登録商標)スナップドラゴン(登録商標)610及び615、64ビットアーキテクチャを有するアップル(登録商標)A7プロセッサ、アップル(登録商標)M7モーションコプロセッサ、サムスン(登録商標)エクシノス(登録商標)シリーズ、インテル(登録商標)コア(商品商標)ファミリのプロセッサ、インテル(登録商標)ジーオン(登録商標)ファミリのプロセッサ、インテル(登録商標)アトム(商品商標)ファミリのプロセッサ、インテルアイテニアム(登録商標)ファミリのプロセッサ、インテル(登録商標)コア(登録商標)i5−4670K及びi7−4770K 22nmハズウェル、インテル(登録商標)コア(登録商標)i5−3570K 22nmアイビーブリッジ、AMD(登録商標)FX(商品商標)ファミリのプロセッサ、AMD(登録商標)FX−4300、FX−6300及びFX−8350 32nmヴィシェラ、AMD(登録商標)カヴェリプロセッサ、テキサス・インスツルメンツ(登録商標)Jacinto C6000(商品商標)車載用インフォテインメントプロセッサ、テキサス・インスツルメンツ(登録商標)OMAP(商品商標)車載用グレードモバイルプロセッサ、ARM(登録商標)コルテックス(商品商標)Mプロセッサ、ARM(登録商標)コルテックスA及びARM926EJ−S(商品商標)プロセッサ、他の工業的に同等なプロセッサのうちの少なくとも1つ含み、任意の公知の又は将来開発され得る標準、命令セット、ライブラリ及び/又はアーキテクチャを用いて計算機能を実行することができる。
【0079】
ここに記載されるステップ、機能及び動作のいずれも、連続的に及び自動的に実行され得る。
【0080】
一方、本開示を不要に不明瞭にすることを避けるため、前記載は、多数の周知の構造物及びデバイスを省略している。この省略は、請求項に記載される開示の範囲の限定と解釈されてはならない。具体的な詳細が、本開示の理解を与えるように上述された。ただし、本開示はここに上述した具体的詳細を超える様々な態様において実施され得ることが理解されるべきである。
【0081】
またさらに、ここに示される例示の実施形態は共存するシステムの種々の構成要素を示すが、システムの所定の構成要素は、遠隔に、LAN及び/若しくはインターネットなどの分散ネットワークの遠隔部分に、又は専用システム内に配置され得る。したがって、システムの構成要素は、1以上のデバイスに結合されてもよいし、アナログ及び/又はデジタル電気通信ネットワーク、パケット交換ネットワーク又は回路交換ネットワークなどの分散ネットワークの特定のノードに共存されてもよいことが理解されるべきである。システムの構成要素は、システムの動作に影響を与えることなく構成要素の分散ネットワーク内の任意の位置に配置され得ることが、前述から及び計算効率の理由から理解されるはずである。例えば、種々の構成要素は、PBX及びメディアサーバなどのスイッチ、ゲートウェイ、1以上の通信デバイス、1以上のユーザ施設、又はその組合せにおいて配置され得る。同様に、システムの1以上の機能部分は、電気通信デバイスと関連するコンピューティングデバイスとの間に分散され得る。
【0082】
またさらに、要素を接続する種々のリンクは有線若しくは無線リンク又はその任意の組合せ、又は接続された要素との間でデータを供給及び/若しくは通信することができる他の任意の公知又は後に開発される要素となり得ることが理解されるべきである。これらの有線又は無線リンクはまた、安全なリンクであってもよく、暗号化情報を通信できるものであってもよい。リンクとして用いられる送信媒体は、例えば、同軸ケーブル、銅配線及びファイバ光学系を含む電気信号のための任意の適切なキャリアであればよく、無線波及び赤外線データ通信中に生成されるような音響波又は光波の形態をとり得る。
【0083】
また、特定のシーケンスのイベントとの関係においてフローチャートが検討及び説明されたが、このシーケンスに対する変更、追加及び省略が本開示の動作に実質的に影響を与えることなく行われ得ることが理解されるべきである。
【0084】
本開示の多数の変形例及び変更例が使用され得る。他を与えずに本開示のいくつかの構成に備えることが可能となる。
【0085】
さらに他の実施形態では、本開示のシステム及び方法は、専用コンピュータ、プログラムされたマイクロプロセッサ若しくはマイクロコントローラ及び周辺集積回路素子、ASIC若しくは他の集積回路、デジタル信号プロセッサ、ディスクリート素子回路などのハード有線電子若しくはロジック回路、PLD、PLA、FPGA、PALなどのプログラム可能なロジックデバイス若しくはゲートアレイ、専用コンピュータ、任意の同等な手段などとともに実現され得る。概略として、本開示の種々の態様を実施するのに、ここに例示される方法を実施することができる任意のデバイス又は手段が使用され得る。本開示に使用することが可能な例示的なハードウェアは、コンピュータ、ハンドヘルドデバイス、電話機(例えば、携帯電話、インターネット対応、デジタル、アナログ、ハイブリッド及びその他)並びに当技術分野で公知の他のハードウェアを含む。これらのデバイスの一部は、プロセッサ(例えば、単一又は複数のマイクロプロセッサ)、メモリ、不揮発性記憶装置、入力デバイス及び出力デバイスを含む。またさらに、これに限定されることなく、分散処理若しくはコンポーネント/オブジェクト分散処理、並列処理又は仮想マシン処理を含む代替的なソフトウェアの実施も、ここに記載する方法を実施するように構築可能である。
【0086】
さらに他の実施形態では、開示された方法は、様々なコンピュータ又はワークステーション・プラットフォーム上で使用可能なポータブルソースコードを提供するオブジェクト又はオブジェクト指向ソフトウェア開発環境を用いるソフトウェアととともに容易に実現され得る。あるいは、開示のシステムは、標準論理回路又はVLSI設計を用いるハードウェア内で部分的又は完全に実現されてもよい。本開示によるシステムを実施するのにソフトウェアが使用されるのか又はハードウェアが使用されるかは、使用されるシステム、特定の機能及び特定のソフトウェア若しくはハードウェアシステム又はマイクロプロセッサ若しくはマイクロコンピュータシステムの速度及び/又は効率要件による。
【0087】
さらに他の実施形態では、開示された方法は、記憶媒体に格納され、コントローラ及びメモリと協働してプログラムされた汎用コンピュータ、専用コンピュータ、マイクロプロセッサなどで実行されるソフトウェアにおいて部分的に実施されてもよい。これらの例では、本開示のシステム及び方法は、アプレット、JAVA(登録商標)若しくはCGIスクリプトなどのパーソナルコンピュータに組み込まれたプログラムとして、サーバ若しくはコンピュータワークステーション上に常駐するリソースとして、又は専用の測定システム若しくはシステム構成要素などに組み込まれたルーチンとして実施可能である。システムは、システム及び/又は方法をソフトウェア及び/又はハードウェアシステムに物理的に組み込むことによっても実施可能である。
【0088】
本開示は、特定の標準及びプロトコルを参照して実施形態に実現される構成要素及び機能を説明するが、本開示はそのような標準及びプロトコルに限定されない。ここに言及されていない他の同様の標準及びプロトコルも存在し、本開示に含まれることが考慮される。さらに、ここに言及される標準及びプロトコル並びにここに言及されていない他の同様の標準及びプロトコルは、本質的に同じ機能を有するより速い又はより有効な均等物によって定期的に置き換えられる。同じ機能を有するこのような標準及びプロトコルの置換は、本開示に含まれる均等物とみなされる。
【0089】
種々の実施形態、構成及び態様における本開示は、実質的にここに図示及び記載されてその種々の実施形態、サブコンビネーション及びサブセットを含む構成要素、方法、処理、システム及び/又は装置を含む。当業者であれば、本開示を理解すれば、ここに開示されるシステム及び方法をどのように作製及び使用するかを理解するはずである。種々の実施形態、構成及び態様における本開示は、例えば、性能を向上し、実施を容易化し及び/又は実施のコストを低減するために、ここに図示及び/又は記載されていない項目がない場合又はその種々の実施形態、構成若しくは態様において、デバイス及び処理を提供することを含み、直前のデバイス又は処理において使用されていたであろうそのような項目がない場合を含む。
【0090】
本開示の以上の記載が、例示及び説明の目的のために提示された。上記は、本開示をここに開示される単数又は複数の形態に限定することを意図するものではない。例えば上記の詳細な説明では、本開示の種々の特徴が、開示の合理化の目的のために1以上の実施形態、構成又は態様においてともにグループ化されている。本開示の実施形態、構成又は態様の特徴は、上述されたもの以外の代替の実施形態、構成又は態様において組み合わせられてもよい。この開示の方法は、請求項に記載される開示が各請求項に明記されるよりも多くの特徴を要件とする意図を反映するものと解釈されてはならない。そうではなく、以降の特許請求の範囲が反映するように、進歩的態様は、単一の上記開示の実施形態、構成又は態様全ての特徴よりも少ないものである。したがって、以降の特許請求の範囲は、各請求項がそれ自体で本開示の独立した好適な実施形態として成立するものとして、この詳細な説明にここで取り込まれる。
【0091】
さらに、本開示の説明は1以上の実施形態、構成又は態様並びに所定の変形例及び変更例の説明を含んできたが、他の変形例、組合せ及び変形例は、例えば本開示を理解すれば当業者の技術及び知識内のものとなるので、本開示の範囲内にある。請求項に記載される代替の、互換可能な及び/又は均等の構造、機能、範囲若しくはステップを含む代替の実施形態、構成又は態様を含む権利を、そのような代替の、互換可能な及び/又は均等の構造、機能、範囲若しくはステップがここに開示されるか否かにかかわらず、かつ任意の特許可能な主題を公に専有することを意図することなく、許可される程度に取得することが意図されている。