霍夫变换(详解)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

平面上的直线可以用y=kx+q表示,
(k',q')
(a)image space
(b)hough space
图像空间中,同一直线上的点的斜率和截距相同,满足 yi= kxi + q 参数方程 q= -xk+y 直线对应于霍夫空间中的点(k,q)。
一个点的情况:
(x1,y1)
(a)image space 图像空间中, 一个点对应霍夫空间中的一条直线。
给定具体的三个点:
y=x-1
(1,-1) (a)image space 图像空间中共线的点, 在霍夫空间对应的直线相交于一点。 (b)hough space
点和线的对偶性
(1)图像空间中的点,对应霍夫空间中的直 线。 (2)图像中的直线,对应霍夫空间中的点。 (3)共点的直线,在霍夫空间中对应的点在 一条直线上。 (4)共线的点,在霍夫空间中对应的直线交 与一点。
(1)给定参数方程,可以利用霍夫变换检测 图像中的任何图形。 (2)霍夫空间中,曲线的交点次数越多,所 代表ຫໍສະໝຸດ Baidu参数越确定,画出的图形越饱满。
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
给定具体的五个点:
(a)image space
(b)hough space
选择由尽可能多直线汇成的点,如A和B。
y=x-1 y=1 (a)image space (b)hough translation
A,B确定了两组参数(k,q),代入直线方程y=kx+q, 可以描述图像空间中对应的直线。
特殊情况,
(b)hough space
过同一点的直线,在霍夫空间中所对应的点在一条直线上。
两个点的情况:
y=kx+q
(k,q)
(a)image space 霍夫空间中的交点,确定了一组参数(k,q) 。 将(k,q)代入直线方程 y=kx+q , 可以描述图像空间中过A,B两点的直线。
(b)hough space
原图
二值化
canny边缘检测
霍夫变换直线检测
谢谢!
hough translation 霍夫变换检测直线
基本原理
霍夫变换利用点和线之间的对偶性,将 图像空间中直线上离散的 像素点 通过参数方 程映射为霍夫空间中的 曲线 ,并将霍夫空间 中多条曲线的 交点 作为直线方程的参数 映射 为图像空间中的 直线。 给定直线的参数方程,可以利用霍夫变 换来检测图像中的直线。
q q=-2k+4 q=-2k+3 q=-2k+1
(a)Image space q = -xk+y 无法确定图像空间中的垂线。
(b) hough space
k
转化为极坐标下的参数方程:
x1cosθ+y1sinθ=ρ
x1cosθ=ρcos2θ y1sinθ=ρsin2θ
图像空间中的点,对应了霍夫空间中的曲线。 曲线的交点确定了一组参数,能够描述图像空间中的特定直线。
相关文档
最新文档