Halcon基础常用算子

下面是在学习过程中,经常使用的一些算子,先慢慢写下来
首先介绍一些Halcon的一些打开窗口导入图片的一些基本算子

  1. 创建窗口的三种方式
    第一种:
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)

dev_display (Image)

打开一个固定大小的窗口 由(ROW,CLOUM)[0,0]到[512,512]

第二种:

dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle1)

dev_set_window (WindowHandle1)

dev_display (Image)

打开具有给定最小和最大范围的新图形窗口,以便保留给定图像的纵横比。
WidthLimit设置为-1,则使用以下默认值:[500,800]。
HeightLimit设置为-1,则使用以下默认值:[400,600]。
如果根据窗口宽高限制无法创建窗口,则忽略最小窗口大小的限制
可以根据帮助文档来了解更加仔细的内容

第三种:

ev_open_window_fit_size (0, 0, Width, Height, -1, -1, WindowHandle2)

dev_set_window (WindowHandle2)

dev_display (Image)

打开具有给定最小和最大范围的新图形窗口,以便保留给定图像大小的宽高比
WidthLimit设置为-1,则使用以下默认值:[500,800]。
HeightLimit设置为-1,则使用以下默认值:[400,600]。
如果根据窗口宽高限制无法创建窗口,则忽略最小窗口大小的限制

2.接下来就是一些对图片的操作:

gen_circle (Cricle1, 224.5, 250.5, 131.727)
complement (Cricle1, RegionComplement)

上述代码是对区域进行取反,这里注意的是,是对窗口的全局进行取反

gen_circle (Cricle1, 122.5, 126.5, 69.7711)
gen_circle (Cricle2, 122.5, 179.5, 73.9256)
difference (Cricle1, Cricle2, RegionDifference)

最后一个算子,就可以当作Circle1-Cricle2 这样的一个作法,可以把重叠的部分给减去掉 用数学的上的式子表达的就是 C1-(C1∩C2) 这个表达比较明确.

symm_difference(Cricle1, Cricle2 ,RegionDifference)

直接上数学表达式把 (C1∪C2)-(C1∩C2) 简而言之就是把相交的部分除去

3、接下来就是阈值操作了,这里介绍集中阈值的方法

auto_threshold (image, Regions, Sigma)

*根据图像的灰度直方图来确定阈值,这里的Sigma是高斯滤波器,用于直方图的平滑.

binary_threshold (image, RegionMaxSeparabilityLight, 'max_separability', 'dark', UsedThreshold)

二值化即是将像素分为0和255两个值
使用二值化阈值分割图像
如果LightDark =“light”,则选择灰度值大于或等于最佳阈值的所有像素。
如果LightDark =“dark”,则选择灰度值小于的最佳阈值的 所有像素。
通过选择Method =‘max_separability’,可以调用灰度直方图的自动阈值。
该算法首先计算图像的直方图,然后使用统计矩来找到将像素划分为前景和背景的最佳阈值,
并使这两个类之间的可分离性最大化。 此方法仅适用于字节和uint2图像。

char_threshold (image, image, Characters, 6, 95, Threshold)

阈值分割提取字符,**主要应用是在明亮的纸上分割黑色字符单通道图像

dual_threshold (ImageSub, RegionDiff, 500, 20, 10)

将有符号图像分割为正负两个区域

dyn_threshold (image, ImageMean, RegionDynThresh, 15, 'not_equal')

用局部阈值来分割图像。
第一个输入参数:原始图像
第二个输入参数:滤波后的图像
第三个输出参数:分割后的区域
第四个输入参数:补偿值,范围在5到40之间比较有用
第五个输入参数:提取区域的类型,是亮的区域,或暗的区域,或相似区域

threshold (image, Region, 0, 150)

这个就不用多讲了,运用的就是灰度值

var_threshold (image, Region, 15, 15, 1.0, 40, 'dark')

通过局部平均值和标准偏差进行阈值图像。试用场合不均匀的照明或噪声的图像
第一个输入参数:输入图像
第二个输出参数:分割后的区域
第三个输人参数:均值和标准差的掩码宽度
第四个输入参数:均值和标准差的掩码高度
第五个输入参数:标准差因子
第六个输入参数:最小灰度值和均值之差
第七个输入参数:提取区域的类型,是亮的区域,或暗的区域,或相似区域,或不相似区域

未完待续。。。

你可能感兴趣的:(Halcon,机械视觉,halcon,算子)