2016-04-22 23 views
-1

私はウィーナーフィルタを適用して、ひびのエッジエッジ検出器を使用しました。あなたの唯一の亀裂を取得している場合今、私はMATLAB画像処理でマークされた領域の領域を見つけよう

enter image description here

+0

私は自分でそれを自分で行うことができると思います。エリアを選ぶための基準は何ですか? –

+0

@David - Anderのコメントに基づいて拡張するために、以下を含む簡単なテストケースを提供することができますか?1) "画像"用の行列(例えば、白黒領域を表す10x10ピクセルの '論理配列')。 2)黄色の線を表す同じサイズのマトリックス。 3)1)&2)を使用して希望の出力? –

+0

亀裂だけでなく、亀裂を囲む領域、つまり全ての亀裂からなる長方形の領域 –

答えて

0

(これは、下図の黄色でマークされているだけでなく、周辺白画素の領域ではありません)亀裂の影響を受けて全領域を見つけたいです最終的なバイナリイメージは、面積の近似計算のためのいくつかのトリックを試すことができます、それは非常に簡単なテクニックですが、あなたの問題のために動作する可能性があります。

1)すべての白いピクセルのxとyのインデックスを見つけて(MATLAB find()コマンドでそれを行います)、画像のすべての白いピクセルの重心であるxとy座標の平均を求めます。重心 などから全白画素の距離を見つける:

d = sqrt((x-xc).^2+(y-yc).^2)

上、あなたの白人の質量の中心に対応する全ての白人の距離のアレイを与える最大距離を見つけるととしてその距離を選択します仮想円の半径。今度はこのサークルの領域を見つけてください。

2)構造を異なるブロブとして取得する場合は、各ブロブのバウンディングボックスを抽出し、各バウンディングボックスの面積を計算し、すべての領域を追加します。

3)もう1つの方法は、ブロブの楕円領域を計算することです。あなたは長軸と短軸から得ることができ、すべての楕円の領域を追加します。

4)また、この問題に対処するための複雑な手法がいくつかあります(Convex Hullなど)。あなたはregionpropsから凸包を見つけることができます、これはあなたに各ブロブの凸包領域を与えるでしょう。

0

「クラックの影響を受けた領域」をどのように定義するかは100%わかりませんが、スケッチに基づいて、クラックイメージの凸包になる可能性があります。だから、エッジのバイナリイメージから始まる:あなたの画像の上部付近のそれらの直線が同様に亀裂としてカウントされるようにしている場合を除き

もちろん
[X,Y] = find(edges); 
[~,area] = convhull(X,Y) 

、彼らが最初に何とかedgesから削除する必要があります。

関連する問題