| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 529 人关注过本帖
标题:框定区域
只看楼主 加入收藏
呼延菊
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2013-11-22
结帖率:50%
收藏
 问题点数:0 回复次数:0 
框定区域
我想使用椭圆框定图像中的区域,逐步求取椭圆的各项参数,最后画出椭圆包含整个目标区域,主要代码如下:
for i=1:m
    for j=1:2
    h(i,j)=status(i).Centroid(:,j);    %中心
    end
    h1(i)=status(i).Orientation;       %角度
    h2(i)=status(i).MajorAxisLength;   %长轴长
    h3(i)=status(i).MinorAxisLength;   %短轴长
    sum=sum+status(i).FilledArea;
end         %存储椭圆属性
theta1=h1(1);

x0=zeros(m,1);
y0=zeros(m,1);
a=zeros(m,1);
b=zeros(m,1);
x0(1)=h(1,1);
y0(1)=h(1,2);
a(1)=h2(1);
b(1)=h3(1);

for j=2:m
     x0(j)=(x0(j-1)+h(j,1))/2;  %中心坐标
     y0(j)=(y0(j-1)+h(j,2))/2;

     x1=abs((sin(abs(theta1*pi/180)))*(a(j-1)));
     y1=abs((cos(abs(theta1)*pi/180))*(a(j-1)));

     x2=abs((sin(abs((h1(j)*pi/180))))*(h2(j)));
     y2=abs((cos(abs(h1(j))*pi/180))*(h2(j)));
     %求椭圆参数
    a(j)=(sqrt((x0(j-1)-h(j,1))^2+(y0(j-1)-h(j,2))^2)+x1+x2);    %长轴

     b(j)=max(y1,y2);                                     %短轴
     % b=b+b;
     l1=sqrt((h(j,1)-x0(j-1))^2+(h(j,2)-y0(j-1))^2);
     l2=abs(h(j,1)-x0(j-1));
     l3=abs(h(j,2)-y0(j-1));
     theta1=acos((l1^2+l2^2-l3^2)/(2*l1*l2))*180/pi; %偏转角度
%      a(j)=a(j-1)+h(j);
%      x0=abs(x0+h(j,1))/2;             %椭圆中心坐标
%      y0=abs(y0+h(j,2))/2;
end
    theta=0:pi/100:2*pi;  
    x=a(m)*cos(theta)+x0(m);
    y=b(m)*sin(theta)+y0(m);
    z=plot(x,y);
    rotate(z,[0 0 1],theta1,[x0(m) y0(m) 0]);

可是最后画出来的图像只包含最后一部分,我明明计算的是所有的目标区域,实在找不出原因了,有没有知道我的程序错在哪里的同志,麻烦指点一下,多谢!!!
图片在附件里面,我的目标是用椭圆包围整个目标~谢谢!



图片附件: 游客没有浏览图片的权限,请 登录注册








搜索更多相关主题的帖子: status 中心 
2014-01-05 15:59
快速回复:框定区域
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023881 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved