问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

给出一些椭圆上离散的点的横纵坐标,怎么用matlab拟合出椭圆方程...

发布网友 发布时间:2024-10-14 06:41

我来回答

2个回答

热心网友 时间:2024-10-21 19:45

M文件的代码如下:
function [newX,newY,v]=FitEllip(X,Y,N)
%本函数用最小二乘法拟合椭圆
%输入变量:X、Y为数据点坐标(列向量),N为输出椭圆上的点的数量
%输出变量:newX,newY为拟合的椭圆上的点的坐标(列向量)
%输出变量:v为拟合的椭圆参数,是一个5维行向量,v(1)、v(2)分别为长、短轴,v(3)、v(4)分别为椭圆中心点横、纵坐标,v(5)为长轴与x轴夹角

% a = fitellip(X1,Y1);
mx = mean(X);my = mean(Y); sx = (max(X)-min(X))/2; sy = (max(Y)-min(Y))/2; x = (X-mx)/sx; y = (Y-my)/sy;
% Build design matrix
D = [ x.*x x.*y y.*y x y ones(size(x)) ];
% Build scatter matrix
S = D'*D;
% Build 6x6 constraint matrix
C(6,6) = 0; C(1,3) = -2; C(2,2) = 1; C(3,1) = -2;
% Solve eigensystem
[gevec, geval] = eig(S,C);
% Find the negative eigenvalue
[NegR1, NegC] = find(geval < 0 & ~isinf(geval));
% Extract eigenvector corresponding to positive eigenvalue
A = gevec(:,NegC);
% unnormalize
a(1)=A(1)*sy*sy;
a(2)=A(2)*sx*sy;
a(3)=A(3)*sx*sx;
a(4)=-2*A(1)*sy*sy*mx -A(2)*sx*sy*my + A(4)*sx*sy*sy;
a(5)=-A(2)*sx*sy*mx -2*A(3)*sx*sx*my + A(5)*sx*sx*sy;
a(6)=A(1)*sy*sy*mx*mx + A(2)*sx*sy*mx*my + A(3)*sx*sx*my*my-A(4)*sx*sy*sy*mx -A(5)*sx*sx*sy*my+ A(6)*sx*sx*sy*sy;
a=a';

% get ellipse orientation
theta = atan2(a(2),a(1)-a(3))/2;
% get scaled major/minor axes
ct = cos(theta); st = sin(theta); ap = a(1)*ct*ct + a(2)*ct*st + a(3)*st*st; cp = a(1)*st*st -a(2)*ct*st + a(3)*ct*ct;
% get translations
T = [[a(1) a(2)/2]' [a(2)/2 a(3)]']; t = -inv(2*T)*[a(4) a(5)]'; cx = t(1); cy = t(2);
% get scale factor
val = t'*T*t; scale = 1 / (val-a(6));
% get major/minor axis radii
r1 = 1/sqrt(scale*ap);
r2 = 1/sqrt(scale*cp);
v = [r1 r2 cx cy theta]';

%判定长轴、短轴是否与r1、r2对应
if r1<r2
v=[r2 r1 cx cy theta+pi/2];
end

% 生成在椭圆上的N1个点
dx = 2*pi/N;
elliptheta = v(5);
Rad = [[cos(elliptheta) sin(elliptheta)]', [-sin(elliptheta) cos(elliptheta)]'];
for i = 1:N
ang = i*dx;
x = v(1)*cos(ang);
y = v(2)*sin(ang);
d11 = Rad*[x y]';
ellipX(i) = d11(1) + v(3);
ellipY(i) = d11(2) + v(4);
end

newX = ellipX;
newY = ellipY;

热心网友 时间:2024-10-21 19:50

我有一个思路:用参数方程表示椭圆,然后设法拟合参数。
具体说的话,椭圆的方程有5个自由度:长轴、短轴、(相对于标准位置椭圆的)旋转和平移。因此4个点是不够的,当然如果您这里限定少一些自由度的话问题就会变简单。
然后我想可以用霍夫变换的思路来求参数。
可以进一步讨论!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
华丽转身为什么在优酷看不了了之 《华丽转身:爱情不在服务区》txt全集下载 翡翠台华丽转身英文曲 matplotlib中plt.imshow函数画图出现的颜色问题 数字图像处理(c++ opencv):形态学图像处理-提取连通域 ...opencv做东西,网上的程序读着还可以,程序遇到问题不会改,一些函_百... 深度学习面试问题总结 | 传统图像处理——OpenCV 活虾如何在晚上保持存活状态进行保存? neu代表什么意思 民办学校和私立学校的区别是什么民办学校和私立学校的区别 ...战场上为何没有国民党军队?蒋介石倒是想派兵,美国没同意 超市出口的防盗系统叫什么名字? 宝宝早上吃什么早餐好 办公室要写一个制度,内容是说每个月公司都会举办一些员工活动的这么一个... 创新金牌鲁菜目录 黄芪,当归,白芷,辛荑泡茶喝有什么功效? 一个一向看我不顺眼的上司突然拥抱我一下,是什么意思? 有哪些必囤速食推荐呢? 日本有哪些名牌鞋或者衣服之类的? 求欧洲联盟杯的参赛资格?还有托托杯是什么? 联盟杯和冠军杯名额分配规则 5大联赛第几名可以参加联盟杯 上网痕迹的坏处 ...会在别人家电脑上留下你自己电脑的IP或者Mac记录?还是只有在蹭网时别... ...选项”中清除了上网记录,删除了所有上网痕迹,还是被人用软件查出来... 就是我每次上网之后都会清除上网记录,那么那些来修我电脑的人会不会通 ... 清除上网痕迹后,别人能否通过你的IP或者宽带用户名察看你的上网... qe政策是什么意思 量化宽松政策有哪些好处? m7400怎么清零? 铜陵泰科机电设备有限公司怎么样? 南通泰科电力设备科技有限公司怎么样? 怎么物理退烧最快 剑网三的普通师徒到多少级自动解除关系? ...我到80 了应该怎样走下去比如修为的获得,什么五行石 ,装备 修为问题,纠结了 茄子花蚬子烩玉米怎么做好吃 茄子炖蚬子的做法 玩陌陌的人都有哪些特征? 恩施到阜阳怎么坐车 身份证过期了!没带户口本、只有过期的身份证 能补办吗?户籍广东河源 身份证过期了怎么在外地补办 ...在婚后办理,名字加上女方的,属于夫妻共同财产吗? ...单位在编人员,签订聘用合同有效不?签的聘用合同受劳动合同法的保护不... 如果我发现了百度百科有两个或三个词条是同义词,怎样才能通知管理... 开空调能换气吗 豪沃按键开关使用说明 梦幻杀飞升队伍配置。。 ...和 129飞升狮驼 求组个副本 帮战 活动队伍。求高人指点最佳组合... 梦幻五开,准备飞升停129的队伍组合问题