matlab图像识别椭圆的代码_[MATLAB图像处理] 关于椭圆灰度检测的程序,帮忙看一下,我看不太懂...

关于椭圆灰度检测的程序,帮忙看一下,我看不太懂

format long

P=imread('picture.bmp');

lefttop=[100 240

142 244

170 258

450 545

471 543];

rightbutton=[200 368

375 466

591 685

200 330

537 624];

for circle=1:5

circle

if(circle~=1)

clear u;

clear v;

end

k=1;

for i=lefttop(circle,1):lefttop(circle,2);

flag=0;

for j=rightbutton(circle,1):rightbutton(circle,2);

if flag==0 & P(i,j)<10

u(k)=i;

v(k)=j;

k=k+1;

flag=1;

elseif flag==1 & P(i,j)<10 & P(i,j+1)>200

u(k)=i;

v(k)=j;

k=k+1;

end

end

end

for j=rightbutton(circle,1):rightbutton(circle,2)

flag=0;

for i=lefttop(circle,1):lefttop(circle,2)

if flag==0 & P(i,j)<10

f1=0;

for temp=1:k-1

if u(temp)==i & v(temp)==j

f1=1;

end

end

if f1==0

u(k)=i;

v(k)=j;

k=k+1;

flag=1;

end

elseif flag==1 & P(i,j)<10 & P(i+1,j)>200

f1=0;

for temp=1:k-1

if u(temp)==i & v(temp)==j

f1=1;

end

end

if f1==0

u(k)=i;

v(k)=j;

k=k+1;

flag=1;

end

end

end

end

axis equal;

axis([1 768 1 1024]);

plot(u,v,'.');grid on ;hold on;

x=ones(k-1,5);

y=ones(k-1,1);

for i=1:k-1

x(i,

=[1 v(i) u(i) u(i)*v(i) v(i)*v(i) ];

y(i)=-u(i)*u(i);

end

[b,bint,r,rint,stats]=regress(y,x);

b

bint

stats

A=[2 b(4);

b(4) 2*b(5)];

B=[-b(3);-b(2)];

X=A\B

xo=(X(2)-512)/3.78

yo=(384-X(1))/3.78

xlswrite(strcat('d:/',num2str(circle),'.xls'),[u;v]');

end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值