2013-02-18 8 views
7

泥の中にタイガーのプッグマーク(足跡印象)の画像があります。私はpugmarkの境界を検出したいが、画像は前景である強度が均一であり、背景は強度の変化に基づいて区別できない。私はpugmarkと背景を区別するために何ができますか?セグメンテーションタスクで均質強度画像で物体を検出する

tiger's pugmark http://imageshack.us/a/img407/4636/p1060993g.jpg

+1

問題はおそらくあなたが考えるよりも困難です。境界線のさらなる使用法、つまりどんな精度が必要なのかを詳しく説明すると役に立ちます。あなたが単にpugmarkを検出したい、またはその方向を知りたい場合は、正確な境界は不要です。 –

+0

あなたは運命づけられています。 : - (.....これは非常に困難な画像処理タスクです – Shai

+0

@RomanShapovalovなぜ私は境界をマークして無関係な領域を捨てる必要があるのか​​を教えてください。私はpugmarkを分析し、いくつかの選択された特徴パッド面積、つま先面積、つま先2と3の間の角度、プッグマークの長さ、幅などを分析し、分析された画像とトレーニングセットとを比較した後、どのタイガーのプッグマークであるかを区別することができなければならない。 – Suvidha

答えて

7

あなたは、両方の

  1. 良いマーカーを持っている場合。そして関心

の物体の周り

  • 強いエッジは、それは直接変換流域によって解決されます。問題は、もちろん、必要に応じて関連するエッジを強化するとともに、これらのマーカーを取得することです。これらの問題を解決するには、問題に固有の知識が必要です。

    しかし、有用な一般的な方法がいくつかあります。たとえば、Mathematical Morphologyの接続された演算子は、フラットゾーンをマージして拡張する方法として機能します。したがって、おそらく、問題に対して比較的良いマーカーを与えることができます。次の画像では、元の画像(左画像)のグレースケールバージョンで開かれた(一種の接続されたオペレータ)形態学的再構成が実行され、残りの地域最大値が右に示されています。

    enter image description hereenter image description here

    今、私たちは、上記左画像の形態学的勾配を得ることができます。上記の右側の画像に小さな穴を空けて穴を開け、より滑らかな輪郭を得ることもできます。これは私たちのマーカー画像を定義しています。その後、流域は、私たちのマーカ画像を使用して勾配画像に変換した後、拡大(浸食さや拡張、あなたがそれを見る方法によって異なります)流域ライン適用し、我々は以下の画像を取得:

    enter image description here

    をI余りにも大きくて小さすぎる領域を簡単に破棄することができると思われます。次に、手のひらのために、爪のためのいくつかの大まかな予想サイズを持っている場合は、無関係な領域を破棄することができます。この時点で、単一のコンポーネントを形成し、原画像中の得られた輪郭を表示する領域を拡張するだけの問題である:

    enter image description here

    各ステップを実行するためのサンプルコードは、(関連するステップはまた、に示されています)MATLABコードをコメント:

    f = Import["http://imageshack.us/a/img407/4636/p1060993g.jpg"] 
    g = ColorConvert[f, "Grayscale"]       (* g = rgb2gray(f); *) 
    (* First image shown: *) 
    geo = GeodesicOpening[g, DiskMatrix[5]] (* geo = imreconstruct(imerode(g, ... *) 
                 (*   strel('disk', 6)), g);  *) 
    (* Second image shown: *) 
    marker = MaxDetect[geo]      (* marker = imregionalmax(geo); *) 
    
    (* Watershed on gradient with markers. *) 
    mgrad = ImageSubtract[Dilation[geo, 1], Erosion[geo, 1]]; (* mgrad = ...  *) 
          (* imdilate(geo,strel('square',3)) - imerode(geo,strel('square',3)); *) 
    ws = Image[   (* ws = watershed(imimposemin(mgrad, bwmorph(imfill(... *) 
    WatershedComponents[mgrad,  (* imregionalmax(geo),'holes'),'dilate')))); *) 
        Dilation[FillingTransform[marker], DiskMatrix[1]]]] 
    
    (* Third image shown: *) 
    wsthick = Erosion[ws // ImageAdjust, DiskMatrix[5]] 
    
    (* Connected component selection based on some supposed sizes. *) 
    ccs = SelectComponents[wsthick, "Count", 1000 < # < 3000 || 6000 < # < 10000 &] 
    
    (* Final image (thick border on binarized filled dilated ccs) *) 
    res = ImageAdd[f, Dilation[MorphologicalPerimeter[FillingTransform[ 
        MorphologicalPerimeter[Dilation[ccs, DiskMatrix[9]]]]], 2]] 
    
  • +0

    ありがとう私はパッドの領域、つま先面積、つま先2と3の間の角度、足の長さ、幅、幅などのいくつかの選択された機能に基づいて、pugmarkを分析する必要がある理由を教えてください。分析された画像とトレーニングセットとを比較した後、どのタイガーのプッグマークであるかを区別できる必要があります。 – Suvidha

    +0

    @ user2067773わかりません。しかし、あなたが説明したこの方法の一歩をスキップしているようです:まず、あなたが持っているものがプッグマークかどうかを判断する方法が必要です。そうでなければ、それを分析するのは無意味です。 – mmgp

    +0

    ええ、そうです。私はそれについて考えなかった。しかし、私の最初の関心事は、バックグラウンドをマスクして、さらに分析するためにpugmarkの鮮明な画像を得ることです。 – Suvidha

    3

    使用されるアルゴリズムは、各画像に特異的であり得るパラメータの設定を必要とするので@のmmpgの答えでのアプローチは、不安定であり得ます。この問題は、形状に関する事前の知識を持つパラメトリックモデルではよりよく近づくと思われます。

    Active Shape Modelsフレームワークは、形状の境界を反復的に近似します。のみ

    Initialization of the shape

    輪郭がアンカーポイントによって定義される(青ダニによって示される:最初に、(画像は単に例示ではなく、アルゴリズムの実際の出力である)は、いくつかの平均形状とそれを初期化しますクラッタを避けるために手の平)。各反復で、アルゴリズムは各アンカーポイントの直交方向を考慮し、各距離で境界の確率を推定します(通常はイメージグラジエントを使用しますが、複雑な場合があります)。たとえば、histograms of textons )。ここで赤点をその分布のハイライトのarg-最大値:

    Modes of the edge-ness distribution

    次に、新しい輪郭は、形状の事前分布を乗じたもの分布を最大化するデータに適合です。あなたは非自明な形状分布を持っていると思います。実際には

    The new contour

    :前に均一と仮定すると、新しい輪郭は次のようになります。見積もるには、pugmarkマスクが手作業でラベル付けされた画像のトレーニングセットが必要です。

    this MATLAB implementationをお試しください。

    関連する問題