基于haclon的曲线针识别实例
本例子介绍了一个利用haclon对曲线针进行识别的例子,目标是计算并确定曲线针的位置和方向,曲线针如图所示:
1.启动HDevelop,新建一个程序:
2.读入图片:
在输入算子函数处输入read_image
输入图片变量名:Image1,图片的路径点击filename.read选取图片路径。
点击输入会看到程序输入区出现输入图片命令的代码
运行程序:
窗口左侧图像变量区会出现相应的图像变量,并且图像窗口显示读入的图像。
3.选取可视化-工具-灰度直方图命令
点击阈值旁边的使能 。调整阈值的最小值和最大值,调整过程中可以看到阈值调整的实时图:
当阈值为10到55左右时图像2值处理效果较好。
4.添加阈值分割函数threshold。
设置阈值最小值为10,最大值为55.点击输入插入代码
5.添加后继函数
选中刚插入的程序行,打开菜单栏中的 建议-后继函数。选择connection算子。目的是把选择的像素分割成区域。
单击确定。通过connection计算得到的区域用不同的颜色显示。
6.鼠标移到图形变量ConnectedRegions右键显示目录—选择。出现如下图所示,测量出来的区域。
发现区域数比曲线针数多了1个,因为图像左上角有干扰图像。
7.根据特征值选择区域排除干扰区域
点击可视化—工具—特征值直方图工具,它有助于选择拥有共同属性或特性的区域。
激活area旁边的使能 。移动最小和最大值剔除干扰区域:
点击插入代码,运行程序查看区域,发现区域数为13,干扰区域已经被剔除
添加orientation_region(SelectedRegions,Phi) 得到针的方向,返回的Phi为针的方向角度
area_center(SelectedRegions,Area,Row,Cloumn)返回每个针区域的中心位置。
运行程序得到结果,结果在控制变量区域有显示
8.在循环体中访问检测结果。
点击菜单栏—算子—控制—for
设置参数:
|Phi|-1是HDevelop语言的一部分,|Phi|表示元组元素的个数。点击输入。
然后在for循环中添加如下代码:
set_tposition(3600,Row[index],Cloumn[Index])
write_string(3600,deg(Phi[Index])+’degree’)
算子set_tposition把图形窗口中的文本光标位置移至索引Index所对应的区域的中心位置。3600是目标图形窗口的窗口句柄。显示在窗口标题栏
Row[Index]是HDevelop语言的另外一个算子。通过它来访问突破了元组的一个元素。
算子write_string的作用是在图形窗口中,在当前光标位置输出指定字符。deg()是把弧度转换为角度的意思。
9.最后结果如图所示: