螺纹检测程序
1、首先对彩色图像进行灰度处理:采用的模块是,该模块不一定正确。
2、对图像进行中值滤波。模块,
3、灰度阈值分割,,凸显感兴趣轮廓。变位二值化图像。
4、边缘检测。同样是滤波模块,采用canny算法,。
5、形态学处理。对边缘图像进行闭合计算。,
二值化图像中空洞都被填补,并且图像边缘细节更加的完善。
通过“视觉助手”生成程序框图如下:
6、接下来截取感兴趣区域(左右螺纹区域),截取模块为。由于有左右螺纹,要截取两次。
按照常规思想可以截取左右螺纹同时并行处理。但是“视觉助手”不支持并行,手动在程序框图添加后,结果也只能截取一边。通过研究采用的解决方案是:采用现将原图像缓存下来,在分别截取。(原因没搞清楚)
缓存模块:,可以储存、提取。
7、图像显示模块的属性,要勾选,不然显示图像不对,(具体原因也不清楚)。
8、将图像转换为数组,检测边缘,将螺纹转换为曲线。
9、检测曲线的波峰、波谷。(这里需要注意,必须对图像进行平滑处理,不然检测处理结果不对)。
10、可以在XY图上显示多个曲线,方法为:一组数据一个簇。
11、中经检测。其大小是母线通过牙型上沟槽和凸起宽度相等位置的假想圆柱面的直径。这里存在求交点问题,这里采用的方法是比较大小然后求异或,可找到交点的位置。这个算法需要注意(研究了半天)。当找到交点时,采用数组插入方式记录点。该数字一定要初始化,不然会保存上一次运行结果,初始化放在每次循环开始。每一条线的交点找到后要进行计算,需要另外建立一个数组,因为原来数组被初始化了。