常用算子介绍
1、简单常见算子
1、read_image( : Image : FileName : )
作用:读取一张不同格式的图片
2、dev_clear_window( : : : )
作用:清除活动图形窗口的内容。
3、dev_open_window( : : Row, Column, Width, Height, Background : WindowHandle)
作用:打开一个新的图形窗口,用于显示图像、区域和线条等图标对象,以及执行文本输出
3.1、dev_open_window_fit_image(Image : : Row, Column, WidthLimit, HeightLimit : WindowHandle)
作用:打开一个适应图像的窗口
4、get_image_size(Image : : : Width, Height)
作用:获取图像的尺寸
5、zoom_image_factor(Image : ImageZoomed : ScaleWidth, ScaleHeight, Interpolation : )
作用:图像缩放
6、dev_display(Object : : : )
作用:在打开的活动图形窗口中显示图标对象。
7、gen_rectangle1( : Rectangle : Row1, Column1, Row2, Column2 : )
作用:创建一个不可旋转的矩形ROI
8、gen_rectangle2( : Rectangle : Row, Column, Phi, Length1, Length2 : )
作用:创建一个可以旋转的矩形ROI
9、gen_circle( : Circle : Row, Column, Radius : )
作用:创建一个圆形ROI
9.1、gen_cross_contour_xld( : Cross : Row, Col, Size, Angle : )
作用:在指定坐标中创建一个形状 (×,+)
10、rgb1_to_gray(RGBImage : GrayImage : : )
作用:将彩色图像设置在位灰度图像
11、mult_image(Image1, Image2 : ImageResult : Mult, Add : )
作用:图像相乘
11.1、gray_histo(Region, Image : : : AbsoluteHisto, RelativeHisto)
作用:计算绝对灰度值或相对灰度值
12、threshold(Image : Region : MinGray, MaxGray : )
作用:二值化
13、connection(Region : ConnectedRegions : : )
作用:连通域
14、select_shape(Regions : SelectedRegions : Features, Operation, Min, Max : )
作用:区域选择
15、fill_up(Region : RegionFillUp : : )
作用:区域填充
16、opening(Region, StructElement : RegionOpening : : )
作用:开操作,需要手动输入开操作的范围
17、opening_circle(Region : RegionOpening : Radius : )
作用:圆形开操作
18、reduce_domain(Image, Region : ImageReduced : : )
作用:将指定的区域从图中扣出
18.1、rectangle1_domain(Image : ImageReduced : Row1, Column1, Row2, Column2 : )
作用:将指定的区域按照矩形的方式扣除
19、select_obj(Objects : ObjectSelected : Index : )
作用:从对象元组中选择指定下标的对象
20、gen_contour_region_xld(Regions : Contours : Mode : )
作用:根据输入的区域,拟合成轮廓
Regions:输入的区域
Contour:输出的轮廓
Mode: 'border', 'border_holes', 'center'
轮廓生成的模式:边框"、"边框孔"、"中心"
21、area_center(Regions : : : Area, Row, Column)
作用:获取区域内的面积和区域的中心点坐标
22、shape_trans(Region : RegionTrans : Type : )
作用:拟合区域
23、orientation_region(Regions : : : Phi)
作用:获取当前区域的弧度
24、query_font (WindowHandle, Font)
作用:查询当前窗口下都有哪些字体类型
FontWithSize := Font[0]+'-Bold-20'
set_font (WindowHandle, FontWithSize)
作用:设置显示字体型号、大小
25、dev_set_draw( : : DrawMode : )
作用:设置填充模式,fill为显示填充区域,margin为显示填充的边框
26、smallest_circle(Regions : : : Row, Column, Radius)
作用:寻找区域内最小的圆形,并输出圆心坐标和半径
27、dev_set_colored( : : NumColors : )
作用:设置显示颜色的数量:3、6、12
28、dev_set_color( : : ColorName : )
作用:设置显示的颜色
29、set_display_font( : : WindowHandle, Size, Font, Bold, Slant : )
作用:显示字体的大小、型号、是否加粗、是否斜体
30、disp_message( : : WindowHandle, String, CoordSystem, Row, Column, Color, Box : )
作用:在窗口中显示String。
String:显示的内容
CoordSystem:显示的坐标系类型,Window下的坐标系还是Image下的坐标系。
31、get_string_extents( : : WindowHandle, Values : Ascent, Descent, Width, Height)
作用:获取指定值在空间中所占内容的大小
32、area_holes(Regions : : : Area))
作用:获取范围内孔洞的面积
33、select_shape(Regions : SelectedRegions : Features, Operation, Min, Max : )
作用:区域选择
Features:区域类型
34、inner_circle(Regions : : : Row, Column, Radius)
作用:找到区域内的最大内接圆形,并输出圆心坐标和半径。
35、inner_rectangle1(Regions : : : Row1, Column1, Row2, Column2)
作用:找到区域内最大的内接矩形、并输出矩形左上角坐标和右下角坐标。
36、smallest_rectangle1(Regions : : : Row1, Column1, Row2, Column2)
作用:找到区域内平行于坐标轴的最小矩形
37、smallest_rectangle2(Regions : : : Row, Column, Phi, Length1, Length2)
作用:找到区域内可旋转的最小的外包矩形
2、常用的仿射变换算子
1、hom_mat2d_identity( : : : HomMat2DIdentity)
作用:生成一个用于产生仿射变换矩阵的单位矩阵
2、hom_mat2d_rotate( : : HomMat2D, Phi, Px, Py : HomMat2DRotate)
功能:把旋转角度添加到仿射变换矩阵
HomMat2D :(输入参数)仿射变换矩阵
Phi :旋转角度(单位弧度)
Px :变换的固定点行坐标。固定点是指以该点为支撑进行仿射变换 (这里是指围绕这点进行旋转)
Py : 变换的固定点列坐标
HomMat2DRotate:输出的旋转变换的二维矩阵
3、hom_mat2d_scale( : : HomMat2D, Sx, Sy, Px, Py : HomMat2DScale)
//把缩放添加到仿射变换矩阵
HomMat2D(输入参数):仿射变换矩阵
Sx(输入参数):x轴方向的缩放倍数
Sy(输入参数):y轴方向的缩放倍数
Px(输入参数):变换的固定点行坐标
Py(输入参数): 变换的固定点列坐标
HomMat2DScale(输出参数):输出缩放变换矩阵
4、hom_mat2d_translate( : : HomMat2D, Tx, Ty : HomMat2DTranslate)
功能:把平移添加到防射变换矩阵
HomMat2D:(输入参数)仿射变换矩阵
Tx(输入参数):沿x轴方向平移的距离
Ty:输入参数):沿y轴方向平移的距离
HomMat2DTranslate(输出参数):输出变换矩阵
5、 hom_mat2d_slant( : : HomMat2D, Theta, Axis, Px, Py : HomMat2DSlant)
功能:把斜切添加到防射变换矩阵
HomMat2D (输入参数):仿射变换矩阵
Theta (输入参数):斜切角度(单位:弧度)
Axis (输入参数):斜切的坐标轴。取值列表:x,y
Px (输入参数):变换的固定点x坐标
Py (输入参数):变换的固定点y坐标
HomMat2DSlant (输出参数):输出斜切仿射变换矩阵
6、vector_angle_to_rigid(::Row1,Column1,Angle1,Row2,Column2,Angle2:HomMat2D)
功能:根据点和角度计算刚性仿射变换矩阵,支持旋转和平移。**********常用的,需要输入原始坐标和角度
Row1(输入参数):原始点行坐标
Column1(输入参数):原始点列坐标
Angle1(输入参数):原始点角度
Row2(输入参数):变换的目的点行坐标
Column2(输入参数):变换的目的点列坐标
Angle2(输入参数):变换的目的点角度
HomMat2D(输出参数):输出仿射变换矩阵
7、 vector_to_rigid(::Px,Py,Qx,Qy:HomMat2D)
功能:根据两个以上点对计算计算刚性仿射变换矩阵,支持旋转和平移
Px:(输入参数)原始点组的x坐标
Py:(输入参数)原始点组的y坐标
Qx:(输入参数)变换的目的点组的x坐标
Qy:输入参数)变换的目的点组的y坐标
HomMat2D:(输出参数)输出仿射变换矩阵
8、vector_to_similarity(::Px,Py,Qx,Qy:HomMat2D)
功能:根据两个以上点对计算相似仿射变换矩阵,支持旋转、平移和缩放
Px:(输入参数)原始点组的x坐标
Py:(输入参数)原始点组的y坐标
Qx:(输入参数)变换的目的点组的x坐标
Qy:(输入参数)变换的目的点组的y坐标
HomMat2D:(输出参数)输出仿射变换矩阵
9、vector_to_hom_mat2d(::Px,Py,Qx,Qy:HomMat2D) 机器人视觉标定用
功能:根据三个以上点对计算仿射变换矩阵,支持旋转、平移、缩放、斜切
Px:(输入参数)原始点组的x坐标
Py:(输入参数)原始点组的y坐标
Qx:(输入参数)变换的目的点组的x坐标
Qy:(输入参数)变换的目的点组的y坐标
HomMat2D:(输出参数)输出仿射变换矩阵
10、hom_mat2d_to_affine_par( : : HomMat2D : Sx, Sy, Phi, Theta, Tx, Ty)
功能:根据仿射变换矩阵(齐次二维变换矩阵)计算仿射变换参数
HomMat2D (输入参数):仿射变换矩阵
Sx (输出参数):x方向的缩放因子(如果从图像空间变换到物理空间,就是x方向的像素单量)
Sy (输出参数):y方向的缩放因子(如果从图像空间变换到物理空间,就是y方向的像素单量)
Phi (输出参数):旋转角度
Theta (输出参数):斜切角度
Tx (输出参数):沿x方向平移的距离
Ty (输出参数):沿y方向平移的距离
11、affine_trans_contour_xld(Contours : ContoursAffinTrans : HomMat2D : )
功能:对XLD轮廓进行二维仿射变换 (支持缩放,旋转,平移,斜切)
Contours(输入参数):输入XLD轮廓
ContoursAffinTrans(输出参数):输出变换的XLD轮廓
HomMat2D(输入参数):仿射变换矩阵
12、affine_trans_image(Image : ImageAffinTrans : HomMat2D, Interpolation, AdaptImageSize : )
功能:对图像轮廓进行二维仿射变换 (支持缩放、旋转、平移,斜切)
Image (输入参数):输入图像
ImageAffinTrans (输出参数):变换后的图像
HomMat2D (输入参数):仿射变换矩阵
Interpolation (输入参数):插值算法。
参数值列表nearest_neighbor,bilinear,constant,weighted
AdaptImageSize (输入参数):结果图像尺寸是否自适应。默认值:false
13、affine_trans_region(Region : RegionAffineTrans : HomMat2D, Interpolate : )
功能:对区域进行任意二维仿射变换
Region (输入参数):输入区域
RegionAffineTrans (输出参数):变换的区域
HomMat2D (输入参数):仿射变换矩阵
Interpolate (输入参数):插值算法。默认值:nearest_neighbor。
参数值列表:constant,nearest_neighbor
14、affine_trans_polygon_xld(Polygon:PolygonsAffinTrans:HomMat2D:)
功能:对XLD多边形进行任意二维仿射变换
Polygon(输入参数):输入XLD多边形
PolygonsAffinTrans(输出参数):变换的XLD多边形
HomMat2D(输入参数):仿射变换矩阵
3、投影变换(单应性变换)
1、hom_vector_to_proj_hom_mat2d( : : Px, Py, Pw, Qx, Qy, Qw, Method : HomMat2D)
描述:使用给定的点对应关系计算同质变换矩阵。
Px:变换前x点坐标
py:变换前y点坐标
pw:变换前w点坐标
Qx:变换后x点坐标
Qy:变换后y点坐标
Qw:变换后w点坐标
Method:估算的算法
Default: 'normalized_dlt'
List of values: 'dlt', 'normalized_dlt'
HomMat2D:输出投影变换需要的变换矩阵,这里是齐次变换矩阵
2、projective_trans_image(Image : TransImage : HomMat2D, Interpolation, AdaptImageSize, TransformDomain : )
描述:对图像进行投影变换。
Image:输入的图像
TransImage:输出变换后的图像
HomMat2d:输入的矩阵
Interpolation:变换的插值方法
AdaptImageSize:是否自动调整输出图像的大小?
TransformDomain:输入图像的域是否也应进行转换?
Demo:
dev_update_off ( )
dev_close_window ( )
*获得图像、打开适合图片的窗口
read_image (Image_slanted. datacode/ecc200/ecc200_to_preprocess_001') dev_open_window_fit_image (Image_slanted,0,0 ,-1 , -1, Window Handle)
*设置
设置输出颜色为'白色'
dev_set_color ('white')
定义输出线宽为3
dev_set_line_width (3)
stop ( )
*定义坐标变量
XCoordCorners : = [130, 225, 290, 63]
YCoordCorners : = [101, 96, 289, 269]
*为每个输入点生成十字形状的XLD轮廓,6代表组成十字横线的长度,0.78代表角度
gen_cross_contour_xld (Crosses, XCoordCorners, YCoordCorners, 6, 0. 78)
dev_display (Image_slanted)
dev_display (Crosses)
stop ( )
*生成投影变换需要的变换矩阵,这里是齐次变换矩阵
hom_vector_to _proj_hom_mat2d (XCoordCorners, YCoordCorners, [1, 1, 1. 1], [70, 270, 270, 70], [100, 100, 300, 300], [1, 1, 1, 1], ' normalized_dlt', HomMat2D)
*在待处理的图像上应用投影变换矩阵,并将结果输出到Image_rectified中
projective_trans_image(Image_slanted,lmage_rectified,HomMat2D, 'bilinear','false', 'false')
*为上述2D数据代码创建模型,DataCodeHandle为数据代码模型
create_data_code_2d_model ('Data Matrix ECC 200’, [ ],[ ],DataCodeHandle)
*检测输入图像中的2D数据模型代码,并读取编码
数据,SymbolXLDs是成功解码后的符号生成的XLD轮廓
find_data_code_2d (Image_rectified, SymbolXLDs, DataCodeHandle, [ ],[],ResultHandles, DecodedDataStrings)
*显示
dev_display (Image_slanted)
dev_display (Image_rectified)
dev display (SymbolXLDs)
*在图形窗口编辑并显示文本
disp_message (WindowHandle, 'Decoding successful' , 'window' , 12, 12, 'black' , 'true' )
*设置当前窗口的字体属性
set_display_font (WindowHandle, 12, 'mono', 'true' , 'false' )
*在图形窗口编辑并显示文本
disp_message (WindowHandle, DecodedDataStrings, 'window', 350, 70, 'forest green' , 'true')
*创建二维码模型
clear_data_code_2d_model (DataCodeHandle)
4、形态操作常用算子
区域操作:
1、erosion_circle(Region : RegionErosion : Radius : )
使用圆形结构对区域进行腐蚀操作
2、erosion_rectangle1(Region : RegionErosion : Width, Height : )
使用矩形结构对区域进行腐蚀操作
3、erosion1(Region, StructElement : RegionErosion : Iterations : )
使用生成的结构对区域进行腐蚀操作
StructElement:生成的结构元素
Iterations:迭代腐蚀的次数
4、erosion2(Region, StructElement : RegionErosion : Row, Column, Iterations : )
使用生成的结构元素对区域进行腐蚀操作(可设置参考点位置)
5、dilation_circle(Region : RegionDilation : Radius : )
使用圆形结构对区域进行膨胀操作
6、dilation_rectangle1(Region : RegionDilation : Width, Height : )
使用矩形结构元素对区域进行膨胀操作
7、dilation1(Region, StructElement : RegionDilation : Iterations : )
使用生成的结构元素对区域进行膨胀操作
8、erosion2(Region, StructElement : RegionErosion : Row, Column, Iterations : )
使用生成的结构元素对区域进行膨胀操作(可设置参考点位置)
9、opening(Region, StructElement : RegionOpening : : )
使用生成的结构元素对区域进行开运算操作,达到去除毛刺的效果
10、opening_circle(Region : RegionOpening : Radius : )
用圆形结构元素对区域进行开运算操作
11、opening_rectangle1(Region : RegionOpening : Width, Height : )
使用矩形结构元素对区域进行开运算操作
12、closing(Region, StructElement : RegionClosing : : )
使用生成的结构元素对区域进行闭运算操作,达到闭合孔洞的效果
13、closing_circle(Region : RegionClosing : Radius : )
使用圆形结构元素对图像进行闭运算操作
14、closing_rectangle1(Region : RegionClosing : Width, Height : )
使用矩形结构元素对区域进行闭运算操作
15、hit_or_miss(Region, StructElement1, StructElement2 : RegionHitMiss : Row, Column : )
击中与击不中算子,需要传入两个符合被搜索形状的结构元素。
Region:输入的搜索区域
StructElement1:需要输入的结构元素1
StructElement2:需要输入的结构元素2
RegionHitMiss:输出集中的区域
Row, Column:输出中心坐标
------------------灰度操作---------------------
16、gray_erosion(Image, SE : ImageErosion : : )
使用生成结构元素对灰度图像进行腐蚀,使暗的地方更暗
17、gray_erosion_rect(Image : ImageMin : MaskHeight, MaskWidth : )
使用矩形结构元素对灰度图像进行腐蚀
18、gray_erosion_shape(Image : ImageMin : MaskHeight, MaskWidth, MaskShape : )
使用多边形结构元素对灰度图像进行腐蚀操作
19、gray_dilation(Image, SE : ImageDilation : : )
使用生成的结构元素对灰度图像进行膨胀操作,使亮的地方更亮
20、gray_dilation_rect(Image : ImageMax : MaskHeight, MaskWidth : )
使用多边形结构元素对灰度图像进行膨胀操作
21、gray_dilation_shape(Image : ImageMax : MaskHeight, MaskWidth, MaskShape : )
使用多边形结构元素对灰度图像进行膨胀操作
--------------------------------------------------
*生成结构半径为5的圆形结构
gen_disc_se (SE, 'byte', 5, 5, 0)
22、gray_opening(Image, SE : ImageOpening : : )
使用自定义结构元素对灰度图像进行开运算操作
23、gray_erosion(Image, SE : ImageErosion : : )
使用自定义结构元素对灰度图像进行闭运算操作
24、gray_erosion_shape(Image : ImageMin : MaskHeight, MaskWidth, MaskShape : )
对灰度图像进行闭运算操作,消除暗背景下比较亮的区域
25、gray_opening_shape(Image : ImageOpening : MaskHeight, MaskWidth, MaskShape : )
对灰度图像进行开操作,消除亮背景下比较暗的区域
26、gray_tophat(Image, SE : ImageTopHat : : )
顶帽运算:原图像减去开操作的结果。
27、gray_bothat(Image, SE : ImageBotHat : : )
低帽运算:原图像减去闭操作的结果。
28、boundary(Region : RegionBorder : BoundaryType : )
边界提取
BoundaryType:内部填充'inner', 线条填充'inner_filled', 外部填充'outer'
29、fill_up(Region : RegionFillUp : : )
区域填充孔洞
30、skeleton(Region : Skeleton : : )
提取区域的骨架