www.pudn.com > eyedemo.rar > findline.m


% findline - 从边界图中寻找直线,返回其参数 
% 
% 使用:  
% lines = findline(image) 
% 
% 参数: 
%	image   - 输入图像 
% 
% 输出: 
%	lines   - 探测所得曲线参数的极坐标形式 
% 
 
function lines = findline(image) 
 
[I2 or] = canny(image, 2, 1, 0.00, 1.00); 
 
I3 = adjgamma(I2, 1.9); 
I4 = nonmaxsup(I3, or, 1.5); 
edgeimage = hysthresh(I4, 0.20, 0.15); 
 
 
theta = (0:179)'; 
[R, xp] = radon(edgeimage, theta); 
 
maxv = max(max(R)); 
 
if maxv > 25 
    i = find(R == max(max(R))); 
else 
    lines = []; 
    return; 
end 
 
[foo, ind] = sort(-R(i)); 
u = size(i,1); 
k = i(ind(1:u)); 
[y,x]=ind2sub(size(R),k); 
t = -theta(x)*pi/180; 
r = xp(y); 
 
lines = [cos(t) sin(t) -r]; 
 
cx = size(image,2)/2-1; 
cy = size(image,1)/2-1; 
lines(:,3) = lines(:,3) - lines(:,1)*cx - lines(:,2)*cy;