1、主要内容Finding lines in an image(图像直线检测)Using orthogonal coordinate(使用直角坐(使用直角坐标系)标系)Using Polar Coordinates(使用极坐标)给定一幅图像(一般为二值图像)中的点集合,如何检测直线?一种解决方法:任选一对儿点,决定一条线,然后测试所有其他点是否接近这条线,从而得出接近这条特殊线的所有点的子集。该方法比较复杂。霍夫变换用来检测图像中的直线。xyUsing orthogonal coordinate xymbm0b0image spaceHough space图像空间中的一条线对应Hough空间中的一
2、个点。Using orthogonal coordinate图像空间中的一个点(x0,y0)能映射为Hough空间中的什么?Using orthogonal coordinatexymbimage spaceHough spaceb=-x0m+y0,这是Hough空间中的一条线x0y0Using orthogonal coordinate在hough空间中,过点(x0,y0)和点(x1,y1)的直线如何表示?image spaceHough spaceUsing orthogonal coordinateb=x1m+y1(x0,y0)(x1,y1)Hough空间中两条线的交点用来表示过点空间中
3、两条线的交点用来表示过点(x0,y0)和和点点(x1,y1)的直线的直线 Using orthogonal coordinateImage SpaceUsing orthogonal coordinate在Hough空间中找某些点,通过这些点的线数最多。如左图所示的A点和B点,分别有三条线通过这两点。Hough SpaceImage SpaceA(0,1)即m=0,b=1即图像空间中斜率为0,截距为1的直线B(1,-1)即m=1,b=-1即图像空间中斜率为1,截距为-1的直线问题:Hough变换的这种实现方式(y=mx+b)不能表示垂直线,因为垂直线的斜率为无穷大。能否用别的直线能否用别的直线
4、的参数化方式呢的参数化方式呢?哈!有了!哈!有了!极坐标方式极坐标方式Using Polar Coordinates设直线上的任意点为则斜率为:Using Polar CoordinatesrxyUsing Polar Coordinates这样经过Hough变换,图像空间中的每个点(x,y)就被映射为一个(r,)空间中的正弦曲线。而图像空间中共线的点所对应的(r,)空间中正弦曲线相交于一点(r,)。问题转换把在图像空间中检测直线的问题转化为在极坐标参数空间中找通过点(r,)的最多正弦曲线数的问题。如何检测参数空如何检测参数空间中这样的点?间中这样的点?Image Space例子步骤:1.离散
5、化。=-45,0 ,45 ,90 2.按点的坐标(x,y)和每个角度求求r(x,y)-4504590(2,0)1.421.40(1,1)011.41(2,1)0.722.11(1,3)-1.412.83(2,3)-0.723.53(4,3)0.744.93(3,4)-0.734.943 统计 出现的次数。最大次数3出现则相对应的图像空间中的线分别为:和霍夫变换检测到的直线霍夫变换检测到的直线总结根据直角坐标系和极坐标系变换域之间的关系,总结霍夫变换具有如下主要性质:直角坐标系中的一点对应于极坐标中的一条正弦曲线变换域极坐标系中一点对应于直角坐标系中的一条直线直角坐标系一条直线上的N个点对应于极坐标系中共点的N条曲线。作业:1 Hough变换如何检测圆?2 实现Hough直线检测。谢谢大家!