halcon 怎么通过多点产生一个虚拟圆
1个回答
展开全部
个人的理解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,EdgeDirectionReduced)
* 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
把(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,EdgeDirectionReduced)
* 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
东莞大凡
2024-11-19 广告
2024-11-19 广告
作为东莞市大凡光学科技有限公司的工作人员,对于halcon标定板有所了解。Halcon标定板是高精度相机标定的关键工具,通常采用实心圆点或方格作为标志点。我们公司提供的halcon标定板,具有高精度、稳定可靠的特点,适用于机器视觉领域的各种...
点击进入详情页
本回答由东莞大凡提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询