机器视觉概念复习
Camshift:
1、选中物体(人工或采用别的算法)
2、求其反向投影图(HSV模式下H分量大小为h的概率或像素个数去替换图中对应像素)
3、根据反向投影图和输入的方框进行meanshift迭代(求零阶矩M00,一阶X矩M10,一阶Y矩M01,质心为(M10/M00,M01/N00),窗口宽度s=sqrt(M00/256),长度1.2s)至质心间的移动距离小于预设的固定阈值
4、读取下一张图片执行第二步
RGB转HSV:(0<=R,G,B<=1)
V=max(R,G,B)
S= max(R,G,B)- min(R,G,B)
H=60(G-B)/(V- min(R,G,B)) if V=R
H=120+60(B-R)/(V- min(R,G,B)) if V=G
H=240+60(R-G)/(V- min(R,G,B)) if V=B
If H<0 then H+=360
颜色空间缩减:按区间长划分图像,分成每个区间的左界像素颜色值
RGB模型下的亮度与对比度(就是HSV模型下的V与S)通道RGB的值记为r,g,b
对比度a是乘通道值(r*=a,b*=a,g*=a)
亮度b就是偏移值(r+=a,b+=a,g+=a)
滤波:
方框滤波:用全为1的卷积窗口进行卷积,每个像素值为卷积后的结果值
均值滤波:用全为1的卷积窗口进行卷积,每个像素值为卷积后除以卷积窗口大小(就是有多少个1)后得的结果值
高斯滤波:类似方框滤波,但卷积窗口的各个权值由高斯函数生成而不是1
中值滤波:每个图像用以其为中心的滤波窗口中的中位值代替
双边滤波:类似方框滤波,但卷积窗口的各个权值由定义域核与值域核相乘所得而不是1
形态学
膨胀:局部最大值(白色是255)赋中心像素dst(x,y)=max(src(x+x’,y+y’),且element(x’,y)!=0
腐蚀:局部最小值(黑色是0)赋给中心像素dst(x,y)=min(src(x+x’,y+y’),且element(x’,y)!=0
开运算:先腐蚀后膨胀,平滑边界,放大局部低亮度区域如裂纹
闭运算:先膨胀后腐蚀,消除黑点
形态学梯度:膨胀图与腐蚀图之差,突出边缘
顶帽:原图与开运算结果之差,突出比原图轮廓周围更亮的区域
黑帽:闭运算结果与原图之差,突出比原图轮廓周围更暗的区域
漫水填充
从开始点起深搜,有掩膜则跳过,如果在允许误差范围内就填充
如果填充是可以不连续的话,就要全图扫一次
高斯金字塔:
对图像Gi向下取样(缩小图像)得Gi+1:高斯卷积,删除所有偶数行和列
对图像Gi向上取样(扩大图像)得Gi-1:图像行列扩大为原来两倍,新增行列用0填充,然后高斯卷积获得新增像素的近似值
拉普拉斯金字塔:Li=Gi-UP(G(i+1))卷积g(5x5)
显然,拉普拉斯金字塔是通过源图像减去先缩小后再放大的图像的一系列图像组成的
Gi是第i层图像,映射到目标是2x+1,2y+1的位置,即为向上采样,此为向上采样的拉普拉斯运算pryUp,而拉普拉斯向下操作同普通高斯金字塔
傅里叶变换:F(k,l)= ∑∑f(i,j)*exp(-i2PI(ki/N+lj/N)),i,j=0~N-1,2PI前的i是复数单位
新图每个点(k,l)都要通过对原图全图遍历,乘上复数权值并求和而得
f是空间域,F是频域,转换后是复数因为e^ix=cosx+isinx,取出幅度图像进行讨论
低通滤波会让图像变得模糊,可以对图像进行模糊处理,滤除图像的噪声
高通滤波获得了图像的边缘和纹理信息
增强图像的高频信号,可以增强图像的对比度,因为图像中的高频信号主要是出现在边缘及噪声这样的灰度出现跃变处的区域
自适应阀值
大津法(OSTU最大类间方差):
1求直方图,遍历每个阈值t
2求出小于t的像素有n1个,平均灰度μ1,大于等于t的像素有n2个,平均灰度μ2
3求出占比w1=n1/(n1+n2),w2=n2/(n1+n2),显然n1+n2=m*n,w1*w2=1
4求总平均灰度μ=μ1*w1+μ2*w2,类间方差g= w1*(μ-μ1)^2+ w2*(μ-μ2)^2=w1*w2*(μ1-μ2)^2
5取类间方差最大的那个阈值
加速方法:求直方图,得到两个峰顶的下标,以此为左右界取区间中出现频数最小的值
边缘检测
Canny:
1、平滑处理:所有边缘极易受到噪声干扰,故用二维高斯平滑滤波(并均一化)
2、梯度检测:(以Sobel滤波器为例,另有Roberts和Prewitt)
Gx=[[-1,0,+1], [-2,0,+2], [-1,0,+1]],Gy=[[-1,-2,-1], [0,0,0], [+1,+2,+1]]
G=sqrt(Gx^2+Gy^2),θ=arctan(Gy/Gx),梯度一般取0度,45度,90度,135度
3、非极大值抑制:与梯度方向上的两个相邻像素值比较非极大值就排除
4、滞后阀值处理:高于高阈值保留,低于低阈值排除,中间的连接到高于高阈值像素时保留
Laplacian:孔径[ [ 0 1 0 ] , [ 1 -4 1 ] , [ 0 1 0 ] ]
降噪转灰,用SOBEL算子求X,Y二阶(连续卷积两次),合并得梯度
SCHARR:滤波器[ [ 3 , 10 , 3 ] , [ 0 , 0 , 0 ] , [ -3 , -10 , -3 ] ]
霍夫直线
笛卡尔坐标系下直线用斜率和截距(m,b)表示,转化极坐标系中用极径和极角(r,θ)表示
y=kx+b -> r=xcosθ+ysinθ 过点(x0,y0)的直线定义为r=x0cosθ+y0sinθ,记为(r,θ),画在平面图上是一个正弦曲线,对每个(x,y)做相同操作,把正弦画在同一个平面图,相交的(r,θ)点超过一定阈值就代表该点指代的直线被检测到
霍夫圆
(1) 对图像应用 canny 边缘检测,并记录边缘图像中每个非零点坐标
(2) 对边缘图像中每个非零点,用 Sobel 函数计算 x 和 y 方向的一阶导数得到梯度, 利用得到的梯度,由斜率指定的直线上的每个点都在累加器中被累加
(3) 从二维累加器的这些点中选择候选中心,中心要求大于给定阀值且大于所有近 邻,降序排列得到最支持像素的中心
(4) 对每个得到边缘图像非零点最充分的支持且到前期被选择的中心有足够距离的 中心,考虑所有其他非零点到此中心的距离,从最大半径的最小距离起,选择 非 0 像素最支持的一条半径
仿射变换:
旋转:线性变换rotationa;向量加translation;缩放:线性变换scale
传入一个点P(x,y),则T=A·P+B=M·[x,y,1] T
T=[a00x+a01y+b00
a10x+a11y+b10]
二维旋转变换:
α=scale*cos(angle)
β=scale*sin(angle)
M=[α β (1-α)x-βy
-β α βx-(1-α)y]
右乘输入向量[x,y,1]T即可得输出向量
直方图
横坐标是0~255,纵坐标是图片中该灰度值的像素个数
直方图均衡化
设原图直方图为H,均衡化后直方图H’,则H’(i)=∑H(j),0<=j<=i<=255
以H’为查询表对原图进行替换:dst(x,y)=H’(src(x,y))
轮廓检测步骤
1、用拉普拉斯或Canny等边缘检测算子处理图像,获得仅包含边界的二值图像
2、用findContorus获取图像所有的边界连续像素序列,并保存在contours向量中
3、标示出contours向量中所有的轮廓序列
最小矩形/最小圆覆盖:见ACM几何专题
分水岭:
从灰度最低(或者用户自义的点)开始填充,填到梯度忽然变大的分割线(边缘)
图像修补:
对待修补区域,逐层往内填补,收缩,每补一个点,就计算其邻域各点的梯度,利用梯度求出该点预想值,然后综合邻域各点对其预想值(平均或加权平均)得到填充的值
反向投影
先对原图画直方图(信息有分段缩减),然后直方图均衡化(0~255),此时再对原图上每一个点找到在新直方图中对应的位置用对应值来填充,得到的图就叫做反向投影
模板匹配
不断移动,每个位置都算一下相关系数,最出最接近的区域
法一:平方差,最好匹配为0,完全相同;法二:归一化平方差
法三:相关匹配法(直接乘),值越高越匹配;法四:归一化相关匹配法
法五:系数匹配法:对原图匹配区域用均值修正后用法三;法六:归一化系数匹配法
Kitchen-Rosenfeld角点
平滑后求一二阶导数,进而求响应值,最后非极大值抑制及阈值排除
Harris角点
平滑后求X,Y一阶偏导,代入自相关矩阵求行列式及迹,进而得响应值R
响应值较大正值为角点,0为平坦,较大负值为边缘
Shi-Tomasi角点
类似Harris,但不求响应值R,由两根判断λ2大是角点,λ2小λ1大是边缘,否则平坦
SURF(SIFT尺度不变特征变换的进化)
1、特征点检测:Hessian盒状滤波器对图像进行滤波处理得响应值
2、尺度空间表示:建立图像堆,每层盒状滤波器尺寸不断变大(运算速度恒定)
3、Hessian矩阵特征点定位:非极大值抑制和插值
4、方向角度分配:以特征点为中心,半径6S圆邻域的区域,对区域内所有采样像素求水平与垂直方向Hear小波响应(加权)建立梯度坐标系,每个采样像素以水平Hear值为横坐标
5、基于Hear小波的特征点描述符,构造邻域20S方,校正到与特征点方向一致,分成16个区域,求特征矢量v=[∑dx,∑dy,∑|dx|,∑|dy|]取16个组合起来,共64维特征向量形成SURF四维描述符
CenSurE(STAR检测特征点)
第一步:利用八角形STAR双极性滤波器,求灰度和(先预处理前缀和可在O1求区间灰度和)
第二步:把所有尺寸下滤波结果最大值作为响应值,在响应值矩阵内,在L*L范围内进行非极大值抑制
第三步:直线抑制:部分特征点是边缘特性必须去掉,因为不稳定(用Harris矩阵迹的平方比行列式值比值判断大于阈值为直线,否则是角点)
FAST
使用圆周长为16个像素点的圆来判定其圆心像素P是否为角点,在圆周上按顺时针方向从1到16的顺序编号,有N个连续的像素亮度都比圆心像素亮度Ip加上阈值t还要亮或减去t还要暗,则其为角点(加速搜索每次判直径上两端点),增加鲁棒性的方法是每个点求响应值V=max(vi),vi=max(tmin(d,d0),min(d,d9)),再在3X3邻域内非极大值抑制
BRIEF描述符(仅仅是描述符,没找特征点)
以特征点为中心定义一个大小为5X5的补丁区域(OPENCV为48X48)
以某种物定方式选择Nd个像素点对(预定存储在系统中直接用)
比较每个像素点对间灰尘度值bi=1,I(Pi)
得该特征点描述符B=∑bi*2^(i-1)
BRISK
第一步:建立尺度空间(金字塔)
第二步:基于FAST9-16特征点检测:16圆素有连续个亮/暗
第三步:非极大值抑制及亚像素插值
第四步:提取特征点信息:四个同心圆,60像素
ORB(FAST+ BRISK)
第一步:特征点检测。建金字塔实现多尺度,每层都进行FAST角点检测,除了得分值作响应值外,还可由Harris方法求响应值,排序,筛选(Harris求响应值:a=∑Ix^2,b=∑Iy^2,c=∑IxIy,H=a*b*c*c-S*k(a+b)^2),k取0.04
第二步:方向角度:定义补丁区域矩mqp=∑x^p*y^q*I(x,y),I是图像灰度
质心坐标(m10/m00,m01/m00),θ=arctan(m01/m10)
补丁是围绕特征点邻域,特征点为坐标原点,质心角度是补丁区域角度
第三步:创建描述符:由上一步得θ,则实现旋转不变性BRIEF描述符,对补丁区域(31X31)旋转θ,完成(产生描述符的点对预先设定即可)
FREAK
主体思想:比较图像中点对灰度值来构建二值字符串,从而形成特征点描述符,而点对的构建是用七个同心圆,每个圆6个像素(交错均匀分布)加上圆心共43个像素
第一步:创建五万个特征点组成的矩阵,每行对应一个描述符,矩阵列表示同一点对
第二步:计算矩阵每列均值,目标0.5代表二值分布最大相异性
第三步:矩阵列排序,取均值接近0.5的前512个最佳点对
第四步:判角度,特征点外中心最外层五个同心上采样数据,共45对,求出质点(Gx,Gy)得到dk=sqrt[(x1^k-x2^k)^2+(y1^k-y2^k)^2],α=arctan(Gy/Gx)
SimpleBlob找斑点
第一步:通过一系列阈值得二值图像集合
检测每个图边界,分析区域判班点(面积,阈值,圆度,凸度,惯性)
分类:灰度图班点由中心坐标间距离小于阈值Tb的二值图像班点组成
确定位置与尺寸:位置[x,y]=∑Qi[xi,yi]/∑Qi加权和(尺寸是半径大小居中的半径长)
骨骼化
一、Zhang并行
每次细化分两次迭代删去点:八邻点相连的必须是2到6个,且2到9的01模式数为1,再符合第2,4,6位置有不相连的就删去(第二次迭代是第四,六,八位)
二、Hilditch算法
每次细化分两次迭代删去点:八邻点相连的必须是2到6个,且2到9的01模式数为1,p2.p4.p8 = 0 or A(p2)!=1(第二次迭代是p2.p4.p6 = 0 or A(p4)!=1)
三、形态学算法(三优)
通过十字型结构元素开操作的的补集和当前像素相与来作为骨架。当图像腐蚀为全0时候,就得到了整个图像的骨架
四、Rosenfeld算法(最优)
1. 扫描所有像素,如果像素是北部边界点,且8simple,但不是孤立点和端点,删除该像素。
2. 扫描所有像素,如果像素是南部边界点,且8simple,但不是孤立点和端点,删除该像素。
3. 扫描所有像素,如果像素是东部边界点,且8simple,但不是孤立点和端点,删除该像素。
4. 扫描所有像素,如果像素是西部边界点,且8simple,但不是孤立点和端点,删除该像素。
一次迭代执行完上面4个步骤,图像中没有可以删除的点退出迭代循环。
p9 p2 p3
p8 p1 p4
p7 p6 p5
对前景点像素p1,
如果p2=0,p1称作北部边界点。p4=0,p1称作东部边界点。
如果p6=0,p1称作南部边界点,p8=0,p1称作西部边界点。
8 simple是我们把p1的值设置为0后,不会改变周围8个像素的8连通性(即依然连通))
五、查表法(次优)
模拟出256种情况进行迭代细化
亚像素点
求出角点后,选取其所在的窗口,目标点是Q(x0,y0),窗口内每个点(设大小为5*5则有25个点)已知点是P(xi,yi),则向量[P-Q]*向量[P点梯度]=0,记P点梯度为G得Q=(GTG)^-1*GTGP。由于现在有多个点,所以按距离远近对自个P求得到的Q加权取平均就得到了最终的Q
Q=∑(GTGw)^-1*(GTGwP)
光流点追踪:
二原则:1)亮度恒定不变;2)小运动
再添加其他条件得到光流矢量