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;