HALCON中的算子大全(中英对照)
sub_image(ImageConverted1,ImageConverted2,ImageSub,1,0)一幅图减另一幅图。用一幅图的灰度减另一幅的灰度成新的一幅图。
mult_image(Image,ImagePart,ImageResult,0.015,0)一幅图加一幅成的一幅图
convert_image_type(Traffic2,ImageConverted2,'int2')转换图像的格式
crop_part(ImageNoise,ImagePart,0,0,Width,Height)取出一幅图的中部分
dots_image(ImageResult,DotImage,5,'dark',2)取出图像中圆点
partition_dynamic(SelectedRegions,Partitioned,25,20)根据各个区域的特征将各个区域分割开。
intersection(Partitioned,Region,Characters)取出两个区域中重叠的部分,如果Region有两个区域在Partitioned中,则这两个区域合并成一区域。
difference(RegionDilation,RegionErosion,RegionDifference)取出两个区域中不重叠的部分。
critical_points_sub_pix(FilterResponse,'facet',1.5,0.7,RowMin,ColMin,RowMax,ColMax,RowSaddle,ColSaddle)取出图像中的关键点。
corner_response(Image,FilterResponse,3,0.04)
auto_threshold(Image,Regions,10)自动阈值分割,根据灰度直方图中两波峰中的波谷取出阈值。
closing(RegionClosing3,Rectangle,RegionClosing4)用一个设计好的区域来封闭其它区域。
hom_mat2d_identity(HomMat2DIdentity)生成一个2D单位矩阵
hom_mat3d_identity(HomMat3DIdentity)生成一个3D单位矩阵
hom_mat2d_translate(HomMat2DIdentity,-0.5*(Row1+Row2),-0.5*(Column1+Column2),HomMat2DTranslate)对矩阵进行2D变换,用于平移。
hom_mat3d_rotate(HomMat3DIdentity,GraspPhiZ_ref,'z',0,0,0,HomMat3D_RZ_Phi)对矩阵进行3D变换,用于旋转。
hom_mat3d_translate(HomMat3D_RZ_Phi,CenterPointX_ref,CenterPointY_ref,0,ref_H_grasp)对矩阵进行3D变换,用于平移。
hom_mat2d_scale(HomMat2DTranslate,ScaleFactor,ScaleFactor,0,0,HomMat2DScale)对矩阵进行变换,用于缩放
hom_mat3d_compose(cam_H_ref,ref_H_grasp,cam_H_grasp)将两矩阵相乘
hom_mat3d_to_pose(cam_H_grasp,PoseCamGripper)将矩阵变换成3D位姿
affine_trans_contour_xld(LogoContoursTemp,LogoContours,HomMat2DComplete)对线条LogoContoursTemp进行HomMat2DComplete对应的变换(平移和缩放)。
compose3(ImageRed,ImageGreen,ImageBlue,LogoImageTempl)将三幅图像合并成一幅图像
decompose3(LogoImage,ImageR,ImageG,ImageB)将一幅图像根据RGB值转换成三幅图像。
paint_xld(LogoContours,LogoImageTempl,LogoImage,[Blue,Orange,Blue,Blue,Blue,Blue])对线条喷颜色。Blue:=[0,48,117],Orange:=[255,181,41]
check_difference(Traffic1,Traffic2,Selected1,'diff_outside',-255,15,0,0,0)根据两幅图的不同进行图像分割。
bin_threshold自动阈值分割,与auto_threshold(Image,Regions,10)类似,但只有一个最小值取得仅有一个阈值。
char_threshold(Alpha1,Alpha1,Characters,6,95,Threshold)自动阈值分割,阈值根据直方图的波峰取得
dyn_threshold(ImageFilled,ImageMean,RegionDynThresh,3,'light')动态阈值分割。
gray_histo(Alpha1,Alpha1,AbsoluteHisto,RelativeHisto)获得绝对与相对直方。
background_seg(Edges,BackgroundRegions)将找出的区域根据背景分割成各个连通的区域。
fill_up_shape(BackgroundRegions,RegionFillUp,'area',1,40)有选择性的填充
smooth_funct_1d_gauss(Function,Sigma,SmoothedFunction)对一维数组进行平滑处理。
funct_1d_to_pairs(SmoothedFunction,XValues,YValues)将数据分别对应赋予一个横坐标。
fill_interlace(Image,ImageFilled,'odd')修改在采集图像过程中造成的两个半幅图像拼接的问题。
regiongrowing(Image,Regions,1,1,1,100)将图像分割成各个灰度值相近的区域。
expand_gray_ref(Regions,Image,EmptyRegion,RegionExpand,'maximal','image',Mean,11)根据灰度和颜色将分离的区域连通。
expand_line(Image,RegionExpand,Line,'mean','row',100)将轮廓拓展成一个跟其灰度相近的区域。
expand_region(Regions,NoPixel,RegionExpanded1,'maximal','image')根据设定的特征将分离的区域连通。
fast_threshold(Image,Region,128,255,10)根据最大和最小灰度以及面积选出区域
gray_erosion_rect(Image,Imag,StrokeWidth,StrokeWidth)每个点的灰度值用这个点的矩形掩码内最小灰度值代替。
select_shape_std(ConnectedRegions,SelectedRegion,'max_area',70)从多个区域选出指定特征相似的区域。如选出面积最大的区域。
scale_image_max(ImageReduced,ImageScaleMax)增加图像的对比度
text_line_orientation(SelectedRegion,ImageScaleMax,30,rad(-30),rad(30),OrientationAngle)检测具有字符的图像的方向
rotate_image(ImageScaleMax,ImageRotate,deg(-OrientationAngle),'constant')将图像按照指定的角度旋转
find_text(ImageRotate,TextModel,TextResult)根据设定的模板寻找字符
get_mposition(WindowHandleButton,Row,Column,Button)获得鼠标坐标
gen_grid_region(RegionGrid,Gap,Gap,'lines',Width,Height)生成网格区域
clip_region(Grid,StreetGrid,165,20,405,750)选择一定范围内的区域。
clip_region_rel(RegionBorder,RegionClipped,5,5,5,5)选择四边都减去一定像素的区域
gray_closing(Image,ImageReduced,ImageClosingFast)灰度值闭操作
gray_opening(Image,ImageReduced,ImageOpeningFast)灰度值开操作
hysteresis_threshold(EdgeAmplitude,RegionHysteresis,10,20,10)当大于最大阈值的点取出做为可靠点,最大与最小值之间的点根据与可靠点的关系选出。
get_domain(Image,Domain)得到整幅图像的区域
gen_rectangle1(Rectangle,Row1,Column1,Row2,Column2)在区域内部的实心区域得到一个平行于横坐标的最大矩形。
complement(Region:RegionComplement::)找到输入区域的补区域。
interjacent(Regions,RegionInterjacent,'border')找到将各个区域分割开的区域
local_max(Image,LocalMaxima)找到比周围灰度值都大的点。
local_min(ImageInverted,LocalMinima)找到比周围灰度值都小的点
smooth_image(Image,ImageSmooth,'deriche2',0.2)平滑图像
invert_image(ImageSmooth,ImageInverted)用255减去每个点的灰度值作为这个点新的灰度值。
shape_trans(RegionFillUp,Pads,'convex')根据指定的参数对区域的形状进行转换,如转换成正方形等。
select_shape_proto(Pads,BallBonds,MissingBonds,'overlaps_rel',0,0)选出具有相似特征的所有区域
boundary(RegionIntersection,RegionBorder,'inner')获得区域的边界
lines_gauss(ImageReducedTracks,Lines,1.5,1,8,'light','true','true','true')提取图的线条并计算出图的宽度。
get_contour_xld(Line,Row,Column)获得线条的各个点的坐标
min_max_gray(ImageAngioMedian,ImageAngioMedian,0,Min,Max,Range)获得区域内图像的最大和最小灰度值
median_rect(ImageNeedle,ImageNeedleMedian,41,41)对图像中值滤波
shape_trans_xld(Border,XLDConvex,'convex')将区域的边界根据不同的属性转化成线条
get_contour_attrib_xld(Line,'width_left',WidthL)得到线上每个点的属性
fit_circle_contour_xld(ObjectSelected,'ahuber',-1,2,0,3,2,Row,Column,Radius,StartPhi,EndPhi,PointOrder)将线条拟合成圆,得到位置和半径。
gen_circle_contour_xld(ContCircle,Row,Column,Radius,0,rad(360),'positive',1.0)生成一个圆
get_contour_global_attrib_xld(ObjectSelected,'cont_approx',Attrib)返回线条的全局属性值,当Attrib<0时线条是直线,当Attrib>0时是圆弧。
clip_contours_xld(Lines,LinesClipped,Top,Left,Bottom,Right)选择一定区域内的线条
clip_end_points_contours_xld(EllipseContour,ClippedContoursLength,'length',20)去除线条两端的部分像素。
region_to_bin(Rectangle,BinImage,130,100,120,130)将区域转换成具有固定灰度值的图像
paint_gray(SmoothedImage,BinImage,Image)将一图图像绘制到另一幅图像上。
union_collinear_contours_xld(RegressContours,UnionContours,10,1,2,0.1,'attr_keep')连接共线的线条。
gen_contour_polygon_xld(Contour4,[200,200,300,300,200],[320,450,450,300,300])生成任意多边曲线
close_contours_xld(Contours,ClosedContours)让不封闭的线条封闭
select_contours_xld(Contours,SelectedContours,'closed',0,20,0,0)选择一定条件的线条。
crop_contours_xld(Lines,LinesCropped,Top-0.5,Left-0.5,Bottom+0.5,Right+0.5,'false')提取出一定范围内的线条。
gen_polygons_xld(Contour1,Polygon1,'ramer',10)将线条拟合成多边形。
dev_set_part(239,197,239+17,197+17)设置显示的区域
dev_set_color('cyan')设置显示的颜色
dev_set_draw('margin')设置显示的区域是填充还是空心的
dev_set_shape('ellipse')设置显示的区域的形状
select_region_point(Regions,DestRegions,Row,Column)选择包含指定点的区域
gen_contour_region_xld(SelectedRegions,Contours,'border_holes')根据区域和指定的特征生成轮廓线。
dump_window_image(DumpImage,WindowHandle)将窗口的内容截图成图像
area_center_points_xld(ClipContours,Area,RowPoints,ColumnPoints)轮廓线所有点计算的中心
area_center_xld(ClipContours,Area,Row,Column,PointOrder)轮廓线所有的区域的中心
gen_nurbs_interp(Rows,Cols,[0,-10,0,10],3,CtrlRows,CtrlCols,Knots)根据提供的点拟合成曲线的坐标
gen_contour_nurbs_xld(Contour,CtrlRows,CtrlCols,Knots,'auto',3,1,5)根据拟合的坐标生成轮廓线
gen_parallel_contour_xld(Edges,ParallelEdgesAngle,'contour_normal',3)根据指定的特征生成相应的平行线。
get_grayval_contour_xld(Image,Contour,'bilinear',Grayval)提取了轮廓线上所有点的灰度值
test_subset_region(Region1,Region2:::IsSubset)测试一个区域是不是在另一个区域中。
subset(Rows,Min)从数组Rows先出Min对应序列的数组
create_funct_1d_array(Grayval,Function)根据数组生成一个函数序列
local_min_max_funct_1d(Function,'strict_min_max','false',Min,Max)提取出函数序列中的局部最大和最小值。
dev_inspect_ctrl(PoseRobotGrasp_ZYX)打开检测窗口
dev_close_inspect_ctrl(PoseRobotGrasp_ZYX)关闭检测窗口
pose_to_hom_mat3d(PoseCamBase,cam_H_base)将3D位姿转换成一个矩阵。
disp_3d_coord_system(WindowHandle,CamParam,PoseCamRef,0.01)根据内参和外参显示3D坐标系
concat_obj(Lines,Contour,Lines)将对象合并,可以分类时将属性相同的人为合并成一类。
gen_parallels_xld(Polygon,ParallelLines,50,100,rad(10),'true')找到平行的轮廓线
get_parallels_xld(ParallelLines,Row1,Col1,Length1,Phi1,Row2,Col2,Length2,Phi2)得到平行轮廓线的相关坐标。
affine_trans_point_3d(cam_H_ref,GraspPointsX_ref,GraspPointsY_ref,[0,0],GraspPointsX_cam,GraspPointsY_cam,GraspPointsZ_cam)对点进行3D变换。
project_3d_point(GraspPointsX_cam,GraspPointsY_cam,GraspPointsZ_cam,CamParam,GraspPointsRow,GraspPointsCol)将空间的3D坐标变换到图像坐标
union_cocircular_contours_xld(ContoursSplit,UnionContours,0.9,0.5,0.5,200,50,50,'true',1)将属于同一个圆的轮廓线连接起来
sort_index(Length)[|Length|-1]+1找出最大值对应的索引
polar_trans_image(ImageReduced,ImagePolar,Row,Column,PolarResolution,Radius+5)
把图像由笛卡尔坐标转换成极坐标下图像,及把圆环形的图像区域转换成矩形区域。
polar_trans_region_inv(RegionUnion,XYTransRegion,Row,Column,6.28319,0,Radius-RingSize,Radius,640,RingSize,1280,1024,'nearest_neighbor')把图像由极坐标坐标转换成笛卡尔下图像,及把矩形的图像区域转换成圆环形区域。
rotate_image(ImagePart,ImageRotate,90,'constant')将图像旋转90度
lines_color(Image,Lines,3.5,0,12,'true','false')检测图像中颜色线条,并提取出它们的宽度。
Measure_circle提取圆弧线的例子:
intersection_ll(::RowA1,ColumnA1,RowA2,ColumnA2,RowB1,ColumnB1,RowB2,ColumnB2:Row,Column,IsParallel)提取两条交叉直线交叉点的坐标
orientation_region(Region,OrientationRegion)提取区域的方向
obj_diff(ConnectedRegions,LeftRegions,RightRegions)提取两组对象中不同的对象。
optical_flow_mg(Image1,Image2,VectorField,'clg',1,1,1000,5,'default_parameters','fast')计算两幅图像中的视觉差异,用于监控。
vector_field_length(VectorField,LengthImage,'squared_length')计算向量的长度,得到差异图像。
local_max_sub_pix(ImageReduced,'facet',1.0,4,Row,Column)提取出图像中灰度极大值的坐标
mod_parallels_xld(ParallelRoadEdges,Part,ModParallelRoadEdges,ExtParallelRoadEdges,0.3,160,220,10)修补平行的轮廓线
split_contours_xld(Polygons,SplitContours,'polygon',1,5)
regress_contours_xld(SplitContours,RegressContours,'drop',1)
select_xld_point(Contours,SelectedContours,PointRow,PointCol)选择包含指定点的轮廓线。
symm_difference_closed_contours_xld(BoundarySet1,BoundarySet2,ContoursDifference)提取封闭对称轮廓线的不同部分
test_self_intersection_xld(Contours,'false',DoesIntersect)检测轮廓线本身是否存在交叉点
test_xld_point(Contour1,PointRow,PointCol,IsInsideContour1)测试提供的点是否被轮廓线包含在内
union2_closed_contours_xld(BoundarySet1,BoundarySet2,ContoursUnion)从多条轮廓线中合并成封闭的轮廓线
union2_closed_polygons_xld(BoundarySet1,BoundarySet2,PolygonsUnion)从多个多边形的轮廓线中提取封闭的轮廓线。
union_cotangential_contours_xld(ContourConcat4,UnionContours4,FitClippingLength,FitLength,TestMaxTangAngle,MaxDist,MaxDistPerp,MaxOverlap,'attr_forget')
tile_images(Images4,TiledImage3,2,'horizontal')将幅图像合并成一幅图像
select_contours_xld(RegressContours,SelectedContours,'curvature',0,0.5,0,0)根据线的特征选择轮廓线。
select_shape_xld(SelectedContours,SelectedEdges,'contlength','and',15,500)根据线的形态特征选择轮廓线。
vector_to_proj_hom_mat2d([RowUL,RowUR,RowLR,RowLL]+0.5,[ColUL,ColUR,ColLR,ColLL]+0.5,[160,160,340,340]+0.5,[250,550,550,250]+0.5,'normalized_dlt',[],[],[],[],[],[],HomMat2D,Covariance)根据图像坐标和实际坐标得到坐标的变换关系。
union_collinear_contours_ext_xld(UnionContours,UnionContours,MaxDistAbs,MaxDistRel,5,0.5,0,-1,1,1,1,1,1,0,'attr_keep')连接同线的轮廓线,提取的轮廓比union_collinear_contours_xld更精准。
orientation_points_xld(WireSegment,RefOrientation)
corner_response(ImaAmp,ImageCorner,3,0.04)提取图像中的角
gen_parallels_xld(Polygon,ParallelLines,50,100,rad(10),'true')找到平行的直线
Taily老段的微信公众号,欢迎交流学习
/taily_duan/article/details/81214815