表面检测算子
fansa 2019-11-11 03:58:17 dyn_threshold(OrigImage,ThresholdImage : RegionDynThresh :Offset,LightDark : )
当前背景之间差异明显时,可以设定全局阈值进行threshold,但很多情况下由于背景不均一,
目标体经常表现为比背景局部亮一些或暗一些,无法确定全局阈值操作,需要通过其邻域找到一个合适的阈值进行分割。
ThresholdImage是参考图像,通过与OrigImage对比找到领域确定阈值,一般采用平滑滤波算子(如mean_image)获取参考图像。
offset设定邻域比较的区间范围,灰度值变化在offset范围内均是可以接受的。
令 g_{o} = g_{OrigImage},
g_{t} = g_{ThresholdImage}
分别代表原图和参考图中的像素点的灰度值.
我们的做法是把参考图像的灰度值加上(减去)一个Offset,
然后去和原图的像素点逐像素对应地进行比较。
下面看Halcon中给出的这些公式:
The condition for?LightDark?= 'light' is:g_o>=g_t+offset ,light就提取相对参考图更亮的区域。
For LightDark='dark' ,the conditon is:?g_o<=g_t-offset ,dark就提取相对参考图更暗的区域
For LightDark='equal',g_t-offset<=g_o<=g_t+offset,选取和参考图差不多的区域。
shape_trans(Region : RegionTrans : Type : )
函数作用:
变换区域的形状
参数Type的可选项解释如下:
convex:凸包性
ellipse:与输入区域有相同的矩和区域的椭圆
outer_circle:最小外接圆
inner_circle:最大内接圆
rectangle1:平行于坐标轴的最小外接矩形
rectangle2:最小外接矩形
inner_rectangle1:平行于坐标轴的最大内接矩形
inner_rectangle2:输入区域的骨架点拥有同输入区域的重心点最小的距离