当前位置:文档之家› 霍夫变换matlab代码

霍夫变换matlab代码

%hough变换过程,针对直线处理,rhh即提取出的直线
R=rhh;
[x, y]=size(R);
d=zeros(314,2*(x+y));
for i=1:x %将图像二维空间的一个点映射到p=x*cos(theta)+y*sin(theta)方程对应的参数空间的一条曲线
for j=1:y
if(R(i,j)==1)
for theta=0.01:0.01:3.14
d(round(theta*100),round(i*sin(theta)+j*cos(theta)+x+y))= ...
d(round(theta*100),round(i*sin(theta)+j*cos(theta)+x+y))+1;
end
end
end
end
theta=0;
gmma=0;
for i=1:314 %寻找曲线相交最多的那个点,即找最大值
for j=1:2*(x+y)
if d(i,j)>gmma
gmma=d(i,j);
i0=i;j0=j;
theta=i/100; %求出参数空间内交点参数值
rou=j-x-y;
end
end
end
ex=0;ey=0;e=0;
for i=i0-20:i0 %曲线最大相交点附近>gmma/2点集加权平均值
for j=j0-20:j0+20
if d(i,j)> gmma/2
ex=ex+i*d(i,j);
ey=ey+(j-x-y)*d(i,j);
e=e+d(i,j);
end
end
end
xe=ex/e/100;
ye=ey/e;
figure(2);imshow(d) %形象的显示参数空间曲线

相关主题
文本预览
相关文档 最新文档