Halcon学习之hough直线变换

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

Halcon学习之hough直线变换
*Detect lines in an image with the help of the Hough transform
*using the edge direction as additional information and return it both in HNF and as *regions
hough变换指的是把空间系坐标转化到另一个坐标系,减少直线或者其他形状被描述时候需要的维数,通过转换后的累积,可以确定直线的位置或者圆的圆心。

个人的理解hough直线变换:
把(x, y) 坐标系中可能对直线做出贡献的点,利用梯度信息把其所有可能形成的所有直线(和梯度方向垂直),转化为极坐标系中的一点(Rou, Theta)(任意一条直线与原点的垂线段,角度和长度组成极坐标值),这样通过把(x,y)坐标系中所有的点进行转化,并把结果在极坐标系中进行累积,可以在累积空间中把真正直线所在的一些点累积的很高,从而可以确定直线的极坐标,转换回去就是直线。

read_image( Image,'fabrik')
rectangle1_domain(Image, ImageReduced, 170,280,310,360)
注意:这里是一个重要的剪切出ROI区域操作,通过图形窗口的‘创建ROI’功能可以手动创建,这里依然对此函数的各个参数做出说明,方便以后非人工操作时候的程序编写:
rectangle1_domain(Image:ImageReduced:Row1, Column1,Row2,Column2: )
后面四个参数是矩形的两个对角点。

当自动取RoI时候,需要用到:
gen_rectangle2( : Rectangle : Row, Column, Phi, Length1, Length2 : )
中心点位置,角度Phi,半个变长的长度Lengh1,Lengh2,然后利用reduce_domain来确定ROI
sobel_dir(ImageReduced,EdgeAmplitude,EdgeDirection,' sum_abs', 3)
sobel算子来计算边缘的幅值和方向,幅值计算方式是绝对值和除以4,模板大小是3
注意这里面的EdgeDirection结果是一个direction类型的图
dev_set_color('red')
threshold(EdgeAmplitude, Region, 55,255)
reduce_domain(EdgeDirection,Region,EdgeDirectionReduce d)
* start use hough transform using the direction information
hough_lines_dir( EdgeDirectionReduced,HoughImage, Lines, 4, 2, 'mean', 3, 25, 5, 5, 'true', Angle, Dist)
hough_lines_dir(ImageDir : HoughImage, Lines : DirectionUncertainty, AngleResolution, Smoothing, FilterSize, Threshold, AngleGap, DistGap, GenLines : Angle, Dist)利用边缘的梯度信息进行hough变换来检测直线,并把结果以Hessian normal form (HNF)格式返回(最后得到一组angle和dist)
gen_region_hline(LinesHNF, Angle,Dist)
生成这些Hessian线条
dev_display('margin')
setcolor,show......
总结:
Hough_line_dir主要用到了经过阈值处理后的边缘方向,即梯度信息来生成相应的Hessian线条。

相关文档
最新文档