机器视觉工程应用主要可划分为硬件和软件两大部分。 硬件:工程应用的第一步就是硬件选型。硬件选型很关键,因为它是你后面工作的基础。主要是光源、工业相机和镜头选择。 软件:目前业内商业库主要有Halcon,康耐视,DALSA,evision,NI等,开源库有OpenCV.其中NI的labview+vision模块。 机器视觉工程应用的基本开发思路是:
下面在Halcon下对这四个步骤进行讲解。 一、图像采集: Halcon通过imageacquisition interfaces对各种图像采集卡及各种工业相机进行支持。其中包括:模拟视频信号,数字视频信号Camera Link,数字视频信号IEEE 1394,数字视频信号USB2.0,数字视频信号Gigabit Ethernet等。 Halcon图像获取的思路:1、打开设备,获得该设备的句柄。2、调用采集算子,获取图像。 1、打开设备,获得该设备的句柄。 open_framegrabber('DahengCAM', 1, 1, 0, 0, 0, 0, 'interlaced', 8, 'gray', -1, 'false','HV-13xx', '1', 1, -1, AcqHandle) //连接相机,并设置相关参数
2、调用采集算子,获取图像。 grab_image (Image, AcqHandle) //(同步采集)完后处理图像,然后再采集图像。采集图像的速率受处理速度影响。 grab_image_async (Image, AcqHandle,MaxDelay) //(异步采集),一幅画面采集完后相机马上采集下一幅画面,不受处理速度影响。其中第三个参数为:MaxDelay,表示异步采集时可以允许的最大延时,本次采集命令距上次采集命令的时间不能超出MaxDelay,超出即重新采集。 图像采集其他相关算子: 例子: * Select a suitable image acquisition interface nameAcqName open_framegrabber(AcqName,1,1,0,0,0,0,'default',-1,'default',-1.0,\ 'default','default','default',-1,-1,AcqHandle) grab_image(Image1,AcqHandle)//进行同步采集 * Start next grab grab_image_start(AcqHandle,-1.0)//命令相机进行异步图像采集开始 * Process Image1 ... * Finish asynchronous grab + start next grab grab_image_async(Image2,AcqHandle,-1.0)//读取异步采集的图像 * Process Image2 ... close_framegrabber(AcqHandle) 3、相机参数读写 读取相机参数: info_framegrabber( : : Name, Query : Information, ValueList) 写相机参数: set_framegrabber_param( : : AcqHandle, Param, Value : ) 二、图像分割: 图像分割的定义: 1、基于阈值的图像分割 threshold —采用全局阈值分割图像。 格式: 自动全局阈值分割的方法: (1)计算灰度直方图 代码: gray_histo(Regions, Image,AbsoluteHisto, RelativeHisto) //计算出图像区域内的绝对和相对灰度值直方图。 PeakGray := sort_index(AbsoluteHisto)[255] //求出出现频率最多的灰度值 bin_threshold — 使用一个自动确定的阈值分割图像。 格式: dyn_threshold —使用一个局部阈值分割图像。 格式: 例子: mean_image(Image,Mean,21,21) dyn_threshold(Image,Mean, RegionDynThresh,15,'dark') var_threshold —阈值图像局部均值和标准差的分析。 格式: 2、基于边缘的图像分割:寻找区域之间的边界 watersheds —从图像中提取分水岭和盆地。 格式: watersheds_threshold —使用阈值从图像中提取分水岭和盆地。 格式: 3、基于区域的图像分割:直接创建区域 三、形态学处理 形态学处理以集合运算为基础。 腐蚀、膨胀、开操作、闭操作是所有形态学图像处理的基础。 开操作(先腐蚀再膨胀)使对象的轮廓变得光滑,断开狭窄的间断和消除细的突出物。 闭操作(先膨胀再腐蚀)消弥狭窄的间断和长细的鸿沟,消除小的孔洞,填补轮廓线的断裂。 形体学基础算子: erosion1 常用的形态学相关算子 形态学高级算子: 四、特征提取: 1、区域特征: area smallest_rectangle1 smallest_circle convexity:区域面积与凸包面积的比例 contlength:区域边界的长度 compactness 2、灰度特征 estimate_noise select_gray 五、输出结果: (1)获取满足条件的区域 (2)区域分类,比如OCR (3)测量 (4)质量检测 |
|