IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ キヤノン株式会社の特許一覧

特許7532075画像処理装置、画像処理装置の制御方法およびプログラム
<>
  • 特許-画像処理装置、画像処理装置の制御方法およびプログラム 図1
  • 特許-画像処理装置、画像処理装置の制御方法およびプログラム 図2
  • 特許-画像処理装置、画像処理装置の制御方法およびプログラム 図3
  • 特許-画像処理装置、画像処理装置の制御方法およびプログラム 図4
  • 特許-画像処理装置、画像処理装置の制御方法およびプログラム 図5
  • 特許-画像処理装置、画像処理装置の制御方法およびプログラム 図6
  • 特許-画像処理装置、画像処理装置の制御方法およびプログラム 図7
  • 特許-画像処理装置、画像処理装置の制御方法およびプログラム 図8
  • 特許-画像処理装置、画像処理装置の制御方法およびプログラム 図9
  • 特許-画像処理装置、画像処理装置の制御方法およびプログラム 図10
  • 特許-画像処理装置、画像処理装置の制御方法およびプログラム 図11
  • 特許-画像処理装置、画像処理装置の制御方法およびプログラム 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-02
(45)【発行日】2024-08-13
(54)【発明の名称】画像処理装置、画像処理装置の制御方法およびプログラム
(51)【国際特許分類】
   G06T 7/00 20170101AFI20240805BHJP
   B25J 19/04 20060101ALN20240805BHJP
【FI】
G06T7/00 610
B25J19/04
【請求項の数】 16
(21)【出願番号】P 2020075402
(22)【出願日】2020-04-21
(65)【公開番号】P2021174098
(43)【公開日】2021-11-01
【審査請求日】2023-04-17
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】100125254
【弁理士】
【氏名又は名称】別役 重尚
(72)【発明者】
【氏名】長 元気
(72)【発明者】
【氏名】岡 寛人
【審査官】▲柳▼谷 侑
(56)【参考文献】
【文献】特開2019-133426(JP,A)
【文献】特開2007-179301(JP,A)
【文献】特開2016-020211(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 7/00
B25J 19/04
(57)【特許請求の範囲】
【請求項1】
監視対象を撮影した時刻が異なる複数の画像のそれぞれにおける第1の領域に対して画像処理を施して、前記監視対象に異常が生じているかを監視する監視手段と、
前記異常が生じていることが検出された場合、前記異常を検出した時点よりも前の画像における前記第1の領域とは異なる第2の領域に対して画像処理を施して、前記異常の原因を解析する解析手段と、
を備えることを特徴とする画像処理装置。
【請求項2】
前記監視対象を撮影した時刻に応じて、前記第1の領域のサイズが変更されることを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記監視対象を撮影した時刻に応じて、前記第1の領域に対する画像処理のパラメータが変更されることを特徴とする請求項1または2に記載の画像処理装置。
【請求項4】
前記監視対象に異常が生じているかを監視する画像処理についての第1のフローチャートと、前記異常の原因を解析する画像処理についての複数の第2のフローチャートとは、ユーザ操作により作成可能であることを特徴とする請求項1乃至3のうち何れか1項に記載の画像処理装置。
【請求項5】
前記複数の第2のフローチャートのうち、システムの停止を伴わない第2のフローチャートが優先的に実行されることを特徴とする請求項4に記載の画像処理装置。
【請求項6】
前記第1のフローチャートを実行した結果に応じて、前記複数の第2のフローチャートのうち優先的に実行する第2のフローチャートが設定されることを特徴とする請求項4に記載の画像処理装置。
【請求項7】
前記第1のフローチャートと前記複数の第2のフローチャートとは、1つの画面で関連付けて設定可能であることを特徴とする請求項4乃至6のうち何れか1項に記載の画像処理装置。
【請求項8】
前記複数の第2のフローチャートのそれぞれを実行した結果を示す画面は切り替え可能であることを特徴とする請求項4乃至7のうち何れか1項に記載の画像処理装置。
【請求項9】
前記監視手段は、前記異常が生じているかを判定する判定値が一定量変化したときの時刻の画像を、前記異常を検出した時点よりも前の画像として取得することを特徴とする請求項1乃至8のうち何れか1項に記載の画像処理装置。
【請求項10】
前記監視手段は、前記複数の画像を間引いて取得することを特徴とする請求項9に記載の画像処理装置。
【請求項11】
前記監視対象は、ロボットが作業するワークであることを特徴とする請求項1乃至10のうち何れか1項に記載の画像処理装置。
【請求項12】
それぞれ異なる複数のフローチャートを作成する第1の画面と、前記複数のフローチャートから異常の監視を行う画像処理についての第1のフローチャートおよび前記異常の原因を解析する画像処理についての複数の第2のフローチャートを設定する第2の画面とを表示装置に表示させる制御を行う表示制御手段、を備えることを特徴とする画像処理装置。
【請求項13】
前記第1のフローチャートは、監視対象を撮影した時刻が異なる複数の画像のそれぞれにおける第1の領域に対して画像処理を施して前記監視対象に異常が生じているかを監視するフローチャートであり、
前記第2のフローチャートは、前記異常が生じていることが検出された場合、前記異常を検出した時点よりも前の画像における前記第1の領域とは異なる第2の領域に対して画像処理を施して、前記異常の原因を解析するフローチャートであることを特徴とする請求項12に記載の画像処理装置。
【請求項14】
前記表示制御手段は、前記複数のフローチャートのそれぞれについて、対応するフローチャートの各処理の設定を行う第3の画面を前記表示装置に表示させる請求項12または13に記載の画像処理装置。
【請求項15】
監視対象を撮影した時刻が異なる複数の画像のそれぞれにおける第1の領域に対して画像処理を施して、前記監視対象に異常が生じているかを監視する工程と、
前記異常が生じていることが検出された場合、前記異常を検出した時点よりも前の画像における前記第1の領域とは異なる第2の領域に対して画像処理を施して、前記異常の原因を解析する工程と、
を備えることを特徴とする画像処理装置の制御方法。
【請求項16】
請求項1乃至14のうち何れか1項に記載の画像処理装置の各手段をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置、画像処理装置の制御方法およびプログラムに関する。
【背景技術】
【0002】
製品の生産や品質確認、運搬等を目的として、把持装置やロボットアーム、アクチュエータ等のロボットを制御して、ワークに対して各種の作業を行う技術が用いられている。また、カメラ等の撮影装置を用いて、ワークを撮影や録画等した画像データに対して、画像処理を施して、装置や作業状況を監視するとともにワークの位置計測や検査を行う技術も用いられている。以上の技術を用いることで、目視での定常監視が不要になり、ロボット装置の制御指示の切り替えや動作補正等を行えるため、より多様な所望の作業を行うシステムを構築することができる。
【0003】
また、画像処理の処理内容を切り替えることで、1つの画像データに対して異なる処理を行うことができる。画像処理の処理内容を切り替える技術としては、特許文献1の技術が提案されている。特許文献1の技術では、画像中の指定される部位を判別し、判別結果に応じて異なる画像処理を実行している。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2017-004258号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
例えば、生産現場等で、ワークの崩れやこぼれ等の異常を効率的に検出するために画像処理の対象となる領域は、ワークを配膳する配膳台の周辺領域であることが多い。このため、生産現場等で異常の監視を行う場合、ワークの配膳台の周辺領域を監視領域として監視することが好ましい。一方、ワークの崩れやこぼれ等の異常が発生した原因を高い精度で解析するためには、異常が検出されるよりも前の画像において、トラブルが発生しやすい複数の異なる領域をそれぞれ解析領域として画像処理を行うことが好ましい。
【0006】
従って、異常を監視するための監視領域と異常の原因を解析するための監視領域とのうち何れか一方に対する画像処理では、対象とする領域も時刻も異なるため、異常の監視と異常の解析とを適切に行うことは難しい。この場合、システムにトラブルが生じた場合の原因の解析に要する時間が長くなり、システムの稼働効率が低下し、状況によっては、システムが稼働停止することがある。一方、異常が生じたときの原因を分析するために必要な全ての領域を画像処理の対象として、定常的に画像処理を実施すると、画像処理の負荷が高くなる。その結果、演算処理の遅延が生じる等といった問題が生じる。特許文献1の技術は、かかる問題を解決するものではない。
【0007】
本発明は、システムの異常の原因の解析を効率的に行うことを目的とする。
【課題を解決するための手段】
【0008】
上記目的を達成するために、本発明の画像処理装置は、監視対象を撮影した時刻が異なる複数の画像のそれぞれにおける第1の領域に対して画像処理を施して、前記監視対象に異常が生じているかを監視する監視手段と、前記異常が生じていることが検出された場合、前記異常を検出した時点よりも前の画像における前記第1の領域とは異なる第2の領域に対して画像処理を施して、前記異常の原因を解析する解析手段と、を備えることを特徴とする。
【発明の効果】
【0009】
本発明によれば、システムの異常の原因の解析を効率的に行うことができる。
【図面の簡単な説明】
【0010】
図1】システムの全体構成の一例を示す図である。
図2】システム全体の処理の流れを示すフローチャートである。
図3】画像処理装置の一例を示す図である。
図4】フローチャート作成画面の一例を示す図である。
図5】ワークが正常に積載されているときの監視状態の一例を示す図である。
図6】ワークに荷崩れが生じたときの監視状態の一例を示す図である。
図7】動作設定画面の一例を示す図である。
図8】作成済みのフローチャートの例を示す図である。
図9】詳細設定画面の一例を示す図である。
図10】複数のフレームおよび異常検出のイメージを示す図である。
図11】解析処理が実行された結果を示す画面例を示す図である。
図12】監視処理および解析処理の流れを示すフローチャートである。
【発明を実施するための形態】
【0011】
以下、本発明の実施形態について図面を参照しながら詳細に説明する。しかしながら、以下の実施の形態に記載されている構成はあくまで例示に過ぎず、本発明の範囲は実施の形態に記載されている構成によって限定されることはない。
【0012】
以下、本実施形態について、図面を参照して、説明する。図1は、本実施形態のシステムの全体構成の一例を示す図である。図1のシステムは、例えば、生産現場等に設置されるシステムである。図1のシステムは、画像処理装置101、カメラ102~104、ロボット105およびシステム制御装置110を含む。システム制御装置110は、画像処理装置101およびロボット105に対して、指示を送信することができる。画像処理装置101およびロボット105は、システム制御装置110から受信した指示に基づいて、動作や停止等を行うことができる。これにより、システム全体が制御される。
【0013】
画像処理装置101は、本実施形態に関わる画像処理の設定や実行等を行う。画像処理装置101は、本実施形態の画像処理とは異なる画像処理を行ってもよい。カメラ102~104は、それぞれ異なる領域を撮影し、画像を取得する撮像装置である。画像処理装置101は、カメラ102~104のうち何れかのカメラに内蔵されていてもよいし、システム制御装置110に内蔵されていてもよい。画像処理装置101、カメラ102~104、ロボット105およびシステム制御装置110は、一体として構成されていてもよい。以下、各装置は、別体で構成されているものとして説明する。また、画像処理装置101は、システム制御装置110の機能を有していてもよい。この場合、システム制御装置110は不要であり、画像処理装置101がシステム制御装置110の機能を実行する。
【0014】
ロボット105は、該ロボット105の動作を制御するロボット制御装置を内蔵する。図1のロボット105は、2軸の関節構造を採用したアームと、該アームの先端に装着されたエンドエフェクタとを有している。図1の例では、エンドエフェクタは、把持機構としてのロボットハンドである。アームは1軸の関節構造であってもよいし、3軸以上の多関節構造であってもよい。エンドエフェクタは、物体を吸着する吸着機構であってもよい。エンドエフェクタは、把持機構と吸着機構とが組み合わされたものであってもよい。また、ロボット105は、直交ロボット等であってもよい。以上のロボット105の各機構は、システム制御装置110等の装置からの指示に基づき動作する。
【0015】
ロボット105は、システム制御装置110からの指示に基づき動作するものとして説明するが、ロボット105は、外部連携システムからの指示で動作してもよいし、予め定められた周期で所定の動作を行ってもよい。また、ロボット105は、画像処理装置101による画像処理の処理結果に基づいて、動作が制御されてもよい。
【0016】
カメラ102~104は、任意の手順や撮影パラメータで撮像を行い、撮像された画像(画像データ)を画像処理装置101に送信する。画像処理装置101は、受信した画像に対して画像処理を施し、画像処理の結果を出力する。カメラ102~104は、パン・チルトやズーム倍率、焦点距離、絞り、信号増幅率等の各種撮影パラメータを変更することができる。カメラ102~104は、画像処理装置101からの指示に基づいて、上述した各種の撮影パラメータを変更してもよい。
【0017】
システム制御装置110は、ロボット105に指示(制御指示)を送信する。ロボット105は、指示を受けて、作業台106に載置されているワーク107を把持できるように姿勢を変更する。ロボット105が所定の姿勢に移動した後、カメラ102~104は撮影を行う。画像処理装置101は、カメラ102~104が撮影した画像を取得する。
【0018】
カメラ102は、主に、作業台106に載置されているワーク107を撮影する。画像処理装置101は、カメラ102が撮影した画像に画像処理を施し、作業台106に載置されているワーク107の位置および姿勢を計測する。画像処理装置101は、ワーク107の位置および姿勢を計測した後、計測結果をシステム制御装置110に返信する。システム制御装置110は、返信された計測結果に応じてロボット105の把持位置を補正させる処理を行う。システム制御装置110は、処理結果をロボット105に送信する。ロボット105は、受信した処理結果に基づいて、把持位置を補正し、配膳台108にワーク107を整列して積載する。配膳台108は、静止していてもよいし、例えば、ベルトコンベア等により運搬されていてもよい。
【0019】
カメラ103は、主に、ロボット105を撮影する。画像処理装置101は、カメラ103が撮影した画像に画像処理を施し、ロボット105の挙動や位置等を検査することができる。カメラ104は、主に、配膳台108に積載されたワーク109を撮影する。ロボット105は、作業台106に載置されているワーク107を取り出し、配膳台108に積載させる、所謂ピックアンドプレースを行う。画像処理装置101は、ロボット105がピックアンドプレースを行う際に、例えば、カメラ104が撮影した画像に画像処理を施して、ワーク107の種別を判定してもよいし、ワーク107に欠陥が生じているか等の品質検査を行ってもよい。また、画像処理装置101は、ロボット105により配膳台108に積載されるワーク107の位置を変更してもよい。なお、作業台106に載置されているワークをワーク107とし、配膳台108に積載されているワークをワーク109とする。ワーク109は、整列して所定の数量が配膳台108に積載される。また、画像処理装置101は、カメラ103の撮影画像を用いて画像処理を行い、ロボット105の挙動や位置等を検査したりしてもよい。ワーク107、109は、監視対象の一例である。監視対象は、ワーク以外であってもよい。
【0020】
産業用途では、図1に示されるように、ロボット105のピックアンドプレースのような繰り返しの動作が行われることが多い。そして、画像処理装置101やカメラ102~104が、ロボット105や搬送装置等の視覚として用いられるような場合、システム全体の動作はシステム制御装置110に予め設定される。また、カメラ102~104による撮影のタイミングやパラメータ、構図等は、画像処理装置101による画像処理が好適に行われるように予め設定される。例えば、図1のように、ロボット105が作業するエリア(作業エリア)の近傍に幾つかのカメラが設置されており、各カメラはそれぞれ所定の作業領域を撮影する。カメラ102~104は、撮影した画像を常時または随時、画像処理装置101に送信する。画像処理装置101は、カメラ102~104から受信した画像を記憶する。これにより、画像処理装置101は、カメラ102~104から取得した、撮影時刻が異なる複数の画像を記憶することができる。また、画像処理装置101は、必要に応じて、記憶した各画像を参照または削除することができる。
【0021】
ここで、ロボット105に対しては、作業台106や配膳台108等の座標を教示することができる。画像処理装置101は、ロボット105が教示点を通過するタイミングや時刻を用いて、画像の取得や画像処理を行うことができる。教示点は、例えば、ロボット105やシステム制御装置110等に記憶される。また、教示点に対応する撮影パラメータ(露出や撮影角度、ズーム倍率等)、または撮影パラメータの決定方法(固定値利用や自動露出、自動焦点等)が画像処理装置101等に記憶されていてもよい。カメラ102~104は、教示点に対応する撮影パラメータを用いて、撮影を行ってもよい。
【0022】
画像処理装置101は、画像処理のパラメータや内容等を記憶する。例えば、画像処理装置101は、ロボット105がワーク107を把持するときの画像処理のパラメータや内容等を記憶する。また、画像処理装置101は、ロボット105がワーク107を把持するとき、およびワーク107を持ち上げるときの画像処理のパラメータや内容等を記憶する。また、画像処理装置101は、ロボット105がワーク107を作業台106から配膳台108の上空に移動させているときの画像処理のパラメータや内容等を記憶する。さらに、画像処理装置101は、配膳台108の空き状況やこぼれ等の作業に関する異常の発生状況を確認するときの画像処理のパラメータや内容等を記憶する。
【0023】
図2は、システム全体の処理の流れを示すフローチャートである。本実施形態に係るシステムは、ユーザが画像処理装置101を用いて作成したフローチャートに従って動作する。ただし、本実施形態に係るシステムは、画像処理装置101以外の所定の装置で、ユーザにより作成されたフローチャートに従って動作してもよい。また、本実施形態に係るシステムの動作は、予め機能別や目的別に定型で用意された組合せ済みのフローチャートを内包したパッケージ機能をユーザがGUI(グラフィカル・ユーザ・インターフェース)上で選択することにより実現されてもよい。また、本実施形態に係るシステムの動作は、パラメータの調整により実現されてもよい。
【0024】
図2のフローチャートは、ロボット105がワーク107を作業台106から取り出し、配膳台108に整列した状態で積載するまでの一連の流れを示す。システムの動作が開始すると、カメラ102~104は、撮影を開始する。カメラ102~104は、常時または随時、撮影した画像を画像処理装置101に送信する。画像処理装置101は、受信した画像を記憶する。S202で、システム制御装置110は、作業台106の上空に移動するようにロボット105に指示を出し、ロボット105は、受けた指示に基づき、移動する。このとき、例えば、ロボット105は、先端の把持機構が、ワーク107を把持できるような位置に移動する。
【0025】
次に、システム制御装置110は、画像処理装置101に画像処理を指示する。S203で、画像処理装置101は、指示に従い、カメラ102~104から取得した画像に対して画像処理を施す。画像処理装置101は、カメラ102から取得した画像に基づいて、ワーク107が作業台106に載置されているか否か、およびワーク107の位置や位相等を測定する。また、画像処理装置101は、カメラ104から取得した画像に基づいて、ワーク109が配膳台108に積載されているか否か、およびワーク109の位置や位相等を測定する。画像処理装置101は、測定結果を、システム制御装置110に送信する。これにより、システム制御装置110は、作業台106や配膳台108の近傍における異常の発生状況を検出することができる。
【0026】
S204で、システム制御装置110は、S203で測定された画像処理の結果に基づいて、ロボット105を補正制御する。このとき、システム制御装置110は、ワーク107の上空にロボット105を移動させて、ロボットハンド等のエンドエフェクトの回転制御やロボット105の動作制限等を行う。また、システム制御装置110は、ワーク107や作業台106の状況を判定し、ロボット105の稼働速度の変更や、システムの動作停止等を指示してもよい。
【0027】
S205で、ロボット105は、システム制御装置110からの指示に基づき、ロボットハンド等でワーク107を把持することが可能な位置に移動する。具体的には、ワーク107の上部(直上等)まで、ロボット105は移動する。S206で、ロボット105は、システム制御装置110から受けた指示に基づき、エンドエフェクトとしてのロボットハンドハンドの開閉を制御して、ワーク107を把持(ピッキング)する。
【0028】
次に、S207で、ロボット105は、システム制御装置110からの指示に基づき、ワーク107が配膳台108の上空に位置するように、移動する。S208で、画像処理装置101は、システム制御装置110からの指示に基づき、カメラ104から取得した画像に画像処理を施し、配膳台108の位置および姿勢を測定する。そして、画像処理装置101は、ワーク107を設置する配膳台108の位置の情報を算出し、算出結果を、システム制御装置110に送信する。S209で、ロボット105は、システム制御装置110からの指示に基づき、配膳台108における配膳位置の高さにワーク109を積載できるような位置に移動する。このとき、システム制御装置110は、ピックアンドプレースの繰り返しの回数や外部から取得した積載個数等に基づいて、配膳位置を決定してもよい。
【0029】
S210で、ロボット105は、システム制御装置110からの指示に基づき、ワーク109を配膳(プレイス)する。これにより、配膳台108にワーク109が積載される。S211で、ロボット105は、システム制御装置110からの指示に基づき、配膳台108の上空に移動する。S212で、システム制御装置110は、ロボット105の作業回数が所定回数に達したかを判定する。システム制御装置110は、S212でNOと判定した場合、フローをS202に戻す。一方、システム制御装置110は、S212でYESと判定した場合、図2の処理を終了させる。所定回数は、任意の回数に設定できる。
【0030】
以上において、カメラ102~104や画像処理装置101は、ロボット105の視覚としてだけでなく、システムの作業状況の監視に用いることができる。例えば、カメラ102~104や画像処理装置101は、作業台106に載置されているワーク107や配膳台108に積載されているワーク109に荷崩れが生じているかを監視する役割を果たすことができる。また、カメラ102~104や画像処理装置101は、ロボット105が作業を行う作業領域(例えば、作業台106や配膳台108等)の近傍に、ロボット105の作業に支障が生じる異常が生じているかを定常的に監視することができる。
【0031】
次に、画像処理装置101について説明する。図3は、画像処理装置101の一例を示す図である。画像処理装置101は、カメラ102~104、表示装置301および入力装置302に接続されている。表示装置301は、画像を表示する陰極管や液晶パネル等である。入力装置302は、キーボードやマウス、タッチパネル、入力操作コントローラ、ジェスチャ入力装置等である。表示装置301は、GUI画面を表示することができ、入力装置302により操作を行うことが可能である。表示装置301と入力装置302とは、例えばタッチパネルディスプレイ等の一体の装置であってもよい。また、表示装置301および入力装置302は、画像処理装置101の一部を構成してもよい。
【0032】
図3の例では、画像処理装置101は、カメラ102~104、表示装置301および入力装置302のそれぞれに対応するインターフェース303を有する。図3では、インターフェースは「I/F」と表記される。各インターフェース303は、各装置との通信に適した規格に準拠するインターフェースであってもよい。例えば、インターフェース303は、ネットワークインターフェースやシリアル通信インターフェース等により構成される。
【0033】
画像処理装置101は、制御部304および記憶部305を有する。各インターフェース303と制御部304と記憶部305とは相互に内部バスで接続される。制御部304は、画像処理装置101の全体を制御する。また、制御部304は、画像処理の演算等を行う演算部としても機能する。制御部304は、例えば、CPUおよび画像処理用のプロセッサを有する。記憶部305には、例えばROMやRAM、あるいはEEPROM等の不揮発メモリデバイスや、外部記憶装置(HDDや半導体素子で構成された記憶装置等)が適用され得る。記憶部305は、上記の各記憶装置のファイル領域や仮想記憶領域等で構成されてもよい。制御部304のCPUが、記憶部305に記憶されたプログラムを実行することで、本実施形態の処理が実現される。
【0034】
データ保存領域306は、記憶部305の中のRAM領域や、外部記憶装置のファイル領域や仮想記憶領域等により構成される。データ保存領域306は、処理データを一時的に記憶することが可能であり、画像処理の設定パラメータ等を一時的に記憶する。また、記憶部305は、本実施形態の画像処理を実施するための画像処理プログラム307を記憶する。画像処理プログラム307は、入力装置302を用いて行われた各種操作に応じて、画像処理の設定変更等を行い、画像処理を実行するためのソフトウェアである。画像処理の設定変更の情報は、記憶部305やデータ保存領域306に記憶することができ、また削除することもできる。
【0035】
画像処理プログラム307は、各種の機能を実現するソフトウェアにより構成される。画像処理機能308は、画像処理を実現する画像処理プログラム307の本体の機能である。画像処理機能308は、画像処理ライブラリ309を用いることができる。画像処理ライブラリ309は、例えば、静的または動的にリンクされるライブラリとして実装される。画像処理設定機能310は、入力装置302等から設定された各種操作に応じて、画像処理プログラム307により実現される処理の振る舞いを決定する。
【0036】
また、画像処理プログラム307は、各種のI/O(入出力)ルーチンの機能を含む。外部デバイス制御機能311は、外部デバイスを制御する機能である。保存データ生成機能312は、保存データを生成する機能である。指示受付機能313は、入力装置302を用いた操作の内容を受け付けて、操作内容を認識する機能である。記憶制御機能314は、記憶部305のRAM領域や制御部304のキャッシュ領域等に、一時的にデータを記憶させる機能である。表示画面生成機能315は、表示装置301に表示させる表示画面を生成する機能である。
【0037】
画像処理プログラム307の各機能は、アプリケーション(ユーティリティ)プログラムや、静的ないし動的にリンクされるライブラリとして構成されたサブルーチンの形態で記憶部305に記憶される。これにより、画像処理プログラム307の各機能が実装される。画像処理プログラム307を実行する制御部304は、監視手段、解析手段および表示制御手段に対応する。
【0038】
画像処理装置101は、制御部304が画像処理プログラム307を実行することにより、例えば、カメラ102~104の制御や画像処理等を行う。また、画像処理装置101は、入力装置302を用いたユーザ操作を受け付け、外部の制御装置(システム制御装置110等)から指示を受信する。制御部304は、上記のユーザ操作や外部の制御装置からの指示に応じて、画像処理プログラム307の各機能やライブラリを呼び出し、演算処理を行う。そして、画像処理装置101は、画像処理の結果をシステム制御装置110に送信する。また、画像処理装置101は、画像処理の結果を、外部記憶装置や記憶部305等にログとして蓄積(ロギング)することもできる。また、例えば、画像処理装置101の画像処理設定機能310は、画面構成に画像処理の結果を重畳した画面を生成し、生成された画面を表示装置301に表示してもよい。
【0039】
次に、画像処理プログラム307を構築するためのフローチャート作成画面について説明する。図4は、フローチャート作成画面の一例を示す図である。フローチャート作成画面は、第1の画面に対応する。制御部304が、フローチャート作成画面で作成されるフローチャート等により構築される画像処理プログラム307を実行することで、図2のS203やS208の処理の実行が実現される。フローチャート作成画面は、表示装置301に表示される。フローチャート作成画面において、ユーザは、入力装置302を用いて、画像処理プログラム307が行う処理の内容を自由に設定できる。また、画像処理プログラム307は、画像処理装置101とは異なる別途の装置により構築されてもよい。この場合、画像処理装置101は、別途の装置から画像処理プログラム307を取得し、記憶部305に記憶する。また、画像処理プログラム307は、予め機能別や目的別に定型で用意された組合せ済みのフローチャートを内包したパッケージ機能をユーザがGUI上で選択することにより実現されてもよいし、パラメータの調整により実現されてもよい。
【0040】
図4に示されるように、フローチャート作成画面は、主にパーツリスト領域401とフローチャート領域402とに分かれている。パーツリスト領域401は、処理の内容を示す複数の処理パーツを並べたリストを表示する領域である。処理パーツは、処理単位に対応する。処理パーツは、図4の例には限定されない。ユーザは、入力装置302としてのマウス等を用いて、パーツリスト領域401から処理パーツを選択し、フローチャート領域402において、処理パーツを線で結合する操作を行うことができる。例えば、ユーザは、マウスを用いて、マウスポインタ400Pを操作し、処理パーツをフローチャート領域402にドラッグアンドドロップする。そして、ユーザは、フローチャート領域402の各処理パーツを線で結ぶ操作を行う。これらの操作に基づいて、制御部304は、ユーザ操作に基づくフローチャートを作成可能である。
【0041】
図4のフローチャート領域402におけるフローチャートについて説明する。フローチャート領域402におけるフローチャートは、ユーザにより作成されるGUI上のフローチャートである。S404の「受付」は、画像処理装置101が、システム制御装置110から画像処理の指示を受け付ける処理である。S404の処理パーツは、フローチャート領域402に予め初期値として設定されていてもよい。このとき、画像処理のフローチャートが指定されてもよいし、画像処理を実行するためのパラメータや利用する画像データの時刻が指定されてもよい。S405の「画像取得」は、カメラ102~104から画像を取得して記憶するための処理である。S405の処理で取得される画像データは、記憶部305や外部記憶装置に記憶された画像データのうち、最新の画像データであってもよいし、システム制御装置110から指定された時刻(計測時刻)の画像データであってもよい。
【0042】
S406の「有り無し検査」は、取得された画像データに対してワークの有り無し検査を行うための処理である。ワークの有り無し検査の方法は画像処理ライブラリ309により提供される。例えば、ワークの有り無し検査は、輝度情報や色情報等を用いてワークを抽出した後、抽出されたワークの面積に基づいて、行われてもよい。また、ワークの有り無し検査は、濃淡分布や輝度勾配の形状特徴情報を用いたパターンマッチングにより行われてもよい。さらに、ワークの有り無し検査は、輝度勾配が一定以上の画素をエッジ情報として抽出し、抽出されたエッジの位置や重心、傾き等を用いて行われてもよい。
【0043】
S407の「判定処理」は、S406の「有り無し検査」による処理結果が、作成されるフローチャートの閾値の範囲内に収まるかを判定するための処理である。例えば、S406の「有り無し検査」の処理により、ワークの面積が抽出されたとする。この場合、S407の処理は、抽出されたワークの面積が所定の領域内にどの程度存在するかを判定する処理となる。本実施形態では、S407の「判定処理」の処理結果に基づいて、システムに異常が生じているかが検出される。S408の「結果記録」は、S405およびS406の処理を実行したときの実行結果およびS407の処理結果等を記録するための処理である。
【0044】
例えば、S408の処理が実行されたときに、S404の処理の開始時刻や所定の実行オプションの内容が記憶されてもよい。また、S408の処理が実行されたときに、S405の処理で取得された画像データが記憶されるとともに、該画像データの撮影時刻や画像サイズ、撮影パラメータ等が記憶されてもよい。また、S408の処理が実行されたときに、S406の処理で抽出されたワークの面積や濃淡情報、勾配情報、色情報等が記憶されてもよい。さらに、S408の処理が実行されたときに、S407の処理によるフローチャートの処理結果等が記憶されてもよい。以上の各種データは、データ保存領域306やRAM領域、制御部304のキャッシュ領域等に記憶される。
【0045】
S409の「返信」の処理は、S408の処理が実行されることにより記憶された各種のデータを出力して、フローチャートを終了させるための処理である。S409の処理パーツは、フローチャート領域402に予め初期値として設定されていてもよい。S409の処理が実行されると、処理結果を、システム制御装置110に出力する処理が実行されてもよいし、データ保存領域306に記憶する処理が実行されてもよいし、表示装置301に表示する処理が実行されてもよい。データ保存領域306や記憶部305のRAM領域、制御部304のキャッシュ領域等に記憶された各種データは、参照することもでき、削除することもできる。
【0046】
従って、ユーザは、パーツリスト領域401から所望の処理パーツを選択し、フローチャート領域402に追加していくことで、任意のフローチャートを作成することができる。図4の例では、フローチャート領域402における各処理パーツ(S404~S409)により構成されるフローチャート403が生成される。つまり、画像処理装置101は、ユーザ操作により作成されたフローチャートに基づいて、画像処理プログラム307を生成する。これにより、画像処理プログラム307の設計の自由度が高くなる。
【0047】
ここで、ユーザ操作により、図4のフローチャート403の各処理パーツのうち何れかの処理パーツが選択されたとする。処理パーツの選択は、例えば、入力装置302としてのマウスのダブルクリックにより行われてもよい。制御部304は、処理パーツを選択する操作を受け付けると、表示装置301に表示している画面を、選択された処理パーツの詳細な処理を設定するための詳細設定画面に遷移させる。詳細設定画面の詳細については後述する。
【0048】
図4のフローチャート403は、ユーザ操作に基づき作成されるフローチャートの一例であり、例えば、「条件分岐」の処理パーツを用いたフローチャートであってもよい。この場合、作成されるフローチャートは、条件に応じて、内容が異なる処理を実行させるフローチャートとなる。図4のフローチャート作成画面は、リストボックス421、OKボタン422およびクローズボタン423を含む。
【0049】
リストボックス421は、新たなフローチャートの追加、または既に作成済みのフローチャートを選択するために設けられている。新たなフローチャートを追加する場合、リストボックス421で、新たなフローチャートの名称を入力することができる。図4の例では、リストボックス421に対するユーザ操作により、プルダウンメニュー形式でフローチャートの追加または選択が可能である。本実施形態では、フローチャート作成画面で、複数のフローチャートが作成される。作成された複数のフローチャートには、それぞれフローチャートを特定する名称が対応付けられる。例えば、図4の例のフローチャート403には、「Flow1」という名称が対応付けられている。
【0050】
OKボタン422は、フローチャート領域402に表示されているフローチャートを確定するためのボタンである。OKボタン422の押下操作を受け付けると、制御部304は、フローチャート領域402に表示されているフローチャートを生成する。上述したように、フローチャート作成画面で、ユーザ操作に基づき、それぞれ異なる複数のフローチャートが作成される。制御部304は、作成された複数のフローチャートに応じた複数のフローチャートを生成する。クローズボタン410は、フローチャート作成画面を閉じるためのボタンである。
【0051】
上述したように、カメラ102~104および画像処理装置101は、システムの作業状況の監視用途として用いることができる。例えば、カメラ102~104および画像処理装置101は、作業台106に載置されているワーク107や配膳台108に積載されているワーク109に荷崩れが生じていないかを監視する。また、カメラ102~104および画像処理装置101は、ロボット105が、所定の動作から外れた動きをしていないかを監視する。
【0052】
以下、画像処理プログラム307によるシステムの定常的な監視および異常が発生したときの異常の原因の解析処理について説明する。図5は、配膳台108にワーク109が正常に積載されているときの監視状態の一例を示す図である。カメラ104は、配膳台108に積載されるワーク109を撮影する。カメラ104が撮影した画像データ501の中で、監視領域502が破線で示されている。監視領域502は、第1の領域の一例である。ここでは、画像処理装置101は、カメラ102~104から常時、画像データを取得しているものとする。画像処理装置101の制御部304は、濃淡情報や輪郭抽出、パターンマッチング等を用い、ワーク109が監視領域502に侵入しているかに基づいて、ワーク109が安定して積載されているかを判定する。
【0053】
制御部304は、処理パーツ406の処理と同様に、取得した画像データに対して画像処理を施し、ワークの位置を算出し、算出したワークの位置が監視領域502に侵入しているかを判定する。制御部304は、算出したワークの位置が監視領域502に侵入していると判定した場合、異常が生じていることを検出する。
【0054】
また、制御部304は、監視領域502のサイズを、カメラ102~104による撮影時刻に応じて変更してもよい。例えば、システムが終日稼働している場合を想定する。日中は、システムの周囲で多くの作業員が作業に従事していることが考えられる。このため、作業員が、監視領域502に侵入することがある。この場合、異常が誤検知される。そこで、制御部304は、日中の時間(例えば、作業員が作業に従事すると定められている時間)は、監視領域502を所定範囲より狭くしてもよい。一方、夜間は、作業員が監視領域502に侵入することによる異常の誤検知の可能性が低い。そこで、制御部304は夜間の時間(例えば、作業員が作業に従事すると定められている時間以外の時間)は、監視領域502を所定範囲より広くしてもよい。制御部304は、異常の検知閾値や輪郭検出感度等の画像処理のパラメータも同様に、撮影時刻に応じて変更させてもよい。例えば、日中は環境変動が大きいことが想定されるため、制御部304は、検知閾値を狭くすることで、異常検知の感度を下げて、過剰検知を抑制してもよい。また、夜間は環境変動が少ないことが想定されるため、制御部304は、検知閾値を広くし、検知感度を上げてもよい。
【0055】
図6は、配膳台108に積載されていたワークに荷崩れが生じたときの監視状態の一例を示す図である。図6の例では、下から2段目のワーク109は、荷崩れにより落下しているため、監視領域502に侵入している。このとき、図6の例に示されるように、制御部304は、カメラ104が撮影した画像データに画像処理を施すことで、ワーク109が監視領域502に侵入していることを検出できる。つまり、制御部304は、システムの異常を検出することができる。制御部304は、システムの異常を検出したとき、さらに異常の原因解析を行うための画像処理(解析処理)を行う。
【0056】
次に、異常監視および異常の原因を解析する解析処理について説明する。図7は、異常発生時の動作設定を行うための動作設定画面の一例を示す図である。図7の画面は、第2の画面に対応する。図7の画面(GUI)のうち、リストボックス701は、カメラ102~104のうち何れをライブ映像として表示するかを選択するための選択項目である。図7の例では、リストボックス701は、プルダウンメニュー形式で、ライブ映像を表示するカメラを選択することができる。例えば、ユーザが入力装置302としてのマウスを操作することで、マウスポインタ700Pにより、リストボックス701から何れかのカメラを選択することができる。設定ボタン702は、リストボックス701で選択されたカメラの映像を、映像表示領域703に表示させるボタンである。図7の例では、カメラ104のライブ映像が映像表示領域703に表示される。
【0057】
リストボックス704は、システムで定期的に実行される監視用の画像処理のフローチャート(第1のフローチャート)を設定するための設定項目である。また、上述したように、図4のフローチャート作成画面で、複数のフローチャートが生成され、複数のフローチャートにはそれぞれ名称が対応付けられて記憶される。リストボックス704は、システムに異常が生じているかを監視するためのフローチャートとして、何れかのフローチャートを選択するための選択項目である。例えば、ユーザは、マウスを用いて、リストボックス704のプルダウンメニューから、任意の作成済みのフローチャートを選択できる。図7の例では、システムに異常が生じているかを監視するためのフローチャートとして、「Flow1」が選択されている例を示す。チェックボックス706は、システムの監視を実施するか否かを設定するために設けられている。
【0058】
タブ707は、異常が検出されたときの解析処理の動作を設定するための設定項目である。タブ707の枚数は、追加および削除することが可能である。例えば、タブ707の枚数を追加または削除する操作が行われると、制御部304は、タブ707の枚数を追加または削除する制御を行う。タブ707の枚数が複数枚である場合、複数枚のタブのそれぞれで、異常が検出されたときの異なる動作を設定することもできる。図7の例では、タブ707の枚数は2枚である。
【0059】
タブ707のうち「異常時動作1」のタブは、第1のリストボックス710、第2のリストボックス711およびチェックボックス712を含む。「異常時動作2」も同様の構成であってもよいし、異なる構成であってもよい。タブの数およびリストボックスの数は任意の数であってよい。
【0060】
第1のリストボックス710および第2のリストボックス711は、それぞれ、異常が検出されたときの解析処理のフローチャート(第2のフローチャート)を選択するために設けられている。例えば、ユーザは、マウスを用いて、第1のリストボックス710および第2のリストボックス711から、プルダウンメニュー形式で、複数の作成済みのフローチャートのうち何れかの作成済みのフローチャートを選択することができる。図7の例では、作成済みのフローチャートとして、「Flow2」および「Flow5」が選択されている。従って、1つの画面(図7のGUI)で、監視用の画像処理についての第1のフローチャートと異常の原因を解析する画像処理についての複数の第2のフローチャートとを関連付けて設定可能である。
【0061】
制御部304は、解析処理を行うときには、「Flow2」および「Flow5」のフローチャートに基づいて、画像処理プログラム307を実行する。制御部304は、「Flow2」と「Flow5」とを並列に処理してもよいし、逐次的に処理してもよい。チェックボックス712は、異常が検出されたときに、システムを停止するか否かを設定するために設けられている。チェックボックス712にチェックが入っているときには、システムの停止を伴い、チェックが入っていなければ、システムの停止は伴わない。
【0062】
制御部304は、異常の発生度合いに応じて、「Flow2」と「Flow5」との実行の優先度を異ならせてもよいし、タブの切り替えを行ってもよい。例えば、タブ707のうち「異常時動作1」のタブでは、チェックボックス712にチェックが入っており、「異常時動作2」のタブでは、チェックボックス712にチェックが入っていないとする。この場合、制御部304は、「Flow1」に基づいて検出された異常の度合いが所定度合いより小さければ、システムの停止を伴わない「Flow5」のフローチャートを優先的に実行する。この場合、システムは稼働状態を維持できる。
【0063】
また、「Flow1」のフローチャートに基づいて、制御部304が、画像データの中のワークの面積を抽出したとする。このとき、検出されたワークの面積が所定面積より小さく、変化率が所定率より低く推移している場合、ワークの積載状態は安定していると想定される。この場合、ワークの種別が異なっている可能性が高いため、制御部304は、ワークの種別を検査するためのフローチャートを、解析処理として優先的に実行してもよい。一方、検出されたワークの面積が所定面積以上であり、変化率が所定率以上で推移している場合、制御部304は、ワークに荷崩れが生じていると判定する。この場合、制御部304は、ワークの傾きを検査するフローチャートを、解析処理として優先的に実行してもよい。つまり、制御部304は、「Flow1」のフローチャートを実行した結果に応じて、「Flow2」のフローチャートと「Flow5」のフローチャートとの何れを優先的に実行するかを設定する。
【0064】
図7のGUIのうち、テスト実行ボタン713は、システムの監視動作および異常発生時の動作をテスト実行するためのボタンである。オンラインボタン714は、システムの監視動作の動作および異常発生時の動作を、オンラインで外部装置からの指示を受けるまで待機する状態に切り替えるためのボタンである。ログ表示領域715は、システムの監視動作中に、システムに発生した異常等の事象に関する情報をログとして表示するための領域である。
【0065】
図8は、作成済みのフローチャートの例を示す図である。図8では、図7で選択される「Flow1」、「Flow2」および「Flow5」の3つのフローチャートが示されている。図8(A)の「Flow1」は、システムを監視して異常を検出するためのフローチャートである。S801~S806の各処理は、図4で示したS404~S409の各処理と同様である。
【0066】
図8(B)の「Flow2」は、ワークの種別検査を行う解析処理のフローチャートである。S811の「受付」の処理は、図4のS404の処理と同様である。ただし、「Flow2」は、異常発生時に処理を受け付けるフローチャートである。従って、制御部304は、「Flow2」のフローチャートのS811の処理を実行したとき、前段の「Flow1」のフローチャートに基づく画像処理結果としての数値情報や位置情報、判定時刻等の情報を併せて出力してもよい。また、制御部304は、例えば、各情報をシステム制御装置110等に出力してもよい。
【0067】
S812は、図4のパーツリスト領域401に含まれる「判定変化検出」の処理である。ここで、制御部304は、フローチャートの所定の判定値が一定量変化したときの時刻を、システムに異常が発生した時刻として認識する。所定の判定値が一定量変化したときの時刻は、所定の判定値が一定量変化し始めた時刻であってもよい。この場合、システムに異常が発生した時刻は、システムに異常が発生し始めた時刻となる。判定値は、データ保存領域306等に蓄積される。制御部304は、S812の処理を実行するとき、蓄積された判定値のデータを参照して、判定値が一定量変化したかを判定してもよい。S812の判定を行うための閾値は任意に設定可能であってもよいし、外部装置から取得されてもよい。また、S812の判定を行うための閾値は、蓄積された判定値のデータに対する統計的な解析により動的に変化してもよい。
【0068】
S813は、「画像取得」の処理である。制御部304は、S813の処理を実行するとき、画像処理を施す対象の画像を取得する。このとき、制御部304は、S812の処理で検出された時刻(システムに異常が発生した時刻)の画像データを取得する。これにより、制御部304は、「Flow1」フローチャートを実行したことにより異常が検出された時点よりも前の時点の画像データを、異常が発生した時刻の画像データとして取得できる。
【0069】
S814は、図4のパーツリスト領域401に含まれる「データコード読取」の処理である。制御部304は、S814の処理を実行するとき、取得した画像データに画像処理を施すことで、ワークのデータコードを読み取る。データコードは、例えば、一次元コードや二次元コード、文字と図形との組合せパターンに基づいたデータである。データコード読取の方法は、画像処理ライブラリ309により提供され得る。例えば、制御部304は、輝度情報や色情報等を用いてデータコードを抽出した後、データコードの読取処理を行ってもよい。データコードは、ワークに貼り付けされてもよいし、ワークに刻印されてもよい。
【0070】
S815は、「判定処理」である。制御部304は、S815の処理を実行するとき、S814の処理で読み取られたデータコードが、データ保存領域306や記憶部305のRAM領域等に記憶されている辞書データやワーク種別に該当するかを判定する。制御部304は、読み取られたデータコードが、予め記憶されている辞書データやワーク種別に該当しない場合、S815の判定処理が異常であると認識する。制御部304は、S814の処理でデータコードの読み取りに失敗した場合も、同様に、S815の判定処理が異常であると認識する。S816の処理は、図4のS412の処理と同様であり、S817の処理は、図4のS407の処理と同様である。
【0071】
図8(C)の「Flow5」は、ワークの傾き検査を行う解析処理のフローチャートである。図8(C)のS812~S827の各処理のうち、S824の処理が図8(B)の「Flow2」と異なる。S824以外の各処理は、図8(B)の「Flow2」と同様である。ただし、S822の「判定変化検出」の処理は、図8(B)の「Flow2」のS812と同じ処理であってもよいが、異なる処理であってもよい。例えば、S822の「判定変化検出」の処理は、蓄積された判定値のデータを一定の区間内で直線または曲線に近似し、直線または曲線の傾きが一定量を超えた時刻をシステムに異常が発生した時刻として検出する処理であってもよい。S822の「判定変化検出」の処理は、蓄積された判定値のデータを統計処理して、データの振れ幅を標準偏差等で算出し、振れ幅の値を基準値として、基準値から一定量乖離したときの時刻を異常の発生時刻として検出する処理であってもよい。
【0072】
S824は、図4のパーツリスト領域401に含まれる「傾き検査」の処理である。傾き検査の方法は、画像処理ライブラリ309により提供され得る。制御部304は、S824の処理を実行するとき、例えば画像の強度勾配を抽出し、抽出した強度勾配の近似直線を用いて、傾き計算を行ってもよい。また、制御部304は、S824の処理を実行するとき、予め定義された特徴情報に基づいてパターンマッチング等を行い、パターンマッチングの結果であるマッチング情報を用いて傾きを計算してもよい。
【0073】
次に、詳細設定画面について説明する。図9は、有り無し検査の処理についての詳細設定画面の一例を示す図である。詳細設定画面は、第3の画面に対応する。詳細設定画面は、パーツリスト領域401の各処理パーツのそれぞれの設定を行うための画面である。また、詳細設定画面は、設定可能な項目に応じて、動的に生成されてもよい。図9の詳細設定画面は、濃淡情報を用いた画像処理方法により、ワークの位置および姿勢を算出して、ワークの有り無し検査を行うためのGUIである。図9の詳細設定画面では、対応する処理パーツの処理が対象とする処理領域を設定することができる。図9の例では、ワークの有り無し検査を行う領域が処理領域である。
【0074】
例えば、S814の「データコード読取」の処理についても、処理領域は設定される。この場合、配膳台108におけるワークの積載予定の領域を中心に処理領域が設定される。また、例えば、S824の「傾き検査」の処理についても処理領域は設定される。傾き検査の対象となる領域は、配膳台108に積載された下から2段目以降のワークであるため、処理領域は、配膳台108に積載された下から2段目を中心に設定される。処理領域の設定は、上述した例には限定されない。S814の「データコード読取」の処理が対象とする処理領域とS824の「傾き検査」の処理が対象とする処理領域は、両者とも、監視領域502と異なる。
【0075】
図9の詳細設定画面のうち選択項目901は、画像を選択するためのリスト項目である。ユーザが、マウスを用いて選択項目901を押下すると、制御部304は、記憶部305に記憶されている画像のファイル名および「カメラ画像」の文字列をリスト形式で表示装置301に表示させる。画像のフィル名は、画像を特定する情報であるが、画像を特定する情報はファイル名以外であってもよい。
【0076】
ユーザが、表示されたリストから、任意の画像のファイル名を選択する操作を行うと、制御部304は、選択ファイル名に対応する画像を設定用画像として登録する。図9の例では、「マスター画像」というファイル名の画像が設定用画像として選択されている。設定項目902は、撮影を行うカメラを特定するための項目である。図9の例では、カメラ104による撮影が行われることが示されている。
【0077】
画像表示領域907には、設定用画像が表示される。図9の詳細設定画面において、設定項目903は、領域の形状を設定するための項目である。設定項目903では、矩形や円、楕円、円環等の形状を領域の形状として選択することができる。図9の例では、プルダウンメニューで表示されるリスト形式により選択肢が提示され、ユーザ操作に基づいて、領域の形状が設定される。領域の形状は、上記の形状の組み合わせであってもよいし、所定の領域が加算または除外されてもよい。また、領域の形状は、ユーザが、マウスを用いて描くことにより、自由な領域の形状が設定されてもよい。
【0078】
図9は、矩形領域907A~907Cの設定例を示す。矩形領域907A~907Cは、上述した監視領域502と同じ領域である。図9に示されるように、矩形領域907Aと矩形領域907Cとは同じ高さを有しており、矩形領域907Bは矩形領域907Aと矩形領域907Cとを接続する領域である。設定項目904は、設定用画像(画像データ)のxy座標系における1つの矩形領域を設定するための項目である。設定項目904では、矩形領域の左上のx座標並びにy座標、および右下のx座標並びにy座標に数値を入力することができる。ユーザが、各座標に数値を入力する操作を行うと、入力された数値に基づいて、1つの矩形領域が設定される。ここでは、画像データの左上を原点とし、水平方向をx軸、垂直方向をy軸とする画像座標系が適用される。
【0079】
設定項目904の座標の指定は、数値の入力ではなく、カウントアップボタンとカウントダウンボタンとに対する押下操作により座標の指定が調整されてもよい。1つの矩形領域が設定されると、制御部304は、画像表示領域907に表示されている設定用画像の画像データに、設定された矩形領域を重畳表示する。これにより、ユーザは画像表示領域907の設定用画像を視認しながら、矩形領域907A~907Cを設定することができる。
【0080】
次に、ワークの有り無し検査の設定について説明する。設定項目905は、検査方法を設定するための項目である。図9の例では、ワークの有り無しの検査は、「面積」に基づいて、行われることを示す。例えば、矩形領域907A~907Cにより凹状の中の区画が形成される。制御部304は、画像表示領域907に表示されている画像データに画像処理を施すことで、ワークの面積を検出することができる。設定項目906は、上記の区画内にワークがあるか否かを検査するための検出閾値を設定するための項目である。検出閾値は、面積の絶対値であってもよいし、区画内に占めるワークの面積の割合であってもよい。画像処理によるワークの面積は、例えば、特定の濃淡範囲や色濃度範囲に収まっている画素の面積に基づいて検出されてもよい。また、設定項目911は、変化を検出するための閾値を設定するための項目である。設定項目911の詳細は、後述する。
【0081】
テスト実行ボタン908は、テスト撮影を実行するためのボタンである。ユーザにより、テスト実行ボタン908を押下する操作がされると、制御部304は、設定項目902で登録されているカメラ104による撮影を行わせる。設定項目902の使用カメラは、予め登録されていてもよいし、切り替えることもできる。画像処理装置101がカメラ104により撮影された画像を取得すると、制御部304は、矩形領域907A~907Cにより形成される区画の内部のワークを検出する。これにより、制御部304は、区画内のワークの面積が検出閾値以上であるかに基づいて、ワークの有り無し検査を行うことができる。
【0082】
OKボタン909は、上述した各種設定を保存するためのボタンである。ユーザによりOKボタン909を押下する操作がされると、制御部304は、各設定項目で設定された情報を、画像処理プログラム307と関連付けて、記憶部305に記憶する。制御部304は、画像処理プログラム307の実行時や再度の設定時に、記憶部305に記憶された各設定項目の情報を読み出す。キャンセルボタン910は、各設定項目の情報を破棄するためのボタンである。ユーザによりキャンセルボタン910が押下されると、制御部304は、各設定項目で設定された情報を破棄する。
【0083】
上述したように、制御部304は、フローチャート作成画面で作成された内容に基づいて、複数のフローチャートを生成する。また、制御部304は、動作設定画面において設定された内容に基づいて、システムに異常が生じているかを監視するフローチャート、およびシステムに異常が生じていることが検出された場合に実行される複数のフローチャートを生成する。そして、制御部304は、上述した各種のフローチャートにより構築される画像処理プログラム307を生成する。そして、制御部304は、画像処理プログラム307を実行することで、異常検出の監視処理および異常の原因を解析する解析処理を行う。
【0084】
次に、システムに異常が生じているかの監視について説明する。図10は、複数のフレームおよび異常検出のイメージを示す図である。図10のフレーム1~6は、カメラ104により撮影されたフレーム(画像データ)である。図10は、上述した「Flow1」のフローチャートに基づいて、異常検出が行われる例を示す。フレーム数は6つには限定されない。各フレームは記憶部305等に記憶される。各フレームにおける破線で示される領域は、上述した監視領域502である。監視領域502は、図9の矩形領域907A~907Cにより形成される。
【0085】
フレーム1は、ロボット105のエンドエフェクタにより、ワークが配膳台108に積載される状況を示している。制御部304は、「Flow1」のフローチャートを実行しており、S407の処理を実行することにより、監視領域502に侵入しているワークの面積を抽出する。ここで、図9の例では、検出閾値が「100」と設定されている。フレーム1では、監視領域502に侵入しているワークの面積は「0」である。従って、制御部304は、監視領域502に侵入しているワークの面積は検出閾値以下であるため、システムは正常であると判定する。
【0086】
フレーム2~5では、ロボット105のエンドエフェクタは退避している。制御部304は、「Flow1」のフローチャートを実行することで、システムに異常が生じているかを判定する。ここで、配膳台108に積載された下から2段目のワークの積載位置が適正でなかったか、または傾きが生じていたとする。これにより、フレーム2以降、監視領域502に侵入しているワーク(下から2段目のワーク)の面積が徐々に大きくなる。フレーム6では、監視領域502に侵入しているワークの面積は「110」である。従って、制御部304は、監視領域502に侵入しているワークの面積が、検出閾値以上となったため、システムの異常を検出する。
【0087】
ここで、制御部304は、「Flow1」のフローチャートを実行することで、フレーム6で異常を検出する。しかし、異常が発生した時刻は、フレーム6よりも前の時刻であることが考えられる。このため、異常の原因を解析するためには、「Flow1」のフローチャートを実行することで異常が検出された時刻よりも前の時刻の画像を対象として、解析処理が行われることが好ましい。
【0088】
図8の「Flow2」のS812および「Flow5」のS822は、判定変化検出の処理である。図9の設定項目911では、判定値の変化量の閾値が「10」に設定されている。この場合、制御部304は、前後のフレームで、監視領域502に侵入しているワークの面積の変化量が、変化量の閾値「10」以上になった時点を、変化点(異常が発生した時刻)として検出する。図10の例では、フレーム3の時点で、監視領域502に侵入しているワークの面積の変化量は「13」であり、変化量の閾値以上となっている。この場合、制御部304は、フレーム3で、システムに異常がしたことを検出する。
【0089】
制御部304は、「Flow1」のフローチャートの処理を実行する対象のフレームを間引いでもよい。例えば、制御部304は、奇数番目のフレームを間引き、偶数番目のフレームに対してだけ「Flow1」のフローチャートの処理を実行してもよい。これにより、処理負荷の軽減が図られる。また、制御部304は、判定結果の変化を検出する処理を実行するときに、フレームを間引いてもよい。例えば、奇数番目のフレームが間引かれた場合、制御部304は、偶数番目のフレームの変化量が、変化量の閾値以上となったフレームの時点でシステムに異常が生じ始めたことを検出してもよい。この場合、制御部304は、フレーム4の時点でシステムに異常が生じ始めたことを検出する。また、制御部304は、フレームを間引いて、システムに異常が生じ始めたことを検出した場合、間引かれた未処理の奇数番目のフレームに対しても、「Flow1」のフローチャートの処理を実行してもよい。この場合、制御部304は、フレーム3の時点でシステムに異常が生じ始めたことを検出する。つまり、制御部304がシステムに異常が生じ生じ始めたことを検出した後に、未処理のフレームに対して「Flow1」のフローチャートの処理を実行する。このため、処理負荷の軽減が図られるとともに、詳細な異常検出を行うことができる。
【0090】
上述したように、異常が検出されると、制御部304は、検出された異常の原因を解析する解析処理「Flow2」および「Flow5」のフローチャートを実行する。図11は、解析処理が実行された結果を示す画面例を示す図である。ここでは、制御部304は、フレーム3の時点で、システムに異常が生じ始めたことを検出したとする。図11(A)の結果表示画面1101は、制御部304が「Flow2」のフローチャートを実行したときに表示装置301に表示される画面である。図11(B)の結果表示画面1111は、制御部304が「Flow5」のフローチャートを実行したときに表示装置301に表示される画面である。
【0091】
制御部304は、異常が生じ始めたことを検出したときに、結果表示画面1101、1111を表示させてもよい。また、制御部304は、運転画面の特定のボタンやフローチャートの部品等が押下されたことに応じて、結果表示画面1101、1111を表示させてもよい。最初に、結果表示画面1101について説明する。結果表示画面1101は、選択項目1102を含む。選択項目1102は、フローチャートを切り替えるための項目である。図11の例では、プルダウンメニュー形式で、フローチャートを切り替え可能である。つまり、結果表示画面1101と結果表示画面1111とは切り替え可能である。
【0092】
図11(A)では、「Flow2」が選択されているため、結果表示画面1101には、「Flow2」のフローチャートを実行した結果が表示される。画像表示領域1103は、フレームを表示する領域である。図11(A)の例では、フレーム3が表示されている。画像表示領域1103における一点鎖線で示される領域1104は、処理領域である。該処理領域は、ワークの積載作業を行う領域に設定されている。つまり、監視領域502とは異なる領域である。「Flow2」のフローチャートは、S814の「データコード読取」の処理を含む。制御部304は、「データコード読取」の処理を実行することで、データコードの読取結果1105、1106を結果表示画面1101に表示させる。このとき、制御部304は、検出されたデータコードを予め登録したデータと照会して登録品をカウントして、カウントした結果1107を画像表示領域1103に表示させてもよい。例えば、未登録品が混入した場合には、ワークのサイズや重量も異なる可能性があり、荷崩れを生じる原因ともなり得る。制御部304は、「Flow2」のフローチャートを実行することで解析処理を行い、図11(A)のような異常の原因を表示することができる。
【0093】
図11(B)では、「Flow5」が選択されているため、結果表示画面1111には、「Flow5」のフローチャートを実行した結果が表示される。図11(A)と同様の箇所の説明は省略する。画像表示領域1113における二点鎖線で示される領域1114は、処理領域である。該処理領域は、配膳台108に積載された複数のワークのうち下から2段目以降位置に設定されている。領域1114は、監視領域502とは異なる領域である。「Flow5」のフローチャートは、S824の「傾き検査」の処理を含む。制御部304は、「傾き検査」の処理を実行することで、結果表示画面1111に、ワークの傾きの検出結果を数値で表示させる。このとき、制御部304は、検出された傾きが予め登録された傾きの許容値の範囲内であるかに基づいて、傾きが発生しているかを判定してもよい。例えば、ロボット105によるワークの把持やロボット105の制御動作が不安定であるか、または精度が低い場合、配膳台108に積載されるワークが不安定になる可能性があり、荷崩れや衝突、落下等を生じ得る。制御部304は、「Flow5」のフローチャートを実行することで解析処理を行い、図11(B)のような異常の原因を表示することができる。
【0094】
また、制御部304は、異常が検出されたフレーム3だけではなく、フレーム3の前後の複数枚のフレームに対して、上述した解析処理を行ってもよい。これにより、異常の発生傾向を解析することができる。
【0095】
次に、監視処理および解析処理の全体的な処理の流れについて説明する。図12は、監視処理および解析処理の流れを示すフローチャートである。制御部304は、上述したフローチャート作成画面、動作設定画面および詳細設定画面で設定された内容に基づいて、各フローチャートを生成する。制御部304は、各フローチャートにより構築される画像処理プログラム307を生成し、記憶部305に記憶する。
【0096】
そして、S1201で、制御部304は、記憶部305から画像処理プログラム307を読み出して実行する。S1202で、制御部304は、記憶部305から各画像を取得する。S1203で、制御部304は、上述した「Flow1」のフローチャートを実行して、システムに異常が生じていないかを監視する。S1204で、制御部304は、異常が検出されたかを判定する。制御部304は、S1204でYESと判定した場合、処理をS1205に進める。S1205で、制御部304は、異常の原因を解析する。このとき、制御部304は、例えば、上述した「Flow2」および「Flow5」のフローチャートを実行して、異常の原因を解析する。制御部304は、S1204でNOと判定した場合、フローをS1206に進める。S1206で、制御部304は、図11(A)または(B)のような結果表示画面を表示する。そして、S1207で、制御部304は、図12の処理を終了させるかを判定する。制御部304は、例えば、所定の終了条件を満たしたときに、処理を終了させると判定してもよい。制御部304は、S1207でNOと判定した場合、フローをS1202に戻す。制御部304は、S1207でYESと判定した場合、図12の処理を終了させる。
【0097】
上述したように、本実施形態では、画像処理装置は、システムの動作中には特定の画像領域において画像処理を施すことで、システムの状況を定常的に監視する。そして、画像処理装置は、異常が検出された場合には、異常が発生した時刻に遡った画像データにおける別の画像領域に対して画像処理を施す。これにより、異常が発生した原因を高い精度で解析することができる。また、異常を監視するためのフローチャートと、異常の原因を解析するフローチャートとは、関連付けられる。これにより、異常の監視を常時行うことができるとともに、異常が検出された場合に限定して、複雑な解析処理を複数実施することができるため、定常的なシステムの処理負荷が軽減される。また、異常が発生したときのタイミングの前後の画像を素早く参照することができ、後の対応策を素早く実施することが可能になる。さらに、検知内容や検知時刻に応じて、何れの解析処理を優先するかを設定できる。これにより、データの記憶容量が小さい画像処理装置でも、より重要と設定された検出内容から異常の原因を解析できる。従って、本実施形態では、システムの異常の原因の解析を効率的に行うことができる。このため、ユーザは、効率的にシステムの復旧やメンテナンスを行うこともできる。
【0098】
以上、本発明の好ましい実施の形態について説明したが、本発明は上述した各実施の形態に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。本発明は、上述の各実施の形態の1以上の機能を実現するプログラムを、ネットワークや記憶媒体を介してシステムや装置に供給し、そのシステム又は装置のコンピュータの1つ以上のプロセッサがプログラムを読み出して実行する処理でも実現可能である。また、本発明は、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【符号の説明】
【0099】
101 画像処理装置
102~104 カメラ
105 ロボット
107、109 ワーク
110 システム制御装置
304 制御部
305 記憶部
307 画像処理プログラム
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12