机器视觉工业应用通用流程、标定机器视觉工业应用通用流程、标定机器视觉工业应用通用流程、标定
一 流程
在这里插入代码片
******************************************************************
************************* 工业视觉应用一般流程 *********************
******************************************************************
****************************** 1.读取图像 ******************************
****************************** 2.定位 *********************************
****************************** 3.获取ROI(感兴趣)区域 ******************
****************************** 4.图像预处理 *****************************
****************************** 5.图像算法处理 ***************************
****************************** 6.结果输出 *******************************

******************************************************************
************************* 工业视觉应用一般流程 *********************
******************************************************************
****************************** 0.窗口显示设置 ******************************
dev_get_window (WindowHandle)
dev_set_draw('margin')
* 设置显示字体大小
set_display_font (WindowHandle, 20, 'mono', 'true', 'false')
* dev_update_window ('off')
****************************** 1.读取图像 ******************************
read_image (Image2, 'C:/Users/11716/Desktop/漏失-0829/20220829154525449_02/System/2.jpg')
****************************** 2.定位(Blob分析) *********************************
*** 定位内圆
* <2.1> 阈值分割
threshold (Image2, Region, 240, 255)
* <2.2> 连通
connection (Region, ConnectedRegions)
* <2.3> 填充
fill_up (ConnectedRegions, RegionFillUp)
* <2.4> 通过特征筛选特征区域
select_shape_std (RegionFillUp, SelectedRegions, 'max_area', 70)
smallest_circle (SelectedRegions, Row, Column, Radius)
gen_circle (CircleIn, Row, Column, Radius)
*** 定位外圆
* <2.1> 阈值分割
threshold (Image2, Region, 40, 190)
* <2.2> 连通
connection (Region, ConnectedRegions)
* <2.3> 填充
fill_up (ConnectedRegions, RegionFillUp)
* <2.4> 通过特征筛选特征区域
select_shape_std (RegionFillUp, SelectedRegions, 'max_area', 70)
smallest_circle (SelectedRegions, Row, Column, Radius)
gen_circle (CircleOut, Row, Column, Radius)
****************************** 3.获取ROI(感兴趣)区域 ******************
* 内圆往里面一点(膨胀一点)
dilation_circle (CircleIn, RegionDilation1, 23.5)
* 外圆往里面一点(腐蚀)
erosion_circle (CircleOut, RegionErosion2, 23.5)
* 区域相减
difference (RegionErosion2, RegionDilation1, RegionDifference)
* 获取区域图像
reduce_domain (Image2, RegionDifference, ImageReduced)
****************************** 4.图像预处理 *****************************
****************************** 5.图像算法处理 ***************************
* <5.1 图像分割>
* 均值滤波:(模糊化,均衡化,平滑)
mean_image (ImageReduced, ImageMean, 40, 40)
dyn_threshold (ImageReduced, ImageMean, RegionDynThresh, 12, 'light')
* 膨胀腐蚀
*** 降噪:去除噪声
erosion_circle (RegionDynThresh, RegionErosion,2.5)
dilation_circle (RegionErosion, RegionDilation, 3.5)
* 连通
connection (RegionDilation, ConnectedRegions1)
* 根据面积选取特征区域
select_shape (ConnectedRegions1, SelectedRegions1, 'area', 'and', 200, 99999)
****************************** 6.结果输出 *******************************
count_obj (SelectedRegions1, Number)
if(Number>0)
dev_set_color ('red')
Text := 'NG'
* 显示缺陷区域
dev_display (SelectedRegions1)
* 显示文本
disp_message (WindowHandle, Text, 'window', 12, 12, '', 'false')
endif
二 常用标定
- 像素变换(圆、矩形、像素单量)
- 透视投影及光学畸变校正
- 不同坐标系之间的标定(不共线的三点确定一个坐标系)。如九点标定(机械手)
- 多个相机通过标定统一到同一个坐标系(标定板、机械手)
三 视觉系统与机器如关联

1)通讯:静态拍图,机器用网口或串口发一个指令(比如A0)给视觉系统,视觉系统收到后拍照及处理,输出结果给机器
2)外触发:(静态拍图、动态拍图)1.视觉系统开采图线程循环等待。2.传感器或者IO口给一个脉冲或者电平变化触发相机的IO口,采图线程中相机接受到触发信号,拍照及处理,输出结果给机器。
(1)通讯:静态拍图,机器用网口或串口发一个指令(比如A0)给视觉系统,视觉系统收到后拍照及处理,输出结果给机器

(2)外触发:(静态拍图、动态拍图)1.视觉系统开采图线程循环等待。2.传感器或者IO口给一个脉冲或者电平变化触发相机的IO口,采图线程中相机接受到触发信号,拍照及处理,输出结果给机器。
