Halcon学习笔记(一)

一、Halcon编程之图像处理

1、读取图片

1、读取单个图片:

1.1 直接用算子read_image

read_image (Image, 'D:/3.tiff') 

2、读取多个图片

2.1 定义一个存放图片路径的数组,通过循环读取

imagepath:=[]

imagepath[0]:=['D:/1.tiff']
imagepath[1]:=['D:/2.tiff']
imagepath[2]:=['D:/3.tiff']
for Index := 1 to 5 by 1
read_image (Image,imagepath[Index])
endfor

 2.2 循环遍历读取

for i := 1 to 3 by 1
read_image (Image,'D:/'+i+'.tiff')
endfor

2.3 循环遍历读取

list_files ('D:/Images', ['files','directories','recursive','max_depth 2','max_files 8','follow_links'], ImageFiles)
tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles)
for Index := 0 to |ImageFiles| - 1 by 1
read_image (Image, ImageFiles[Index])
* Image Acquisition 02: Do something
endfor

3、工具栏—>读取图像

4、通过工具栏的【助手】

2、图像预处理

一般来说,我们采集到的图像会有一些小黑点,小斑点,不平滑等因素会会影响我们后期的算法,此时就需要我们对其图片进行预处理。

下面是一些预处理基本算子:

1、消除噪声:mean_image/binomial_filter

mean_image(Image,ImageMean,MaskWidth,MaskHeight)

参数:

 

Image:输入图像
ImageMean:输出图像
MaskWidth:遮掩的宽度【要过滤的宽度】
默认值: 9
建议值: 3, 5, 7, 9, 11, 15, 23, 31, 43, 61, 101
典型区域值: 1 ≤ MaskWidth ≤ 501
MaskHeight:遮掩的高度【要过滤的高度】
默认值: 9
建议值: 3, 5, 7, 9, 11, 15, 23, 31, 43, 61, 101
典型区域值: 1 ≤ MaskHeight ≤ 501

binomial_filter(Image,ImageBinomial,MaskWidth,MaskHeight)

参数:

Image :输入图像

ImageBinomial:输出图像
MaskWidth :遮掩的宽度【要过滤的宽度】
默认值: 5
可选值: 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37
MaskHeight :遮掩高度【要过滤的高度】
默认值: 5
可选值: 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37

2、抑制小斑点或者细线:median_image

median_image(Image,ImageMedian,MaskType,Radius,Margin)

参数:

Image:输入图像
ImageMedian:输出图像
MaskType:掩饰类型
Filter mask type.
默认值: 'circle'
可选值: 'circle', 'square'
可选值 (为计算机设备): 'square'
Radius :半径
默认值: 1
可选值 (为计算机设备): 1, 2
建议值: 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 15, 19, 25, 31, 39, 47, 59
典型区域类型值: 1 ≤ Radius ≤ 4095

Margin :
边界处理.
默认值: 'mirrored'
可选值 (为计算机设备): 'mirrored'
建议值: 'mirrored', 'cyclic', 'continued', 0, 30, 60, 90, 120, 150, 180, 210, 240, 255

 

 

3、平滑:smooth_image 

smooth_image(Image,ImageSmooth,Filter,Alpha)

参数:

Image :输入图像
ImageSmooth:输出图像
Filter :过滤
默认值: 'deriche2'
可选值: 'deriche1', 'deriche2', 'gauss', 'shen'
Alpha :
过滤参数: 小值导致强烈的平滑(亦然用 bei 'gauss').
默认值: 0.5
建议值: 0.1, 0.2, 0.3, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 4.0, 5.0, 7.0, 10.0
典型的范围值: 0.01 ≤ Alpha ≤ 50.0
最小增量: 0.01
建议增加: 0.1
限制: Alpha > 0

 

4、保存边缘的平滑:anisotropic_diffusion

anisotropic_diffusion(Image,ImageAniso,Mode,Contrast,Theta,Iterations)

参数:

Image:输入图像

ImageAniso:输出图像

Mode:

扩散系数函数的振幅
默认值: 'weickert'
可选值: 'parabolic', 'perona-malik', 'weickert'

Contrast:

对比,差别

默认值: 5.0
建议值: 2.0, 5.0, 10.0, 20.0, 50.0, 100.0
限制: Contrast > 0

Theta:
时间步
默认值: 1.0
建议值: 0.5, 1.0, 3.0
限制: Theta > 0
Iterations:

迭代次数
默认值: 10
建议值: 1, 3, 10, 100, 500
限制: Iterations >= 1

 5、scale_image

scale_image(Image : ImageScaled : Mult, Add : )缩放图像的灰度值。最佳Mult和Add值的选取由下: 

其中:GMin为图像的最大灰度值,GMax为图像的最小灰度值。

可配合算子min_max_gray(Regions, Image : : Percent : Min, Max, Range)得到。

min_max_gray(Regions, Image : : Percent : Min, Max, Range)确定区域内的最小和最大灰度值

min_max_gray创建输入图像图像区域内灰度值绝对值的直方图(参见gray_histo),并计算与输入图像区域相对应的像素百分比。然后它会在直方图的两边以这个像素的数量向内移动,并确定最小和最大的灰度值。

6、Sigma_image

posted @ 2017-05-06 16:34  love_wins  阅读(7348)  评论(0编辑  收藏  举报