机器人笔记 - 机器视觉
计算机视觉总览
计算机视觉的目标在于写能够解释图片的程序。图片不限于2D或视觉光谱,这还包括了3D图像,视频,红外和X射线成像。
应用
- 人脸识别
- 对象与动作识别,跟踪
- 无需密码使用指纹识别,面部识别即可登录
- 基于视觉的生物识别 (虹膜模式识别)
- 人脸检测
- 物体识别 (Amazon Go Supermarket)
- 光学字符识别 (Optical Character Recognition - OCR)
- 智能汽车
- 基于视觉的互动(和游戏)
- 太空计算机视觉 (全景拼接,3D地形建模,障碍物检测,位置跟踪)
- 杂草检测喷雾
- 医学影像
- 基于运动的识别 (motion-based recognition)
- 手部追踪
- 目标检测与分类(颜色分割用于检测机器人前面的桌子上的对象;将剩余的斑点与以前分割的对象的存储特征进行比较。)
人类视觉
人类视觉分别通过眼睛中的视杆(rods)和视锥(cones)对图像的亮度(brightness)和颜色(colour)做出响应。
众所周知,三种主要类型的视锥的灵敏度明显不同。 红色视锥细胞的灵敏度是绿色视锥细胞的两倍,而其灵敏度是蓝色视锥细胞的40倍。
对单个颜色的感知取决于任何感兴趣的场景中的周围颜色(换句话说:前景色/背景色产生对比度)。
分辨率
人眼 - 4000 * 4000(像素)
电脑 :
- VGA(视频图形阵列):640 * 480像素
- SVGA:800 * 600像素
- XGA:1024 * 768像素
- 高清:1280 * 720像素
- 2K:2028 * 1080像素
- 4K:4096 * 2160像素
- 8K:7680 * 4320像素
- 机器人视觉:256 * 256?
光流法 (optical flow)
光流是图像中的明显运动模式。光流通常对应于运动场。(然而也有反例:理发店旋转杆,光流方向朝上,而其运动场实则是水平移动的)
运动场 (motion field)
对象上的点Po以速度Vo移动,该点在像平面上的投影Pi将以速度Vi移动。所有这些向量的集合代表形成运动场的图像点的速度。
平移运动生成的三种类型的运动场:
光流和运动场
根据图像序列,即根据图像亮度的空间和暂时变化来估计运动场。光流是运动场的近似值,可以根据随时间变化的图像序列进行计算。在几个简化的假设下(例如场景照明),近似误差可以很小甚至为零(例如仅用于平移运动)。
图片采集系统
电荷耦合设备相机(Charge-Coupled Device Camera),简称CCD相机
一个数码相机是一种转换器(transducer):
输入:入射光(来自3D对象)
输出:复合视频信号(composite video signal)
在CCD相机中,物理图像平面是nm个矩形的光敏(光)传感器(light-sensitive photo sensor)网格。其中,每个光电传感器将光转换为电压。帧采集器(frame grabber)将视频信号数字化为nm整数值的二维数组,并将其存储在内存缓冲区(memory buffer)中。
电压的(2D)空间阵列被传输到移位寄存器(shift register),该移位寄存器将其转换为时变(复合)视频信号(time-varying video signal)。
然后将该二维数组转移到主机进行进一步处理。
该复合视频信号是模拟信号,包括与每个光电传感器相对应的电压值,以及(2D)CCD阵列中各个传感器的垂直和水平位置的时序信息。
图像失真
如果相机或者帧采集器没有引入任何失真,则存储在计算机中的图象是原始图像(3D)的精确数字化副本(2D)。然而这是不会发生的,因为:
- 与帧缓冲像素(frame buffer pixels)相比,CCD阵列元素的行数有所不同。
- CCD元素的非正方形长宽比 - 即水平与垂直CCD元素尺寸。
- 数字表示只是模拟信号的近似值。
计算机视觉处理
图像增强,用来改善图像数据的内容,包括了:
- 亮度改变 (brightness sliding)
- 对比改变 (contrast stretching)
- 帧的总和,相减,平均。
图像分割(Image Segmentation),按兴趣区域 (region-og-interest) 划分:
- 孔检测窗口 (hole detection windows),滑动窗口 (sliding windows)
- 边缘窗口 (edge windows),边框 (bounding windows)
图像分析 (Image Analysis):
- 基于表现形式 (representation):
- 像素图,像素计数,强度直方图 (intensity histogram),行列总计,模板匹配 (template matching)
- 基于功能 (feature):
- 中心,面积,周长(perimeter)等。
- 直线,曲线,边线。
- 连接性 (connectivity),元素的相对位置。
灰度水平阈值
许多图像由占据不同灰度范围的两个区域组成。
此类图像的特征在于双峰图像直方图(bimodal image histogram)。
图像直方图是在给定图像的一组灰度级上定义的函数h。
值h(k)由图像强度由k的图像像素数给出。
图像分割 (Image Segmentation)
分割可以看作是像素分类的过程;通过将各个像素分配给不同类别,将图像分割为对象或区域。
连接组件标签 (connected component labelling) 通过验证相邻像素(neighboring pixel) 是否属于该类别,将像素分配给特定类别。
像素连接有两个“标准”定义:四邻点连接(four neighbor connectivity)和八邻点连接 (eight neighbor connectivity)。
轮廓跟踪/边界跟踪标识 (contour tracking/border following identify)落在对象边界上的像素,即具有属于背景区域的邻点像素。
主动式3D机器视觉系统
诸如雷达或激光之类的主动 (active) 3D感知方法需要发射无线电波 (radio waves) 或激光束 (laser waves)。
立体视觉相对于立体视觉系统的其他方法有一个优势:它是被动 (passive) 且准确的。
立体对应问题 (stereo correspondence problem) 是指确定一个图像的哪个部分对应于另一图像的哪个部分的问题。
确定对应关系correspondence(立体匹配)的主要方法有两种:
- 基于相关的算法 (correlation-based algorithms): 使用图像相关性在两个图像之间匹配固定大小的图像区域(一维或二维)。
-
基于强度 (intensity-based): 在平行摄像机配置中,极线与像素行重合。相应的点必须位于同一行上。找到两个图象的一维强度分布图之间的相似性。
-
基于窗口(window-based):寻找"有趣的"区域,如:强度值变化较大的区域。将匹配(match)分配给两个图象中高度相关的区域。要注意的是相关窗口(correlation window)大小的选择至关重要。
-
- 基于特征的算法 (feature-based algorithms): 匹配图像特征集。
在立体视觉中的图像特征包括:边缘点(edge points), 直线,曲线,角和更高级别的特征(例如圆形,椭圆形ellipses和多边形polygonal区域)。
线属性的示例:长度,方向,中点坐标。
特征类型和匹配方法(correspondence mothod)的选择取决于许多因素,包括:场景中的对象类型,场景照明和图像对比度等。
空间不变兴趣点(space invariant interest points - SIP)方法。
- 计算左右图像的空间不变兴趣点(SIP)
- 查找SIP的相关性。
机器视觉系统
大多数机器视觉系统涉及捕获图像,转换图像,将图像转换为数字信息,以及处理算法的应用,以提取有关图像的有用信息,以用于模式识别(pattern recognition),部分检查 (part inspection) 或部分定位 (part positioning) 和定向 (orientation)。