3

ここに画像の説明を入力

画像があり、ポイントの周りの円形の関心領域をトリミングしたいと考えています。MATLABで次のことを行いました:

  vessel=imread('vessel.jpg');
  imshow( vessel)
  t = 0:pi/20:2*pi;
  xc=230; % point around which I want to extract/crop image
  yc=79;
  r=20;   %Radium of circular region of interest
  xcc = r*cos(t)+xc;
   ycc =  r*sin(t)+yc;
   roimaskcc = poly2mask(double(xcc),double(ycc), size(vessel,1),size(vessel,2));
   pr_gccc = find(roimaskcc);
   roimean_cc= mean(vessel(pr_gccc));
  figure, imshow(roimaskcc)

roimaskcc は正しいですが、次の操作を行うと、nX1 マトリックスで表示されますが、マスクの下の関心領域では表示されません。

  vessel_undermask=vessel(roimaskcc==1);

誰でもできますか?関心のあるポイント(xc、yc)の周りの円形の関心のある領域を抽出するのに役立ちます。ありがとう

4

2 に答える 2

4

あなたがしているのはvessel、マスクの外側からすべてを抽出することです。循環行列のようなものはないため、Matlab の解決策は、マスク内のすべての値のベクトルを出力することです。

それは技術的には正しいですが、そのベクトルを扱うのはかなり難しい場合があります。別の解決策は、データ マトリックスを正方形のままにして、マスクの外側のすべてを に設定することNaNです。

% make a copy      
vessel_undermask = vessel;

% NaN everything outside the mask (in R, G and B layers)  
vessel_undermask(repmat(~roimaskcc,[1,1,3])) = NaN;

imshow(vessel_undermask)

これにより、操作がいくらか簡単なマトリックスが得られます。

ご了承ください

vessel_undermask(~isnan(vessel_undermask)) ==  vessel(roimaskcc)
于 2013-04-15T13:18:19.853 に答える
1

よし、分った。私はそのようなことをしました:

           vesseltry=vessel;
          vesseltry(~roimaskcc)=0;

ベッセルトリーは、円形の関心領域を持つ私の新しい画像になりました...

于 2013-04-15T13:17:43.383 に答える