32、Rake工具(拟合直线)
3、pts_to_best_line( : Line : Rows, Cols, ActiveNum : Row1, Column1, Row2, Column2) 1
例子一:rake算子中的Transition = 'negative' 2
例子二:rake算子中的Transition = 'positive' 5
例子三:rake算子中的Transition = 'all' 7
算子说明
1、draw_rake( : Regions : WindowHandle, Elements, DetectHeight, DetectWidth : Row1, Column1, Row2, Column2)
功能:根据在指定窗口绘制一条直线,和输入卡尺参数,显示出卡尺的样子即检测ROI及检测方向(只是显示给
操作员看作用)。并输出绘制的直线坐标(线面拟合直线需要用到)。
Regions:输出一个region
WindowHandle:输入指定窗口句柄
Elements:输入卡尺的个数
DetectHeight:输入卡尺的高度
DetectWidth:输入卡尺的宽度
Row1, Column1, Row2, Column2:输出直线的起始坐标和终点坐标
2、rake(Image : Regions : Elements, DetectHeight, DetectWidth, Sigma, Threshold, Transition, Select, Row1, Column1, Row2,
Column2 : ResultRow, ResultColumn)
功能:根据输入一张图像和相应的对比度参数拟合一条直线点。
Image:输入图像
Regions:输出卡尺的样子即检测ROI及检测方向(只为显示用)
DetectHeight:输入卡尺的高度
DetectWidth:输入卡尺的宽度
Sigma:输入平滑参数(滤波因子)
Threshold:输入对比度阈值
Transition:输入极性: positive表示由黑到白 negative表示由白到黑 all表示以上两种方向
Select,:输入检测方向上的第几个符合对比度的点作为拟合点。first表示选择第一点 last表示选择最后一点 max
表示选择边缘幅度最强点。
Row1, Column1, Row2, Column2:输入由1产生的直线坐标点。
ResultRow, ResultColumn:输出用于拟合直线的点
3、pts_to_best_line( : Line : Rows, Cols, ActiveNum : Row1, Column1, Row2, Column2)
功能:根据输入的拟合点输出拟合的直线。
Line:输出一个reign_line
ActiveNum:最小有效点数
Row1, Column1, Row2, Column2:输出拟合后的直线坐标
4、下面测试图像说明:
如下测试图像标注有3条直线,这三条直线的对比度都是10,它们的极性分别是
第一条直线极性:由黑道白('positive')
第二条直线是:由白到黑('negative')
第三条直线是: 由白到黑('negative')
例子一:rake算子中的Transition = 'negative'
- Transition = 'first'
read_image (Image77, '77.bmp')
draw_rake (Regions, 3600, 15, 50, 5, Row1, Column1, Row2, Column2)
rake (Image77, Regions1, 15, 50, 5, 1, 10, 'negative', 'first', Row1, Column1, Row2, Column2, ResultRow, ResultColumn)
pts_to_best_line (Line, ResultRow, ResultColumn, 2, Row11, Column11, Row21, Column21)
- Transition = 'last'
read_image (Image77, '77.bmp')
draw_rake (Regions, 3600, 15, 50, 5, Row1, Column1, Row2, Column2)
rake (Image77, Regions1, 15, 50, 5, 1, 10, 'negative', 'last', Row1, Column1, Row2, Column2, ResultRow, ResultColumn)
pts_to_best_line (Line, ResultRow, ResultColumn, 2, Row11, Column11, Row21, Column21)
- 分析:
当极性为白到黑('negative')的直线有两条,分别是②, ③;在检测方向上(由左到右,看卡尺样式中的蓝色箭头)Transition = 'first'属于②直线,Transition = 'last'属于③直线。所以分别检测到②, ③
例子二:rake算子中的Transition = 'positive'
1、Transition = 'first'
read_image (Image77, '77.bmp')
draw_rake (Regions, 3600, 15, 50, 5, Row1, Column1, Row2, Column2)
rake (Image77, Regions1, 15, 50, 5, 1, 10, 'positive', 'first', Row1, Column1, Row2, Column2, ResultRow, ResultColumn)
pts_to_best_line (Line, ResultRow, ResultColumn, 2, Row11, Column11, Row21, Column21)
read_image (Image77, '77.bmp')
draw_rake (Regions, 3600, 15, 50, 5, Row1, Column1, Row2, Column2)
pts_to_best_line (Line, ResultRow, ResultColumn, 2, Row11, Column11, Row21, Column21)
当极性为黑到白('positive')的直线只有一条,就是①;在检测方向上(由左到右,看卡尺样式中的蓝色箭头)Transition = 'first'还是,Transition = 'last'检测到的直线都是①
例子三:rake算子中的Transition = 'all'
1、Transition = 'first'
read_image (Image77, '77.bmp')
draw_rake (Regions, 3600, 15, 50, 5, Row1, Column1, Row2, Column2)
rake (Image77, Regions1, 15, 50, 5, 1, 10, 'all', 'first', Row1, Column1, Row2, Column2, ResultRow, ResultColumn)
pts_to_best_line (Line, ResultRow, ResultColumn, 2, Row11, Column11, Row21, Column21)
read_image (Image77, '77.bmp')
draw_rake (Regions, 3600, 15, 50, 5, Row1, Column1, Row2, Column2)
pts_to_best_line (Line, ResultRow, ResultColumn, 2, Row11, Column11, Row21, Column21)
当极性为白到黑('all')即由黑到白和有白到黑的直线有三条,分别是①,②, ③;在检测方向上(由左到右,看卡尺样式中的蓝色箭头)Transition = 'first'属于①直线,Transition = 'last'属于③直线,所以分别检测到①, ③
draw_rake (Regions, 3600, 15, 50, 5, Row1, Column1, Row2, Column2)
算子只是为了绘制一条直线并输出直线的起始点、端点,和把卡尺工具显示出来提供用户参考,也可以直接用
draw_line( : : WindowHandle : Row1, Column1, Row2, Column2) 代替它。因为后者也是通过绘制直线和输出点,至于卡尺工具显示出来提供用户参考功能由rake算子实现。








浙公网安备 33010602011771号