机器视觉及上位机编程
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一些建议
学会使用Google,英文关键字可以得到更多 信息 多关注诸如OpenCv等软件的论坛 有时间多逛逛CodeProject, Google Project, source forge, github等代码托管社区,会有 很多源代码。 耐心
结束
希望对大家有帮助 祝大家在RoboGame玩得开心
边界直径
Diam(B) = max[D(Pi,Pj)],Pi与Pi为边界点
边界曲率
斜率差,相邻线段斜率的差值。
凸点/凹点
特征描述——傅立叶描绘子
将像素点坐标表示为复数:s(k) = x(k) + j*y(k)
x(k) = Xk y(k) = Yk
进行离散傅立叶变换,系数a(u)为傅立叶描绘子
分割
目标:提取数字区域,并分割单个数字
wenku.baidu.com
[x,y] = find(I1); x1 = min(x); x2 = max(x); y1 = min(y); y2 = max(y); I2 = I1(x1:x2, y1:y2);
分割
数字倾斜?
方法:顺时针/逆时针旋转一定角度,并计算数字区域 在X轴的投影,投影范围最短时为水平。
Roberts
Prewitt
Sobel
Laplacian
其它图像增强方法
频域
离散傅立叶变换 离散余弦变换
时频分析
盖伯变换 小波变换
图像分割
目的:提取感兴趣区域 用途:区域分割,目标定位,目标识 别与分类,规划与决策
边缘检测法:点、线、边 Hough变换法 阈值分割法 数学形态学方法
机器视觉及上位机编程
黄铭 Email: minghung@mail.ustc.edu.cn
主要内容
图像处理基础 数字识别方法及步骤 上位机程序设计与节点通信
图像处理基础
图像处理
什么是图像
图像:二维函数f(x,y)。
x, y为空间坐标,f(x,y)为图像信息(灰度、亮度、颜 色)。
用途:去除无用小细节,连接中断线段与曲线,去噪 音,平滑图像 方法:低通滤波,中值滤波
空域滤波器——锐化滤波
锐化滤波器
用途:改善细节,边缘提取,目标定位与识别 方法:高通滤波器,微分滤波器
微分滤波器:Roberts交叉梯度算子,Prewitt梯度算子, Sobel梯度算子,Laplacian二阶微分算子
数字图像:离散,矩阵
采样,量化,存储 数字图像元素:像素
成像方式
所有波段的电磁波 声波、震动等
数字图像表示
数字矩阵
f (0,1) f (0,0) f (1,0) f (1,1) f ( x, y ) f ( N 1,0) f ( N 1,1) f (0, M 1) f (1, M 1) f ( N 1, M 1)
灰度图
图像增强 滤波,去 除背景
包含数字区域 的二值图像 图像 分割 分割数字 区域
结构化识别 相关匹配识别 数字 信息 神经网络, SVM 网络训练 ……
数字区域二值 图像 图像 细分 分割单个 数字
若干单数字二 值图像
识别示例
采用工具:Matlab 前提条件:打印数字,背景白色
预处理
1. 灰度化与二值化 方法,灰度阈值法,自适应阈值法…… 2. 其它:滤波,形态学操作(开闭,腐蚀/膨胀)
I0 = imread(file); I0 = imresize(I0,[480,640]); I = rgb2gray(I0);
imshow(I),title(‘Original Image'); I1 = im2bw(I,0.65);
空间分辨率:M×N。 灰度分辨率:离散灰度级数G
G 2k
存储一幅数字图像所需位数
b M N k N 2k
图像存储
数据结构
单通道:灰度图,二值图 多通道:RGB,HSV,YUV/YCbCr/YPbPr,RGBA…… 索引图像:调色板,存储索引值
文件格式
VC ,图像处理OpenCv,串口CSerialPort…… C#,图形处理EmguCv, AForge.net……
QT,C++库通用 其它,python,VB也有丰富的库供使用 不建议自己从底层做起,能直接使用稳定的 第三方库尽量使用,省时稳定
常用类库
图像处理:OpenCv,Cimg,Aforge.NET,FreeImage, CxImage 串口通信:CnComm,CSerialPort 有用站点
L
Lmin
表示与描述
数字特征
连通域
两个连通域:8 一个连通域:0,4,6,9 零个连通域:1,2,3,5,7
周长,曲率,端点个数……
60°
100°
120°
识别
字形确定,模板匹配方法:相关系数,差,异或
匹配 结果
解释与结果
根据模板相关运算结果,识别数值。
待识别 模板运算 结果
图像分割——边缘检测
点的检测——空域高通滤波 线的检测——模板操作
边的检测——微分算子
Roberts交叉梯度算子,Prewitt梯度算子,Sobel梯度 算子,Laplacian二阶微分算子
图像分割——边缘连接
Hough变换——对于边界上n个离散的点集,找出共 线的点集与直线方程
6 1
优点:简单,运算量少;缺点:针对特定形状,通用性差
其它分类方法
神经网络算法
需要大量时间的训练,检测精度与训练样本有关。 优点:一般情况下,精度非常高,可以识别各种手写 字体
SVM,支持向量机方法
需要训练,针对神经网络缺点对时间和精度均衡考虑, 精度很高,可识别各种手写字体。
图像分割——阈值分割
通过灰度门限对图像像素进行分类
图像分割——数学形态学方法
腐蚀——使二值图像减小一圈 膨胀——使二值图像扩大一圈
原图
腐蚀后
膨胀后
图像分割——数学形态学方法
开-闭运算
开运算——先腐蚀,再膨胀
消除细小对象,分离细小粘连,不改变形状平滑边缘
闭运算——先膨胀,再腐蚀
以太网,速率10/100/1000Mbs,距离100m
优点:速度快,协议可靠;缺点:下位机实现复杂 包括wifi,有线等方式,用于控制或大量数据传输。
无线:zigbee、红外、2.4G等 总线:CAN等
工具软件
Matlab,图像处理,常用接口通信 Visual Studio + 第三方库
均需要强大的运算能力保证
上位机程序设计与节点通信
通信接口
串口RS-232C,速率0~20000b/s,传输距离15米以下。
优点:接口简单,使用方便;缺点:速率低 一般用于传输指令或参数等字符信息。
USB,速率480Mbs,传输距离10m以下
优点:速率高,多设备;缺点:接口稍复杂 用于传输图像、大量数据。
填充细小空洞,连接邻近对象,不改变面积平滑边缘
原图
开运算
闭运算
特征描绘
边界特征
周长、直径、曲率、凹凸点 傅立叶描绘子 形状数、边界矩……
区域特征
面积、曲线长度、区域周长,区域紧凑性,灰度 拓扑描绘子——欧拉数
特征描绘
边界周长
轮廓线像素个数为边界长度的近似估计
增强视觉 * OpenCv中文网站
一些好文章
Win32串口编程 字符识别(模板匹配&BP神经网络训练) Handwriting Recognition Revisited: Kernel Support Vector Machines Digit Recognition with OpenCV (CPP Version) SuDoKu Grabber with OpenCV Simple Digit Recognition OCR in OpenCV-Python
BMP格式(BitMap):位图,文件头+数据,未经压缩,可 以直接二进制读取操作 JPEG:静止灰度或彩色,压缩率大,常用需要特定的算法读 取其中信息。 GIF:8位文件格式,256色,压缩,动画 PNG,TIF……
算术运算
图像运算
算术运算(加减乘除)
逻辑运算(与或非、异或)
功能:改变动态范围,灰度区域截取,感兴趣区域
空域法——直方图修正
定义:灰度级出现频数(频率)分布,反应图像清 晰性,直方图均匀分布时,图像最清晰。 均衡化:调节对比度,增强图像对比度。
空域法——空域滤波器
空域滤波器
线性滤波器——模板与图像卷积
低通滤波器,高通滤波器,带通滤波器
特征描述
欧拉数
记区域内孔个数为H,连通分量个数C,欧拉数E为
数字识别方法及步骤
方法
结构法识别(多个结合)
简单描绘子,如周长,面积,紧凑度,灰度等 形状数,边界矩 欧拉数
决策论法识别
分类器,最小距离,相关匹配 神经网络,支持向量机(SVM)
步骤
原始图像
预处理 彩色空间 变换,阈 值分割
图像增强
目的:提高清晰度,去噪声,前处理 用途:去噪声、边缘增强、提高对比度、改变 亮度、改善细节
空域法:像素直接操作 灰度变换、直方图修正、空域滤波 变换域法:变换后再处理,逆变换得到处理后图像 频域滤波、小波分析等
空域法——灰度变换
g(m,n) = T[ f(m,n) ]
非线性滤波器——取决与邻近像素值
中值滤波 R = mid{Zk} 最大值滤波 R = max{Zk} 最小值滤波 R = min{Zk}
W1 W4 W7 W2 W5 W3 W6 Z1 Z4 Z7 Z2 Z5 Z8 Z3 Z6 Z9
W8 W9 模板
像素邻域
空域滤波器——平滑滤波
平滑滤波器