|
楼主 |
发表于 2010-2-5 23:47
|
显示全部楼层
谢谢chaching!你的批评是对的,我细心的查找了一下,的确有几处错误,是我太粗心了。谢谢你的指正。
改正之后的程序仍然存在问题,请你再给看看。谢谢!
三楼的程序是
function Circle_Recognize_test
[DATAfile DATApath]=uigetfile('1361.JPG');
FileNamel=[DATApath DATAfile];
I1=im2bw(imread(FileNamel)); %读入图片到矩阵I1
[h1,w1]=size(I1);
yLine=[]; %存放y方向扫描的中点集
for r1=1:h1
x1=find(I1(r1,:)==1); %采用median函数求中点可以去除噪声干扰
if (length(x1)>=2),yLine=[yLine;[median(x1),r1]]; end;
end;
xLine=[];
for c1=1:w1
y1=find(I1(:,c1)==1);
if (length(y1)>=2),xLine=[xLine;[c1,median(y1)]]; end;
end;
px=polyfit(xLine(:,1),xLine(:,2),1);%直线拟合
py=polyfit(yLine(:,2),yLine(:,1),1);
xLine1=[round(xLine(:,1)), round(polyval(px,xline(:,1)))]; %得到拟合直线
yLine1=[round(polyval(py,yline(:,2))), round(yLine(:,2))];
x0=round((py(2)+py(1)*px(2))/(1-px(1)*py(1))); %计算两条直线交点
y0=round(px(1)*x0+px(2));
I2=I1;
for k=1:size(xLine1,1),I2(xLine1(k,2),xLine1(k,1))=1 end;%画直线
for k=1:size(yLine1,1),I2(yLine1(k,2),yLine1(k,1))=1 end;
I2(y0,x0)=1;%画交点
figue, imshow(I2),axis on;title(sprintf('圆心坐标为:(%d,%d)',x0,y0));
错误显示为:??? Undefined function or variable "xline". 麻烦你再给看看,我现在对MATLAB还不熟悉,谢谢了! |
|