halcon
文章平均质量分 55
♚卜卦
这个作者很懒,什么都没留下…
展开
-
halcon随笔 分割 and 边缘轮廓相关算子 及原理
将通过图像空间一点的所有直线角度离散化,对应的参数空间的曲线就是离散的点集。霍夫变换,进行直线的检测,也可以进行圆椭圆的检测,原理类似,将图像空间中检测线的问题,转化为:把一个空间中具有相似形状的曲线或者直线映射到另一坐标空间中的一点,再在参数空间中统计累计结果的局部最大值的问题。每一个图像空间的点对应参数空间一条直线,而处于同一条直线的点,对应的参数空间的直线会交于一点。前面阐述的是笛卡尔直角坐标系的情况,而笛卡尔坐标无法应对所有的情况,比如垂直于坐标轴的直线,则无法求得在参数空间中的交点。原创 2024-08-22 18:46:39 · 816 阅读 · 0 评论 -
均值 、高斯、双边 算法实现(opencv 、halcon)
此方法实现比较呆,只可以实现 3*3size的滤波,先进行了边缘填充,选择靠近的像素值进行填充,然后循环整个图像,在扩充图像上进行计算,得到每一个位置的滤波像素值。3.针对每一个像素,又循环处理该像素每一个滤波核的位置,分别计算距离和像素值权重(在扩充图进行计算),得到权重,直接计算该位置权重后的值,并进行叠加。在滤波算法中,均值、高斯、双边都是常用的算法,知道他们用途的同时,再了解它们的底层原理,有助于对图像算法的理解和算法的底层优化。以到像素点的距离和像素值的相似性进行权重的分配。转载 2024-05-23 14:37:15 · 96 阅读 · 1 评论 -
k-mean和dbscan 算法 实现及结合halcon的可视化测试效果
是一种基于密度的聚类算法,算法过程会不断地(按照距离)向外扩展簇并加入邻居点,所以可以将高密度的区域聚为一类,也可以识别出异常点。需要设定邻居点的数量阈值,和判断是否是邻居点的半径阈值。③如果邻居点没有分类,也加入该簇,并将它的邻居点加入邻居点列表末尾。聚类算法是指将一组数据,按照某种规则进行分类的过程,具备相似的特征的数据将会被归为一类。①如果该点没有分类,寻找他的邻居点,如果他的邻居点数量小于设定阈值,将其设为噪声点类。遍历所有点,计算到所有簇心的距离,将该点加入距离最近的簇心那一类。转载 2024-05-22 11:08:34 · 131 阅读 · 0 评论 -
halcon 与分割相关的算子(1)
对图像进行局部阈值分割,适用于灰度变化较多的图像。分割思想:对于每一个像素,将原图和均值图像灰度值进行对比,假设提取亮区,则原图和均值图像的灰度差大于阈值的像素,被认为是亮区被选出来。该算子基于灰度直方图的波峰进行分割,需要进行直方图高斯滤波,sigma表示滤波的标准差,该值越大,越平滑,分割出来的区域越少。基于直方图进行分割,一般来说有几个波峰就分割成几块。可以直接得到独立的几个区域,省略了connection算子。输入辅助计算图像,一般采用原图的均值图像。原图gray-均值图gray<-阈值。原创 2024-03-27 14:19:45 · 263 阅读 · 0 评论 -
halcon 与滤波相关的算子(1)
一共有level.edge,spot,wave,ripple,undulation,oscillation七种,两两组合,即“ll“le”“lw”“lo”“uo”uw”d等等。相比高斯滤波的权重只考虑了距离因素,双边滤波在这基础上还考虑了像素值的相似度,越相似的像素权重越大,根据与像素的距离确定权重,距离越近的像素具备越高的权重,权重的分布服从正态分布。,数值越大,影响的面积越大,平滑度越大,相当于高斯的标准差阈值。局部的重复的部分称为纹理单元,采用不同的滤波核进行纹理滤波。边缘的平滑度,值越大,越平滑。原创 2024-03-26 15:46:13 · 1840 阅读 · 0 评论 -
halcon 与区域相关的算子(2)
参数1:输入区域参数2:输出区域参数3:结构元素的大小作用:将区域进行膨胀操作。halcon除了膨胀算子,当然也要腐蚀,闭运算,开运算等算子。开运算=先腐蚀后膨胀,正好和‘开’的字面意思相反,这样会好记一点。参数1:输入区域1参数2:输入区域2参数3:输出合并后的区域作用:将两个区域进行合并。参数1:输入区域参数2:输出区域参数3:划分的小矩形的宽参数4:划分的小矩形的高作用:将一个区域划分为几个大小相同的矩形。原创 2024-03-25 18:11:59 · 573 阅读 · 0 评论 -
c#和halcon实现的任意size的高斯核权重的简单计算方法
对于权重的计算,如果是对于小size的卷积核,那么计算比较简单,那么对于大尺寸的卷积核,则计算较为复杂,提出一种简单的计算方式,建立了数组和卷积核坐标的转换关系,实现数组循环计算。如下图所示为数组坐标和卷积核坐标的位置关系。高斯滤波是一种服从正态分布的滤波器,邻域的权重大小与距离相关,有一个阈值。直接上程序,程序采用c#,并使用了halcon辅助运算。值越大表示平滑度越高,滤波器的权重分布峰图就越矮。原创 2024-03-19 15:19:57 · 194 阅读 · 0 评论 -
halcon与区域相关的算子(1)
5.overlaps_rel,根据regions和pattern的重叠面积进行筛选,具体是由 重叠面积和当前region面积的比值进行选择,由min-max控制,取值在0-100之间。将小于该阈值的分水岭合并,如果分水岭的最小灰度为w,两侧区域的最小灰度为wr,wl,如果max(w-wr,w-wr)小于阈值,那么合并两个区域。采用一个卷积核在图像上移动,如果和邻域区域的卷积核中心的灰度差小于设置值,合并这两个卷积核区域,得到几块区域。阈值,如果相邻模版中心的灰度值差小于该值,则合并为一个区域。原创 2024-03-14 18:45:42 · 1794 阅读 · 1 评论 -
基于halcon的相机畸变矫正
畸变矫正halcon原创 2024-03-05 18:31:03 · 985 阅读 · 0 评论 -
halcon 两个坐标系的刚性变换
halcon坐标系切换原创 2024-03-02 11:12:54 · 396 阅读 · 1 评论 -
canny算子精辟总结,通俗易懂
写一个canny算子,网上有很多canny算子的博客,但是有些地方描述的没有很清楚或者说比较讲的比较难懂,本文主要对某些细节进行更通俗的解释,由于时间有限,没有长篇大论的进行详细的描述,适合对canny算子已经有一定了解的同学。经过步骤三之后,得到了一个新的梯度幅值图,选择最高的梯度幅值,乘于0.3和0.1分别作为高低阈值,低于低阈值的判断不是边缘,高于高阈值的判断为边缘,处于中间的如果它八邻域内有真正的边缘,将其判断为边缘。1.取梯度幅值的局部最大值作为真正的边缘,用于细化边缘。原创 2023-09-07 16:26:30 · 335 阅读 · 0 评论 -
halcon 旋转平移矩阵,阈值分割,点线投影
当对点或者点集进行变换时,如果xy与x2y2相同,那么表示绕该点旋转,如果不同,先对点进行一个类似xy到x2y2的平移,再绕x2y2旋转一个角度,(phi为逆,phi2为顺时针,旋转角度即为两者相减).分割结果为 比如light,对一个像素,原图 y(i),阈值图t(i),结果就是满足 y(i)>=t(i)+offset.(点,r,c),(线,r1,c1,r2,c2),输出:(结果点,resR,resC)原图,阈值图,结果区域(输出),偏差,黑或白。生成一个旋转平移矩阵。图像,分割结果,阈值。原创 2023-09-04 19:20:07 · 335 阅读 · 1 评论 -
Halcon超方便的算子,halcon直线相关算子
intersection_lines(,,,,,,r,c,isoverlaping),只需知道直线上的两点坐标。通过下面这个算子,可以直接获得过两点直线的角度,角度在-90到90之间。通过这个算子可以直接求得两条直线的交点,而不需建立直线方程,再求交点。原创 2023-08-12 17:15:57 · 939 阅读 · 1 评论 -
halcon卡尺基线定位:选择最长边缘轮廓
通过以上步骤即可实现提取最长边缘作为卡尺的基线。*计算这些边缘的长度,并存储下来。*先进行canny边缘检测。原创 2023-08-05 15:58:44 · 554 阅读 · 1 评论 -
机器视觉Halcon(1) vector_angle_to_rigid和affine_trans_point_2d算子,使用注意事项
halcon算子总结原创 2023-08-05 15:46:30 · 1235 阅读 · 1 评论