【发布时间】:2014-04-04 22:14:37
【问题描述】:
我使用imellipse 选择一个椭圆作为我的感兴趣区域 (ROI)。问题是我要选择的椭圆大约是 45 度,而当我使用imellipse 时,它似乎水平或垂直都是 90 度。
如何改变椭圆的方向?
谢谢。
【问题讨论】:
我使用imellipse 选择一个椭圆作为我的感兴趣区域 (ROI)。问题是我要选择的椭圆大约是 45 度,而当我使用imellipse 时,它似乎水平或垂直都是 90 度。
如何改变椭圆的方向?
谢谢。
【问题讨论】:
您需要旋转椭圆的坐标。像这样:
npts = 1e4;
t = linspace(0,2*pi,npts);
theta = pi/4;
aspect = [5 1]; % [x y]
x = aspect(1)*sin(t+theta);
y = aspect(2)*cos(t);
plot(x, y);
如果要使用imellipse在图像上绘制椭圆,可以提取顶点并进行变换:
figure, imshow('pout.tif');
h = imellipse;
exy = h.getVertices
theta = pi/12;
M = [cos(theta), sin(theta); -sin(theta), cos(theta)]
exy_centered = bsxfun(@minus,exy,mean(exy))
exyRot = bsxfun(@plus,exy_centered*M,mean(exy));
hold on
plot(exyRot(:,1),exyRot(:,2),'r') % orig: plot(exy(:,1),exy(:,2),'r')
要填充椭圆,创建蒙版,请使用roifill 或roipoly:
w=getfield(imfinfo('pout.tif'),'Width');
h=getfield(imfinfo('pout.tif'),'Height');
bw = roipoly(zeros(h,w),exyRot(:,1),exyRot(:,2));
【讨论】:
white,图像的其余部分为balck?
roi = imellipse;,我该如何结合你的建议?非常感谢
15 的声誉