MATLAB中围绕点裁剪圆形感兴趣区域

3

enter image description here

我有一张图片,想要在一个点周围裁剪出圆形区域。我在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)周围的圆形区域吗?谢谢。

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)

1

是的,我明白了。我做了类似这样的事情:

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

vesseltry现在是我的新图像,具有圆形感兴趣区域...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接