今、ちょっと作りたいものがありまして。

IT技術やプログラミング、物体認識技術や空間認識技術等に詳しい方々にご意見いただければ幸いです。

とある工場の生産ラインがあります。この生産ラインの一部に、24時間定点観測を行うカメラを設置しておきます。
そのカメラの映像は、出来ればパソコン上で観たいです。
そして観測している箇所は、「ペットボトルにオレンジジュースを注ぐ機械がある場所」です。
その機械は、次から次へと送られてくるペットボトルに、オレンジジュースを注いでいます。
しかし時に、機械が誤作動し、うまくオレンジジュースが注げず、給水口から漏れてしまう場合があります。
また、撮影していない反対側では、この機会はコーラを注いでおり、そのせいでたまに間違えて、生産ラインのオレンジジュースを注がないといけない箇所(カメラで観測している箇所)でコーラを注ぐことがあります。
つまり、
①オレンジジュースが漏れた場合
②コーラを注いだ場合
の2つの状況が生じたとき・・・(コメント欄に続きます)

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/05/19 22:13:37
  • 終了:2011/05/22 16:09:16

ベストアンサー

id:sibazyun No.4

sibazyun回答回数1751ベストアンサー獲得回数2362011/05/20 23:42:36

ポイント100pt
  • コメントを拝読して、これを「画像処理プログラミングの演習」として考えて見ます。その際は、入力画像の性格(位置や時間間隔、フィルタなどのセンサ特性など)を決めていく必要があるので、ある程度、仮定をおきます。
  • なお、これは確かに「OpenCV」を使うと便利でしょうが、「OpenCVで学ぶ画像認識」でいえば、第2回に出てくる、「各種数学、描画、読み込み/保存、画像処理、カメラ関連、インタフェース」などの関数の範囲で行うことで、第3回、4回のようなオブジェクト検出の課題や、別資料にあるような動画像や3次元計測の課題としないこと、つまり、時間間歇的な2次元画像の集りの処理に還元するべきでしょう。
  • 例えば、「画像中の一定位置に(液体が入ってしまった)ビンが収まるように撮影できるか」が最初の関門です。ビンが一定の周期で止まるならその間隔でシャッターを切るのですが、これはメカの力が要ります。本当にカメラを固定して、多数の写真をとるが、同期はできないのであれば、せめて背景と照明を工夫して、画面の中からビンの位置を切り出す処理をまず行います。
  • つぎに、ビンは剛体ですから、たとえば、ビンの下から2~4cm部分を切り出して、その色を判別する。これでオレンジジュースかコーラかはわかるでしょう。
  • ビンから1cm高さ分外に出たか、2cm高さ分外に出たかは、私の理解ですと、ビンの中にははいっていない、すなわち、水面の高さに差が出るはずです。したがって、剛体のビンの口の部分を切り出して、光学条件に依りビンだけか液体が入っているかを判別するのがよいでしょう。
  • 上記処理は、液体は厚みがあると周囲とは違う、色のついた画像として検出できることを前提としています。しかし、外のラインに「液体がこぼれた」というのを画像として検出するのは困難です。これは画像処理というより、センサーの話しです。何らかの液体センサーをシステムに直結するか、液体で色のかわる物を用意しておき、この色の変化を画像として検知するか、などが考えられます。
id:moon-fondu

再度ご回答いただき、ありがとうございます!

OpenCVで学ぶ画像認識 第3回 オブジェクト検出してみよう

http://gihyo.jp/dev/feature/01/opencv/0003?page=2

や、

OpenCVで学ぶ画像認識 第4回 オブジェクト検出器の作成方法

http://gihyo.jp/dev/feature/01/opencv/0004

は関係ないのですか?

ビンから漏れた液体を感知するオブジェクト検出器を作れたらいいな~と思ったのですが・・・。

でも困難なんですね~(>_<)

しかし、ビンの中身がオレンジジュースかコーラかは「2~4cmなど、限定した範囲における色の違いで判別」処理を行い、液体が漏れたかどうかは、ビンの口の部分を切り出して「ビンの高さの違いによって判別」すればよいのですね!

ありがとうございます、参考になりました!!

実際、具体的にどうやってそのプログラムを作ればよいのか全くイメージが湧きませんが・・・また質問させていただきこともあるかもしれませんので、その際はよろしくお願いします(^_^;)

2011/05/22 16:07:56

その他の回答(3件)

id:Banias No.1

Banias回答回数237ベストアンサー獲得回数192011/05/19 22:33:37

ポイント30pt

目的を達するには、カメラではなくTCS232のようなカラーセンサーをPCに接続して監視するのが妥当でしょう。


センサーの照準をボトルの満タンラインと口のラインの2カ所に合わせ、両方のラインを超えた場合には溢れ出た状態と判断します。

また、オレンジジュースとコーラの判別は、色で行います。


一般的に、PC側の制御プログラムはC言語で、ログをGUIで表示する部分は.NETなどWindows用の開発環境を利用します。

id:moon-fondu

ご回答ありがとうございます!

ボトルの満タンラインと口のラインですか・・・すみません、私の質問文が悪かったです(>_<)

可能であれば、もっと細かい分析を行いたいのです。

例えば、漏れたオレンジジュースが「1cm漏れた状態」「2cm漏れた状態」「ベルトコンベアを濡らすまで漏れてしまった状態」と、漏れた液体の形態も感知して、それぞれに独自のメッセージを割り当て、デスクトップ上でダイアログボックス等で表示させる。

といったことは出来ないでしょうか?

2011/05/19 22:58:30
id:roy No.2

ろい回答回数110ベストアンサー獲得回数62011/05/19 23:25:42

ポイント30pt

そんな空間認識とかややこしいことを考えないでセンサを使ったらいいのでは?

注ぎ口近辺にカラーセンサーや液体センサーなどを設置して、

その出力を判断して音声合成装置(パトライト社が扱っています)で音声を出力すればいいんじゃ無いでしょうか?


液体の色を判断するのは難しいですが、

カメラの「色認識センサ」なら安い物で10万弱からあります。(OPTEX-FA社、CVS1等)

カメラでごりごりプログラムを組むよりはこういう出来合いのセンサを使う方が楽だと思いますが。


モレを見るならファイバセンサなどを使用すれば良いです。

ファイバセンサなら1万円ほど~でしょうか。

工場の中の様子だと思いますので、出入りの商社やセンサメーカに問い合わせられたらどうでしょうか?

id:moon-fondu

ありがとうございます、参考にします!

2011/05/20 18:56:14
id:sibazyun No.3

sibazyun回答回数1751ベストアンサー獲得回数2362011/05/19 23:26:25

ポイント30pt

いわゆる工場の監視ですが、本格的にやるなら、「画像処理」だけでなく、

ラインに手を加えて、たとえばビンとか機械とかがある位置に来たらバーが

動き、シャッターを切るとかのメカと連動させてやるのが、「プロ」の道です。

もしそれができないとしても、せめて、「オレンジジュース注入機」と

「コーラ注入機」の口に、周囲の機器とは区別できる別の色、たとえば白と赤の

テープを貼って、カメラ(か、NO.1の方のおっしゃるセンサー)はその口の位置を

処理して検知し、これが基準の位置とどれだけ離れているかを検知するのがよいでしょう。

また、メッセージですが、これは録音された音声ファイルを用意して、異常検知

の際に発声させるのがよいでしょう。

id:moon-fondu

ラインに手を加える方法ですか~参考になります!

2011/05/20 18:56:58
id:sibazyun No.4

sibazyun回答回数1751ベストアンサー獲得回数2362011/05/20 23:42:36ここでベストアンサー

ポイント100pt
  • コメントを拝読して、これを「画像処理プログラミングの演習」として考えて見ます。その際は、入力画像の性格(位置や時間間隔、フィルタなどのセンサ特性など)を決めていく必要があるので、ある程度、仮定をおきます。
  • なお、これは確かに「OpenCV」を使うと便利でしょうが、「OpenCVで学ぶ画像認識」でいえば、第2回に出てくる、「各種数学、描画、読み込み/保存、画像処理、カメラ関連、インタフェース」などの関数の範囲で行うことで、第3回、4回のようなオブジェクト検出の課題や、別資料にあるような動画像や3次元計測の課題としないこと、つまり、時間間歇的な2次元画像の集りの処理に還元するべきでしょう。
  • 例えば、「画像中の一定位置に(液体が入ってしまった)ビンが収まるように撮影できるか」が最初の関門です。ビンが一定の周期で止まるならその間隔でシャッターを切るのですが、これはメカの力が要ります。本当にカメラを固定して、多数の写真をとるが、同期はできないのであれば、せめて背景と照明を工夫して、画面の中からビンの位置を切り出す処理をまず行います。
  • つぎに、ビンは剛体ですから、たとえば、ビンの下から2~4cm部分を切り出して、その色を判別する。これでオレンジジュースかコーラかはわかるでしょう。
  • ビンから1cm高さ分外に出たか、2cm高さ分外に出たかは、私の理解ですと、ビンの中にははいっていない、すなわち、水面の高さに差が出るはずです。したがって、剛体のビンの口の部分を切り出して、光学条件に依りビンだけか液体が入っているかを判別するのがよいでしょう。
  • 上記処理は、液体は厚みがあると周囲とは違う、色のついた画像として検出できることを前提としています。しかし、外のラインに「液体がこぼれた」というのを画像として検出するのは困難です。これは画像処理というより、センサーの話しです。何らかの液体センサーをシステムに直結するか、液体で色のかわる物を用意しておき、この色の変化を画像として検知するか、などが考えられます。
id:moon-fondu

再度ご回答いただき、ありがとうございます!

OpenCVで学ぶ画像認識 第3回 オブジェクト検出してみよう

http://gihyo.jp/dev/feature/01/opencv/0003?page=2

や、

OpenCVで学ぶ画像認識 第4回 オブジェクト検出器の作成方法

http://gihyo.jp/dev/feature/01/opencv/0004

は関係ないのですか?

ビンから漏れた液体を感知するオブジェクト検出器を作れたらいいな~と思ったのですが・・・。

でも困難なんですね~(>_<)

しかし、ビンの中身がオレンジジュースかコーラかは「2~4cmなど、限定した範囲における色の違いで判別」処理を行い、液体が漏れたかどうかは、ビンの口の部分を切り出して「ビンの高さの違いによって判別」すればよいのですね!

ありがとうございます、参考になりました!!

実際、具体的にどうやってそのプログラムを作ればよいのか全くイメージが湧きませんが・・・また質問させていただきこともあるかもしれませんので、その際はよろしくお願いします(^_^;)

2011/05/22 16:07:56
  • id:moon-fondu
    観測しているパソコン上で「オレンジジュースが漏れました」「コーラが注がれました」と、音声案内とダイアログボックスで知らせてほしいのです。
    漏れたオレンジジュースの形態を認識する仕組み、コーラとオレンジジュースの色の違いを判別する仕組み(周りの機械の茶色や緑色や蛍光灯の光の色など様々な別の色もありますが)、指定の状況が発生した場合にダイアログボックスを表示させる仕組みなど、様々な技術が必要かとは思うのですが、どうすれば出来るのか、開発に必要な言語やツールは何なのか、個人のPCで可能なのか、予算はどれぐらいかかりそうなのか、2011年現在のIT技術を駆使すれば出来るのかどうか等、ご意見いただければ幸いです。

    いろいろ言ってしまいましたが、これが可能になれば仕事が省力化できるので・・・よろしくお願いします(>_<)
  • id:moon-fondu
    軽く自分で調べたのですが、

    ◆移動物体認識のための特徴抽出法と判定アルゴリズムのポイント解説
    http://tech-seminar.jp/seminar/2011-07-12-%E7%A7%BB%E5%8B%95%E7%89%A9%E4%BD%93%E8%AA%8D%E8%AD%98%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E7%89%B9%E5%BE%B4%E6%8A%BD%E5%87%BA%E6%B3%95%E3%81%A8%E5%88%A4%E5%AE%9A%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0%E3%81%AE%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88%E8%A7%A3%E8%AA%AC

    ◆パターン認識の基礎と応用
    http://www.rdsc.co.jp/seminar/j110559.html

    などで語られていらっしゃる内容が、オレンジジュースの動きやコーラの色を感知するのに役立つような気がしました。
    しかし、開発するためのツールであるならば何万~何十万ぐらいがんばって捻出しようとは思うのですが、たった1回のセミナーに、4万も5万も払えるほどの経済的余裕はありません。また、セミナーで言及されているツールや環境等が、とても個人で用意できるものではない可能性もあったら・・・(:_;)

    最悪、追跡して認識するシステムでなくても構いません。
    定点観測を行っている風景は、そこまで多種多様でありませんので。

    なので、1000~10000点ほど、定点カメラが撮影しているシーンをキャプチャした静止画像のデータベースを、あらかじめ構築しておきます。
    そしてカメラで観測している最中、正常の状態で生産ラインが動いてる瞬間、オレンジジュースが溢れた瞬間、およびコーラが注がれてしまった瞬間と、瞬間毎に(1秒単位なのか1分単位なのか、どれぐらいの間隔がよいのかはわからないのですが)、静止画像のデータベースの中から似ている画像を検索し、そのシーンと一番似ている画像を、パソコンの画面上の右上に常時表示(ガジェット等のように)させておきます。

    そしていざ、オレンジジュースが漏れてしまったら、オレンジジュースが漏れた画像に似ている画像をデータベースから探し出し、一番似通っている画像(80~90%以上一致するもの)に切り替わると同時に「オレンジジュース!」と。
    コーラが注がれたら、静止画像のデータベースからコーラが漏れた写真に似ているものを探し出し「コーラ!」と。
    音声やダイアログボックス等で、パソコンの画面上で通知してほしいのです。

    そういうシステムでもよいので作りたいのです。

    長々と書いてしまいましたが、そこまでパソコンやIT技術に詳しくないので、具体的にどう作っていけばよいのか、流れだけでもお教えくだされば幸いです。
    よろしくお願いします。
  • id:Beirii
    パターンマッチングは一般的に処理時間が掛かるのがデメリットかな。
    テンプレート画像のサイズが大きいほど、検索する画像の範囲が広いほど、処理時間は長くなりますよ。
    ①オレンジジュースが漏れた場合
    ②コーラを注いだ場合
    上記においてペットボトル1本あたりのタクト時間はどのくらいですか?

    漏れの判定に関しては、赤外や紫外等の波長の違うカメラ・照明を使用すれば実現できないかなぁ。
    漏れ自体を検知するよりも、漏れが発生するときのペットボトルや注ぎ口の位置から判定可能であればその方が容易ですけど。
    オレンジジュース・コーラの色判定は、ちゃんとした照明を用意すれば難しくは無いですね。

    FA向け画像処理機器を販売しているキーエンスとかオムロンとかコグネックスとかにそのまま問い合わせてみてはいかがでしょうか。
    すごく高価なシステムを提案されると思いますが、ヒントにはなると思いますよ。

    あと、6/8~6/10にパシフィコ横浜にて「国際センシング展2011」が開催されますから、
    そこでブースで聞いてまわるのもいいと思いますよ。
  • id:sibazyun
    ・この「質問(コメントを含む)+問1へのコメント」だけでは、実は、
    「誤動作の実態」も「本当に何がしたいのか」も良く分からない。

    ・誤動作の実態では、いったいボトル側の位置ズレなのか、ボトル側の定位置にくる時間ズレなのか、注入機械側の位置ズレなのか、注入機械側の定位置にくる時間ズレなのか、あるいはそれが分からないから解析しようとしているのか、など。

    ・本当に何がしたいのかでは、音を聞かせて、作業員にボトルをどかせたいのか、ラインに落ちた水滴を拭かせたいのか、たんなる統計をとりたいのか、など。

    ・で、このようなシステムを組まないとどのくらい損失がでるのか、たとえば顧客に不良品を出荷して指摘されたら、新聞のお詫び公告だけで何百万円損失になるのか、品質管理のアルバイトを毎日1時間よけいにやとい毎月16万円の支出になるのか、それとも、実の損はない、パソコンソフトのお勉強なのか。。。

    ・もちろん、これは企業秘密でしょうから、こんなQAサイトでは明かせないでしょうが。

  • id:moon-fondu
    >Beiriiさん
    コメントありがとうございます!
    国際センシング展2011、行ってみたいですが、個人の受付はやっているかどうか明記されておりませんね・・・タクト時間は720(時間/個)です。1時間に720個、1本注ぐのに5秒ぐらいとご仮定いただければよいかと・・・。

    >sibazyunさん
    すみません、決定権もない者なので、単なるパソコンソフトの勉強に近いです(>_<)
    誤解を招いてしまうような質問をしてしまい、申し訳ございません。

    >ご回答してくださった皆様へ
    すみません、実はそこまで、工場の生産ラインにおける誤作動などは問題ではないのです。
    事前に「仮定の話です」と、しっかり前置きを明記しておくべきでした。
    本当に申し訳ございません。
    私がやりたいのは、映像の中にある特徴ある瞬間(オレンジジュースが漏れた場合や、通常オレンジジュースを注ぐべきなのにコーラが注がれてしまった場合等)を抽出して、それを音声として吐き出したり、その瞬間を静止画像として保存したり、デスクトップ上に表示させたり、ダイアログボックスを出したりする仕組みです。
    ですので、下記リンク、

    ◆OpenCVで学ぶ画像認識
    http://gihyo.jp/dev/feature/01/opencv

    で紹介されているような技術に近いでしょうか。
    今さらながら申し訳ございませんが、もし、このような映像認識システムを構築する方法等について、ご意見いただければ幸いです。
    よろしくお願いします。
  • id:sibazyun
    いるか、ありがとうございます。
    さて、「OpenCVで学ぶ画像認識・・・」は役にたつかということですが、
    まず、人間の顔、鼻は何かということは、人ならば画像を見て区別できます。したがって、工夫をすれば、それをプログラム化することはできます。

    さて、コンベアに落ちた液体というのは、あなたはどうやって画像を見て区別できますか。あなたができるなら、工夫すればプログラム化できるでしょう。しかし、あなたが分からなければできません。ことによって人はできるかもしれません。私はそれを見ていないので、ごく普通にコンベアの一部が濡れたさまを想像しているだけでは、とうていできそうに思えません。

    もちろん、人が正解を得られるなら、液体あり/なしのサンプル画像を何百枚かほうりこんで、学習させるというのは、この画像認識の講座の次のステップ(教師付き学習)ということでできるかもしれません。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません