计算机视觉¶
application¶
ARToolKit | ARToolKit 它是一个C/C++ 语言编写的库,通过它可以让我们很容易的编写 增强现实 应用程序。增强现实(AR)是将电脑虚拟的图像覆盖到真实世界画面中,这个技术在工业和理论研究方面都存在着极大的潜能。对于开发一个AR程序来说,最困难的部分在于实时的将虚拟图像覆盖到用户视口,并且和真实世界中的对象精确对齐。ARToolKit使用电脑图像技术计算摄像机和标记卡之间的相对位置,从而使程序员能够将他们的虚拟对象覆盖到标记卡上面。ARToolKit 提供的快速和准确的标记跟踪,能够让你快速的开发出许多更新更有趣的AR程序。 |
在计算机视觉中,一个算法通常需要很多子程序,怎样才能把这些算法综合起来的?还是仿真中只需要一部分?
Introduction¶
- ` for my computer vision textbook <http://szeliski.org/Book/>`_
- ` washington CS course <http://www.cs.washington.edu/education/courses/cse576/08sp/>`_
- 加州伯克利大学计算机视觉(Computer Vision)
- 武大图像处理
- Computer Vision Home Page
- Computer vision 找到这本书
- standford课程
- D.Marr计算视觉理论
- ` 圖像及編程常用網址,作為收藏(Very Good) <http://blog.csdn.net/yaoyansi/article/details/5010401>`_
- 视频教程的课件
See also¶
摄像机自标定¶
matlab 中的标定问题,我想可以多次迭代,减小误差,但是怎样把这些得到的参数和实际的进行对比,我想这是一个问题,要用opencv进一步的矫正吗?是不是可以设计让机器人躲避障碍物?
自标定 self-calibration¶
为了在不估计外参数的情况下,满足一个二次曲线:
对此x进行求导,得到:
\(l=2Cx\), 则:math:x=0.5C^{-1}l ,带入J得到: \(l^T\Omega l=0\).
计算机视觉牛人¶
Thinking¶
多视角几何学 例如如何从三视图来恢复出原来图形,那么我就能够多个角度来照片,来恢复三维的图形。首先要知道多个图片中图一点。然后再来恢复。
Daisy 算子
参考文献:DAISY: An Efficient Dense Descriptor Applied to Wide-Baseline Stereo
这个算法利用多层高斯卷积核进行计算:
对于任给一方向o,该方向的方向图定义为:
其中操作 \((.)^+\) 表示 \((a)^+=max(a,0)\) 这个约束是保证梯度方向不改变。
分别将这些不同方向图与一系列具有不同卷积核的高斯函数做卷积,生成不同的尺度图:
这些尺度图用于后续的特征向量的计算。
图像分析:Gabor滤波器解析与编程
为了研究局部范围内的频域特性,Gabor 提出短时傅里叶变换,也就是Gabor变换, 实质上是一种高斯窗的fourier 变换,显示不同频率不同方向的信息。
其频域响应为:
从其频域形式可以看出,其等同于移动从原点高斯函数到 \((\mu_0,v_0)\) ,因此Gabor 滤波器可以看作从原点移动函数 \(\sqrt((\mu_0)^2+(v_0)^2)\) ,并且按照方向 \(tan^{-1}\frac{\mu_0}{v_0}\), 参数 \((\sigma_x,\sigma_y)\) 用来确定滤波器带宽。注意变量写的不太一致,具体参考:Gabor Filters 。
1985年Daugman扩展了Gabor滤波器的二维形式:
从上式中看出,Gabor是一个被复正弦函数调制的Gaussian函数,其中 \(\lambda\) 和 \(\theta k\) 分别是正弦波的波长和方向, \(\theta_ k\) 的定义为:
k决定了滤波器方向的个数; \(\sigma_x\) and \(\sigma_y\) 为高斯包络在x方向和y方向的标准差。
Lee提出利用gabor滤波器呈现图像。Gabor滤波器是椭圆高斯包络和复平面波的乘积,可以表示为:
其中 \(\vec z=[x,y]\) 是空域变量, \(\vec k\) 是频域变量,用来确定Gabor 滤波器的尺度和方向, \(\vec k = {k_s}{e^{i{\phi _d}}}\).
详细参考:
Harris角点检测¶
Harris 角点检测算法:
首先利用能量公式来约束:
然后写成微分的形式:
这个公式写为矩阵形式:
其中 \(M = \left[ {\begin{array}{*{20}{c}} A&C\\ C&B \end{array}} \right]\)
然后根据理想的两个导向矢量应该满足:
因为
最后推导出来:
如果E比较小的话,说明这个是平坦区域,如果E<0,说明是边缘区域,如果E>0,则说明是一个角点区域。
(1 )该算法不具有尺度不变性;(2 )该算法提取的角点是像素级的;(3 )该算法检测时间不是很令人满意。
怎样看完文献之后,再进行一步的思路整理? 很多东西还没有进行仿真实验。
我想看完之后可以对这些算子进行整理,进行仿真实验
+`Harris-Laplace 原理 <http://en.wikipedia.org/wiki/Harris_affine_region_detector#Harris.E2.80.93Laplace_detector_.28initial_region_points.29>`_¶
多尺度Harris角点探测:
对于特定的尺度 \(\sigma\),尺度归一化的Laplacian算子为:
\(L_{xx}\) 和 \(L_{yy}\) 是x和y的二阶偏导数。
基于上述知识,Harris-Laplace执行如下两步: #. 取 \({m_l}\left( {\vec p;{\sigma _D},{\sigma _I}} \right)\) 的最大值点为感兴趣的点:
- 根据 \({\Delta _N}L\left( {\vec p;\sigma } \right)\) 的局部极值选择特征尺度:
这个文章的创新点就在特征尺度选择。
扩展阅读:Harris affine region detector
Hessian矩阵主要是 二阶导数形成的矩阵,是针对[x,y], 一阶导数就是jacobi。 二阶导数满足正定性,说明信号都是递增的
– Main.GegeZhang - 30 Jul 2013
-+`希尔伯特转换 <http://zh.wikipedia.org/zh-cn/%E5%B8%8C%E7%88%BE%E4%BC%AF%E7%89%B9%E8%BD%89%E6%8F%9B>`_¶
Hilbert定义如下:
其中: .. math:
h\left( t \right) = \frac{1}{{\pi \tau }}
其频率响应由傅里叶变换给出:
其中F是傅里叶变换,
因此Hilbert利用傅里叶变换,使得正频率成分偏移-90度,负频率偏移+90 度。
退火算法设计的本初:改进非凸问题中`爬山算法 <http://www.cnblogs.com/heaad/archive/2010/12/20/1911614.html>`_ 中的局部最小点。
方法:模拟自然中退火的方法,通过随机交换,求出任意两个点之间的传输距离。我想和便利算法有什么区别? 还有什么缺点?并用`内循环终止准则,或称Metropolis抽样稳定准则(Metropolis 抽 样准则) <http://www.google.com.hk/url?sa=t&rct=j&q=+Metropolis+%E6%8A%BD+%E6%A0%B7%E5%87%86%E5%88%99&source=web&cd=4&ved=0CD8QFjAD&url=http%3a%2f%2fjingpin%2eszu%2eedu%2ecn%2fyunchouxue%2fziliao%2fkejian%2f%25E7%25AC%25AC10%25E7%25AB%25A0-%25E6%2599%25BA%25E8%2583%25BD%25E4%25BC%2598%25E5%258C%2596%2eppt&ei=JyHEUYOcMY_ZkgWPq4GYAw&usg=AFQjCNG1kEOdSgfjKesiOxiDiT8E4u4ZBQ>`_ 蒙特卡洛实验来是系统达到平稳。
解决问题: 货郎担问题 ,每次只能选择一个地方,也就是交换一个地方。遍历算法在这个问题中式难以解决的。 matlab 代码 。
优缺点:
- 优点:计算过程简单,通用,鲁棒性强,适用于并行处理,可用于求解复杂的非线性优化问题。
- 缺点:运算量较大,下降速度和收敛稳定性的矛盾,下降速度过大,可能出现震荡。下降速度过慢,运算量大。
退火算法的改进 比如采用变化的熟练速度和刚开始收敛速度比较快,基本稳定后采用小收敛速度。
- 思考:和图论中 最短路径算法, 剪枝算法 , 最小逆序数
K-means 算法=expection maximum (EM)期望最大¶
就是一个分类器的设计 #. 深入浅出K-Means算法 K means 中K的选择,初始值的选择,里面都有。
See also¶
- 基于生物进化的遗传算法概述 这里面有遗传算法在各领域的应用
- ` De Jong's function 1 <http://www.geatbx.com/docu/fcnindex-01.html>`_ 这个函数有多个局部最优点,一般用来作为算法局部最小点的例子
- 退火算法
- ` <http://blog.sciencenet.cn/blog-1225851-761882.html>`_
- 大数据时代的机器学习热点——国际机器学习大会ICML2013参会感想 看不太懂,有空看看
- 最大似然参数估计
Thinking¶
模式 描绘子的组合。
基于决策理论,基于神经网络,基于机器学习。
西安电子科技大学陈渤 我电子所的,主要做大数据分析和机器学习 和图像识别。
高新波 他做的方向比较新,可以看一下。
See also¶
- 学做的三D立体照片 好好学习一下
- 3D照片原理 12度之内,移动一下,模拟人眼来拍两张即可。
- blender,open 3D
- 3D打印机 是不是可以自己做一些东西来卖了,并且可以在淘宝上开店,来卖
- ` KinectFusion–3D重建的利器 <http://blog.csdn.net/rabbit729/article/details/8669234>`_ 看看这个
- make My Own Camrea
- blender 公开课
- ` 开源电影制作教程 <http://open.sina.com.cn/course/id_262/>`_
思考¶
市场上那三种3D壁纸是如何制作的 3D照片是如何实现的。
– Main.GangweiLi - 19 Aug 2012
全息摄影 原来是利用光的激光的干涉形成的。
– Main.GangweiLi - 15 Sep 2012
相机定标技术可以从2D到3D的转换
– Main.GangweiLi - 18 Nov 2012
These should be consider now about blender open3D
– Main.GangweiLi - 23 Mar 2013
3D重建 看到一些照片的脚度是我们在拍照的时候无法取得的,例如俯看大山。那么如何解决通过平视。恢复得到图像本身信息,然后变成俯视,这个就像3D建模,但又不同。
– Main.GangweiLi - 12 Jul 2013
本节参考:RANSAC for Dummies.pdf¶
本质,从不确定中找到确定在不断的迭代的情况下。 最小二乘匹配所有的数据集,从RANSAC允许野点的存在。
也就是假设检验的过程,我一组数据,应该属于这个模型,我这组数据中最少有2是相对准确的,当误差大于t 我们当做野点处理, 最多迭代k次,并且找到d个属合这个模型的值,我们就为这个模型成立。 输入: #. data 观测数据 #. model 模型本身 #. n 适用于模型的最少数据个数 #. k 算法的迭代次数 #. t 用于决定数据是否适应于模型的阀值 #. d 判定模型是否适用于数据集的数据数目。
RANSAC包含两个步骤,首先是在Hypothesize随机假设一个数据集(MSSs),然后,计算参数,然后在test步骤排除这些不可靠的参数。
假设原来有N个数据集 \(D={d_1,...,d_N}\) , \(\theta({d_1,...,d_N})\) 是使用数据集:math:D={d_1,...,d_N}, 要估计的参数,其中,\(h\geq k\) ,其中k是基数线。因此模型M可以表示为:
其中 \(f_M\) 是平滑函数,它的零水平集包含所有满足模型M的参数 \(\theta\). 定义数据d和模型:math:M(theta) 之间的误差为:
使用这个误差标准,一致集定义为:
其中误差函数写为:
其中 \(d^*\) 是d在 \(M(\theta)\) 上的投影。假设数据d是由于高斯噪声产生的:math:etasimaleph(0,sigma_{eta} I), 因此 \(\eta=d-d^{\star}\), 我们的目标是是要计算数值:math:delta,使得给定概率:math:P_inlier.
根据概率密度函数,我们可以得到如下公式:
因为 \(\eta_i/\sigma_{\eta}\sim\aleph(0,1)\) ,随机 \(\sum_{i=1}^{n}(\frac{\eta_i}{\sigma_{\eta}})^2 服从:math:\)chi_n^2分布,因此:
需要多少次重复??¶
假设q是从数据集D中采样一个准确的MSSs的概率,那么至少有一个错误的参数为1-q。如果构建h个不同的MSSs,那么被outlier污染的概率为 \((1-q)^h\) , 我们期望 \((1-q)^h\) 小于等于门限:math:varepsilon,也就是:math:(1-q)^hleq varepsilon,上述关系可以写作为:
计算MSSs并且计算q¶
如果数据集D中的所有数据都是没有噪声的,那么那么获得一个稳定的MSSs,只有inliers的概率为:
其中 \(N_I\) 是inliners个数。如果 \(N,{N_I} \gg k\) 公式可写为:
但是实际中选取的inliers 总是满足: \(\hat N_I\leq N_I\) ,因此有 \(q(\hat N_I)\leq q(N_I)\), 最后有:math:{left( {1 - qleft( {{N_I}} right)} right)^h} ge {left( {1 - qleft( {{{hat N}_I}} right)} right)^h},从而有重复次数更新为:
后期就是按照EM算法实现
首先对任意选取的h个参数,然后估计参数模型。
找到参数模型时,重新调整inlier和outlier选取的点,重新估计参数。
重复上述步骤,直达算法中种子点没有移动,也就是达到稳定状态。
具体参考`K-means <Study.MachineLearningAndImageDetect>`_ 算法。
随机抽样一致性算法(RANSAC)¶
Ransac 从一组包含局外点的观测数据中,通过迭代的方式估计数学模型的参数,w表示从所有点中,每次选择局内点的概率,p表示迭代过程中随机选取出的点均为局内点的概率,因此P表征了算法产生有用结果的概率。
假设估计模型需要选定n个点, \(w^n\) 是所有n点均为局内点的概率; \(1-w^n\) 是n个点中至少有一个是局外点的概率,此时表示我们评估了一个不好的模型。\((1-w^n)^k\) 表示算法永远都不会选择到n个点均为局内点的概率,它和1-p相同,因此:
对上式两边取对数,得到:
值得注意的是,这个结果是假设n个点都是独立选择的。为了得到更可信的参数,标准偏差或者它的乘积被加到k上。k的标准偏差定义为:
+二级金字塔算法¶
sift是比较普遍的方法,但属于重量级武器。虽然可以通过bow、hash等方法加速,但要效果好在实现的时候还是需要有不少小trick的。至于局部的形变和局部匹配,可以在sift上做一些小改进,但效果一般。
ps:你的问题大多集中于同源图像的比较,应该属于image copy detection的范畴,与一般检索中的图像相似性度量不太一样,你可以搜搜相关的文献
DoG (Difference of Gaussian)角点检测
用两幅图像的在不同参数下的高斯滤波结果相减,得到DOg图。
A = Process(Im, 0.3, 0.4, x);
B = Process(Im, 0.6, 0.7, x);
a = getExtrema(A, B, C, thresh);
为什么那因为唯一能产生尺度空间的核高斯核,它有一个变尺度的高斯函数:math:G(x,y,sigma) 与图像:math:I(x,y) 产生,即: \(L(x,y,\sigma)=G(x,y,\sigma)*I(x,y)\)
其中是二维高斯核函数,表示为: \(G(x,y,\sigma)=\frac{1}{2\pi\sigma^2}e^{-(x^2+y^2)/2\sigma^2}\)
SIFT 建议在可以通过LOG原则可以通过DOG来得到:
\(D(x,y,\sigma)=(G(x,y,k\sigma)-G(x,y,\sigma))*I(x,y)=L(x,y,k\sigma)-L(x,y,sigma)\)
其中k为相邻尺度空间倍数的常数。
为什么要用DOG来检测特征点?
证明只有LOG才具有真正的尺度无关性。
而Mikolajczyk发现,只有用:math:sigma^2 才能得到更加稳定的图像特征,
通过热传导方程也可以理解DoG和:math:sigma^2nabla^2 G 的近似性。
对上式进行有限差分运算得到:
因此:
- 尺度空间理论和SIFT算法小结 尺度空间不同高斯合如何确定,并且后边的特征向量还是不能明白
- SIFT算法详解及应用(课件) 算法基本明白,但是细节还不明白为什么要学分组内组间呢
利用Laplace算子的原来,用DOG 实现,并用Hessian矩阵实现特征点的探测
稀疏呈现,
constrain 取0范数 表述对一个都是一样的惩罚,这样就显得比较公平?? 对每一个个数。0 范数到底怎么计算?
+`图像处理特征不变算子系列之SUSAN算子 <http://blog.csdn.net/kezunhai/article/details/11269793>`_¶
SUSAN算子通过一个圆形模板在图像上移动获得,模板内的每一个像素与中心像素进行比较:
其中:math:vec r_0 是中心像素,\(\vec r\) 是掩膜内其它像素,t是一个像素差异阈值。
对上式进行统计,统计方式如下:
得到的n值就是USAN的大小。
得到USAN值之后,通过阀值就可以得到初步的边缘响应,公式如下:
其中 \(g=3n_{max}/4\), USAN值越小,边缘的响应就越强,从而探测到边缘点。
Introduction¶
小波变换区别于傅里叶变换的主要原因就是 小波变换没有特定的basis,他是根据母小波和父小波(scale function)来逐步递归确定的,因此他比较适合于有突变的地方,其中wavelet function 提供了一个多尺度分析,我想和金字塔信号,就是提供了一个伸缩函数,可以灵活的想要的分辨率。
- Image Denoising with Wavelets 小波降噪 matlab版本的
- 小波变换PPT 有限长均值为0的函数都为小波函数,能量集中。再看那个差值的分布,例均值,放在左与上,差值放在右与下,这样不就形成多分辨率了,只要从左上到右下逐步取值不就形了。可以直接计算出来当前图像的大小。这样的多尺度变换与MIPMAP 的存储关系。
- 小波变换 完美通俗解读 正线性的空间的基与向量的最大无关组,利用最大无关组来表示其他向量。系数的个数与最大无关组的个数,那么图像我们能不能每一行当做一个向量组,然后求出最大无关组。这样不是可以压缩数据了。一般对于图像的压缩都是采用分块的模式。 amsci 从这一篇文章中我们可以看从向量的无关组来延伸出来的,Haar矩阵。wavelet in wikipedia
如何利用矩阵的初等变换与求矩阵的逆。
小波在图像中应用¶
残差计算,子带编码,哈尔变换。 对于图像的压缩编码,应该有逐级变换解码的算法。每一点的值,应该是有固定的路径。而不必须每一次都把全部的运算解开。%RED%可以利用这种方法来产生一个算法性texture,再加分型的应用。 %ENDCOLOR%
Hilbert 和wavelet 变换的关系
– Main.GegeZhang - 16 Aug 2013
傅里叶变换中的基也应该是正交的
– Main.GegeZhang - 16 Aug 2013
尺度函数(父小波):对自己本身周期平移的函数两两正交,为什么
– Main.GegeZhang - 16 Aug 2013
稀疏矩阵 小波变换其实有点类似于稀疏矩阵。特别是适合于,一个主波在不同的段有不同的波形组成。
– Main.GangweiLi - 15 Sep 2013
哈尔变换 是基固定,只是用来求系数。因为只有加减运算速度很快。
– Main.GangweiLi - 15 Sep 2013
JPEG 1. DCT 计算 1. 量化 1. 变长编码 图像分成8x8的像素块来进行的。
– Main.GangweiLi - 15 Sep 2013
http://glearning.tju.edu.cn/course/view.php?id=677
– Main.GegeZhang - 23 Sep 2013