【问题标题】:Selecting an ellipse as a region of interest (ROI)选择一个椭圆作为感兴趣区域 (ROI)
【发布时间】:2014-04-04 22:14:37
【问题描述】:

我使用imellipse 选择一个椭圆作为我的感兴趣区域 (ROI)。问题是我要选择的椭圆大约是 45 度,而当我使用imellipse 时,它似乎水平或垂直都是 90 度。

如何改变椭圆的方向?

谢谢。

【问题讨论】:

    标签: matlab ellipse roi


    【解决方案1】:

    您需要旋转椭圆的坐标。像这样:

    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')
    

    要填充椭圆,创建蒙版,请使用roifillroipoly

    w=getfield(imfinfo('pout.tif'),'Width');
    h=getfield(imfinfo('pout.tif'),'Height');
    bw = roipoly(zeros(h,w),exyRot(:,1),exyRot(:,2));
    

    【讨论】:

    • 感谢您的回复。我可以使用它来选择 ROI,例如 ROI 为white,图像的其余部分为balck
    • @user3481560 当然,你有图像处理工具箱吗?
    • 是的,我有图像处理工具箱。我正在使用的程序的一部分,我做了:roi = imellipse;,我该如何结合你的建议?非常感谢
    • @user3481560 哦,我现在明白了。您可以提取椭圆顶点并旋转坐标。我会用一个例子来更新我的答案......
    • 非常感谢您的回复。抱歉,我无法投票,因为我需要 15 的声誉
    猜你喜欢
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    • 2016-04-25
    • 1970-01-01
    • 2017-06-05
    • 1970-01-01
    • 2011-08-10
    相关资源
    最近更新 更多