ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

halcon-学习笔记

2022-01-04 23:34:32  阅读:215  来源: 互联网

标签:region RegionDynThresh SelectedRegions 笔记 halcon 学习 区域 图像 circle


*halcon基础编程
	等号  := 
	不等号 #
	注释号 *
	字符串赋值 str := 'halcon'
	等于比较符 if(X=10)
	与: if(A>1 and A<30)
	或: if(A>1 or A<30)
	求反: if(not(A=10))


* 二值化
threshold (Image, Region, 100, 255)4

* 形状变换
shape_trans (Region, RegionTrans, 'rectangle2')

* 抠图
reduce_domain (Image, RegionTrans, ImageReduced)

* 填充图像region
fill_up_shape(Region1, RegionFillUp, 'area', 1, 100)

* 用圆形结构元素打开一个区域。
opening_circle (RegionFillUp, RegionOpening, 15.5)

* 开运算
opening_rectangle1 (RegionFillUp, RegionOpening, 140, 100)

* 面积筛选
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 800, 1100)

* 排序
sort_region (SelectedRegions, SortedRegions, 'first_point', 'true', 'column')

*计算区域的最小外接圆参数。
smallest_circle (SortedRegions, Row, Column, Radius)

* 彩色图转灰度图
rgb1_to_gray (Image, GrayImage)

# ================================================================================
一.图像分割
	1 => 灰度直方图的使用
	2 => 阈值分割
		threshold (Image, Region, 100, 255) # 二值化
		binary_threshold (GrayImage, Region, 'smooth_histo', 'light', UsedThreshold) # 自动阈值分割
		dyn_threshold (ImageMean, GrayImage, RegionDynThresh, 25, 'dark') #使用局部阈值分割图像 动态阈值分割 + mean_image
		mean_image (GrayImage, ImageMean, 10,10) 平均平滑。图像不均匀用动态 
二.区域集合运算及变换
	1 => 集合运算
		union1 (RegionDynThresh, RegionUnion) # 合并
		difference (RegionUnion, RegionUnion, RegionDifference) # 差集  地府润次
		intersection (SelectedRegions, ConnectedRegions, RegionIntersection) # 交集  
		complement # 补集 con p men t
	2 => 区域变换
		connection (RegionDynThresh, ConnectedRegions) # 打散
		fill_up (ConnectedRegions, RegionFillUp) # 填充
		shape_trans (RegionFillUp, RegionTrans, 'convex') # 变换区域的形状。
		skeleton (RegionTrans, Skeleton) # 骨架
三.形态学  # (fin.hdev, dyn_threshold.hdev, hull.hdev, rim.hdev)
		opening (RegionDynThresh, RegionDynThresh, RegionOpening) # 开运算
		opening_circle (RegionDynThresh, RegionOpening, 3.5)
		closing_circle (RegionDynThresh, RegionClosing, 3.5) # 闭运算
		dilation1 (RegionClosing, RegionClosing, RegionDilation, 1) # 膨胀 扩张区。
		erosion1 (RegionDilation, RegionDilation, RegionErosion, 1) # 腐蚀
		boundary (RegionErosion, RegionBorder, 'inner') # 减少一个区域到它的边界。 分界线,获取边缘

四.特征提取
		area_center (RegionDynThresh, Area, Row, Column) # 计算区域的面积和中心。
		select_shape (RegionDynThresh, SelectedRegions, 'area', 'and', 150, 99999) # 根据形状特征选择区域。
		inner_circle (SelectedRegions, Row1, Column1, Radius)  # 区域最大内圆。
		smallest_circle (SelectedRegions, Row2, Column2, Radius1) # 计算区域的最小外接圆参数。
		orientation_region (SelectedRegions, Phi) # 区域定位。
		region_features (SelectedRegions, 'area', Value) # 计算区域的形状特征。



#==========================================玩法======================================================
dilation_circle (Region2, RegionDilation1, 3.5)
erosion_circle (Region2, RegionErosion2, 3.5)
difference (RegionDilation1, RegionErosion2, RegionDifference1)
# 膨胀 收缩 取差集 得出轮廓
# closing 先膨胀在收缩
# opening 先收缩在膨胀

创建圆弧XLD轮廓 gen_circle_contour_xld
select_obj() # 从对象元组中选择指定索引的对象。
write_region() # 保存区域
* 设置文本光标的位置。
set_tposition (WindowHandle, Row3-200, Column3)
write_string()

# ======================================================================================
距离工具
	1.点到点 distance_pp   在指定点生成一个十字状的轮廓。gen_cross_contour_xld
	2.点到直线 distance_pl
	3.点到区域的最长最短 distance_pr
	4.直线到区域最长最短 distance_lr (平面度)
	5.区域与区域最短 distance_rr



BLOB分析 几何变换(区域的几何变换,仿射变换,运用几何变换定位处理区域)
	1.几何变换
		1 平移 move_region; 可以做区域位置平移,平移后相减可以得到区域某一边的边缘
		2 缩放 zoom_region
		3 镜像 mirror_region  (height/2) *2 
		4 倒置 transpose_region;
		5 极坐标与笛卡尔坐标互换 polar_trans_region() , polar_trans_region_inv() # 相反的, (circle_barcode) 
		  invert_image() 反转图片 白变黑 


	2 仿射变换 
		1 区域的任意变换 affine_trans_region
		2 创建二维变换矩阵 hom_mat2d_identity
		3 平移 hom_mat2d_translate
		4 缩放 hom_mat2d_scale
		5 旋转 hom_mat2d_rotate
		6 刚性 仿射变换 vector_angle_to_rigid 对象图,区域进行仿射变换
		7 扩展图像变换 affine_trans_image
		综合例程讲解: ball_seq, check_blister, check_bottle, clip, find_pads , count_pellets




扩展灰度(expand_gray)
	填补空白区域之间(取决于灰度或彩色)或分裂重叠区域。



图像取通道(access_channel)
获取一个多通道图像的一个通道;
	多通道图像(MultiChannelImage)   ---   输出对象(input_object)
	输入多通道图像

	输出图像(Image)   ---   输出对象(output_object)
	输出指定的通道图像

	通道(Channel)   ---   输入元组(input_control)
	通道数量,默认值:1;参考值:1,2,3,4,5,6,7,8,9,10,11,12,该值必须1≤Chnnel

区域方向(orientation_region)
区域定位。

	区域(Regions)   ---   输出对象(input_object)
	将要检查的区域(s)。

	区域方向弧度(Phi)   ---   输出元组(output_control)
	区域定位(电弧测量)。

标签:region,RegionDynThresh,SelectedRegions,笔记,halcon,学习,区域,图像,circle
来源: https://www.cnblogs.com/lddragon1/p/15765077.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有