如果我有时间,我可以一天更新十次。但是我没有。 所以,如果你喜欢我喜欢的,你关心我关心的,请联系我,让我们一起做好这个博客。 cvchina.info@gmail.com QQ群号:120188132
推荐阅读
欢迎加入QQ讨论群

欢迎加入QQ讨论群

建立个个qq群,大伙没事上去侃侃。 QQ群号:110198057(已满) 112897636(已满)120189092  120188132 还有一个google groups:https://groups.google.com/group/cvchina_forum

深入阅读

稀疏表达:向量、矩阵与张量(中)

稀疏表达:向量、矩阵与张量(中)

在开始正文之前,咱首先得说明一下,这篇东西偏向于理论,各位看官可以自行跳过某些部分。这方面的工作奠基人同样也是compressive sensing的大牛之一E.J Candes(Donoho的得意门生),以及Candes的学生Ben Recht,前者刚从caltech被挖到stanford,后者目前刚到wisconsin做AP。Candes大牛,stanford统计系出生,师从Donoho。Candes原来的主要工作集中在小波分析上(实际上C牛非常多产),比如著名的curvelets以及ridgelets,04年左右开始和Tao合作从事compressive sensing的理论工作,这里有他的简要介绍。 继续唠叨,上回说到借着collaborative filtering的东风,矩阵的稀疏表示受到了广泛的关注。说到矩阵的稀疏性,大部分看官可能有所误解。这个矩阵稀疏表示严格而言可以分为两种: 1. 矩阵元素的稀疏性,即矩阵非0元个数相对较少。参照向量的范数,同样可以定义矩阵的0范数,并将其松弛到矩阵的1范数的优化问题。 2. 矩阵奇异值的稀疏性,即矩阵奇异值中非0元的个数(即矩阵的秩)相对较少。仿照向量情况下0范数与1范数的关系,同样可以将其松弛的到迹范数(trace norm)的优化问题。 咱下面会分别聊聊这两个问题。首先,咱的出发点是machine learning中的collaborative filtering,这个概念并不是啥新东西了,最早大约可以追朔到1992的某篇同名文章。这玩意是做啥的呢,通俗的说,每次你在淘宝上闲逛的时候,下面都会有一行推荐商品。这些个网络服务商(淘宝,Amazon, Ebay)就在想了,如果这个推荐系统做的足够好,那么消费者(比如你我)的购物欲望就会得到刺激,这个销量也就上去了。实际上,这和超市里玲琅满目的货架是一个道理。 这里就得提提Netflix Prize这件事了,话说netflix是家在线dvd租赁公司,这公司就抱了同样的想法。不过这家公司想了个主意:该公司提供数据,出资100万美刀,奖励研发这个推荐系统算法的小组,并要求这些算法发表在学术会议或期刊之上。这可以算是现实版的百万富翁了(学术和money两不误),于是collaborative filtering着实火了一把(比如SIGKDD上的不少文章)。最终历时两年,由AT&T实验室成员组成的BellKor’s Pragmatic Chaos赢得了这100万刀。顺到一提,国内也有不少家伙参与了这个Prize,比如排名第二的Ensemble组里就能看到中科院某所学生的身影。 这个推荐系统咋做呢?我们先从简单的模型开始。以netflix为例,netflix有个影评系统,在你租完DVD以后会让你打分(1-5分)。当然不是所有人都会认真去打,实际上只有少数家伙会给打分(这世界上懒人何其之多)。同样,对每个用户而言,他也只可能给部分看过的DVD打分。假设现在有个用户和部电影,如果把所有评分列成一张大表,可以得到矩阵。其中,每一行对应一个用户的评分,每一列对应一部电影的用户评价。可以想象,这个矩阵中只有少部分元素是已知的(图1)。 从现有的用户数据,来预测未知的用户数据,这就是collaborative filtering了。那么这个东西怎么实现呢?解释起来难,做起来容易,这个模型放在在topic model里叫做Probabilistic latent semantic analysis (PLSA),放在代数里叫做矩阵分解(Matrix Fatorization)或者矩阵填充(Matrix Completion),这里就只能形象的解释下。虽然用户千奇百怪、电影成千上万,但总可以归结为若干类型:比如有腐女向、宅男向电影之分,再比如有悲剧也有喜剧。如果把这些latent factor画成一个空间,那么不同的用户群体应当位于这个latent factor空间的不同位置,体现了不同用户的喜好。如果可以把用户喜好连同潜在的latent factor一同计算出来,预测也自然水到渠成了。从某种角度来看,奇异值分解过程也就是上述的剥离latent factor和用户喜好的过程,这其中的philosophy可以参见这篇文章。 咱首先要谈的是矩阵奇异值的稀疏性,为此先来回忆下奇异值分解。 1. 奇异值非负,即 2. 奇异值非0元的个数即为矩阵的秩(rank) 如果把奇异值写成对角矩阵的形式(比如SVD分解的标准形式),其对角元为。进一步,矩阵的迹范数(trace norm)定义为矩阵奇异值之和,即有 现在我们可以把collaborative filtering的基本问题回顾一下,给定一张推荐数据表,已知其下标子集中的元素(也就是有评分的部分),如何恢复这个矩阵?这就是matrix completion的问题了... 乍眼一看,这基本就是mission impossible了,即使只有一个元素未知,这个矩阵也不可能唯一。但是如果我们加一些限制条件,这个问题就变得有趣起来了。Candes考虑的是这么一个问题: 其中表示在子集上的投影(即只取子集上的对应元素)。实际上,同样的问题可以有不同的表达形式,如果把这个优化问题稍作调整,可以得到相对容易解释的模型: 其中Frobenius范数也就是矩阵的2范数。从这个式子来看,我们希望找到这么一个矩阵,使得其在已有的数据上和用户评分尽可能的一致(2范数意义下),同时具有比较低的秩(受到上限的约束)。这里对于秩的约束,很多时候是为了降低模型自身的复杂度(比如collaborative filtering,multiple instance learning)。当然,这里也可以看成是一个fidelity term + regulariztion term的经典形式。 实际上矩阵的rank是一个不那么友好的函数,rank自身是非凸、不连续的,最后的结果就是对于rank的优化问题是NP难的。类比0范数与1范数的关系,矩阵的秩(rank)相当于这个对角阵的0范数;矩阵的迹范数(trace norm)相当于这个对角矩阵的1范数。为此,如果这个对角矩阵足够稀疏,即矩阵的秩,那么可参照向量的稀疏表示,利用矩阵的迹范数(trace norm)代替矩阵的秩(rank)。 同样,由于迹范数(trace norm)是凸的,上式是一个凸优化问题,故而必有唯一的最优解。如果这种近似是可以接受的,那么这个问题自然也就解决了。 这种近似靠谱么?这就是Candes和Recht回答的关键问题。Candes从random orthogonal model出发,证明了在此假设下从某个秩为的真实矩阵中均匀抽取个元素,且满足(这里不妨设,反之只需要转置即可) 则凸优化问题的唯一最优解至少以概率逼近原始矩阵,即有 其中均为某常数。更进一步,如果矩阵的秩足够小,对于元素数量的要求会进一步降低。 咱来聊聊这个结果,这说明在random orthogonal model假设成立的条件下,如果相对于比较小,那么只需要知道这个矩阵中约个元素,就可以很高的概率恢复出这个矩阵。举例而言,如果我们有一个秩为10的矩阵,那我们大致只需要从中随机抽取约270万个元素就可以(以很高概率)恢复出原始矩阵了(当然270万貌似也是一个很大的数,但原始矩阵约含有1700万个元素...)。实际上,这是一个相对保守的界,Recht在此基础上还进行了一系列的理论工作。自从出现了这个之后,under mild condition,大家都把rank直接放成trace ...

深入阅读

图像增强demo

图像增强demo

图像较大,请耐心等待图片下载。建议点击右上角的图标全屏观看。 亲爱的读者,这个算法效果如何? 请写下您的看法哈。用阅读器的朋友请点这里。 喜爱这个图像处理demo展示flash的读者,请不要吝啬对terri的赞美。 对这个flash相册感兴趣的朋友可以直接拿源码了: http://code.google.com/p/demoforimageprocess/

深入阅读

introduction to neuroimage原创-灌水-无图

神经影像(neuroimage)说句老实话我一直觉得这不能算是一个领域,为何这么说呢,因为这个领域所包含的方法论涉及各个大家熟知,或者是已经有很长时间的学科基础。为啥会用neuroimage来叫这个学科呢?我自己可能入世未深解释不明,只是比较关注于neuroimage这个期刊而已。简单的说也就是神经科学的方法论。当然也有人觉得这归于computational neuroscience......当然还有可能属于影像学....... 首先谈谈我对这个学科的一些理解吧,说句老实话,这个学科不热闹。一个不热闹的学科注定了其人才的有限性,如果具体化的说我现在身在对神经科学的方法论研究上,很多人都是来自理工科,math,phy,CS,EE比比皆是,这些人据我观察....基本上是因为做原来的学科做不下去了,至少没办法跻身于一流研究才考虑转到现在这个方向,他们带着原有的数学功底,建模功底,计算机功底,信号处理功底来这一个新的领域,并在这个领域里面作出一些相当不错的成绩。不过我也不能太吹毛求疵,可能这个领域还在一个发展阶段,这种外来人才的引入也是一个必然性把。可能就是因为这个问题,每次我看到那些所谓的方法论(一般都是用计算机算法)都是让人觉得寒酸至极,这种层度的算法充其量也就只能在CS里面发个主流国际会议(ICPR和ICIP之流)。但是往往在neuroimage期刊上出现(影响因子高过PAMI),不过不得不说的是,领域内的科学风气确实比CS高,大部分CS写论文的充其量只能算是engineer的水平,引用不清不楚,背景也介绍的不清不楚。不过neuroimage领域的introduction部分实在太长了,论文也普遍偏长,实在是搞不懂,明明就那么点事,不能简单点写,非得长篇大论搞那么多。搞得我每次看都是非常吐血,写了一堆子屁话让我不得要领其motivation到底是什么,还得慢慢酝酿。 其次我想从数据的类型来说说这个领域所分析的数据和我们一般意义上image的比较。首先我们在image的定义大家可能都只有像素的概念,也就是画多少个方格子(pixel),然后这些方格子里面放下一个scalar值,再把这些方格子在一个二维平面上按照指定的顺序排好就构成了我们心中的图像。这个过程非常类似于活字印刷,大家自己想象。大家应该注意到一个scalar是一个变量,但是如果我们要表现彩色图像的话就可能需要一个多维的向量空间比如RGB颜色空间来描述这一个pixel的值,不知道大家有没有想过一个pixel的物理意义是什么?之所以深究这个问题是为了想让大家知道,我们意义上的成像实际上只是一个物理意义的表现形式,但是可能大家都没有过度关注到这一点。我拿X像来做比较,X像上面的每一个pixel其实记录出来的是一个物理意义的量,这个量代表X放射线的接受量,但是我们把这一物理意义值以一种色彩的mapping方式表达到一个合适的色彩空间就是我们所谓真正意义上的成像。这就是医学图像与我们常规图像最不一致的地方,物理意义首先就不一样。比如说CT(computered tomography)和MRI(核磁共振)扫描我们组织会得到不一样的像?为什么?就是因为他的原理以及最后记录下来的这个scalar意义不一样,CT像对于脑灰质和白质几乎是不能予以区分的,但是MRI就不同,相对而言就容易得多。还有一个与CV最大的不同就是MRI和CT这一类东西都是三维的,由pixel是在一个picture里面的最小单元做一个对应,voxel是一个volume里面的最小单位,也就是认为是一个9格魔方的一个小格(是三维的概念,而不是二维的格)。以上就是我介绍的第一种数据类型,对于这些问题而言,我们会有一些问题需求。 比如说是:图像分割(segmentation),为什么需要呢?很简单,脑子里面有skull,CSF(脑脊液),grey matter(灰质), white matter(白质),我们可能需要区分它们。把他们分别分开,便于数据分析。这个大家一看来就觉得狠simple,计算机视觉里面的segmentation不就解决了么?小case,事实上脑的分割仍然是个没有完全解决的问题,至少我们现在还在用所谓的概率分割,也就是说对于一个voxel我们并不能说是什么,只能说是什么的概率是多少,这也是所谓的软分割方法,你设个阈值强制性划分就成硬分割。这一块仍然还有人在做,但是已经不太热了...... 另外就是,配准问题(registration),我就一句话来说明配准对于neuroscience领域的重要。没有配准就没有现在脑科学的发展,为什么呢?所谓的科学无非是在杂乱无章似乎毫无关系的现象事物之间找到所谓的共同点。因为有了配准不同的人脑之间才能通过配准才具有可比性,所以配准这个问题很早一起就开始起步了,从最早的affine变换配准到现在的用微分同胚,这个领域的配准问题比计算机视觉领域要复杂得多。为什么呢?因为我们的cost function不同,CV里面我们可以用一个简单的cost function来度量我们的配准做得是否足够,但是在脑配准里面能够在cost function玩出花来,我举个例子,我们用仿射变换做脑配准的话,往往cost function参数可以采用最简单的平方和就可以,如果我把这个function换成人脑沟回的配准的话,这个问题反正我是没看懂怎么做到的。人脑沟回的褶皱是完全不同的,人与人之间要做到配准反正我是想象不出来。请非数学大牛千万不要去碰脑配准,一般会郁闷的。 上面所说的volume概念只是一个静态的概念,核磁共振作为一个物理现象发现人已经拿到Nobel prize了,这个东西已经发明了好几十年了,但是在90年代基于MRI的一种生理现象被日本人ogawa(这位爷是Nobel prize的新热门)发现,这种信号叫做BOLD信号,原理到现在都没办法完全解释清楚。大家只需要记住可以用核磁技术可以记录脑内的血供信号。这种突然的血供信号和神经活动是有密切关系的。比如说你动左手或者是想象自己动了左手,你的感觉运动区(SMA)就会为你的这一决策忙活,忙活的结果就是会有活动啊,那么活动了之后就会消耗啊,对于脑而言,消耗就是从血液里面获取更多的氧气以及能量,同样的新陈代谢一样会比平时更高。而BOLD信号就是观测到了新陈代谢变化血液信息(这个地方可能会比较难理解,大家感兴趣可以继续问)。 通过上面的BOLD信号,我们可以观测人类在从事某些认知活动中的脑活动,从而分析人脑的一些活动特征。这意味着,我们有可能从此可以得到人脑在一个比较粗尺度上的计算模型。当然这个就是比较大的目标。然后我来告诉大家BOLD信号的数据是什么样的,基本上每2S能得到一个Volume每一个Volume就是当前所观测到的BOLD信号的值。如果我观察很多秒的话就能得到很多个volume,这就像CV里面的video一样,对于video来说一帧是一个单位,这是一个二维的平面,但是对于BOLD信号而言,volume是一次时间点的观测就像一帧一样,但是一个三维的体结构。这个volume里面记录了你脑中每一个voxel中的BOLD信号。 以上的数据叫做functional MRI,着是一种特别的成像,根据这些脑子里的‘video’,我们的应用可以有,疾病判别(主要是与ML和PR相关),brain computer interface(脑机接口)。我这么介绍起来是不是感觉和CV很像?一样都是image process+pattern recognition,只不过这个image process可能比较特殊一些。 tom mitchell 就是CMU的那位机器学习大牛,不知大家有没有印象,他已经带领他的团队靠向neuroscience这个方向了,现在已经有了一篇一作的science,大家应该知道所谓的计算机方向发science这么多年用手指头数也就那么几篇(顺便说一句ISOMAP的作者是搞计算神经科学的不算CS的人)。他的很多学生都做过脑机接口类似(事实上应该称作mind reading但是不知道怎么表达)的工作,用一个经典的论文题目就是Learning to Decode Cognitive States from Brain Images,听起来很玄乎是吧,大家可以去wiki上去搜搜BCI就知道现在BCI的发展确实很有趣。FeiFei li,各位CV的牛不用问也知道这个大名,你们可以去关注她到了Stanford后立马也是介入了这个领域,主要做的是场景的脑识别,貌似已经有一篇nature了,只不过不是一作而已。现在越来越多在EE领域的大牛可能开始关注computational neuroscience,这些牛们确实有得天独厚的优势,不过在neuroscience领域上也只是刚刚起步而已,但是相对于原领域更容易发高影响因子的期刊。neuroimage已经接近6了,neuron,PNAS等都是发的很正常的期刊,在10左右或更高。其次也是因为现在AI领域也陷入一个新的funding问题?!(这个只是据闻,不敢说),相对于做神经科学,NIH是非常有钱的单位啊,连国外的研究者也可以申,我旁边的一个老板就申到NIH的经费。所以未来将会有一些大牛投入neuroscience的怀抱应该是个必然的趋势。

深入阅读

稀疏表达:向量、矩阵与张量(上)

稀疏表达:向量、矩阵与张量(上)

稀疏表达是近年来SP, ML, PR, CV领域中的一大热点,文章可谓是普天盖地,令人目不暇给。老板某门课程的课程需要大纲,我顺道给扩展了下,就有了这个上中下三篇介绍性质的东西。遗憾的是,我在绝大多数情况下实在不算是一个勤快的人,这玩意可能充满bug,更新也可能断断续续,尽请诸位看官见谅了。顺道一提,ICCV09有一个相关的 tutorial 。 据传博文里公式数量和其人气是成反比例关系的,一个公式可以驱散50%的读者,我写完这个(上)之后点了点公式数量,觉得大约是要无人问津了。所以,在介绍稀疏表达之前,让我们先来展示下其在computer vision中的应用,吸引下眼球。 首先是图像恢复(以前有人贴过Obama还记得不),由左侧图像恢复出右侧结果 然后是类似的图像inpainting 然后是图像去模糊,左上为输入模糊图像,右下为输出清晰图像及估计的相机运动(其实是PSF),中间均为迭代过程: 再然后是物体检测(自行车),左侧输入图像,中间为位置概率图,右侧为检测结果 当然我个人还推荐Yi Ma的sparse face,这个在对抗噪声的效果上很棒,比如下图中左侧的那张噪声图像(你能辨认是哪位不?这方法可以!) 且说sparse representation这个概念,早在96-97年的时候就火了一把。最著名的大约要数Nature上的某篇文章,将稀疏性加入least square的regularization,然后得到了具有方向特性图像块(basis)。这样就很好的解释了初级视皮层(V1)的工作机理,即对于线段的方向选择特性。几乎同一时期,著名的LASSO算法也被发表在 J. Royal. Statist. Soc B。Lasso比较好的解决了least square (l2 norm) error + l1 norm regularization的问题。然而,这个时候绝大多数人没有意识到(或者没法解决)这l1 norm和稀疏性之间的联系。其实早在这之前,Osher等人提出的Total Variation (TV)已经包含了l1 norm的概念了,只不过TV原本是连续域上的积分形式。(啥?你不知道Osher...想想Level Set吧) 在进入现代的压缩感知、稀疏表示这一课题前,让我们来首先回顾下这一系列问题的核心,即线性方程组 其中矩阵,通常而言是满秩的。向量。现在已知,求解。学过线性代数的同学可能都会说:这个不难啊,因为, 故而这个方程组是欠定的,所以有无穷多组解啊,咱还可以算算基础解系啥的... 但是如果我们希望其解尽可能的稀疏:比如(即中非零元个数)尽可能的小。那么问题就会变得比较微妙了,下图给出了问题的形象示意。 换言之给定m维空间中一组过完备的基,如何选择最少个数的基向量,重构给定向量,其严格定义可以写成 时光之轮播快到2003~2004年,Donoho & Elad做了一个很漂亮的证明,如果矩阵满足某种条件,具体而言: 那么上文提及的0范数优化问题具有唯一的解。这里的是个比较诡异(请允许我使用这词)的定义:最小的线性相关的列向量集所含的向量个数(吐槽:明白了么,我做TA的时候就被这个问题问倒了)。本来想在这个概念上唠叨两句,后来发现了Elad的一个talk,清晰明了。 即便是唯一性得到了证明,求解这个问题仍然是NP难的。科研的车轮滚滚向前,转眼到了2006年,传奇性的华裔数学家Terrence Tao登场了,Tao和Donoho的弟子Candes合作证明了在RIP条件下,0范数优化问题与以下1范数优化问题具有相同的解: 其中RIP条件,即存在满足某种条件的(与N相关)常数: RIP条件是对于矩阵列向量正交性的一种衡量(此处咱就不细说了)。其实早在1993年Mallat就提出过Mutual Coherence对于正交性进行度量,并提出了下文还要提及的matching pursuit方法。 实际上以上的1范数优化问题是一个凸优化,故而必然有唯一解,至此sparse representation的大坑初步成型。总结一下: 1. 如果矩阵满足,则0范数优化问题有唯一解。 2. 进一步如果矩阵满足RIP条件,则0范数优化问题和1范数优化问题的解一致。 3. 1范数优化问题是凸优化,故其唯一解即为0范数优化问题的唯一解。 进一步可以考虑含噪声情况,即 可以得到相似的结果,有兴趣的同学可以查阅相关文献。理论坑只有大牛能挖,但一般人也能挖挖这个优化算法啊,于是SP、ML、CV邻域里都有做这个优化算法的,这个出招可就真是五花八门了。据我所知,大致可以分为三大流派: 1. 直接优化 一般的方法是greedy algorithm,代表有Matching Pursuit, Orthogonal Matching Pursuit 2. 优化 还记得上面提到的LASSO么,这就是它的模型。 3. 如果已知拉格朗日乘子,优化无约束凸优化问题 解这个的方法现在基本上soft thresholding的方法一统天下,常见的有coordinate descent, Bregman ...

深入阅读

Underwater 3D mapping (原创)

Underwater 3D mapping (原创)

先介绍下dataset, 名叫TourEiffel09,  627张图片,来自campaign Bathyluck 2009 对 Mid-Atlantic ridge的海洋考察,考察项目主页在这里,法语主页请用google translate翻译。TourEiffel09是所有图片数据中一个很小的dataset,主要反应的是一座小型的海底活跃火山。先上图片: 这几张图就选自TourEffiel09 dataset。。。 目标:用这627张图片完成对火山的3D重建。 方法:structure from motion。 难点:数据库图片无序,图片间关系未知;图片就像上面的那样,有大量海洋生物,有因火山活动造成的海底温泉,大量热水涌出。。。 具体实施:1.image registration。主要寻找图片间的correspondences和transformations。2.structure from motion。先生成图片间关系的骨骼,然后SFM算法根据骨骼生成sparse 3D model。最后把骨骼未包含的图片尽可能register到sparse 3D model上面。下面这张图,每个节点代表一张图片,红色节点和连线就是骨骼了,绿色的就是最后拓展的图片。很可惜的是右下方有大约100多张的图片,死活是连不上骨骼啊。。。 结果:627张图片中444张完成registration,生成110592个3D points,Bundle adjustment back-projection error为0.076 将这个sparse 3D model生成3D mesh,见图: 最后生成ortho-mosaic,贴到3D mesh上面生成textured 3D model, 见图: 前视图 左视图 右视图 总结:就技术而言,跟“罗马一日建成”相差应该不大吧。。。自我感觉良好,我要是像他一样有微软的支持就好了。。。但是跟此帖的技术还有差距。。。争取早日超越。。。。哈哈。。。 enjoy.....! (声明: copyright归作者本人所有)

深入阅读

SLAM和MonoSLAM

SLAM和MonoSLAM

MonoSLAM的概念来自于SLAM(wiki),是Robotics中的一种定位算法,全称是Simultaneous Localization and Mapping。 让机器人知道自己在那里(Localization),可以用GPS,但是误差有点大(5米左右?),而且还必须在室外。怎么才能让机器人在室内,或者更精确地知道自己的位置呢?SLAM就是一种方法。 基本的想法是,如果我是一个机器人,我知道两个定点1:(x1,y1)和定点2:(x2,y2),我现在可以看见定点1,测量一下,离它5米,把头向右转过30度角后,可以看见离定点2,测量一下,离它10米。然后解一个三角形,我就知道自己在那里了(Localization),位置准确度和测量精度有关(转角,距离),通常可以控制在很小。 但是问题又来了,每次我走几步,就得回头看看定点1和定点2,才知道自己在哪里。这一步三回头的走法,真是一件非常二的事情。于是聪明勤劳勇敢的博士生们想出来一个方法,在第一步的时候,一旦我知道自己在哪里,我就添加几个定点:定点3,定点4,定点5……。因为知道自己的坐标,我可以测量出这些新定点离我多远,加上自己的坐标,就知道这些定点在哪里(Mapping)。以后的定位(Localization)就可以用这些新定点。多了这些定点后,以后再走路,哇身边都是定点,腰不酸腿不疼,知道自己在哪里了。 所以SLAM就是指,同时(Simultaneous)知道自己的位置(Localization)和(And...) 新的定点的位置((feature) Mapping)。因为不管是测量距离,还是计算自己的转角,或记录行走的距离(利用Odometer)都会有noise,而直接计算SLAM,noise会叠加。所以一般SLAM要有一个Kalman Filter的过程。ICRA 10的一篇文章就讨论了为什么需要Filter. (ICRA 10: Why Filter?) .如果对SLAM还有兴趣,可以看看这个Oxford的Summer School。 而MonoSLAM,是Andrew Davison提出来的利用一个摄像头来做SLAM的方法,也叫Real-Time Structure From Motion。在这里,定点变成了visual feature,测量定点的位置转变为match feature, then triangulate. 一个2004年的demo 。当摄像头在空间里忘乎所以地移动时,MonoSLAM都可以利用feature matching,知道摄像头的位置,和那些feature的位置。demo中的右图的黄线,是camera的trajectory。而椭圆表示对于新加的feature的不确定性。paper 可以看到在demo中,虽然知道摄像头的位置,但是mapping的feature很少很稀疏,这样不好不强大。经过了6年,随着CPU,GPU越来越可怕,人民生活越来越幸福,Andrew Davison这个组终于在CVPR 10搞出了dense live MonoSLAM:利用GPU计算PTAM,然后Mesh成Surfeace。请看demo。有点长,请耐心,最后的小车的激情一跃很精彩。project page SLAM和MonoSLAM在网上都有很多现成的code。像MRPT (跨平台),Andrew Davison的SceneLib (Linux),还有C#版本的。

深入阅读

[SIGGRAPH2010] RepFinder: Finding Approximately Repeated Scene Elements for Image Editing

[SIGGRAPH2010] RepFinder: Finding Approximately Repeated Scene Elements for Image Editing

Ref: Ming-Ming Cheng, Fang-Lue Zhang, Niloy J. Mitra, Xiaolei Huang, Shi-Min Hu. 2010. RepFinder: Finding Approximately Repeated Scene Elements for Image Editing. ACM Tran. Graph. (SIGGRAPH 2010). 29, 3, 1-8. 重复元素大量存在于人造和自然场景之中。受遮挡、部分缺失、物体间形变、光照变化等影响,在编辑这些图片过程中保持重复元素及其相互关系并非易事。手工保持重复元素之间的关系是非常耗时而且容易出错的。我们提出了一中新的算法框架:利用简单的用户交互来辅助检测和提取这些重复元素。该检测方法基于一中新的轮廓带图的方法,能够鲁棒的提取重复元素并获得它们之间的遮挡关系。进一步采用拓扑排序,可以建立这些相互遮挡重复实例之间的局部深度关系。通过分析其它未被遮挡的重复实例,我们可以对被遮挡物体进行补全。这些提取出的重复实例可以进一步被用于多种无缝的高层次图像编辑应用中。我们通过很多的不同复杂度的实例,演示了该算法框架的多种应用。这些应用包括:图像重排、编辑传播、变形传递和实例替换。 相关资料(论文,部分代码等可从作者主页获取:http://cg.cs.tsinghua.edu.cn/people/~cmm/) 提示:图像编辑长期以来多集中在像素或者patch级别的编辑。然而人类理解和处理信息的方式是基于场景物体级别的。从图像中检测有意义的物体并用于编辑是一个很好的方向,有很多事情还可以做。这篇文章只是一个开始,演示了部分应用。局限性也很明显:目前只利用了形状信息,检测和对应估计并未用到颜色和纹理,结果有局限性;作为场景物体级别图像编辑的一个开端,所演示的例子也比较简单,不能处理比较大的形变等,用户通常期望能处理更加复杂的情况。在这个方向上应该还有很多事情值得进一步推敲。

深入阅读

网络试衣行业研究报告

网络试衣行业研究报告

最近几个月,我在疯狂研究网络试衣行业。这里介绍四个比较有影响力的相关网站: 一:首先是MVM(My Virtual Model),第一个三维试衣网站:http://www.myvirtualmodel.com/cs/ 点评: 特点:“3D试衣”赚足了媒体的眼球,也调节身体数据(几种选择)适应用户身材,虽然不能前端实时渲染,但提供5个角度图片的渲染结果。他们将各种身材的身体提前渲染好存在服务器,每件衣服也根据5种身材加5种角度(5*5=25张)的图片全部渲染好存在服务器,需要的时候调出来合成。 缺陷:1.高昂的3D服装制作成本限制了其与电子商务的发展空间,最终也只有少数服装能够3D试穿,而网站上的其他服装只有看的份。 2.渲染效果差强人意,没有灯光的渲染何谈真实。 3.5个角度应该不是360°吧。虽然他们后台做了三维建模,可是咱老百姓没尝到多少实惠。 结论:网上试衣最让人直观的解决方案就是把人和衣服全部3D重建出来,完全模拟真实试穿。但是大家还是醒醒吧,面向电子商务的网络试衣远远还不能做到这些,就算有些单机的demo已经很牛逼。牛逼的3D美工的确可以花一天时间用3dmax把一件衣服做得以假乱真,但是不要忘记商家是要赚钱的,成本就是他们的命。更何况有web3d的限制,flash的3d渲染能力还不够强大。想渲染出图片的真实感还是先醒醒吧。 二:接着看国产的淘宝试衣间:http://shiyi.taobao.com/ 点评: 优点:虽然是多角度照片序列做的“伪3D”,但是用户don’t care,实时360°旋转,上衣、下衣、内衣搭配让网民得到了实实在在的体验。为广大淘宝小店服务,咱老百姓也能开3d试衣店了! 缺点:1.每件衣服拍8个角度的照片做成一个swf传到客户端是其解决方案。但是图片的清晰度因此也被绑架了(提高清晰度,数据量将乘以8),带宽是网站永远的痛啊。不过带宽升级后可以逐步缓解。所以大家想看清晰的图片还是点大图吧。或者期待光纤普及的到来。 2.上衣、下衣、内衣的三件套搭配何时才能突破?咱老百姓穿衣服有这么土么?搭配的复杂程度直接影响到试衣的真实性和趣味性。 3.淘宝缺钱么?舍不得用真人替换那个塑料模特?一股塑料味~ 结论:简单实用才是硬道理。免费给淘宝店使用试衣模块,每件衣服的制作费用为30元,马云果然是中小企业的救世主啊。 三:说到搭配,我就要介绍最近我研究得最多的网站了:http://looklet.com/ 点评: 优点:1.细腻的图片,真实的模特,真实的光影叠加效果让人觉得这个试衣比较靠谱。时尚的感觉刺激着你的购物欲。 2.搭配是该网站的杀手锏。可同时试穿多达30件物品。可以试穿的服饰覆盖全部你能想到的。多层服装的复杂叠加能处理得不错(有兴趣的可以试试,想想他是怎么做到的)。 缺点:只能提供正面,背面和上半身特写三个角度的搭配结果。360°瞧个够是没办法了。 结论:鱼和熊掌不可兼得啊。网上试衣真实感的两个矛盾的方向:3D全方位展示和成像真实感。个人觉得真实感更重要,给我好的感受比给我多的信息更重要,所以我比较推崇looklet的做法。两个也想过这种复杂的搭配能否用在淘宝试衣间上。应该有可能,不过8个角度都要做复杂的叠加计算,给开发者带来难度。更何况多层衣服都是8张图片,对flash的内存使用也形成很大压力。 四:最近又出来一个吸引硅谷风投关注的网站:http://fits.me 点评: 特点:下一代网上购物的前驱?输入你的身体尺寸,能够模拟你的身材,并让你查看各种尺码的衬衣穿在你身上的效果,让你判断出你应该穿何种尺码。爱沙尼亚Tartu大学工学院和Tallinn大学机器人实验室研究出来的这个可以伸缩调节每个板面的怪物机器能够根据你的数据模拟你的身材。这是网上试衣尺寸判断的一个突破。 缺点:现在还只能卖衬衣。相信里面还是有瓶颈的,但是我还没想清楚,高手来看看。就算模拟出来了身材,衣服的图片从何而来?没件衣服的每个尺码都用不同形状的机器人模型拍一次?成本很高啊。 结论:这项技术有着解决电子商务瓶颈之一——尺寸合身判断的潜力,而且很容易跟所有电子商务网站做整合。拭目以待。 不知道大家会看好那种网上试衣模式?或者还有别的好的试衣网站也可以拿出来讨论一下.

深入阅读


转:基于Aforge的手势字符识别

2010年7月29日 cvchina 没有评论

还是来自hellogv,呵呵。

Afroge我是第一次看到,孤陋寡闻了。下面是一点介绍。

AForge.NET is an open source C# framework designed for developers and researchers in the fields of Computer Vision and Artificial Intelligence – image processing, neural networks, genetic algorithms, fuzzy logic, machine learning, robotics, etc.

The framework is comprised by the set of libraries and sample applications, which demonstrate their features:

  • AForge.Imaging – library with image processing routines and filters;
  • AForge.Vision – computer vision library;
  • AForge.Video – set of libraries for video processing;
  • AForge.Neuro – neural networks computation library;
  • AForge.Genetic – evolution programming library;
  • AForge.Fuzzy – fuzzy computations library;
  • AForge.Robotics – library providing support of some robotics kits;
  • AForge.MachineLearning – machine learning library;
  • etc.
  • 我实现手势识别的原理很简单:捕捉运动物体+手写识别,把运动的物体的轨迹记录下来,然后通过手写识别引擎去搜索数据中最匹配的数据,从而知道“写”的是什么。目前常见的开源手写识别引擎有zinnia,wagomu 这些,不过小弟我比较业余,只把网上的比较常见的手写识别代码改进一下,只能识别字母和数字,真想通过摄像头隔空“手写”的朋友就要多花时间玩玩上面提到的几个开源手写类库了。

    本文介绍的手写识别:先在一个固定大小的画板上,用鼠标画下某图形,输入该图形对应的字母,程序把画板上的字母特征点都保存下来特征数据库(相当于学习记忆),然后再在画板上画出类似该字母的图形,程序就通过新画的特征点搜索特征数据库从而找出最类似的字母。

    阅读全文…

    分类: 新闻 标签: , , , ,

    OpenCV WinCE/WM移植

    2010年7月29日 cvchina 1 条评论

    首先声明,本文来自hellogv,很好很强大,可以围观,可以搭讪。

    上次写了在C#玩OpenSURF的演示,这次就写写如何把opencv1.10移植到wince/WM。因为如果懂得裁剪opencv,那么就可以在更多设备(PC,手机,开发板)上玩更多更好玩的算法,因此,移植和裁剪opencv还是很有必要的。我已经移植到wince/WM上的opencv1.10工程可以到这里:http://www.pudn.com/downloads270/sourcecode/embed/detail1235697.html,工程只含cv和cvcore这两个核心项目,highgui与系统粘合度太大,不好移植,迟点会贴出实现部分highgui功能的例子。

    本文参考:http://www.computer-vision-software.com/blog/2009/03/running-opencv-facedetect-sample-on-pocket-pc/

    接下来,废话不说,直接把移植cv和cvcore的步骤贴上:

    阅读全文…

    分类: 新闻 标签: , , ,

    FrankenCamera(怪物相机?)

    2010年7月27日 cvchina 2 条评论

    FrankenCamera是standford鼓捣出来的出来的怪物级的相机,尺寸惊人,比加了手柄的无敌兔还要大,没点肱二,三头肌估计玩不动。目标是提供一个computational photography的开放式平台(提供曝光,聚焦,快门等等控制,而不用受限于消费相机的预装软件)。(也算是open source hardware么?)

    siggraph2010上有一个介绍这个巨无霸的论文

    最近该实验室放出了一个开源软件Fcam,适用与两个平台,一就是上面的FrankenCamera,另一个就是nokia第一款基于maemo的的手机N900。(为何不跟个风,搞个NexusOne版本的?)

    如果我没眼花的话,下面这句话的意思是一年内可以买到FrankenCamera?

    Levoy said he expects those cameras will be available within a year.

    来源

    cvpr2010论文(全)

    2010年7月26日 cvchina 2 条评论

    cvpr 2010

    低调的更新。cvpr2010全部论文和部分demo。猛击这里查看。同时静候ECCV2010。

    分类: 新闻 标签:

    LookTel

    2010年7月25日 cvchina 没有评论

    Image of LookTel recognizing money

    介绍一个移动视觉搜索的应用,LookTel。该应用利用移动设备拍摄目标物体(比如说钱币,商品等),上传至云端识别,然后返回识别结果,并以语音的方式读出,目标受众是视觉有障碍的人士。市场定位很清楚的一个应用,虽然受众很小,对于视觉有障碍的人来说非常有用。如今的新鲜科技令人眼花缭乱,像这样,能真正改善人们生活的,少之又少。

    LookTel不同与之前介绍的SnapTell,goggles等的一个地方是允许用户自己添加场景,制作一个个性化的数据库。这对视觉障碍人士来说很有吧。

    除了自动识别以外,LookTel还允许一个辅助者远程描述当下的视频或图片里的场景。当然这跟计算机视觉就没关系啦。

    得知这个应用是通过一个新闻,LookTel刚获得了今年的2010 CTIA E-Tech AWARDS。

    官网

    链接大放送

    2010年7月24日 cvchina 没有评论

    这次有两个脑机接口的新闻,一个是TED上的演讲,(貌似评论中评价不高,说白了就是对比标定和实验两个阶段的脑电波?)另一个只能算是旧闻了,来自dartmouth的意念拨号器?哈哈。

    本周是视频是来自cvpr2010,一个是获得最佳论文提名的feifei li的演讲,另一个是最佳学生论文的演讲

    接着推荐一下python shell,Bpython,特色是在控制台下面完成自动补全。很不错。

    另外,我以前说过vlfeat有一个python的移植版本么?链接在这里。

    最后还是全景图,依然来自360cities,每张都是高质量。最爱下面这一个。这样长曝光的全景图,倒是第一次看到。

    幸福终点站

    2010年7月22日 cvchina 3 条评论

    如果你是从3月份就关注cvchina的话,应该会看过这条新闻:vislab无人车的丝绸之路。现在,这个小面包车,长途奔袭8000英里,终于到达上海了。出发了。预计10月份到达上海。PS:一个问题是,汽车叫做auto,那么无人汽车是叫autoauto么?额。。。

    来源

    分类: 新闻 标签: ,

    Yet Another Geture UI.

    2010年7月22日 cvchina 6 条评论

    如此多的手势UI,德国Fraunhofer的手势UI也来插一脚(插一手?),特色是可以在3D空间操作的哈。

    个人觉得一个好的手势UI最重要的地方就是能不能提供一个简洁的抓取动作(相当于鼠标的左键点击)。在下面的视频里,Fraunhofer的抓取动作就是直接取自自然而然的手掌抓取,前提当然是建立在五个手指准确的的姿态估计之上。

    另:在来源处提到,手势的3D信息来源于3D摄像头。

    Im FIT-Prototyp werden in Echtzeit Hände und Finger der Benutzter in den Bilddaten einer 3D-Kamera erkannt und die Bewegungen mitverfolgt.

    假模假样

    2010年7月21日 cvchina 3 条评论

    其实是两个网站,第一个是随机产生一个计算机图形学的论文名,看起来像模像样,起码能唬倒我这样的门外汉。

    下面是两个例子:

    Probabalistic Polygonal Normal Mapping

    Occlusion Mapping with Procedural Geometry Interpolation

    还有一个是中文网站,来自matrix67,随机给出一个形容词和一个名词,组合起来挺有张力。

    比如:生硬的海风,惊讶的火药桶,不俗的治安费,面熟的误差。

    很有意思,可以玩上一阵。

    链接大放送

    2010年7月19日 cvchina 3 条评论

    突然发现好几天没来更新了,这是有史以来最长的间断,下不为例。
    首先是新闻两则,这次关注的是软性显示装置。第一是toshiba的flexible display,可以折来折去的当成缩放输入,demo里是用来操作google earth。第二看起来更惊人,是hp的flexible display, 不但可以折,还可以像EInk一样不用消耗电力的保持一幅图像。

    然后是两个关于3D显示的XXX,一个是XXX,另一个是XXX。在公司看cvchina的不要打开了。切切。

    本周的视频是一个关于视错觉的,太震撼了,人脑也是有bug的啊。让我想起了上海科技馆的鬼屋,真的是站不稳,没去过的可以去体验一下,顺便还可以去鄙视一下模式识别馆。

    另外推荐两篇博文,第一是是dark channel的发明人,何恺明,现身讲述了cvpr2009 best paper的的前世今生。第二是netflix prize的来龙去脉

    本周的图片推荐,就不来全景图了。换一个data visualization,让人眼花缭乱的艰辛创业流程图