文档介绍:: .
矩阵中元素的最
大值对应原始图像中最长的直线。
(3)检测出记数矩阵的最大的元素所对应的列坐标 θ,θ 即为这条直线的法线与 X
轴的夹角。因此我们可以通过 θ 角来确定直线的倾斜角度,进而对图像进行矫正。
图 6 倾角矫正前图像
Hough 变换法矫正图像程序实现如下:
bw=edge(l,'sobel','horizontal');%检测图像边缘直线
[m,n]=size(bw);%计算图像大小
S=round(sqrt(m^2+n^2));%S 可以取到的最大值ma=180;%θ角最大值
r=zeros(md,ma);%产生初值为零的计数矩阵
for i=1:m
for j=1:n
if bw(i,j)==1
for k=1:ma
ru=round(abs(i*cos(k*)+j*sin(k*)));
r(ru+1,k)=r(ru+1,k)+1;%对矩阵记数
end
end
end
end
[m,n]=size(r);
for i=1:m
for j=1:n
if r(i,j)>r(1,1)
r(1,1)=r(i,j);
c=j;%把矩阵元素最大值所对应的列坐标送给 c。
end
end
end
if c<=90
rot=-c; %确定旋转角度
else
rot=180-c;
end
pic=imrotate(l,rot,'crop'); %对图片进行旋转,矫正图像
下面给出了 Hough 变换法对倾斜图像进行矫正后的图像:图 7 Hough 变换法对图 矫正后图像
2 Radon 变换法
我们知道,一条直线沿它的法线方向投影所得的投影最长,而沿与其平行方向投影
则所得的投影最短。Radon 变换理论就是这样一种投影理论。用这种方法可以检测图像
中的直线。
Radon 变换的定义:二元函数 f(x,y)的投影是在某一方向上的线积分,例如 f(x,y)
在垂直方向上的线积分是 f(x,y)在 x 方向上的投影,在水平方向上的线积分是在 y 方向
上的投影,沿 y'方向的线积分是沿 x'方向上的投影。投影可沿任意角度进行,通常 f(x,y)
的 Radon 变换是 f(x,y)平行于 y’轴的线积分,格式如下:
R (x') f (x'cos y'sin, x'sin y'cos)dy' ()
x' cos sin x
y' sin cos y
其中 ()图 8 矩形函数在水平垂直方向和沿 θ 角方向的投影
Radon 变换与计算机视觉中的 Hough 变换很相似,我们可以利用 Radon 变换来检
测图像中的直线的倾斜角度[4]。利用 Radon 变换检测直线倾斜角度的具体步骤为:
(1)用 edge 函数计算图像的边缘