matlab 读取坐标

来源:百度知道 编辑:UC知道 时间:2024/04/29 21:23:53
在图片上有很多块椭圆黑块,如何用matlab读取椭圆圆心的坐标?急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急!助小弟解决问题有追加分数~!
是有多个黑斑,不是只有一个
我也不知道哪个点是椭圆的圆心啊?

%这是我参加建模竞赛编写的程序
%你在MATLAB中运行一下就完全明白
%必须在MATLAB7.0及以上版本才可实现
BW=imread('image.bmp');
Imshow(BW);
figure;imcontour(BW);
%BWBOUNDARIES 这个函数可提取各椭圆边界坐标
CE=bwboundaries(BW);
%CE为一元包数组,返回的各椭圆边界坐标及外边框坐标

O1=CE{2,1};
n=length(O1);
h1=min(O1(1:n,1));
Rmin=h1;
k=1;
for i=1:n
if O1(i,1)==h1
r11(k)=O1(i,2);
k=k+1;
end
end
RminC=mean(r11);
h2=max(O1(1:n,1));
Rmax=h2;
k=1;
for i=1:n
if O1(i,1)==h2
r12(k)=O1(i,2);
k=k+1;
end
end
RmaxC=mean(r12);
h3=min(O1(1:n,2));
Cmin=h3;
k=1;
for i=1:n
if O1(i,2)==h3
r13(k)=O1(i,1);
k=k+1;
end
end
CminR=mean(r13);
h4=max(O1(1:n,2));
Cmax=h4;
k=1;
for i=1:n
if O1(i,2)==h4
r14(k)=O1(i,1);
k=k+1;
end
end
CmaxR=mean(r14);
R1o1=mean([(Rmin+Rm