机器视觉实验指导书 2王海晖Word文档格式.docx
- 文档编号:19897885
- 上传时间:2023-01-12
- 格式:DOCX
- 页数:21
- 大小:44.25KB
机器视觉实验指导书 2王海晖Word文档格式.docx
《机器视觉实验指导书 2王海晖Word文档格式.docx》由会员分享,可在线阅读,更多相关《机器视觉实验指导书 2王海晖Word文档格式.docx(21页珍藏版)》请在冰豆网上搜索。
2、算子说明:
1open_framegrabber
函数功能:
打开并设置一个图像采集器
调用格式:
open_framegrabber(:
:
Name,HorizontalResolution,VerticalResolution,ImageWidth,ImageHeight,StartRow,StartColumn,Field,BitsPerChannel,ColorSpace,Generic,ExternalTrigger,CameraType,Device,Port,LineIn:
FGHandle
参数:
Name--Halcon图像采集接口。
比如:
对应的DLL(Windows的名字或者共享的库函数(UNIX的名字
Gerneric--图像增益数,可以控制采集到的图像亮度
FGHandle--图像采集函数句柄
2grab_image
函数功能:
采集图像
调用格式:
grab_image(:
Image:
FGHandle:
参数:
Image----采集图像的名称
FGHandle--帧采集器句柄
===================采集图像部分的程序实例====================
1
dev_close_window(
open_framegrabber('
PXC'
1,1,0,0,0,0,'
8,'
AUTO'
-1,1,FGHandle
grab_image(Image,FGHandle
get_image_pointer1(Image,Pointer,Type,Width,Height
dev_open_window(0,0,Width,Height,'
black'
WindowHandle
2
dev_update_window('
off'
DT315x'
2,2,0,0,0,0,'
WindowID
【实验步骤】
1、工件定位:
将工件放置到平台转盘上相应位置,确保动态图象采集根据被测对象要求。
2、光源调整:
选择前光源或背光源确保图象不受自然光源影响。
3、焦距调节:
根据被测对象大小和厚度,调节支架横枞位置和相机焦距。
4、打开图像处理软件,通过变量输入窗口、源程序窗口、菜单栏算子三种方式添加算子,编写工件尺寸的测量与标定程序。
其中,相机采集部分的算子可借助菜单栏“助手”—“opennewImageacquisition”设置,生成代码。
(参见前一部分《图像处理软件操作》,如MV-VS860平台中相机的代码:
DirectShow'
rgb'
false'
MVOneVideoCapture'
0,-1,FGHandle//采集卡初始化设置
set_framegrabber_param(FGHandle,'
saturation'
0//设置采集卡参数
while(true//循环采集
*Dosomething//在这里添加算法步骤,对Image,即原始图像做处理
endwhile
close_framegrabber(FGHandle
主要算法步骤:
-----------------------
1通过包含如图1-1(b描述引脚的ROI矩形创建测量对象。
ROI矩形用以取得垂直于矩形主轴的各个直线边界对。
运用算子gen_measure_rectangle2返回所创建对象的句柄MeasureHandle。
gen_measure_rectangle2(Row,Column,Phi,Length1,Length2,Interpolation,MeasureHandle------------------------
2将句柄MeasureHandle传寄给测量函数进行测量。
用measure_pairs算子检测,该算子能提取出引脚对应的边缘对并返回其宽度(每组边缘对的两边之间的距,IntraDistance和距离(连续两个边缘对之间的距离,InterDistance。
measure_pairs(Image,MeasureHandle,Sigma,Threshold,Transition,Select,RowEdgeFirst,ColumnEdgeFirst,AmplitudeFirst,RowEdgeSecond,ColumnEdgeSecond,AmplitudeSecond,IntraDistance,InterDistance
------------------------
要测量引脚的宽度及其之间的距离。
用一维测量,这个任务可迎刃而解,因为位置、距离都是沿着一条线测量的。
============================参考程序===============================open_framegrabber('
1,1,0,0,0,0,'
-1,'
gray'
'
default'
-1,-1,FGHandle//打开图像采集设备,DirectShow即为相机的参数,'
表示黑白相机set_framegrabber_param(FGHandle,'
grab_image(Image,FGHandle//抓取图像
read_image(Image,'
C:
/Templ'
//读取图像,因grab_image抓取的图像保存在C:
/Templ中get_image_pointer1(Image,Pointer,Type,Width,Height//获得图像参数
WindowHandle//打开图像显示窗口,设置背景色为黑色
dev_display(Image//显示图像
Row:
=390
Column:
=380//定义ROI矩形的R/C坐标
Phi:
=rad(-60//矩形偏移水平位置的角度,逆时针为正,顺时针为负
Length1:
=60
Length2:
=10//定义ROI矩形长度及宽度
Interpolation:
='
nearest_neighbor'
//定义被检测对象的相互关系
gen_measure_rectangle2(Row,Column,Phi,Length1,Length2,Width,Height,Interpolation,MeasureHandle//创建ROI矩形
Sigma:
=0.9
Threshold:
=12
Transition:
negative'
Select:
all'
measure_pairs(Image,MeasureHandle,Sigma,Threshold,Transition,Select,RowEdgeFirst,ColumnEdgeFirst,AmplitudeFirst,RowEdgeSecond,ColumnEdgeSecond,AmplitudeSecond,IntraDistance,InterDistance//在指定ROI矩形区域内,检测符合Threshold:
=12的所有边缘对
dev_display(Image
dev_set_draw('
margin'
//设置图形的显示方式
dev_set_color('
//设置字体的颜色
gen_rectangle2(Rectangle,Row,Column,Phi,Length1,Length2//在显示窗口中输出矩形p_disp_dimensions(RowEdgeFirst,ColumnEdgeFirst,RowEdgeSecond,ColumnEdgeSecond,IntraDistance,InterDistance,Phi,Length2,WindowHandle//测量结果显示函数
close_measure(MeasureHandle//清除与测量相关的缓存文件
close_framegrabber(FGHandle//关闭图像采集设备
5、电子插件参数实验测量结果如图1-2所示:
标示了引脚的边缘,宽度及其之间的距离。
图1-2:
开关引脚宽度及相互距离检测结果
参考例程:
examples\solution_guide\1d_measuring\measure_switch.dev。
6、延伸训练
图1-3a测引脚的宽度以及各个引脚的间距b测引脚的长度
这个训练的任务是检测芯片的主要尺寸(见图1-3。
1检测每个引脚的宽度以及各个引脚的间距(更加重要。
我们定义一个包含引脚的矩形ROI(见图1-3a,这就产生了测量目标。
gen_measure_rectangle2(Row,Column,Phi,Length1,Length2,Width,eight,’nearest_neighbor’,MeasureHandle
measure_pairs(Image,MeasureHandle,1.5,30,’negative’,’all’,RowEdgeFirst,ColumnEdgeFirst,AmplitudeFirst,RowEdgeSecond,ColumnEdgeSecond,AmplitudeSecond,PinWidth,PinDistance
通过取出的各个直线边界对,就可以得到引脚数目、平均宽度和他们的平均间距
numPins:
=|PinWidth|
avgPinWidth:
=sum(PinWidth/|PinWidth|
avgPinDistance:
=sum(PinDistance/|PinDistance|
2确定引脚的长度。
尽管每个引脚的宽度都只有几个象素,但还是可以求出他们的长度。
为了完成这个任务,我们画出了一个包含了芯片两个对边引脚的矩形,从而得到了一个新的测量区域(见图1-3b。
找到的第一条边和第二条边之间的距离就是上侧引脚的长度,第三条和第四条就是下面引脚的长度。
gen_measure_rectangle2(Row,Column,Phi,Length1,Length2,Width,Height,’nearest_neighbor’,MeasureHandle
measure_pos(Image,MeasureHandle,1.5,30,’all’,’all’,RowEdge,ColumnEdge,Amplitude,Distance
参考例程:
examples\hdevelop\Applications\Measure\measurepin.dev
============================参考程序===============================dev_close_window(
ic_pin'
dev_open_window(0,0,Width/2,Height/2,'
stop(
draw_rectangle2(WindowHandle,Row,Column,Phi,Length1,Length2//创建矩形,各参数定义如下。
=47//矩形中心点Row值
=485
=0//矩形偏移水平位置的角度,逆时针为正,顺时针为负
=420//矩形长度
=10//矩形宽度
green'
dev_set_line_width(3
gen_rectangle2(Rectangle,Row,Column,Phi,Length1,Length2
gen_measure_rectangle2(Row,Column,Phi,Length1,Length2,Width,Height,'
MeasureHandle
dev_update_pc('
dev_update_var('
n:
=100
count_seconds(Seconds1
fori:
=1tonby1
measure_pairs(Image,MeasureHandle,1.5,30,'
RowEdgeFirst,ColumnEdgeFirst,AmplitudeFirst,RowEdgeSecond,ColumnEdgeSecond,AmplitudeSecond,PinWidth,PinDistance
endfor
count_seconds(Seconds2
Time:
=Seconds2-Seconds1
red'
disp_line(WindowHandle,RowEdgeFirst,ColumnEdgeFirst,RowEdgeSecond,ColumnEdgeSecond
OpSystem:
=environment('
OS'
if(OpSystem='
Windows_NT'
set_font(WindowHandle,'
-Arial-18-*-*-*-*-*-'
else
-*-courier-*-*-*-*-18-*-*-*-*-*-*-*'
endif
yellow'
set_tposition(WindowHandle,200,100//设置文字输入位置
write_string(WindowHandle,'
Numberofpins:
'
+numPins//显示测量数据:
Numberofpinsset_tposition(WindowHandle,260,100
AveragePinWidth:
+avgPinWidth
set_tposition(WindowHandle,320,100
AveragePinDistance:
+avgPinDistance
dump_window(WindowHandle,'
tiff_rgb'
\\Temp\\pins_result'
draw_rectangle1(WindowHandle,Row1,Column1,Row2,Column2
Row1:
=0
Column1:
=600
Row2:
Column2:
=700
blue'
disp_rectangle1(WindowHandle,Row1,Column1,Row2,Column2
dev_set_part(Row1,Column1,Row2,Column2
dev_display(Rectangle
close_measure(MeasureHandle
dev_set_part(0,0,Height-1,Width-1
draw_rectangle2(WindowHandle,Row,Column,Phi,Length1,Length2
=508
=200
=-1.5708
=482
=35
measure_pos(Image,MeasureHandle,1.5,30,'
RowEdge,ColumnEdge,Amplitude,Distance
PinHeight1:
=RowEdge[1]-RowEdge[0]
PinHeight2:
=RowEdge[3]-RowEdge[2]
disp_line(WindowHandle,RowEdge,ColumnEdge-Length2,RowEdge,ColumnEdge+Length2dev_set_color('
set_tposition(WindowHandle,RowEdge[1]+40,ColumnEdge[1]+100
PinHeight:
+PinHeight1
set_tposition(WindowHandle,RowEdge[3]-120,ColumnEdge[3]+100
+PinHeight2
\\Temp\\pins_height_result'
fill'
dev_set_line_width(1
实验二线弧测量及定标实验
(一实验类型:
(二实验目的:
通过该实验使得学生掌握如何建立线弧类工件的基本检测步骤,如何将轮廓分成线段和(圆弧以及如何测定相关的参数。
具备解决实际工件参数(如长、宽、高视觉测量的问题。
进而扎实掌握工件边缘长度测量、圆弧测量以及线段与圆弧混合测量等新技术。
(三实验要求:
用Halcon测量弧线及标定算法
(四实验内容:
测量包括工件顶端凸圆半径、凸缘端两耳朵圆孔半径、两切线长度、中心小孔半径、矩形长度和宽度,工件图像如图2-1所示。
图2-1待测工件
1、线弧类工件的测量,需采用近似匹配的方法。
2、亚像素(Sub-Pixel定义:
摄像机的成像面的分辨率以像素数量来衡量。
但像素中心之间的距离有几个至十几个微米不等。
为了最大限度利用图像信息来提高分辨率,提出了Sub-Pixel概念。
意思是说,在两个物理像素之间还有像素,称之为Sub-Pixel,它完全是通过计算方法的出来的。
3、算子及函数说明:
1edges_sub_pix
用Deriche,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 机器视觉 实验指导书 2王海晖 机器 视觉 实验 指导书 王海晖