-
convention
2009-12-13
有很多的参数配置
每种配置都需要输出文件
程序需要根据配置来读入文件
也需要根据配置来构造变量名什么的
很多很多的批量处理
很多很多不同类型的处理结果
用matlab scripts
解决办法是各种各样的convention
比如实验结果输出的目录结构和文件名
比如数据结构的变量名
convention over configuration似乎是自然的选择
另外还有table driven
第一列是什么,第二列是什么,这些都是convention
开始是用变量来表达不同的域,但是那样重复代码太多
不如直接一个table
另外还有matlab scripts可以做运行单元,互相嵌套
根据convention,函数都不需要定义
这样会有一些陷阱,但是感觉也还好,调试也不难发现
matlab的eval语句也很强大,动态运行一个字符串的代码
-
doc
2009-12-13
前几天写文档
需要把图表结果贴到word里面
很多很多的图
每个都需要设置大小
每个都得copy paste
每次table也是copy paste
很想找个工具能自动生成doc文档
有啥工具呢?
-
乱七八糟
2009-11-05
maha distance相当于基于正态分布的概率
kernel的版本相当于假定高维空间上是正态分布
-
pca
2009-10-30
最近pca用的比较多,以前听说过,学过,就是没用过
现在用了一下,体会深了很多
算covariance matrix其实也相当于算pca
算基于cov倒数的距离相当于在pca变换后的对轴进行校正后的距离。
轴校正后点的分布成为一个圆
现在的问题是优化计算,每次有大量点和上次重复。只要加上新的点XX‘去除旧的点就可以。均值算是一个点。
//半夜没睡好,想这个问题去了。
-
OpenCV Image Data Access
2009-06-18
被一个很奇怪的bug折腾了好久
用大部分数据都没问题
用某个数据有问题
加上一个开关没问题
加上另一个开关有时有问题,有时没有问题
用ctrl+F5运行有问题,用F5运行没有问题
今天终于让这个问题不断的重现,在debug模式下
在cvSaveImage的时候报错
检查Image也看不出啥毛病
后来一行一行的注释,再添加
终于找到问题所在,其实不是在cvSaveImage那个地方
而是另外一个给Image赋值的地方,wk~
又是指针问题
用了不恰当的index
感觉被这个问题咬了不止一次了
关于Opencv Image Data Access搜到两篇
http://opencv.willowgarage.com/wiki/faq
http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html
general的方法是这样:
I(x,y)c ~ ((T*)(img->imageData + img->widthStep*y))[x*N + c]
N对应nChannels, c对应第几个channel,T对应数据类型
widthStep对应一行有多少个字节,这个数目并不等于image的宽度乘以数据长度乘以nChannels,opencv会根据需要补两个字节,这样让行长是4的倍数?
总之呢,这个数代表了一行用多少个字节来存,所以image->imageData + image->widthStep * y会移到下一行的开始
如果存储数据类型是32个bit,用float来表示,那么T就是float
用类型转换,然后后面的x*N+c就对应x列,channel c
比如
IplImage* im = cvCreateImage(cvSize(600, 800), IPL_DEPTH_32F, 3)
那么T = float, N = 3,
其实这么access非常容易出错
因为access一个x, y, c,还得考虑widthstep,考虑类型转换,理想的状况当然是I (x, y, c)
OpenCV有CvGet2D,但是效率很低
怎么整一个好的解决方案呢?其实大多数时候都是单个元素简单的操作,然后循环
以前写过一个Iterator,不过仅仅针对单个图像处理,也没考虑不同数据类型问题
也许应该写一个更灵活一些的Iterators
-
robot
2009-05-31
PhD的题目是从robot开始的
论文最终以robot结束
但是几年下来,其实花的时间并不多
尽管这是最感兴趣的方向
不知道以后工作了还会不会有时间继续下去
希望还会有机会吧
今天又想了想这方面的东西
还是视觉方面
其实应该综合多种特征
lines, colors, motion,
应该都考虑
还有prior knowledge
一幅图像的骨架可以由lines, vanishing points, ground plane大致来定义
然后texture, colors可以用来做细节的分类,建模
之前做的东西都比较零散
一直想着结合起来
但是也没时间做
也许在sfm的基础之上,再做结构化的建模
比如lines,planes等等
任何一个空间都会有主要的几个planes
每个图像可以分解成很多的小的块
根据motion和对应,可以把这些小的块对应到不同的平面上去
对于远方的结构,可以根据分类来确定对应的面
如何确定planes呢?
可以根据线,piror knowledge
-
scattered data approximation
2009-04-30
From <<scattered data approximation>>
In practical applications over a wide field of study one often faces the problem of reconstructing an unknown function f from a finite set of discrete data. These data consist of data sites X = {x_1, ..., x_N) and data values f_j = f(x_j), 1<=j<=N, and the reconstruction has to approximate the data values at the data sites. In other words, a function s is sought that either interpolates the data, i.e., that satisfies s(x_j) = f_j, 1<=j <= N, or at least approximates the data, s(x_j) ~= f_j. That latter is in particular important if the data contain noise.
Explicit surfaces play an important role in terrain modeling, for example. They can be represented as the graph of a function f:O->R defined on some region O <( Rd, where d is in general given by d = 2. Staying with the terminology of terrain modeling, the data sites X <( O depict certain points on a map, while a data value f_j = f(x_j) describes the height at the point x_j. The data sites might form a regular grid, they might be situated on isolines (as in Figure 1.1), or they might have no structure at all.
The reconstruction of an implicit surface, or more precisely of a compact, orientable manifold, is even more demanding. Such surfaces appear for example as sculptures, machine parts, and archaeological artifacts. They are often digitized using laser scanners, which easily produce hugh point clouds X = {x_1, ..., x_N} <( S consisting of several million points in R3. In this situation, the surface S can no longer be represented as a graph of a single function f. There are in the main two different approaches to building accurate models for implicit surfaces. In the first approach, one tries to find local parameterizations of the object that allow an efficient rendering. However, for complicated models this approach is limited. In the second approach, one tries to describe S as the zero-level set of a function F, i.e. S = { x<( O : F(x) = 0}. Such an implicit representation easily delivers function-based operations, for example shape blending or deformation or any other constructive solid geometry (CSG) operation such as the union, difference, or intersection of two or more objects.
-
multi view disparity map
2009-04-15
现在三位重构的效果还不错
reprojection的点基本上都是对的
现在的问题是怎么得到所有view的disparity map
现在的想法是interpolation
因为如果每个pixel估算,速度会非常慢
这方面倒是有几篇paper,今天看了一下,用bundle optimization,color similarity constraints and geometric constraints,概念不是很复杂,不过估计实现起来还是挺麻烦的。感觉属于offline的方法。
自己之前的想法是gaussian process interpolation,而且已经写到paper里面去了
但是现在想放弃这个方法,之前也是试过,虽然有一些好处,但是感觉问题也很多
纯调hyperparameters,拟合总是不很好。另外,最大的问题是速度还慢,而且只能单个view的作。
本来一直在想一个merge的方法直接fit a global surface。但是怎么fit呢?又怎么render depth map呢?这两个问题都比较麻烦。
一种最简单的方法是在image上作triangulation,然后直接interpolate,这样就假定3d piecewise linear,可以保证depth consistency。不过问题是没法做extrapolation。
-
a bug
2009-04-13
x写成了y
结果出现接近垂直的translation计算总是有问题
在LineSegmentIntersectionConstraints
测试程序也不够严谨
使用的是随机生成的一个点
而这个点一般都会生成接近水平的线
-
柳暗花明
2009-04-13
几乎是已经绝望了
感觉进了死胡同
而且短期内还没有什么出路
或者得费很多时间和精力
今天再碰运气的时候
突然冒出一个点子
就是假定相机只有平移
恩。
这样效果好了很多
而且不再有随机结果乱冒的问题
也没有F到E不好的问题
而且调lens distortion也好很多,wk~
而且写paper也有了内容,或者,跟已经写的paper里的东西是相当match的
准备再多搞几个结果看看
-
E 2
2009-04-11
minimal point solution can not avoid degeneracy problem
it is also not useful for model calculation using all inlier points
A global optimal solution can be find by the method in
"Global Optimization through Searching Rotation Space and Optimal Estimation of the Essential Matrix"
//where is the code?
idea:
1) given R, t can be L-infinity optimal determined
2) search rotation space to find best R.
1) require L-inifinity optimization and 2) require branch and bound algorithm, both are hot topics and can be applied to many vision problems
The method is much slower than traditional normalized 8 point algorithm.
-
E
2009-04-10
E = [t]xR
a standard algorithm is first compute F, then change the singular values such that s1 = s2 and s3 = 0.
the problem is: the initial F may have lots of inliers but the resulting E does not.
current solution is ransac_E
E is the model for every iteration, pick the best and iterate unitil no better E, i.e. no more inliers
this can ensure a good E but can not avoid quasi-degeneracy problem
a solution for degenerated F is to first compute H and then compute e', F = [e']xH
this solution has the same problem that E is not good while F is good
How to do this for E?
Find a E such that ||x'^T * E * x|| is minimized.
iterative methods
-
fvision2008
2009-04-09
改了一个bug
之前碰到的很多诡异的情况或多或少都跟这个有关
每次unit testing的时候其实都有一个诡异的现象
但是想当然觉得是正常的
其实是应该深究下去
现在改过之后inliers rate提高了很多
另外,normalized算法也都只需要设置original image pixel threshold了,而不是一个magic number
不过代价是让一个基类接口变得更复杂了一些
设计继承类的时候需要更全面的考虑
以前其实尝试过,但是一直也没想到优雅的解决方案
另外改进的一个地方是dlt的模板类,要求继承类本身负责管理内存的声明和释放,模板基类只负责读取数据。这样提高内存管理的效率。
-
RANSAC
2009-04-08
The idea is to iteratively random sample, estimate a model, and calculate the inliers rate.
If the inliers rate is sufficiently high, then the corresponding model is good and stop. //or recompute a model based on all inliers.
Then when to stop? We do not know how many inliers/outliers in advance.
We use probability theory.
Instead of setting a threshold on inliers rate, we set a threshold on how many sampling we need to make. If the sample count is larger than a threshold, we stop.
Then how many sampling we need to make?
Suppose the number is N.
We want to ensure a probability p, that at least one of the sample is free from outliers.
Suppose w is the probability that a data point is an inlier and e = 1-w is the outlier probability.
Suppose each sample contains s data points.
We first compute the probability that all samples is not free from outliers
Then the probability of a all-inliers sample is w^s
the probability of a sample not free from inliers is 1-w^s
the probability of N samples that every sample is not free from inliers is (1-w^s)^N
Thus:
p = 1 - (1 - w^s)^N
N = log(1-p) / log(1 - w^s)
However, we don't know w in advance. In practice, we first set w = 0. For each iteration, we update the maximum inliers rate and use it as w and update N.
Notes:
1. RANSAC do not ensure a maximal support model.
2. RANSAC is sensitive to degeneracy, or, the bad distribution of data points, i.e., most points lie in a degenerated space.
3. RANSAC performs poor when the outliers rate is high, i.e., very slow due to large number of samples.
4. RANSAC needs a threshold value.
-
random shoot in the dark
2009-04-06
又调了一个礼拜的medical image
写了一些visualization的程序看中间结果
以及分析
大部分参数得到的结果都不理想
不过偶尔撞到几个还凑活的结果
感觉就像在黑暗里随机打枪一样
希望某一枪能够中靶
另一方面,调试程序或者问题也是一样
以为问题的原因是A,结果解决了A之后,发现问题还在
又猜是B,结果还是一样
系统越是复杂,猜中的概率越小
怎么才能改善呢?
怎么根据错误的一枪了解错误在什么地方,然后下次射出更好的一枪呢?
也许每次发现了问题,就应该仔细分析问题,而不要不断的盲目打枪了
盲目打枪不仅效率低下,对理解问题也没有什么的帮助
有的参数可以,有的参数不可以
感觉问题的原因不在于参数,而是degeneracy
其实很早就注意到了这个问题
但是一直没有系统的专门去解决它
总是忙于一个又一个deadline,而每一个deadline的项目又都是应用性质的,希望能做出最终demo的
于是不断的打盲枪,希望能中一靶,把demo搞定
至于解决中间盲枪准星的问题则不是要点,跟paper也没有关系。因为paper解决的是系统问题,不是做一个更好的的某个技术细节。
不过我最终还是被盲枪准星得问题给射中了
而且射中了好几次
cvpr, ijcai, iccv,拖到最后几天整demo,结果总是得不到好的demo
也许我应该focus到中间的准星问题,专门的研究,整篇paper
解决这个理论问题,再作实际应用
-
analysis
2009-03-31
新的程序写完了,调试了半天,几乎还是老样,除了不再随机出现不好的F
现在所有的参数只需要在一个配置文件里设置就行
开始的normalization贼慢,怀疑是in memory database实现有问题,或者copy transform的效率太差
模拟数据的效果还是完美
真实数据总是差很多
准确的说也就是medical的数据差很多
这些又都是什么原因呢?
voodoo其实开始也很差,效果跟我的差不多,后来一bundle adjustment就好很多
估计到最后也得做bundle adjustment
不过现在得先把目前的问题搞清楚
tracking的结果其实还可以
但是3D到后面的reprojection就对不上了
得把reprojection全部输出,仔细查看一下
以及inliers的points,看看哪些点到后面就成了outliers
还有三维显示的贴图,控制当前view的每一个三维点
每一个image point,对应的reprojection error
每一个inlier image point,对应的reprojection error
每一个3d point,对应的inlier image points, frameId
计算过程中使用的inliers应该都保留到输出结果之中
-
calibration
2009-03-29
感觉上sfm都得假定camera已经是calibrated好的,或者起码得用一个假定的
当然,理论上来说可以先直接做uncalibrated的情况,但是极度怀疑这种方法的scalability
前面几帧reprojection error还很小,一到后面就不行了
主要问题是参数太多。calibrated的情况只有5个参数。而uncalibrated需要11个参数。
另外,从经验上来看,即使是一个不准确的calibration也比uncalibrated的效果要好得多
怀疑marc同学的方法只适用于几张图片。
其实到最后还是要做self-calibration
错误的calibration与正确的calibration最后效果会差多少?
感觉voodoo就是直接假定一个calibration
不然相机的orientation都怎么算出来的
准备把程序再改改了,之前太灵活,太general了,其实没必要,导致不必要的复杂
目前先就假定calibrated
-
photomatch
2009-03-27
http://code.google.com/apis/sketchup/docs/ourdoc/pages.html#add_matchphoto_page
梦寐以求的一项特性
今天偶尔发现了
过两天测试一下
如果和理想的符合的话
那么就可以做很多事情
-
photogrammetry software
2009-03-26
PhotoMetrix iWitness http://www.photometrix.com.au
ShapeQuest ShapeCapture http://www.shapecapture.com
Eos Systems Photomodeler http://www.photomodeler.com
RealVis ImageModeler http://www.realviz.com
vexcel Fotog http://www.vexcel.com
感觉ImageModeler比较成熟。已经被autodesk收购。相比sketchup里的photomatch还是要成熟很多。
-
hide
2009-03-20
面向对象的设计原则之一是信息隐藏
让用户知道的信息越少越好
但是,重要的中间状态信息也被隐藏了
于是出现问题的话,就得去猜测原因是什么
或者,即使出现问题也不知道
如果一个电视机坏掉了,就得把电视机给拆开
如果一个系统出了问题,怎么办呢?
那就得不断重现出现问题的环境,运行程序,调试,或者log
总之呢,出现问题和解决问题被完全分离了
是否应该在接口层面就提供一个衡量返回结果是否好坏的指标呢?或者中间重要的状态信息?
很多时候没有简单的fail或者success
而是介于两者之间
可以用一个confidence?
怎么定义confidence呢?
-
pov-ray depth map
2009-03-18
这方面的例子很少
可以搜到一个,http://runevision.com/graphics/stereo/depthmap/
但是感觉讲解不详细
今天试了一下最简单的一个例子才基本彻底搞明白
camera {
location <0, 0, -2>
look_at <0, 0, 0>
}
union {
plane { z, -0.25} //define a plane z = -0.25
texture {
pigment {
gradient -z
}
//scale 2
finish {ambient 1 diffuse 0}
}
}
最关键的一行就是gradient -z
就是说呢,一个pixel对应的点的-z值,就是这个pixel的color,如果-z = 1,那么color = 255,如果-z > 1,那么color就等于-z的小数位。所以呢,就会很容易看到黑白的bands。解决黑白bands的方法就是后面一行scale,scale 2是什么意思呢?就相当于把坐标轴变为原来的两倍。反过来说,就是把color值改为原来一半,就是color *= 1/2。
直接运行这个程序,得到一个灰色图像,每个pixel color = 63 = 0.25 * 255。
如果scale 2呢,颜色就变暗一半。
那么camera的参数有没有关系呢?答案是没有。当然啦,如果camera看不到任何物体,结果也就会漆黑一片。
-
opencv gauss newton
2009-03-17
non-linear least squares problem
equation: x_i = f(P, d_i)
d_i is the input data, x_i is the target value, f is the function
write in matrix form:
X = f(P), where X = [x_0, x_1, ...,]' is a column vector, suppose x_i is a scalar value
start with P_0, suppose P_1 = P_0 + delta, delta is a column vector
f(P_0 + delta) = f(P_0) + J * delta.
where J is the jacobian matrix, J(i, j) = d(f_i) / d(p_j), where p_j is the j-th parameter of P
we want
f(P_0 + delta) = f(P_0) + J * delta = X
so
J * delta = X - f(P_0) = e
To solve this equation, we solve
(J' * J) * delta = J' * e
So delta = inv(J ' * J) * J' * e
In opencv, first do SVD of J' * J
V * W * V' = J' * J
and e' = J' * e
then solve delta for V * W * V' * delta = e'
delta = V * inv(W) * V' * e';
this is directly computed with cvSVBkSb
In opencv function cvFindExtrinsicCameraParams2, the program is like:
cvMulTransposed( _J, &_JtJ, 1 ); //_JtJ = J' * J
cvGEMM( _J, _mn, 1, 0, 0, &_JtErr, CV_GEMM_A_T ); //_mn is e, _JtErr = J' * e
cvSVD( &_JtJ, &_JtJW, 0, &_JtJV, CV_SVD_MODIFY_A + CV_SVD_V_T ); //SVD of J' * J
if( JtJW[5]/JtJW[0] < 1e-12 ) break; //stop iteration if the ratio between least singular value and max one is too small
cvSVBkSb( &_JtJW, &_JtJV, &_JtJV, &_JtErr, &_delta, CV_SVD_U_T + CV_SVD_V_T ); //solve delta
cvAdd( &_delta, &_param, &_param ); //P_1 = P_0 + delta
n1 = cvNorm( &_delta ); n2 = cvNorm( &_param ); if( n1/n2 < 1e-10 ) break; //stop if the increment ratio is too small
============
The core problem is to define the function and then compute the jacobian matrix
-
camera calibration
2009-03-13
发觉各种问题的核心都是camera calibration
只要camera calibration做的好,剩下的就比较简单
核心问题:给定两个2D view的correspondences,怎么算?标准方法是先算F。如果有K,那么算R, t都很简单。不过呢,问题是,F有可能有问题,或者,K有问题,得到的E不好,也就是两个singular value不一样,如果差5%以上就有严重问题了。另外一种方法是,假定已经有K,每次直接算E(先算F),用E做ransac。这样的话应该好一些。如果没有K的话,就得做self-calibration。
给定三个1Dview。怎么算。先算tensor,然后算e,然后算r,算t,然后triangulate。
给定三维点,和image points。怎么算?
给定一个view,怎么算?
如果有lens distortion。怎么解决?
如果是多个view,怎么解决?现在3d reconstruction。得到point cloud跟初始的两个cameras。后面的就不断的refine了。如果view degenerate怎么办?这个得先自动detect dominant plane homography。
-
magic numbers
2009-03-06
有些参数可以,有些参数不可以
有些参数对数据A可以,但是对数据B就不可以
对数据B可以的参数又对数据A不可以
主要是F的计算,从F到E
好的F可以得到好的E
或者反过来,好的E对应好的F
如果数据点有太多outliers或者分布不好,就极有可能得到不好的F,这是什么缘故?
有时候调整一下参数,增大threshold或者减小threshold,就可以从一个不好的F得到一个好的F,这是什么缘故?
怎么确保得到好的F?
focall length对F到E的影响不大或者,从F到focal length应该有很大的ambiguity不过,这基本不影响metric reonstruction另外,相同的数据,有可能得到截然不同的F,这应该对应于dominant plane的问题,也就是H包含了大多数的inliers,那么怎么在这种情况下,获得一个好的F?或者,找到一个合适的epipole?是否不同的eipole都能得到好的E?
纯粹uncalibrated算P非常不稳定,参数太多,随意的用一个K应该都好得多
-
一些搞vision的公司
2009-01-29
这个链接有一些:
http://www.cs.ubc.ca/spider/lowe/vision.html
有几个公司感觉挺牛:
http://www.pvi.tv/pvi/index.asp
做augmental reality的,没想到这么有前(钱)途
用很多的相机来计算人脸的三维模型
http://www.seegrid.com/tech_howitworks.php
这个哥们的论文很早看到过,没想到开公司了。不过觉得3d grid map 似乎太浪费了
唉,自己的东西搞了半天还没搞出来
其他大部分都是inspection的公司,检测机器零件或者样品封装
另外有一些做tracking的公司
做三维建模的公司不多
感觉还是augmental reality最有前途,核心技术是camera tracking。其实那个公司做的也许更简单,只是pan/tilt/zoom的分析。
-
3D is coming to a living room near you
2009-01-18
-
到底又放弃了
2009-01-13
唉。真实数据的试验效果总是不好。昨天下午才把模拟数据的实验做出来。效果不错。不过真实数据总有这样那样的错误和偏差。看来算法本身仍然不够健壮。或者,数据的预处理做的不够好。
而且,处理实际数据的每个环节都涉及到误差和错误处理问题。
每一个环节出问题都可能会对下一个环节造成影响。
对于video来说,误差还会持续的积累。如何能够纠正误差呢?
其实中间已经不断的在调整算法,不断的简化问题。
目前的这个算法也就是上周末才开始实现的。
当然也有了些积累。
也许积累的还不够。
等处理了所有的问题,算法才真正的有效。
看别人的方法。其实也用了很多的tricks。而且有些实验也很简单。
-
tensor voting
2008-12-30
上次isvc最大的收获就是听了堂tensor voting的讲座
tensor voting的创始人讲的。讲的非常简单,浅显易懂。之前下过那本书,但是一到理论部分感觉就糊了。而听Philippos Mordohai同学的讲座则感觉完全不一样。就像他说的,很simple,很beautiful。
今天又开始看这个。感觉又有一点儿糊。voting field的部分很清楚,tensor也很清楚。但是关键的细节不是很清楚。比如从头到尾的一个流程是如何,如果是pseudo code该怎么写?首先第一步,如何从一堆的点得到一些tensor呢?有了tensor才能做voting阿。那本书也没讲清楚。到网上找slides也没发现。后来来回看一篇paper,就是tensor voting, theory and applications,再看3D的那张slides,再进行强力的inference才搞明白。其实也很简单,就是对每一个点,取他邻近的一个点,可以得到一个tensor,汇集所有邻近的点所得到的tensor,就得到这个点本身的tensor。有了这个tensor,就可以对空间每一个网格点作voting。每个voting也是一个tensor。有了densor tensor map,就可以提取salient的特征,通过找local最大值。
还有一个问题一直萦绕着的,就是怎么得到那个三维模型的。那个模型显然不是简单的一个点。后来从一张slides里看到,原来是通过marching cubes。
以前我觉得这个东西其实没啥,如果简单的作一个multi scale,似乎也可以得到同样的效果。那些noise可以直接通过一个threshold过滤掉。后来听懂后,感觉还是有一些东西在里面。最关键的是那个field,就像电磁场一样。这个东西编码了local的结构特征,以及smoothness的constraints。用这个东西可以算出未知网格的值,可以算是一种更高级的interpolate。
当时听讲座的时候有一个人其实问的很好,说你这个跟clustering有啥区别。不过Philippos Mordohai同学直接把这个问题给回避了,说不怎么了解clustering领域。
很欣赏Philippos Mordohai同学做研究的方式。开始有一个简单的想法,然后一直坚持做下去,不断的完善和扩充理论,以及应用到各个方面。其实tensor voting这个东西已经研究了很多年。
再说tensor voting的应用。首先很广,从early vision到high level vision都有应用。其实核心很简单,就是从一堆的有noise的点里inference出结构特征,比如线,面等等,同时把noisy data过滤掉。有一篇paper是拿这个做epipolar geometry。原理和直线拟合是一样的。一般的方式是ransac。outliers要多了就不行了。tensor voting的另一个好处是可以同时得到多个salient的模型。比如空间里的多个面。
发现很多问题到最后都变成了面的拟合问题。。。。
-
line
2008-12-13
已经花了三天时间搞line tracking了
发现经典的方法都没办法用
好多明显的line都找不到
而且有很多重复的line
反复尝试
决定自己开发一个方法
竖线的试验效果还不错
不过速度非常慢
可能是实现问题
不知道还要搞多久
-
The Mobile Robot Programming Toolkit (MRPT)
2008-10-28
http://babel.isa.uma.es/mrpt/index.php/Main_Page
感觉这个人超牛
http://www.isa.uma.es/C13/jlblanco/default.aspx
81年生,05年开始读phd,一堆的journal和conference papers,还有book chapters
关键代码写的也很牛,估计也是积累了好几年
源代码有4M多(里面也有一些第三方类库的代码)
看这个哥们儿的东西发现差距还是蛮大的
不过这个哥们儿好像读了两个master,中途转校了
要向这个哥们儿学习啊
====================》
再说这个类库,还是相当之全面和强大的,特别是对搞robotics的
本来还想着得自己实现particle filter算法的,还有三周就cvpr了,什么还没有
不过有了这个package,就很有可能了
代码结构,框架,都非常好
有一点不是很舒服的地方是很多函数写得很长,嵌套很多
这个类库用CMake来构建,感觉还是挺方便的
