scattered data approximation

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.

Advertisements

Google Chrome 背后的天才

http://news.csdn.net/a/20090422/210687.html

恰在此时,巴克出现了。这个丹麦人首次在加州硅谷引起人们的注意是在1991年,那时他在Sun公司工作,后来成为业界最佳程序员之一。1994年,他离开Sun,帮助创建了Animorphic系统,该公司后来被Sun收购。再次回到Sun之后,巴克开发了后来成为Java HotSpot(行业标准计算系统之一)的程序。

 

可是2000年初,他却离开了计算机世界的核心,回到了丹麦,搬家是为了幸福生活,为了他的女儿们(他想让她们上丹麦语学校),为了自己的身心健康。美国的开发者社区工作很紧张,生活方式不健康。当巴克回到丹麦时,两个月之内他减了20斤(多亏了美国的阿式饮食疗法【Atkins diet】),而且再也没有反弹。

 

2002年,巴克在奥尔胡斯创建了一家名为OOVM的公司。2004年,他将公司卖给了一家瑞士公司Esmertec,然后又在该公司干了两年,帮助两个公司的融合。离开Esmertec时,他并不特别想找新项目:他有足够的钱养家糊口,也有各种打发时间的方式,包括粉刷农舍的计划。他估计得要一年时间。

 

然后Google的电话就来了。对于Google,巴克是不二选择——他编写了JavaScript引擎(Chrome的核心部分)。对于巴克,为Google工作就是 “小菜一碟”。“我不在乎当什么高级经理。我在乎的是推动技术边界。”巴克接受了这份工作,但不会回到加州。事实上他从没打算再次回加州——虽然谷歌的人性化办公室闻名远近,餐厅里的美食,还可以免费理发,巴克却宁可在家工作——离总部5000英里,相差9个时区。谷歌做好了“信任我的准备。他们知道我不会消磨时间。”重新装修农场的计划要搁置一下。“最后,”他说,“我只有14天的时间(粉刷)。涂料还留着呢。”

God will make a way

今天签了offer letter,扫描,发送出去。工作就算是尘埃落定了。

去年十月份就开始联系

正逢经济危机

到处都freeze

sharp也freeze

当时其实也没感觉到寒流

觉得总能找到工作

因为一直很忙,上个学期也没好好找

就在学校的招聘会上投了几份

最终基本都没消息

只有microsoft有一个campus interview

面完后不久回信,说会再安排一个onsite

不过安排一推再推

最后安排到二月初了,已经是这个学期

十一月的时候老婆在mitbbs上看到一个招聘消息

投了

对方感兴趣,跟我联系,电话聊了很久,中文

彼此都觉得还行

不过最终没成,因为他们决定把软件部门挪到中国

一月初的时候老板说认识一个人,开了个小公司,想招人,介绍了我,让我联系

聊了半个多小时,彼此介绍了一下

然后对方陆续要了我的成绩单,publications, references等等

他说也有很多其他candidates

所以我也没有报很大期望

于是一月中旬一个deadline过后,我开始了正式的找工作之旅

网上疯投简历

也许投了将近一百份,或者更多

但是有回音的不超过五个

机会本来很少,而专业相关的公司基本都要求公民或者绿卡身份

同时还找google的同学推荐

最终正式的面试只有四家microsoft, google, facebook, 3M,不算11月的microvu和老板推荐的这个。其他也有一些联系,但是很快也都再没有消息,比如huxley。

最终这四家都没有拿到offer

离得最近的事3M,对方的招聘描述和我的背景很接近,跟对方的chief scientist聊得也很愉快。但是对方说现在要做另外一个方向,而这个方向呢,跟我的背景其实不太一样,虽然也有很大重叠。也许他们最终找到了更合适的。

google只有一个电面。感觉对方基本上没有什么诚意。面试的问题都很快打出来了,专业方面也都答出来了。后来很久没有消息。最终收到一个电话,说他们要找coding很强的。但是面试里面一个coding question也没有啊?

microsoft和facebook都拿到onsite。但最终都没有拿到offer。microsoft是人生第一次onsite。感觉经验和准备都不够充分。算法基本没看,也没时间。虽然coding questions都做出来了。聊天也都还行。不过有一个经典的算法结构我不知道,或者是搞忘了。当时面试了五个人。还以为有戏。不过也不行。后来再战facebook。感觉好很多。除了一个问题当时没有想到最优解,其他的都找到正解,并且把code很快写出来。没想到最终还是没有拿到。后来发信询问。大致知道了自己的问题。也许一个就是那个没有找到最优解的问题。其实如果再给我一个小时,也许当时也解不出来。就像一个奥赛题目。解很简单。但是找不到就很难。最严重的其实是另外一个问题,交流。对方没有说我的交流不好。但是归根结底的原因却是这个。每次和老印交流都非常困难,他们说话我得听好几遍才能听懂。而开始没有完全理解,以至于回答也就是错误的。直到对方纠正几次,我也再make clear几次,才算明白。明白了,正确答案也就出来了。但是对方也许已经觉得我这个人是朽木不可雕了。其实跟其他三个人交流都很愉快。一个中国人,两个老美。最后一个老美是manager,说的英语爆快,但我都能听懂,也能听明白,跟他交流也很好。他问了四道题。都找到正解。不过这最终没用。最后一个问题是vector。这个中国人当时说我不知道那个接口没关系,他也才从别人那学到的。看来最终还是有关系。其实也是我的问题。我应该早看看effective stl。另外,面试写code的时候他们其实非常看重效率。虽然好的设计都强调可读性优先。但是面试的时候,也许效率才是他们最看重的。任何细小的效率问题都会被他们抓住。这也算是经验吧。

去san jose和kkqq, 太白,jiang li聚了一下。

在facebook所在的大楼见到他们的ceo。很年轻,很绅士的一个小伙儿。

facebook被拒后打击很大。毕竟机会不多。

中间也一直很忙。有一段时间没有申请其他的工作。后来慢慢觉得做coder没有什么前途。不仅累,而且贬值也快。觉得回国当老师也许其实更好。跟老朱也聊过。但是时机还没到。还是先在这边工作吧。

准备申请postdoc,将来走学术路线。同时也继续申请research相关的职位。

老板不推荐postdoc。说我可以继续在学校呆着。

自己投出去的paper也屡次被拒。

觉得自己几乎到了人生的最低谷。没有前途,也没有用。

这时收到之前老板推荐那个公司的offer。

这就是神的旨意吧。其实,现在回想过来,去这个公司其实比去microsoft, google或者facebook都要好。这个公司基本上半学术半工业界。而且最关键的是可以积累初创公司的很多经验。这个老板人也非常nice。另外这两年funding也有保障。不用担心丢了工作。

God will make a way. 神的旨意总是最美好的。

感谢主。

iRobot taps into its Warrior spirit

http://news.cnet.com/8301-11386_3-10219426-76.html?tag=newsLeadStoriesArea.1

Q: It seems to me, too, that popular perception gets ahead of itself in thinking about robots which, in movies, are very autonomous. Most of the robots that are used in battlefields–the PackBot, the Predator–they’re still mostly, if not entirely, remote-controlled. Somebody is still driving that machine, and it’s not working on its own.

A: But there needs to be a person in the loop, because AI is just not that good.

A: Hollywood loves to portray the Terminator, or loves to say, here’s the future, and have the little boy knock on the door and “Hello, I’m a robot.” It’s just not going to happen. Maybe one day, but by the time that happens, the world is going to be a far weirder place. 

Q: And both those (scenarios) are a long way off–robots powered by very smart AI, and humans having reached some sort of cyborg threshold.

A: Angle: Well, I think that the second is far sooner than the first.

//简单的说。目前的AI还差得很远,很远很远。

multi view disparity map

现在三位重构的效果还不错

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。

 

嘉嘉同学

这两天睡觉基本上又好了。

不过每天早上六点左右就会醒。

然后一个人一边哼唧一边玩。

前些天娃爸和娃妈都睡不好觉

结果娃妈上火嘴唇外面长包

娃爸上火嘴唇里面长包

感觉原因是之前嘉嘉主要依赖奶嘴入睡

要么是吃奶的时候睡着,要么嚼着安抚奶嘴睡着

这两天就让她自己玩得累了自然入睡,在爸妈旁边

另外老婆这两天白天严格控制小家伙的作息时间

似乎效果不错

小家伙已经有九个多月,相当不老实,总想站起来,结果爸妈的身子就成了她的栏杆

 

effective stl digest I

Item 1. Choose your containers with care.

The standard STL sequence containers, vector, string, deque, and list.

The standard STL associative containers, set, multiset, map and multimap.

 

Contiguous-memory containers (also known as array-based containers] store their elements in one or more (dynamically allocated) chunks of memory, each chunk holding more than one container element. If a new element is inserted or an existing element is erased, other elements in the same memory chunk have to be shifted up or down to make room for the new element or to fill the space formerly occupied by the erased element. This kind of movement affects both performance (see Items 5 and 14) and exception safety (as we’ll soon see). The standard contiguous-memory containers are vector, string, and deque. The nonstandard rope is also a contiguous-memory container.

 

Node-based containers store only a single element per chunk of (dynamically allocated) memory. Insertion or erasure of a container element affects only pointers to nodes, not the contents of the nodes themselves, so element values need not be moved when something is inserted or erased. Containers representing linked lists, such as list and slist, are node-based, as are all the standard associative containers. (They’re typically implemented as balanced trees.)

 

Do you need to minimize iterator, pointer, and reference invalidation? If so, you’ll want to use node-based containers, because insertions and erasures on such containers never invalidate iterators, pointers, or references (unless they point to an element you are erasing). In general, insertions or erasures on contiguous-memory containers may invalidate all iterators, pointers, and references into the container.

Item 2. Beware the illusion of container-independent code.

Given the inevitability of having to change container types from time to time, you can facilitate such changes in the usual manner: by encapsulating, encapsulating, encapsulating.

//java has more abstract container types such as Collection, which support many common operations of containers such as sort, size, iteration and etc. Java is better at supporting implementation independent code.

Once you’ve used the STL a little while, you’ll realize that typedefs are your friends.

Item 3. Make copying cheap and correct for objects in containers.

Containers hold objects, but not the ones you give them.

Copy in, copy out. That’s the STL way.

Yes, copying objects is the STL way.

If you fill a container with objects where copying is expensive, the simple act of putting the objects into the container could prove to be a performance bottleneck.

In the presence of inheritance, of course, copying leads to slicing.

An easy way to make copying efficient, correct, and immune to the slicing problem is to create containers of pointers instead of containers of objects.

you’ll probably discover that containers of smart pointers are an attractive option.

Item 4. Call empty instead of checking size() against zero.

empty is a constant-time operation for all standard containers, but for some list implementations, size takes linear time.

Item 5. Prefer range member functions to their single-element counterparts.


 

 

 

嘉嘉同学

晚上不好好睡觉

几乎每次睡醒都闭着个眼睛瞎哭

把她抱到明亮的地方,眼睛睁开就好了,wk~

然后又开始玩

基本上属于黑白颠倒

白天是天使

晚上是魔鬼

把爸妈都搞得上火