halcon知识点
halcon算子较全的中文手册

1. Halcon算子概述Halcon是一种强大的机器视觉软件,它由MVTec开发,可用于各种工业和非工业应用。
在Halcon中,算子是至关重要的组成部分,它们可以实现图像处理中的各种功能,如滤波、边缘检测、特征提取等。
本文将以算子作为主题,深入探讨Halcon算子的各种特性和用法。
2. Halcon算子的分类Halcon算子可以分为预处理算子、过滤算子、分割算子、匹配算子、测量算子等多个类别。
每个类别都包含了众多的算子,它们可以根据图像处理任务的不同需求进行灵活组合和调用。
3. Halcon算子的特性Halcon算子具有许多独特的特性,如多样的输入输出形式、灵活的参数设置、高效的运算速度等。
这些特性使得Halcon算子在图像处理领域得到广泛应用,并受到了众多工程师和科研人员的喜爱。
4. Halcon算子的使用技巧在使用Halcon算子时,熟练掌握一些技巧和经验是非常重要的。
合理设置算子的参数、选择适当的算法、理解算子的内部原理等,都可以帮助我们更好地使用Halcon算子,提高图像处理的效率和准确性。
通过一些典型的应用案例,我们可以深入了解Halcon算子的实际应用。
这些案例涵盖了工业质检、医疗影像、无人驾驶、智能制造等多个领域,展示了Halcon算子的强大功能和广泛适用性。
6. 我对Halcon算子的个人理解作为一名Halcon用户,我对Halcon算子有着深刻的认识和体会。
我认为Halcon算子不仅仅是图像处理的工具,更是一种思维方式和解决问题的哲学。
通过深入学习和使用Halcon算子,我对图像处理和机器视觉有了全新的认识和理解。
总结与回顾通过本文的全面介绍和深度探讨,我们对Halcon算子有了更加全面和深入的了解。
从算子的分类到使用技巧,再到实际案例分析,我们逐步领略了Halcon算子的强大功能和潜力。
我相信,在今后的工作和研究中,我们可以更好地运用Halcon算子,为图像处理和机器视觉领域的发展做出更大的贡献。
HALCON学习笔记

4、Halcon 数据结构 两类参数:图形参数 Iconic (image, region, XLD) 与 控制参数 Control (string, integer, real, handle),在 Halcon 算子的参数中,依次为:输入图形参数、输出图形参数、输入控制参数、 输出控制参数;并且其输入参数不会被算子改变。 图形参数 Iconic: Images Multiple channels Arbitrary region of interest Multiple pixel types (byte, (u)int1/2/4, real, complex, direction, cyclic, vector_field) byte, uint2 int1, int2 int4 direction real complex cyclic vector_field //灰度图像的标准编码 //Difference of two images or derivates with integer precision (??) //两幅灰度图的频谱 //图片边缘的梯度方向 //边缘提取及特定灰度值的轮廓 //图片频率分布 //Assigning one "gray" value to each color(??) //连续图形的光学流分布
while ... endwhile repeat ... until
此外,也有关键字 break、continue、return、exit、stop 用来控制语句的执行; 赋值语句在 Halcon 中也被当作函数来使用: 标准赋值 assign(Expression, ResultVariable) //编辑形式,永远都是输入在前,输出在后 ResultVariable := Expression //代码形式 元组插入赋值 insert(Tuple, NewValue, Index, Tuple) //编辑形式 Tuple[Index] := NewValue //代码形式 控制变量元组操作 [t,t] concatenation of tuples |t| number of elements t[i] selection of an element t[i:j] selection of a part of a tuple subset(t1,t2) selection from t1 by indices in t2 图形元组操作对应函数 [] gen_empty_obj () |t| count_obj (p, num) [t1,t2] concat_obj (p1, p2, q) t[i] select_obj (p, q, i+1) t[i:j] copy_obj (p, q, i+1, j-i+1) subset(t1,t2) select_obj (p, q, t2+1) 元组的数学运算,如:A * B,令 m = |A|, n = |B|; 若 m、n 不相等,且都大于 1,则错误;否则返回三种情况: m=n=1,返回一个值; m=n>1,返回一个包含 m 个数的元组,值为两元组各对于值的操作结果; m>1,n=1, 返回一个包含 m 个数的元组, 值为第二个数与第一元组各值的操作结果; Halcon 的数学运算 算术运算 a/a division a%a rest of the integer division a*a multiplication v+v addition and concatenation of strings a-a subtraction -a negation 位运算 lsh(i,i) rsh(i,i) i band i i bor i i bxor i bnot i left shift right shift bit-wise and bit-wise or bit-wise xor bit-wise complement
halcon笔记

1、What Basic Knowledge Do You Need for 3D Vision(chapter 2 and chapter 3 ) (1)camera calibration (相机标定) Using a camera calibration, you can transform image processing results into arbitrary 3D coordinatesystems and thus derive metrical information from images, regardless of the position and orientation ofthe camera with respect to the object (2)chapter 2 on page 15 introduces you to the details on the camera model and parameters. (3) chapter 3 shows how to apply a general 3D vision task with a singlecamera in a specified plane.
• 2.2 Camera Model and Parameters//相机 模型与参数 • halcon支持两种相机:area scan cameras (区域扫描相机) 和 line scancameras (线扫描相机) • 与机器视觉相关的两种镜头: • pinhole camera model (小孔成像摄像机 模型)和 telecentriccamera model(远心 摄像机模型)
5、How Can You Extend 3D Vision to Robot Vision?//如何将3D视觉转换为机器视觉
halcon学习笔记

halcon学习笔记1、HsmartWindow 报错问题2、HwindowCtronl绘制图形未结束⼜点击绘制导致错误3、论坛转贴常见问题4、找圆找线部分参数设置5、实现基于形状的模板匹配6、⼀维测量-卡尺7、直线/圆拟合---------------------------------------------------------------- 1-- HsmartWindow 控件除了会调⽤halcondonet.dll外还会调⽤halcon.dll,如果程序根⽬录不存在halcon.dll,则会通过全局变量找到halcon mevtec⽬录去调⽤,这样是没有问题的;如果根⽬录下存在halcon.dll,则会优先调⽤根⽬录下的⽂件,然后halcon.dll内部如果使⽤到HsmartWindow的功能,则还会调⽤⼀个Hcanvas.dll的⽂件,如果根⽬录下没有这个⽂件则会报错,程序编译后启动过程中报错,报错内容为:----------------------------------------------------------------------------------2- HsmartWindow不⽀持Draw开头的函数,只能在Hwindow上⾯画,在执⾏Draw函数的时候,程序停在该函数位置,未点击⿏标右键确认Draw Region之前,程序会⼀直停留,此时再执⾏其他的Draw函数,就会导致在整个流程乱掉,避免这种情况的⽅法是在每个Draw函数之前都调⽤⼀次HalconApi.CancelDraw()函数,结束上次未完成的绘制。
--------------------------------------------------------------------3--以下引⽤ihalcon学习⽹上帖⼦《转“Halcon基本问题解答”》----------------------------------------------------------2. 裁剪图像;从图像上截取某段图像进⾏保存。
halcon学习笔记

H A LC ON笔记t h re sh ol d 按设置的阙值提取图像区域。
c o nn ec ti on合并所有选定像素触摸相互连通区。
Selec t_shape选择区域面积(属性:'面积')在指定区间内。
S m al le st_r ec ta ng le1计算每个区域的坐标(连续/栏)的包围矩形。
dilation_circle ( Region ,RegionDilation , Radius ) 膨胀Radius为半径complement ( Region , RegionComplement )反填充Region区域get_mbutton ( WindowHandle, &Row, &Column, &Button ) 等待至用户鼠标有输入,Row,和Column返回坐标,左键输入:Button=1;中键:Button=2;右键:Button=4set_tposittion(windowhandle,Row,Column)设置文本输出坐标mean_image ( Image : ImageMean : MaskWidth, MaskHeight : )取平均值平滑图像MaskWidth &MaskHeight ∈ {3, 5, 7, 9, 11, 15, 23, 31, 43, 61, 101}select_region_point (ConnectRegion, OneObject, Row, Column)在连同区ConnectRegion中用坐标选中区域gauss_image ( Image : ImageGauss : Size : )高斯模糊图像,size:3,5,7,9,11sub_image ( ImageMinuend, ImageSubtrahend : ImageSub : Mult, Add : ) ImageSub=(ImageMinuend-ImageSubtrahend)*Mult+Add,增强两幅图像的差异elliptic_axis ( Regions : : : Ra, Rb, Phi ),计算Region区域中的椭圆参数decompose3 ( MultiChannelImage : Image1, Image2, Image3 : : )三通道图像转换为三个图像trans_from_rgb ( ImageRed, ImageGreen, ImageBlue :ImageResult1,ImageResult2, ImageResult3 : ColorSpace : )从一个rgb图像转换为一个任意格式图像difference ( Region, Sub : RegionDifference )计算两个区域的不同,并返回dev_update_pc ( DisplayMode) 设置程序是否总在前面,对置顶有作用(不支持C++代码) dev_update_window(DisplayMode) 默认状态下所有的对象(图像,区域,或XLD)都在活动图形窗口显示。
Halcon基础知识总结(一文学会halcon基础操作,总结自超人视觉)

Halcon基础知识总结(⼀⽂学会halcon基础操作,总结⾃超⼈视觉)此⽂根据《超⼈视觉 halcon启蒙班》写成,结合图⽚和例程,直观简单地介绍halcon的最基本操作基础知识光学:⼏何光学,物理光学数学:导数为主的⾼等数学,矩阵论五种需求:1.识别定位2.符号识别:⼀⼆维码,OCR3.测量需求4.缺陷需求(最常见,难度最⼤)5.⼿眼标定和抓取(结合运动控制)图像处理⼀般思路1.采集2.预处理拉开灰度⼏何变换去噪:中值滤波,均值滤波,⾼斯滤波抠图3.图像分割⼆值化形态学特征选择ps:Halcon⾥区域和图像是不同概念4.识别显⽰5.通信三⼤数据类型图像,区域,XLD灰度直⽅图勾选“阈值”将灰度值在”绿线和红线之间”的以选定颜⾊进⾏填充将把圈定的阈值范围内的直⽅图均匀拉伸释放到整个直⽅图轴上数组语法* Simple tuple operationsTuple1 := [1,2,3,4,5]Number := |Tuple1|SingleElement := Tuple1[3]Part := Tuple1[1:3]Copy := Tuple1[0:|Tuple1| - 1]运⾏结果读取图⽚的四种⽅法1. ⽂件 -> 读取图⽚2. Image Acquisition -> ⾃动检测接⼝(刷新设备)-> Direct show,从摄像头直接读图3. Image Acquisition -> 选择⽂件,从图像⽂件中读取4. Image Acquisition -> 选择路径,结合正则表达式读取路径下的图⽚PS:⽤Image Acquisition读取时记得点击代码⽣成摄像头抓取模式:在可视化 -> 更新窗⼝中调整同步采集:实时抓取,⼀直抓取异步采集:只等图⽚处理完后,grab_image才开始抓取PS:更多信息包括双相机采集,可以在案例 -> ⽅法 -> 图像采集设备中学习ROI(感兴趣区域)特征检测PS:⼆值化之后的区域虽然不连通,但仍然认为是⼀个区域。
halcon知识点总结

halcon知识点总结Halcon基本概念Halcon的全称是HALCON(Highly Optimized Computer Vision Algorithms), 是由MVTec Software GmbH公司开发的一款强大的视觉处理软件,为工业自动化领域提供了全面的解决方案。
这种软件广泛应用于制造业、半导体行业、电子产业、医药行业等领域,用于机器视觉系统的开发和部署。
Halcon具有以下几个基本概念:1. 图像处理Halcon是一种用于图像处理的软件,它提供了一系列的图像处理算法和工具,可以对图像进行预处理、分割、特征提取、匹配等操作,以满足各种不同的应用需求。
2. 机器视觉Halcon可以应用于机器视觉系统中,用于进行产品质量检测、物体识别和追踪、三维测量等操作,以提高生产效率和产品质量。
3. 算法优化Halcon提供了高度优化的图像处理算法,可以实现高性能和高效率的图像处理,适用于高速和复杂的生产环境。
特性Halcon具有以下一些重要的特性:1. 高性能Halcon使用了一系列高效的图像处理算法和数据结构,以实现高速的图像处理能力,能够满足各种不同的应用需求。
2. 多功能Halcon提供了丰富的图像处理和分析功能,可以用于多种不同的应用场景,如工业自动化、医疗影像、安防监控等。
3. 跨平台Halcon可以在多种不同的操作系统上运行,并且支持多种不同的开发语言和工具,可以轻松集成到现有的系统之中。
应用Halcon在多个领域都有广泛的应用,以下是一些典型的应用场景:1. 工业自动化在工业自动化领域,Halcon可以用于进行产品质量检测、零件识别和追踪、三维测量等操作,以提高生产效率和产品质量。
2. 医疗影像在医疗领域,Halcon可以用于进行医学影像处理和分析,如医学图像的识别、分割、量化分析等,以辅助医生进行诊断和治疗。
3. 安防监控在安防监控领域,Halcon可以用于进行行人识别、车辆识别、人脸识别等操作,以提高监控系统的识别能力和准确度。
Halcon十九类算子汇总

Halcon十九类算子汇总halcon算子一classification1.1gaussian-mixture-models1.add_sample_class_gmm把一个训练样本嵌入至一个高斯混合模型的训练数据上。
2.classify_class_gmm通过一个高斯混合模型来计算一个特征向量的类。
3.clear_all_class_gmm去除所有高斯混合模型。
4.clear_class_gmm清除一个高斯混合模型。
5.clear_samples_class_gmm去除一个高斯混合模型的训练数据。
6.create_class_gmm为分类创建一个高斯混合模型。
7.evaluate_class_gmm通过一个高斯混合模型评价一个特征向量。
8.get_params_class_gmm返回一个高斯混合模型的参数。
9.get_prep_info_class_gmm排序一个高斯混合模型的预处理特征向量的信息内容。
10.get_sample_class_gmm从一个高斯混合模型的训练数据返回训练样本。
11.get_sample_num_class_gmm回到存储在一个高斯混合模型的训练数据中的训练样本的数量。
12.read_class_gmm从一个文件中读取一个高斯混合模型。
13.read_samples_class_gmm从一个文件中加载一个高斯混合模型的训练数据。
14.train_class_gmm训练一个高斯混合模型。
15.write_class_gmm向文件中载入一个高斯混合模型。
16.write_samples_class_gmm向文件中写入一个高斯混合模型的训练数据。
1.2hyperboxes1.clear_sampset释放一个数据集的内存。
2.close_all_class_box去除所有分类器。
3.close_class_box清除分类器。
4.create_class_box建立一个代莱分类器。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. 无论读入什么图像,读入图像显示效果明显和原始图像不一致,哪怕是从相机读入的图像,也是明显颜色差异。
什么原因引起?初步诊断是,显示的时候调用的颜色查找表存在异常不是 default ,而是其它选项。
此时可以通过查阅相关参数,调用set_system解决,也可以在编辑-》参数选择-》颜色查找表进行更改。
2. 裁剪图像;从图像上截取某段图像进行保存。
如何实现该操作?首先应该知道,region不具有单独构成图像的要素,他没有灰度值。
有用过opencv的应该知道 ROI(感兴趣区域),设置好它后,对图像的大部分操作就转为图像的一个矩形区域内进行。
类似的,halcon有domain 概念。
首先设置好一个矩形区,然后使用reduce_domain(是一个矩形区域)后,再使用crop_domain 就裁剪出图像。
3. 读入bmp,或tiff 图像显示该图不是bmp文件或不能读。
原因是什么?这个常有新手询问,画图,图像管理器都能打开,又或者是相机采集完直接存到硬盘。
Halcon 读取图像在windows下面到最后是调用windows库函数实现读图功能。
咱不清楚到底是怎么调用的。
对于图像格式,在读图函数F1说明很细。
基本 bmp 如果文件头不是bw还是bm(百度百科bmp格式查找,编写此处时无网络,后续可能忘记),就读不进来。
其他规格欢迎补充。
解决办法,如果是相机采集,就在内存直接转换(参见 halcon到VC.pdf 里面的halcon和bitmap互转);如果是采完的图片,大部分通过画图工具转换为 24位bmp格式,即可解决。
4.读入avi文件报错。
Halcon 通过 directshow或另一个格式解析视频,正常来说应该可以读入市面大部分视频,实际测试发现只能读入最标准的avi文件格式。
如果需要临时处理,需要下格式工厂等工具转化为最标准的avi文件格式(论坛叶诺有发帖说明)。
5. Region 或 xld 筛选。
Halcon提供了丰富的region 和xld筛选方法。
Region可以使用select_shape_xld,选择出符合要求的区域,如果不能满足还可以通过类似 region feature 这样关键字组合成的算子获取区域特征,然后通过 tuple 排序或相加减,再通过 tuple_find 确定是对应哪个区域的特征。
同样的halcon也提供了 select_contours_xld 进行轮廓筛选。
6. Halcon分几类对象,每个类的功用是?Halcon总分俩大类,tuple和图标对象obj 。
Tuple涵盖了对所有基础数据类型的封装,可以理解为她是halcon定义的数组类。
Obj 是alcon定义图标类基类。
衍生出了许多类型,其中 Region ,Xld,Image 其中最主要的类型。
7. F1说明,参数部分 -array 是什么意思?该符号说明,该参数接受一组输入,对tuple就是一组tuple,对obj 就是通过concat_obj 或其它操作产生的一组obj元组。
8. 俩个相对方形物体的距离计算。
如果这俩个物体和背景对比清晰,最近的距离在俩条边下则可以再预处理之后进行如下操作:1. Segement_contours_xld 分割边缘线段(edgeXXXX等得到的边缘);2. select_contours_xld 选择出特定的长度或方向边缘;3. 假设此时刚好获取俩条线,则可以利用 distance_ll ,求得距离,也可以自己fit_lineXXXX 拟合直线再求距离;以上是一种方法,另一种常见方法是利用 measure_pos 或measure_pair 进行测量,不熟悉的可以翻看示例或者使用测量助手进行测量。
9. 创建过程或函数,或者全文编辑。
在算子编辑窗口,main所在行右边,有四个按钮,将鼠标移到该位置,将有中文提示,按提示点击按钮。
10. 从其它halcon环境窗口复制函数或算子复制到新建的halcon窗口,无法使用,提示不识别。
除了敲错,此种情况都是由于该函数式本地或全局函数,而不是halcon算子。
确定的方法:注意该算子颜色然后去编辑参数选择查看该颜色代表的算子属于什么类型函数。
亦可以直接右键,如果有查看函数。
为黑色可点击,这种情况也是本地或全局函数。
解决方法:如果是全局函数,可以在halcon目录下面找到该函数,加载到新窗口就行;也可以新建输入输出一致的过程,将代码复制过来,然后使用。
本地函数只能使用后一种方法解决。
11. 64位系统,VS2010及以下版本报 error LNK1112:模块计算机类型”X86” 与目标计算机类型”X64” 冲突。
问题原因是默认情况,halcon在64位系统会自动安装64位halcondll,并且添加到环境变量;而vs一般是默认X86编译环境,俩者dll库不一致,换句话说是底层机器指令不一致。
解决办法是将编译环境设置为64位,详见百度;或者再次安装halcon选择32位dll,并修改环境变量 VC++路径为32位库路径,bin 指向32位dll 路径。
12. 64位系统,VS2012 。
无论怎么更改库文件,头文件,名空间,最好的提示也是找不到函数定义。
反复出现,无法解决时,有可能是问题11所述问题,解决办法见11.至于为何不提示error LNK1112,可能是VS更改了前面检测等级,在编译阶段就拦截到错误。
应该说是更先进了,只是比较不合情理。
13. 如何查找halcon算子?Halcon算子命名大部分所见即所得,也就是如果你记得你要找的算子汉字名称,输入到翻译器得到英文单词,在F1 的算子分栏从头开始输大部分能找到一些算子,这时候再点击进去注意算子功能解释,懂了是自己要的就拿起来到例程搜索示例,查阅功能;不懂就看说明部分;再不懂进群问。
另外,对于近半算子是按动作_类型/目标_属性命名。
Obj 是 region,xld,image的父类,后三者找不到的算子可以输入 obj查找。
14. Halcon 相等,不等于,异或,或等操作符。
直接在F1 出来的分栏输入 operation ,查找可得。
15. 在halcon环境使用 get_grayval 进行像素操作太慢,如何加速?注意到halcon环境是解释执行,get_grayval 可以一次获取多个,可以预先把行数据存入一个tuple对象,存一次以后可用多次。
因此提速方法,建议事先创建好行tuple (用tuple_add 加一,即可实现所有行加一),列的tuple 数组 (创建好可以用多次) 。
这时每次再调用get_grayval ,速度将显著提升,因为节省了逐行解释时间。
注意:如果导出到VC,则建议用get_image_pointer 获取指针进行操作。
16. 从一组region或xld,image中获取单个对象,或多个halcon同类对象构成-array 元组。
select_obj负责从多个对象的元组选出指定序号对象;concat_obj执行将俩个对象(或元组)链接成一个对象元组。
17. 更改halcon颜色查找表,显示不同颜色空间。
在编辑参数选择颜色查找表进行更改;也可以在F1输入lut进行查找设置函数。
18. 创建空对象,空Region ,空数组。
gen_empty_obj 创建空的对象;gen_emtpy_region 创建空数组;halcon环境中tuple用 :=[] 。
19. Region和xld 互相转化;多边形创建xld;直方图,直线,点集,多边形,行程编码创建region 。
Halcon里对象之间的相互转换,一般可以转化为gen_目标对象_源对象形式。
如:gen_region_contour_xld 使用xld创建一个region ;gen_contour_region_xld 从区域region创建一个轮廓xld 。
直方图histo;直线是line,点集是points,行程编码runs,黑森线hline,多边形polygon 。
按照上面格式进行查找。
20. Halcon伪彩色可以参照冈萨雷斯伪彩色章节。
21. Halcon角度分布22. 判断Region 是否为空?首先一般region是多个region存在一个regions 变量里面。
所以先使用count_obj 获得有多少个 obj;然后使用 select_obj ,选出一个区域处理;接着使用 area_center ,VC 可以使用 region.Id()!=H_EMPTY_REGION 判断是否为空。
23. 新手入门书籍?首推《机器视觉算法与应用》,这本书前面更多的是阐述一些通用的机器视觉经验,后面有跟示例,代码为halcon8.0,实际使用可能会有部分函数已经被抛弃使用;其次,冈萨雷斯绿皮书《数字图像处理》,介绍内容丰富,全面,但是可能讲得比较深,没有实际实践或再找资料展开会比较,常读不深入。
是数字图像处理基础理论不可多得的书籍。
24. 用halcon调用halcon支持的品牌相机,使用相机自带的厂家软件可以发现相机,可是halcon总是提示:图像获取设备未初始化。
这是为什么?把对应品牌的相机配置文件加到采集助手的使当前halcon调用的相机参数与厂家软件一致;再确保相机驱动,采集卡驱动安装完毕。
25. 屏幕/窗口截图。
使用dump_window_image 保存对应窗口截图,截图为当前肉眼所见图像,包括已经绘制到图像上的region,xld等。
26.导出halcon 11 代码为C++ 代码,经常提示不识别,或者名空间名字没找到。
解决办法是什么?首先 halcon11 导出如果没有勾选10 ,默认产生的C++代码,对应的主要头文件是HalconCPP.h 和 using namespace HalconCPP 。
配置如下头文件#include “HalconCPP.h” ,代码在导出时已经自动生成。
using namespace HalconCPP; 代码导出时已经自动生成。
在VC++目录,配置include路径,一个是默认Halcon安装文件夹下面的include ,另外一个根据你导出的代码而定,上面是 halconCPP ,所以对应添加 include文件夹下面的HalconCPP文件夹到路径里面。
此外配置将安装文件夹下的lib添加到库文件目录。
最后将 HalconCPP.lib添加到库的依赖项。
注意此处要一句导出代码而定,上述导出的是halcon -C++代码,所以是此处添加该项。
27. 标定助手的“平均误差”是指什么?这个平均误差的计算是按如下方式:1. 计算标定板图像的标志点位置,此处记为Mark1 ;2. 标定结束后,将标准标志点,按照得出的转换矩阵,进行转换得到Mark2;3. 由于可以得到Mark1 和 Mark2 点之间对应关系,点对应相减,绝对值累加(此处累加方式请具体查标定程序查找具体平均误差计算函数,很久,已记忆不详) ,然后除以标志点数目。