2011-01-10 142 views
8

MATLABで円を切り抜く必要があります。MATLAB:画像から円を切り出す方法

私は虹彩のセグメンテーションを実行する必要があり、私は虹彩の中心点と半径を特定しました。私はそれを画像から切り取る必要があります。

私はci(1)がX座標ci(2)がY座標であり、ci(3)が円の半径であるベクトルciを持っています。

答えて

10

これを行う1つの方法は、円の内側に1を、外側にゼロを持つバイナリマスクを作成することです。この配列を使用して、円の外側のすべてをNaNでマスクするか、マスク内のイメージのピクセル値を読み取ることができます。

円のマスクを作成するには、簡単な方法は、このように、アイリスを中心に配列し、しきい値距離を調整作成することです:

[xx,yy] = ndgrid((1:imageSize(1))-ci(1),(1:imageSize(2))-ci(2)); 
mask = (xx.^2 + yy.^2)<ci(3)^2; 
+0

私の答えはそこに行く... =)非常に素晴らしいです。 +1。 画像を分割するには、マスクを乗算するだけです。外にゼロがあるとしましょう。 – Marnix

+0

@Marnix:申し訳ありません:)。とにかく 'image(〜mask)= NaN;'のようなNaNを外に置くと、 'imshow(image、[])のオートスケールが画像のすべての0によってスローされないようにすることをお勧めします。 – Jonas

+0

私はこのエラーがあります:??? '論理'型の入力引数のための未定義の関数またはメソッド 'sqrt'。この線のマスク= sqrt((xx。^ 2 + yy。^ 2)

関連する問題