机器视觉halcon学习笔记(一) 这里写自定义目录标题1. 图像简单介绍模拟图像数字图像2. 图像的数字化过程3. 图像像素间的关系1. 邻域关系连通性像素间的距离图像灰度直方图1. 图像简单介绍首先明确图像是什么图像分为数字图像和模拟图像模拟图像图像是连续的用函数f(x,y)表示图像:其中:xy表示空间坐标点的位置;f表示图像在点(xy)的某种性质的数值如亮度、灰度色度等。fx,y可以是任意实数。数字图像I(rc)是对f(xy)的离散化后的结果。r表示图像的行(row);c表示图像的列(column);I 表示离散后的f;Ir,c的值只能是整数。数字图像可以用矩阵或数组表示数字图像又分为黑白图像灰度图像彩色图像索引图像。如下图所示这里不一一说明。2. 图像的数字化过程图像数字化的过程这里不展开流程如下图注意到采样时有一个采样间隔的指标对于采样到的数字图像影响如下采样间隔越大所得图像像素数越少图像空间分辨率低质量差。采样间隔越小所得图像像素数越多图像空间分辨率高质量好但数据量大。即采样间隔越大图像越趋近于马赛克量化同样会对数字图像的采样产生影响那么对于采样的方式就可以按照响应需求来进行更改(1)对于缓变的图像应该粗采样、细量化(2)对于细节丰富的图像应该细采样、粗量化处理复杂一般不用。但是对于采样操作实际上工业领域普遍不干预直接使用工业相机进行均匀采样按需进行roi区域划分来做算法时间的减少。3. 图像像素间的关系1. 邻域关系邻域关系用于描述相邻像素之间的相邻关系包括4邻域、D邻域、8邻域等类型对于具有值V的像素p和q背景8 连通的问题在 8 邻域下对角相邻也算连通会导致一个像素存在多条连通路径环路让像素集合的连通关系不唯一。m 连通的定义p 与 q 是 m 连通的当满足任一q 在 p 的 4 邻域内或q 在 p 的 8 邻域内且 p 与 q 的 4 邻域交集为空我目前在学习halcon的算子实际上Halcon 没有直接让你选 “m 连通” 参数的算子connection 默认 8 邻域无 m 选项。但 m 连通的思想内嵌在几个关键算法里主要是骨架/细化类细化与骨架提取最相关thinning / skeleton / skeleton_gauss细化算法逐像素删边时必须保证不破坏拓扑不切断连通、不消除孔洞。判定这个像素能不能删时内部就用了 m 连通式的规则——只看 8 邻域会产生分叉歧义导致骨架多出假分支或路径不唯一。解决的问题骨架毛刺/分叉不稳定。如果你细化一条直线8 邻域分析可能判断出两条等价路径用 m 连通规则保证唯一骨架干净、细化为单像素宽。形态学与区域后处理间接相关connection 分割后对角相邻的区域在 8 邻域下被连成一个 → 数量统计偏少、边界粘连。工程上如果不想把对角像素算连通需要自己按 4 邻域思想处理。Halcon 里没有直接 m 连通但你可以用形态学腐蚀erosion 再 connection 变相控制连通判定。边界提取 / 拓扑分析boundary、region_features孔洞数、欧拉数依赖连通定义。8 邻域和 4 邻域的孔洞/欧拉数结果不同m 连通保证结果唯一。连通性从具有坐标(x,y)的像素p到具有坐标(S,t)的像素q的通路(或曲线)是特定的像素序列其坐标为:给一个算连通的小例子如果要从像素s到像素t:在4连通的条件下:s不能到t在8连通的条件下:s可以到t在m连通的条件下:s可以到t如果考虑4邻接则有3个连通区域1 2 3如果考虑8邻接则有2个连通区域1 23如果一个点的8邻域都是1则可以认为这个点是内部的点而不是边界上的点可以删除这类点剩下的就是边界上的点。根据腐蚀的特性使用3*3的结构元素对图像进行腐蚀可以得到内部的点那么再用原图减去腐蚀图就得到了图像的边界。像素间的距离首先是欧氏距离这个理解最简单两点间直线距离然后是城市街区距离只可以数格子相邻格距离如下所示棋盘距离的逻辑稍微有点不一样。在这里插入图片描述围着P点的所有元素都是相邻的它下一步可以走到包围它的八个点的任何一个也就是横竖和斜向。对于可以横竖和斜向走的最短距离竟然就是横向或竖向的距离的最大值。实质上是凑成一个正方形的对角线像素间距离的简单测算图像灰度直方图对一幅图像若对应于每一个灰度值统计出具有该灰度值的像素数并描绘出像素数一灰度值图形则该图形称为该图像的灰度直方图简称直方图。灰度图像和对应直方图这个应该很熟了随便看看比较多的是用于确定图像二值化的阈值假定一幅图像如下图所示背景是黑色物体为灰色。容易得知直方图上的左峰由背景中的黑色像素产生而右峰由物体中各灰度级产生。选择波谷对应的灰作为阈值T利用下式对图像二值化得到一幅二值图像。