2011-01-19 5 views
7

私は現在地理物理的なプロジェクトに取り組んでいる友人を助けています。私は決して画像処理プロではありませんが、この種の問題では を楽しんでいます。 =)岩の水位より上の高さを見つける

目的は、表面から上に向かって水から出てくる小さな岩の高さを推定することです。

実験装置は、レーザーポインターを内蔵した距離計に搭載された〜10MPカメラです。 "オペレーター"はこれを岩のところで指し示すでしょう。トリガーを押すと、岩の写真に沿って距離が登録されます( は画像の中央に位置します)。

本装置は、常に水の上の一定距離に保持されていると仮定することができます。

私はそれを見るように多くの問題を克服するためにありますなど、一日の時間に応じて、

  1. 照明条件

    • は、岩は、明るくかもしれません水またはその反対側。
    • 時々、岩は水に非常に近い色になります。
    • 日陰の位置は1日中移動します。
    • 水の荒さによっては、水中に岩が映っていることがあります。ロックが均等に整形されていない

    • 多様。

    • 岩のタイプ、苔の成長などによって、岩の表情が変わります。

Fortunateness、試験データの不足はありません。水中の岩の写真は簡単に来ます。ここにいくつかのサンプル画像があります: alt text 私は画像上でエッジ検出器を実行しました。 4番目の画像では、コントラストが貧弱なため、エッジが見えにくくなります。 alt text アイデアをいただければ幸いです!

+0

彼らは同じ問題で少し動く:http://gaugecam.com/blog/?page_id=62(私はあなたの問題の解決策を見ないが) – svrist

+0

それはあなたのエッジ検出器を微調整するかもしれないようであるhttp://en.wikipedia.org/wiki/Edge_detection – svrist

+0

これはビジョンの問題です。エッジ検出器を改善するだけの助けが必要な場合を除きます。 – koan

答えて

4

私はエッジ検出が岩石を検出する最善のアプローチではないと思います。山のような他のオブジェクト、または水中の反射さえもエッジになります。

私はあなたが画像の背景から岩セグメントに画素分類アプローチをとることを示唆している:画像の各画素について

  • 、それを中心としたN×Nの近傍から画像記述子のセットを抽出しますピクセル。
  • イメージのセットを選択し、ピクセルをロックまたはバックグラウンドとして手動でラベル付けします。
  • 分類されたピクセルとそれぞれの画像記述子を使用して、分類子を訓練する(例:Naive Bayesクラシファイア)

岩石は同様のテクスチャを持つ傾向があるため、テクスチャ画像記述子を使用して分類器を訓練します。たとえば、強度値の平均と標準偏差のように、各カラーシャネル(R、G、B)から少数の統計的尺度を抽出することができます。

+0

ええ、NBのような確率的な分類子を使用することを考えましたが、反射がどのように除去されるのかは考えられません。 – Theodor

2

エッジ検出と一緒に岩を見つけるための色分けは、トップを見つけるために行います。

水位を見つけるには、私はすべての水岩境界と水平線(可能であれば)を見つけて、水面に飛行機を当てようとします。 そのようにすれば、岩の反射について心配する必要はありません。

カメラと水の間のピッチ角がわかっていて、カメラが水平(ロール)に水平になっている場合は簡単です。

ps。これは私が思っていたよりもはるかに困難です。あなたはすべての岩石までの距離を知らないので、飛行機にフィットすることは難しいです。

実際に反射がレベルを見つける理想的な方法であり、岩石のエッジ検出で対称的なパスのエッジを探し、頂点を選ぶのが理想的です。

+0

岩が画像の中央に配置されるため、画像内の岩石を見つけることは問題ではありません。しかし、あなたはおそらく画像から岩石を抽出することを指しています。 水面に飛行機をフィットさせることは理にかなっていますが、どのように反射を除外しますか? 私は、ロールとピッチ角を知っておく必要があることに同意します。これは、カメラの三脚にあるような簡単なレベルを機器に取り付けることによって簡単に達成できます。 – Theodor

2

ここではピクセル分類が有効ですが、100%の精度は決してありません。データのばらつきは本当に大きいです、岩は色が違っています(照明も「壊れています」)。したがって、グローバルな情報も考慮する必要があります。

問題はフォアグラウンド抽出です。私が知っている2つのアプローチがあります。

  1. グラフカットによるエネルギー最小化。 http://en.wikipedia.org/wiki/GrabCut(論文とOpenCVの実装へのリンクがあります)。一部の初期化(「シード」)は、ユーザーが行うか、水が周辺にある間に岩が中央にあるような事前知識によって行う必要があります。入力のもう1つの変形は、おおよその境界矩形です。これは、MS Office 2010のフォアグラウンド抽出ツールで実装されています。 可能なフォアグラウンド/バックグラウンドラベリングのエネルギー関数は、フォアグラウンドがフォアグラウンドシードに似ており、スムーズな境界を強制します。したがって、エネルギーの最小値は、良好な前景マスクに対応します。ピクセル分類手法では、多くの画像を事前にラベル付けしてから学習しなければならないことに注意してください。このアプローチでは、各クエリ画像でシードを選択する必要があります(または暗黙的に選択されます)。

  2. Active contoursa.k.a. snakeはまた、ユーザ対話も必要とする。彼らはPhotoshop Magic Wandツールのようなものです。彼らはまた滑らかな境界線を見つけることを試みるが、内部領域を考慮しない。

両方の方法で反射に問題がある可能性があります(ピクセル分類には間違いがあります)。そのような場合は、おおよその垂直対称を見つけて、もしあれば下部を削除してみてください。グラフカットの統計情報を収集しながら、リフレクションをバックグラウンドとしてマークするようユーザーに依頼することもできます。

+0

GrabCut/Graph Cutテクニックは本当に有望ですね。水の表面を検出する技術と一緒に、それは面白いかもしれません。おそらく、抽出された小塊に三角形を当てはめて、三角形の高さから推定値を得ることができます。 – Theodor

関連する問題