《霍夫变换详解》PPT课件.ppt
hough translation霍夫变换检测直线,基本原理,霍夫变换利用点和线之间的对偶性,将图像空间中直线上离散的 像素点 通过参数方程映射为霍夫空间中的 曲线,并将霍夫空间中多条曲线的 交点 作为直线方程的参数 映射为图像空间中的 直线。给定直线的参数方程,可以利用霍夫变换来检测图像中的直线。,平面上的直线可以用y=kx+q表示,,(a)image space(b)hough space,图像空间中,同一直线上的点的斜率和截距相同,满足 yi=kxi+q 参数方程 q=-xk+y 直线对应于霍夫空间中的点(k,q)。,(k,q),一个点的情况:,图像空间中,一个点对应霍夫空间中的一条直线。,(a)image space(b)hough space,过同一点的直线,在霍夫空间中所对应的点在一条直线上。,(x1,y1),(a)image space(b)hough space,两个点的情况:,霍夫空间中的交点,确定了一组参数(k,q)。将(k,q)代入直线方程 y=kx+q,可以描述图像空间中过A,B两点的直线。,(k,q),给定具体的三个点:,图像空间中共线的点,在霍夫空间对应的直线相交于一点。,(a)image space(b)hough space,(1,-1),点和线的对偶性,(1)图像空间中的点,对应霍夫空间中的直线。(2)图像中的直线,对应霍夫空间中的点。(3)共点的直线,在霍夫空间中对应的点在一条直线上。(4)共线的点,在霍夫空间中对应的直线交与一点。,给定具体的五个点:,(a)image space(b)hough space,选择由尽可能多直线汇成的点,如A和B。,A,B确定了两组参数(k,q),代入直线方程y=kx+q,可以描述图像空间中对应的直线。,(a)image space(b)hough translation,y=x-1,y=1,特殊情况,,(a)Image space,q=-2k+4q=-2k+3q=-2k+1,q=-xk+y无法确定图像空间中的垂线。,转化为极坐标下的参数方程:,x1cos=cos2y1sin=sin2,x1cos+y1sin=,图像空间中的点,对应了霍夫空间中的曲线。曲线的交点确定了一组参数,能够描述图像空间中的特定直线。,(1)给定参数方程,可以利用霍夫变换检测图像中的任何图形。(2)霍夫空间中,曲线的交点次数越多,所代表的参数越确定,画出的图形越饱满。,matlab实现,BW=imread(chepai.jpg);/1.二值化BW=im2bw(BW);/2.canny边缘检测thresh=0.01,0.17;sigma=2;%定义高斯参数 f=edge(double(BW),canny,thresh,sigma);/3.霍夫变换 H,theta,rho=hough(f,RhoResolution,1);peak=houghpeaks(H,2);hold on,/4.直线检测 lines=houghlines(f,theta,rho,peak);figure,imshow(f,),title(Hough Transform Detect Result),hold on for k=1:length(lines)xy=lines(k).point1;lines(k).point2;plot(xy(:,1),xy(:,2),LineWidth,4,Color,1 0 0);end,原图,二值化,canny边缘检测,霍夫变换直线检测,谢谢!,