VPLC系列机器视觉运动控制一体机快速入门(九)

发布者:RainbowMelody最新更新时间:2024-10-08 来源: elecfans关键字:机器视觉 手机看文章 扫描二维码
随时随地手机看文章

此前,我们依次讲解了软硬件介绍及计数实例、相机的基本使用、基于形状匹配的视觉定位、BLOB有无检测、测量尺寸、机器视觉方案中使用到的标定功能、ZDevelop软件实现识别条形码和二维码,以及测量点/直线/圆的功能。

本期课程我们和大家一起分享机器视觉中使用到的简单的外观检测功能---检测划痕。


2.png?imageView2/2/w/1000


一、原理

外观检测是机器视觉技术中一个重要的检测功能,它可以检测产品表面的脏污、瑕疵、缺陷、毛边、划痕等不良因素。在包装行业和生产制造业被广泛应用。



3.png?imageView2/2/w/1000


1.划痕检测的原理是什么?

由于划痕是随机出现且不具有固定形态的特征,因此无法使用匹配等定位功能检测判断划痕。这时就需要用到形态学处理提取划痕特征,再配合BOLB检测判断划痕有无。

划痕检测是使用形态学方法(如顶帽算法)将灰度图像转换成二值化图像后,提取划痕的图像特征,再使用BLOB检测对划痕的特征进行有无检测。



4.png?imageView2/2/w/1000


2.什么是顶帽算法?

顶帽算法是将原始的图像(逐像素)减去开运算的图像,得到开运算中消除的小面积的局部亮像素区域的一种形态学处理方法。

开运算是先进行腐蚀,再进行膨胀的一种形态学处理方法。开运算可以去除一些孤立的、细小的亮区域,平滑有毛刺的边缘线,同时原区域的面积不会发生明显变化。对于灰度值高于产品灰度值的(亮)划痕可用顶帽算法检测出来。



5.png?imageView2/2/w/1000


3.什么是黑帽算法?

黑帽算法是将闭运算图像(逐像素)减去原始的图像,得到闭运算中消除的小面积的局部暗像素区域的一种形态学处理方法。

闭运算是先进行膨胀,再进行腐蚀的一种形态学处理方法。闭运算可以去除一些孤立的、细小的暗区域,同时原区域的面积不会发生明显变化。闭运算还可以填充小面积的亮区域的空洞,使分离的亮边缘相连接。对于灰度值低于产品灰度值的(暗)划痕可用黑帽算法检测出来。



6.png?imageView2/2/w/1000


二、划痕检测特点

1.依赖形态学处理

需要将检测图像转换成二值化图像,并使用形态学处理图像突出检测特征。

2.无固定形状特征

划痕都是随机出现的无特定形状的特征,因此无法通过匹配进行检测。

3.基于BLOB检测

提取出划痕特征后需要使用BLOB检测出连通的划痕区域。

4.需要一定对比度

划痕和待检测产品需要满足一定的对比度,才能使用形态学处理方法提取对应特征。



7.png?imageView2/2/w/1000


1.打开ZDevelop软件:新建项目→新建HMI文件→新建main.bas文件,用于编写界面响应函数→新建global_variable.bas文件用于存放全局变量并开启HMI自动运行任务→新建InitParam.bas文件用于初始化测量参数→新建camera.bas文件用于实现相机采集功能→新建draw.bas文件用于更新绘制图形刷新界面→文件添加到项目。



8.png?imageView2/2/w/1000


2.设计HMI界面。



9.png?imageView2/2/w/1000


3.在global_variable.bas文件中定义全局变量,定义完成后运行Hmi.hmi文件。

'''''全局变量大部分使用数组结构'''''

''注:basic编程中很多函数会以TABLE(系统的数据结构)做为参数

''在这里table均是做为中间变量

''table 21-22,鼠标按键,控件坐标系

''table 31-35,旋转矩ROI参数,cx、cy、width、height、angle,控件坐标系

''table 41-45,旋转矩形控件坐标转换后对应的图像坐标,图像坐标系

''table 51-56,圆环ROI参数,cx、cy、圆环中线半径r、圆环半宽ann_R、起始角度stAngle、角度范围entAngle,控件坐标系

''table 61-66,圆环控件坐标转换后对应的图像坐标,图像坐标系

'主任务状态

'0 - 未初始化

'1 - 停止

'2 - 运行中

'3 - 正在停止

GLOBAL DIM main_task_state

main_task_state = 1

'采集开关

'0 - 停止采集

'1 - 请求采集

GLOBAL DIM grab_switch

grab_switch = 0

'相机个数

GLOBAL cam_num

cam_num = 0

'相机种类,'zmotion;mvision;basler;mindvision;huaray'

GLOBAL DIM CAMERA_TYPE(16)

CAMERA_TYPE = 'mvision'

' 定义主任务id - 10

GLOBAL DIM main_task_id

main_task_id = 10

'定义连续采集任务id - 9

GLOBAL DIM grab_task_id

grab_task_id = 9

'定义全局图像变量

GLOBAL ZVOBJECT grabImg '采集图像

GLOBAL ZVOBJECT binImg '二值化图像

GLOBAL ZVOBJECT disImg '显示图像

'定义常用颜色变量

GLOBAL C_RED, C_GREEN, C_BLUE, C_YELLOW

C_RED = RGB(255, 0, 0)

C_GREEN = RGB( 0,255, 0)

C_BLUE = RGB( 0, 0,255)

C_YELLOW= RGB(255,255, 0)

GLOBAL DIM d_def_num '定义划痕数量结果

GLOBAL DIM d_def_state '定义状态结果

'定义划痕数据结果存储数组变量

GLOBAL DIM value(10000),id

'旋转矩形ROI参数:cx、cy、width、height、angle

GLOBAL DIM d_roi_rect2(5)

'检测参数:划痕类型、检测方向、检测尺寸、对比度、最小面积、最大面积

GLOBAL DIM d_detect_param(6)

'***********定义读取本地文件功能相关变量**************

''注意,该功能只在使用仿真器时有效

'定义是否使用本地图片标志

GLOBAL DIM d_use_imgfile

d_use_imgfile=1

'定义本地图片索引

GLOBAL DIM d_index

d_index=0

'定义读取图片的路径

GLOBAL DIM File_Name(100)

'***********结束定义读取本地文件功能相关变量**********

'运行HMI文件

RUN 'Hmi.hmi',1

4.在InitParam.bas文件中初始化测量参数。

end

GLOBAL SUB init_detect_param()'初始化测量参数

d_def_num = 0 '划痕结果初始化为0

d_def_state = 0 '状态结果初始化为0

TABLE(1)=1

'初始化roi参数

d_roi_rect2(0) = 160.0 'roi中心x

d_roi_rect2(1) = 120.0 'roi中心y

d_roi_rect2(2) = 80.0 'roi宽

d_roi_rect2(3) = 60.0 'roi高

d_roi_rect2(4) = 0.0 'roi角度

TABLE(31) = d_roi_rect2(0) '将roi变量赋值给起始地址为31的table数组

TABLE(32) = d_roi_rect2(1)

TABLE(33) = d_roi_rect2(2)

TABLE(34) = d_roi_rect2(3)

TABLE(35) = d_roi_rect2(4)

'初始化检测参数:划痕类型、检测方向、检测尺寸、对比度、最小面积、最大面积

d_detect_param(0) = 0 '初始化划痕类型为暗

d_detect_param(1) = 2 '初始化检测方向为X轴和Y轴

d_detect_param(2) = 4 '初始化检测尺寸为4

d_detect_param(3) = 20 '初始化对比度为20

d_detect_param(4) = 2000 '初始化最小面积为2000个像素

d_detect_param(5) = 7000 '初始化最大面积为7000个像素

'将划痕结果变量赋值为0

for i=0 to 100

value(i)=0

next

END SUB

5.关联HMI界面值显示控件变量。



10.png?imageView2/2/w/1000


6.在main.bas文件中添加HMI界面初始化函数并在Hmi系统设置中关联初始化函数。

'HMI界面初始化函数

GLOBAL SUB hmi_init()

grab_switch = 0 '初始化采集开关为停止采集

main_task_state = 1 '初始化主任务状态为停止状态

'初始化时依据图像分辨率设置区域的裁剪尺寸,此处图像分辨率为1280x960

ZV_RESETCLIPSIZE(1280, 960)

'设置锁存通道0的大小,以适应图片元件控件大小

ZV_LATCHSETSIZE(0, HMI_CONTROLSIZEX(10, 7), HMI_CONTROLSIZEY(10, 7))

ZV_SETSYSINT('LineWidth',5) '设置绘制画笔宽度为5个像素

init_detect_param() '初始化测量参数

ZV_LATCHCLEAR(0) '清空锁存通道0

ZV_LATCHCLEAR(1) '清空锁存通道1

END SUB



11.png?imageView2/2/w/1000


7.在camera.bas文件中添加HMI界面中采集相关按钮响应的函数并关联动作函数。



12.png?imageView2/2/w/1000


end

'主界面按下扫描相机按钮时响应的函数

GLOBAL SUB cam_scan_all()

if(d_use_imgfile=1)then

?'请先按下使用本地图片按钮关闭该功能'

return

endif

ZV_SETSYSINT('LogLevel', 7) '设置控制器信息

ZV_SETSYSSTR('DataDir','')

CAM_SCAN(CAMERA_TYPE) '扫描相机,CAMERA_TYPE='mvision'

cam_num = CAM_COUNT() '获取扫描到的相机数量

if (0 = cam_num) then '如果相机数量=0,打印提示信息

? '未找到相机'

return '退出子函数,不往下执行

endif

?'cam_num = ' cam_num '如果扫描到相机,打印相机数量

CAM_SEL(0) '选择扫描到的第一个相机进行操作

CAM_SETEXPOSURE(5000) '设置相机曝光时间为5000us

CAM_SETMODE(0) '设置软件触发模式

CAM_START(0) '开启相机

END SUB

'主界面按下单次采集按钮执行的函数

GLOBAL SUB btn_grab()

'如果d_use_imgfile=1时使用读取本地图片功能,使用控制器时请将此部分代码注释掉

if (d_use_imgfile=1) then

if(d_index=3) then

d_index=0

endif

File_Name='9'+TOSTR(d_index,1,0)+'.bmp?imageView2/2/w/1000' '.../flash/9/目录下的图片所在的路径名称

ZV_IMGREAD(grabImg,File_Name,1)

ZV_LATCH(grabImg, 0)

d_index=d_index+1

return

endif

''读取本地图片功能结束

'如果相机数量为0,提示先扫描相机,并退出子函数不往下执行

if cam_num = 0 then

?'请先扫描相机!'

return

endif

CAM_SETPARAM('TriggerSoftware', 0) '发送触发指令

CAM_GET(grabImg, 0) '获取一帧图像存放到grabImg变量中

ZV_LATCH(grabImg, 0) '将图像显示到锁存通道0中

END SUB

'主界面按下连续采集按钮响应的函数

GLOBAL SUB btn_cgrab()

if grab_switch =1 then '如果已经处于连续执行状态,打印提示信息并退出函数

?'正在连续运行中,请勿重复操作!'

return

endif

if( d_use_imgfile =0) then '如果使用相机采集功能

if cam_num = 0 then '判断如果相机数量=0,打印提示信息并退出函数

?'请先扫描相机!'

return

endif

endif

grab_switch = 1 '采集任务开关置1

if (1 = grab_switch) then

if (0 = PROC_STATUS(grab_task_id)) then

RUNTASK grab_task_id, grab_task '开启连续采集任务

endif

endif

END SUB

'采集任务实现函数

grab_task:

while(1)

if (0 = grab_switch) then '如果采集任务开关=0即停止采集按钮按下时

exit while '退出循环

endif

'grab_switch=1时重复执行以下操作

btn_grab()'单次采集按钮响应的函数

wend

END

'主界面按下停止采集按钮响应的函数

GLOBAL SUB btn_stopCgrab()

if grab_switch =0 then '如果已经处于停止采集状态,打印提示信息并退出函数

?'未开启连续采集!'

return

endif

grab_switch = 0 '将采集任务开关置0

END SUB

8.在draw.bas文件中添加检测ROI更新绘制函数,并在自定义元件属性窗口中关联刷新函数和绘制函数。

end

'和绘制(即选择ROI)有关的界面的刷新绘制函数放在这个bas文件里

DIM is_redraw '绘图标志,0表示未进行绘制,1表示正在进行绘制

is_redraw = 0

DIM hit_pos '定义调整操作标志

'根据鼠标操作更新ROI位置区域函数

GLOBAL SUB update_roi()

if mouse_scan(21) = 1 then '扫描鼠标按下操作

'只有按下时可以改变击中位置,获取鼠标点击位置对应的击中区域编号

hit_pos = ZV_HMIADJRECT2(table(21), table(22), 31, -1)

is_redraw = 1 '绘图标志置1

endif

if mouse_scan(21) = -1 then '扫描鼠标松开操作

'根据区域编号调整roi区域位置

ZV_HMIADJRECT2(table(21), table(22), 31, hit_pos)

is_redraw = 1 '绘图标志置1

endif

if (MOUSE_state(21)) then '鼠标按下时

'根据区域编号调整roi区域位置

ZV_HMIADJRECT2(table(21), table(22), 31, hit_pos)

is_redraw = 1 '绘图标志置1

endif

if (1 = is_redraw) then '如果绘制标志=1

is_redraw = 0 '绘图标志置0

'控件roi坐标转图像roi坐标,控件坐标存放在起始地址为111的数组,图像坐标存放在起始地址为50的数组

ZV_POSTOIMG(0, 1, 31, 41)

d_roi_rect2(0) = TABLE(41)'将图像坐标的数据赋值给ROI变量

d_roi_rect2(1) = TABLE(42)

d_roi_rect2(2) = ZV_LENTOIMG(0, TABLE(33))

d_roi_rect2(3) = ZV_LENTOIMG(0, TABLE(34))

d_roi_rect2(4) = TABLE(35)

SET_REDRAW '重新绘制全部区域

endif

END SUB

'ROI区域更新后实时绘制ROI区域

GLOBAL SUB draw_roi()

SET_COLOR(C_BLUE) '设置画笔颜色为蓝色

ZV_HMIRECT2(31, 300) '将旋转矩形roi分解为HMI支持的绘图图元并添加控制参数,便于HMI绘图显示

DRAWLINE(TABLE(300), TABLE(301), TABLE(302), TABLE(303)) '绘制外矩形

DRAWLINE(TABLE(302), TABLE(303), TABLE(304), TABLE(305))

DRAWLINE(TABLE(304), TABLE(305), TABLE(306), TABLE(307))

DRAWLINE(TABLE(306), TABLE(307), TABLE(300), TABLE(301))

END SUB



13.png?imageView2/2/w/1000


9.在main.bas文件中添加HMI界面按下【上一页】按钮时响应的函数并关联动作函数名。



14.png?imageView2/2/w/1000


'HMI界面按下上一页按钮时响应的函数

GLOBAL SUB last_()

id=id-1 'id变量自减1

if id<0 then '如果id变量<0

id =0 'id=0

endif

END SUB



15.png?imageView2/2/w/1000


10.在main.bas文件中添加HMI界面按下【下一页】按钮时响应的函数并关联动作函数名。



16.png?imageView2/2/w/1000


'HMI界面按下下一页按钮时响应的函数

GLOBAL SUB next_()

id=id+1 'id变量自加1

END SUB



17.png?imageView2/2/w/1000


11.在main.bas文件中添加HMI界面按下【测试】按钮时响应的函数并关联动作函数名。



18.png?imageView2/2/w/1000


'HMI界面按下测试按钮时响应的函数

GLOBAL SUB btn_test()

for i=0 to 100 '检测前先将结果数据清零

value(i)=0

next

'定义二值化白色区域、二值化区域、二值化黑色区域、连通区域、检测结果、划痕输出图像、输出结果矩阵、结果列表

GLOBAL ZVOBJECT regionWhite, regionMask, regionBlack,re_connecte,rst,outImg,mat,relist

'根据ROI数据生成检测区域ROI

ZV_REGENRECT2(regionMask, d_roi_rect2(0), d_roi_rect2(1), d_roi_rect2(2), d_roi_rect2(3), d_roi_rect2(4))

'表面外观缺陷检测算子,传参分别是:输入图像、检测区域、输出检测结果、检测划痕类型、检测轴、检测尺寸、对比度阈值、最小面积、最大面积

ZV_DEFDETECTSUR_(grabImg,regionMask,rst,d_detect_param(0),d_detect_param(1),d_detect_param(2),d_detect_param(3),d_detect_param(4),d_detect_param(5))

'获取缺陷结果算子,传参分别是:检测结果、输出缺陷图像、数据结果矩阵、结果列表、输出图像类型、输出结果排序类型

ZV_DEFGETSURRST_(rst,outImg,mat,relist,2,0)'获取缺陷结果

ZV_LATCH(outImg,1)'将缺陷结果图像显示到锁存通道1中

ZV_MATINFO(mat,50)'获取结果矩阵的信息并存放到起始地址为50的变量中

d_def_num=table(50)'将矩阵行数即划痕数量赋值给结果变量

if (TABLE(50)=0) then '如果检测到的划痕数量=0,则结果状态=1

d_def_state=1

else d_def_state=0

endif

?TABLE(50),TABLE(51)'打印提示矩阵的行数和列数信息

for i = 0 to TABLE(50)-1 '循环给数据结果变量赋值

'获取第i行矩阵数据结果,包括面积 周长,坐标x,坐标y

ZV_MATGETROW(mat, i, 4, 100+i*4)

value(i*4+0)=TABLE(100+i*4+0)'将table数据赋值给对应变量

value(i*4+1)=TABLE(100+i*4+1)

value(i*4+2)=TABLE(100+i*4+2)

value(i*4+3)=TABLE(100+i*4+3)

next

END SUB



19.png?imageView2/2/w/1000


12.在main.bas文件中添加【运行】按钮响应的函数并关联动作函数。



20.png?imageView2/2/w/1000


HMI界面按下运行按钮时响应的函数

GLOBAL SUB btn_run()

if(2 = main_task_state) then '如果主任务处于运行中状态

?'已经开启连续运行任务,请勿重复操作!' '打印提示

return

endif

if (1 = main_task_state) then '如果主任务处于停止状态

if (0 = PROC_STATUS(main_task_id)) then'如果程序中任务未开启

main_task_state = 2 '将主任务状态设置为运行中状态

RUNTASK main_task_id, main_task'开启主任务

endif

endif

END SUB

'主任务执行的函数

main_task:

while(1)

'如果主任务状态处于正在停止状态即停止按钮按下时

if (3 = main_task_state) then

main_task_state = 1'将主任务状态设置为停止状态

exit while '退出循环

endif

'否则循环执行采集和检测函数

btn_grab()

btn_test()

wend

END



21.png?imageView2/2/w/1000


13.在main.bas文件中添加【停止】按钮响应的函数并关联动作函数。



22.png?imageView2/2/w/1000


HMI界面按下停止按钮时响应的函数

GLOBAL SUB btn_stop()

if (2 = main_task_state) then '如果主任务状态处于2即任务运行中时

main_task_state = 3 '将主任务状态置为3,退出循环

endif

END SUB



23.png?imageView2/2/w/1000


24.png?imageView2/2/w/1000


25.png?imageView2/2/w/1000


26.png?imageView2/2/w/1000


27.png?imageView2/2/w/1000


本次,正运动技术VPLC系列机器视觉运动控制一体机快速入门(九)——外观检测功能---检测划痕,就分享到这里。


关键字:机器视觉 引用地址:VPLC系列机器视觉运动控制一体机快速入门(九)

上一篇:三相电机正反转控制原理
下一篇:【节能学院】ARD-KHD-S03抗晃电装置在变频回路的应用

推荐阅读最新更新时间:2026-03-24 16:58

VPLC系列机器视觉运动控制一体机快速入门(十)
此前,我们依次讲解了软硬件介绍及计数实例、相机的基本使用、基于形状匹配的视觉定位、BLOB有无检测、测量尺寸、机器视觉方案中使用到的标定功能、ZDevelop软件实现识别条形码和二维码,测量点/直线/圆以及划痕检测功能。 本期课程我们和大家一起使用ZDevelop软件实现机器视觉中使用到的OCR功能。 一、 OCR 检测原理 什么是OCR? OCR全称是Optical Character Recognition,即光学字符识别。在机器视觉中OCR是指使用图像处理方法将获取到的图像上的黑白字符进行分割训练后,识别并输出对应的字符。 OCR的检测原理? 在机器视觉中进行OCR检测时,首先根据字符(前景)和背景的
[嵌入式]
<font color='red'>VPLC</font><font color='red'>系列</font><font color='red'>机器视觉</font><font color='red'>运动控制</font><font color='red'>一体机</font>快速入门(十)
VPLC系列机器视觉运动控制一体机快速入门(七)
此前,我们依次讲解了软硬件介绍及计数实例、相机的基本使用、基于形状匹配的视觉定位、BLOB有无检测、测量尺寸、机器视觉方案中使用到的标定功能以及使用ZDevelop软件实现坐标标定的方法。 本期课程我们继续和大家一起分享使用ZDevelop软件实现一维码和二维码的识别功能。 条形码是由不同的宽度、不同的反射率的条(黑色)和空(白色)组成的,根据特定的编码规则编制,用于表达一组数字、字母信息的图形标识符。 条形码可以标出商品的生产国、制造厂家、商品名称、生产日期、图书分类号、类别、日期等信息,因而在商品流通、图书管理、银行系统、生产制造等许多领域都得到了广泛的应用。 二维码是用某种特定的几何图形按一定规律在平面(
[嵌入式]
<font color='red'>VPLC</font><font color='red'>系列</font><font color='red'>机器视觉</font><font color='red'>运动控制</font><font color='red'>一体机</font>快速入门(七)
VPLC系列机器视觉运动控制一体机快速入门(五)
此前,我们依次讲解了软硬件介绍及计数实例、相机的基本使用、基于形状匹配的视觉定位以及BLOB有无检测等。 今天,正运动技术为大家分享一下VPLC系列机器视觉运动控制一体机快速入门(五),和大家一起分享机器视觉常用的检测功能---测量尺寸。 测量尺寸:在机器视觉中常用的测量尺寸的原理就是使用两个直线测量器,分别检测出产品两条尺寸边缘的点拟合成直线后取两条直线的距离。 尺寸测量本质是基于边缘检测的测量,它需要先检测出亮暗过渡满足一定阈值的边缘点,然后再提取边缘点数据进行处理计算后输出最终的结果。 测量尺寸特点 1.准确度高 选择合适的硬件选型方案可以达到很高的检测精度。常用远心镜头减少畸变,增大景深,减小测量误差
[嵌入式]
<font color='red'>VPLC</font><font color='red'>系列</font><font color='red'>机器视觉</font><font color='red'>运动控制</font><font color='red'>一体机</font>快速入门(五)
赋能工业、消费及机器视觉: 贸泽开售 ams OSRAM Mira050 NIR增强全局快门图像传感器
2026年1月20日 – 专注于引入新品的全球电子元器件和工业自动化产品授权代理商贸泽电子 (Mouser Electronics) 即日起开售ams OSRAM的新款Mira050近红外 (NIR) 增强全局快门图像传感器。 Mira050是一款紧凑型0.5MP图像传感器,专为2D和3D消费类及工业机器视觉应用而设计。 ams OSRAM Mira050 NIR增强全局快门图像传感器非常适用于2D和3D应用,包括主动立体视觉 (ASV)、结构光视觉 (SLV) 和增强现实与虚拟现实 (AR/VR) 。Mira050的近红外灵敏度高,可扩大测量范围,优化整个系统的功耗,包括减少片外处理,这对电池供电的消费类和工业应用至关重要
[传感器]
赋能工业、消费及<font color='red'>机器视觉</font>:  贸泽开售 ams OSRAM Mira050 NIR增强全局快门图像传感器
详解机器视觉软件开发SDK
其实很简单,SDK 就是 Software Development Kit 的缩写,中文意思就是“软件开发工具包”。 这是一个覆盖面相当广泛的名词,可以这么说:辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做“SDK”。具体到我们这个系列教程,我们后面只讨论广义 SDK 的一个子集——即开发 Windows 平台下的应用程序所使用的 SDK。 呵呵,其实上面只是说了一个 SDK 大概的概念而已,理解什么是 SDK 真有这么容易吗? 恐怕没这么简单!为了解释什么是 SDK 我们不得不引入 API、动态链接库、导入库等等概念。^_^,不要怕,也就是几个新的名词而已,其实学习新知识就是在学习新名词、新概念和新术语。
[嵌入式]
机器视觉的应用有哪些 机器视觉系统组成及工作原理
  机器视觉的应用有哪些   机器视觉是一种利用计算机技术实现对图像或视频进行自动处理、分析和理解的技术。它可以应用于很多领域,以下是一些机器视觉的应用案例:   工业自动化:机器视觉可以用于工业生产线上的自动检测、自动识别和自动分类等。例如在电子工业中,可以用机器视觉检测电路板上的元器件是否正确安装。   无人驾驶:机器视觉可以用于自动驾驶系统中的图像处理和障碍物识别等。例如在自动驾驶汽车中,可以用机器视觉识别交通信号灯和行人等障碍物。   医疗保健:机器视觉可以用于医疗影像分析、医疗图像识别和医疗图像分类等。例如在医学影像中,可以用机器视觉分析医疗影像中的病灶。   安防监控:机器视觉可以用于视频监控系统中的目标检测、跟踪
[嵌入式]
机器视觉检测发展的几个历程和趋势
在现代化生产中,由于能够最大程度的提高产品质量、降低成本,近年来一直被广泛用于各类工业检测项目上。而随着工业制造技术和加工工艺的提高和改进,对检测手段、检测速度和精度提出得更高要求,也使得机器视觉检测技术在各大行业建功无数,发展势头强劲。那么,今天我们就来细数下机器视觉检测发展的几个历程和趋势。 1、初级视觉理论:主要针对光学成像的逆问题,是由能从二维光强度阵列恢复三维可见表面物理性质的一系列处理过程组成。这里各过程的输入数据及计算目的都是能够明确描述的,如边缘检测、立体匹配、由运动恢复结构等方法。在三维物体投影成二维图像过程中,三维信息有很多损失,从而导致病态问题产生,因此加强对初级视觉过程及其约束条件的研究就显得格外重要,
[嵌入式]
光学设计是机器视觉系统的关键
仔细研究待分析的物体有助干确定适当的系统设计。 机器视觉系统具有极大的吸引力,因为它能避免重复的测量,同时又能提高产量,增加响应时间。虽然研究界已在钻研光学平行处理技术,但基本的机器视觉检查系统仍然包含一块透镜、一台摄像机、以及把处理与算法做在一起的一块图像处理电路。由于光具在高级的机器视觉系统中常常是一种限制因素,有关光学定律的知识和使用使得系统的设计者能够最大程度地提高系统的性能。 一般说来,透镜是用来放大的,也是为此而设计的。 机器视觉的应用可从半导体检查一直到自动引导系统。在本文中,机器视觉意味着这样一种行为:通过透镜/摄像机组合系统获取目标的一张图像,然后以数字方式处理这张图像以便对目标的某一特征进行定位并对其采取揩施(
[嵌入式]
光学设计是<font color='red'>机器视觉</font>系统的关键
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved