8

私はMATLABを初めて使用しますが、色(私の場合は赤い境界)の識別に基づいて、指定された境界の内側から画像の一部を抽出できることを知りたいと思いました。関数は、最初に画像の境界をトレースし、次にそれをトレースします。その特定の境界の内側にある画像のその部分を抽出します。画像(人間の頭の画像)を添付しました。頭から脳の部分を抽出したかったので、画像の他の部分は無視する必要があります。次のコード(境界の場合は1、境界のない場合は0を表示)を使用してエッジを見つけようとしましたが、0しか表示されませんでした。

どんな助けでも大歓迎です。

添付のPS画像は、元の画像と境界のある画像を示しています。コードは境界のある画像で機能し、その境界の内側にある画像の部分を抽出します。

以下は私が試したコードです:

BW = edge(x)

BW = edge(x,'sobel')
BW = edge(x,'sobel',thresh)
BW = edge(x,'sobel',thresh,direction)
[BW,thresh] = edge(x,'sobel',...)

BW = edge(x,'prewitt')
BW = edge(x,'prewitt',thresh)
BW = edge(x,'prewitt',thresh,direction)
[BW,thresh] = edge(x,'prewitt',...)

BW = edge(x,'roberts')
BW = edge(x,'roberts',thresh)
[BW,thresh] = edge(x,'roberts',...)

BW = edge(x,'log')
BW = edge(x,'log',thresh)
BW = edge(x,'log',thresh,sigma)
[BW,threshold] = edge(x,'log',...)

BW = edge(x,'zerocross',thresh,h)
[BW,thresh] = edge(x,'zerocross',...)

BW = edge(x,'canny')
BW = edge(x,'canny',thresh)
BW = edge(x,'canny',thresh,sigma)
[BW,threshold] = edge(x,'canny',...)

ここに画像の説明を入力してください

4

2 に答える 2

4

問題のドメインをCT画像として提示したので。脳組織の領域を抽出するための良い提案があります。あなたが作ることができる良い仮定があります。

良い仮定:脳領域には頭蓋以外の骨(通常の場合)がなく、CTのいくつかの特性に基づいて、ハウンズフィールドを調べることで骨(この場合は頭蓋)を簡単に抽出(または除去)できます。スケール(http://en.wikipedia.org/wiki/Hounsfield_scale

0)正しいハウスフィールド単位を取得するには、3つの要素が必要ですi)元のピクセル値ii)勾配の再スケールiii)切片の再スケール(3つすべてを元のdicomヘッダーに配置でき、HUは高校の数学の知識に基づいて計算できます:y = mx + b、切片、傾き、入力値があるため)。

1)骨がどこにあるかがわかったら、頭蓋骨に囲まれたものを取得するには、画像を差し引く必要があります。

2)そして、MATLABコードを見て、ステップ1)を実行して、残りの部分から右のレゴインをセグメント化できることを確認します。

于 2011-07-15T08:55:13.113 に答える
3

記録のためだけに。Mathematicaコード:

ここに画像の説明を入力してください

編集

輪郭をトレースせずに脳を抽出するだけの場合は、実際には簡単です。

ここに画像の説明を入力してください

于 2011-07-16T03:37:55.253 に答える