工控编程吧
标题: 工业视觉 halcon 开运算opening函数介绍 [打印本页]
作者: qq263946146 时间: 2019-6-1 17:43
标题: 工业视觉 halcon 开运算opening函数介绍
1.opening(Region, StructElement : RegionOpening : : )
开运算操作被定义为一个侵蚀,然后是一个闵可夫斯加法。
通过对一个区域施加opening,较大的结构基本上保持完整,
而像线或点这样的小结构则被消除。
相反,闭运算操作会导致小的间隙被保留或填补(参见函数 closing)。
开运算用于消除小区域(小于StructElement)并平滑区域边界。
StructElement的位置是没有意义的,因为开运算操作对于参考点的选择是不变的。
可以使用
gen_circle、
gen_rectangle1、
gen_rectangle2、
gen_ellipse、
draw_region、
gen_region_polygon、
gen_region_points等操作符生成结构化元素(StructElement)。
例程:
read_image(Image,'forest_road')
threshold(Image,Light,160,255)
gen_circle(StructElement,100,100,10)
* 运用开运算,去除小的杂乱的区域
opening(Light,StructElement,Large)
* 通过一定的旋转方向选择边
read_image(Image,'fabrik')
sobel_amp(Image,Sobel,'sum_abs',3)
threshold(Sobel,Edges,10,255)
gen_rectangle2(StructElement,100,100,3.07819,20,1)
opening(Edges,StructElement,Direction)
2.opening_circle(Region : RegionOpening : Radius : )
opening_circle被定义为一个侵蚀,后面跟着一个Minkowsi添加了一个圆形结构元素(参见示例)。
opening用于消除小区域(小于圆形结构元素),并平滑区域边界。
例程:
read_image (Image, 'forest_road')
threshold (Image, Region, 120, 255)
* 闭合小的间隔
closing_circle (Region, RegionClosing, 3.5)
* 选择大的区域
opening_circle (RegionClosing, RegionOpening, 19.5)
3.opening_rectangle1(Region : RegionOpening : Width, Height : )
opening_rectangle1在输入区域Region 上执行一个erosion_rectangle1和一个dilation_rectangle1。
矩形结构单元的大小由参数 Width, Height决定。
与所有开放变量的情况一样,较大的结构被保留,而像线或点这样的小区域被删除。
例程:
dev_update_window ('off')
read_image (Fins, 'fin' + [1:3])
get_image_size (Fins, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width[0], Height[0], 'black', WindowID)
set_display_font (WindowID, 14, 'mono', 'true', 'false')
for I := 1 to 3 by 1
select_obj (Fins, Fin, I)
dev_display (Fin)
binary_threshold (Fin, Background, 'max_separability', 'light', UsedThreshold)
dev_set_color ('blue')
dev_set_draw ('margin')
dev_set_line_width (4)
dev_display (Background)
disp_continue_message (WindowID, 'black', 'true')
stop ()
closing_circle (Background, ClosedBackground, 250)
dev_set_color ('green')
dev_display (ClosedBackground)
disp_continue_message (WindowID, 'black', 'true')
stop ()
difference (ClosedBackground, Background, RegionDifference)
opening_rectangle1 (RegionDifference, FinRegion, 5, 5)
dev_display (Fin)
dev_set_color ('red')
dev_display (FinRegion)
area_center (FinRegion, FinArea, Row, Column)
if (I < 3)
disp_continue_message (WindowID, 'black', 'true')
stop ()
endif
endfor
执行例程可以看到,嵌入到白色区域的缺陷将会被选择与去除
(, 下载次数: 1)